From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 06 08:48:41 2023 Received: (at submit) by debbugs.gnu.org; 6 Apr 2023 12:48:41 +0000 Received: from localhost ([127.0.0.1]:53636 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkP2d-0000T6-UG for submit@debbugs.gnu.org; Thu, 06 Apr 2023 08:48:41 -0400 Received: from lists.gnu.org ([209.51.188.17]:45774) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkP2a-0000Sy-TB for submit@debbugs.gnu.org; Thu, 06 Apr 2023 08:48:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkP2a-0007dd-JW for bug-gnu-emacs@gnu.org; Thu, 06 Apr 2023 08:48:36 -0400 Received: from mail-yb1-xb2b.google.com ([2607:f8b0:4864:20::b2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pkP2W-0001Wt-HE for bug-gnu-emacs@gnu.org; Thu, 06 Apr 2023 08:48:35 -0400 Received: by mail-yb1-xb2b.google.com with SMTP id r187so45966751ybr.6 for ; Thu, 06 Apr 2023 05:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680785311; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=FhkeK2+7Os0VSqIu8eY0uG9s3M8fgktHHUswW3/YD3o=; b=LCa5oOZd8+ZyLIe/UiLZ9+OpwO+cyDSV9nu7zJbv5xiw2SSp5/NhPuICg2OP1buz+I DjGaSGQ9KQkMRQvOAR3YbZWlvTaebKNGyhTDtk1+cMOlDFGlfJe09k1cd4Pu8DXj67sC 2VHxlzg+8dF0UyUxIA5/24faKOu86y04XuUTqR+pRWib39T8//MqzIFHyYsIOarl8rOY DYm4P1jloOCE+aS+meT6wQ0xNcBdju7qXVWGHp4jTnwiyYGh0JHJ10BVzq2xETEChRq2 sYq3jukbxuL4+o/TqhYUEIPJei86g+I+E8S0uPMKeagVmuz5Axy3B23AHQQid6chYuot E6fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680785311; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=FhkeK2+7Os0VSqIu8eY0uG9s3M8fgktHHUswW3/YD3o=; b=7uWXy8RIxGhFmqegY81QO2oytXVXZl7qSUMUnWrxaSA/XIl9FZlhfAQt85cTer2ZW9 lybe7JX3NU32HwDongMuLGgEoJUszQIgNi30PwRAW4c5hEU614rVKXwDnYh9eteRXJtz 6S4zrKAyYdtqmRC3YNolZtAwHQsntdboCAkXoI9QQ0d2jlrOCjdMz0wb6WOgHTHz02N/ 2HsnYdezsrNfsz+K7642YQ8CXUjQQNN0tq9jkyN8fdqWubJfcXth/cO/bTE0Zvc9G/Qh eeaMwdtCDMNTb86vlEH+9pXO3FtGP89scR9p1XGSFyqKl5u659okfCaLcOvDTVZJPnRC hKBw== X-Gm-Message-State: AAQBX9cV74qw58AyjK+arVj0Qw6k94dWoHEG0LYyEUFaONE/t94faL1e gdIxXQAGBPAjwzhC0aYN2pbBjAVoAG6Wnbq3oMR9RiqPhYU= X-Google-Smtp-Source: AKy350a1ZqKmLLkd7kqJ+et3HdO5ENJd36Gg1RTeMnHRlACzibBViOClGhAd3j24NxTTypB/zqnHFsSL2hU6tH3+D58= X-Received: by 2002:a25:d711:0:b0:b7c:1144:a708 with SMTP id o17-20020a25d711000000b00b7c1144a708mr1970680ybg.12.1680785311252; Thu, 06 Apr 2023 05:48:31 -0700 (PDT) MIME-Version: 1.0 From: Gustaf Waldemarson Date: Thu, 6 Apr 2023 14:48:20 +0200 Message-ID: Subject: gdb-mi.el: Change target-async to mi-async To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary="0000000000006c13c905f8aa53e7" Received-SPF: pass client-ip=2607:f8b0:4864:20::b2b; envelope-from=gustaf.waldemarson@gmail.com; helo=mail-yb1-xb2b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --0000000000006c13c905f8aa53e7 Content-Type: multipart/alternative; boundary="0000000000006c13c705f8aa53e5" --0000000000006c13c705f8aa53e5 Content-Type: text/plain; charset="UTF-8" Hello, This may be a bit too early, given how prevalent it is to be using older versions of GDB but I figured I should send this patch anyways to get it out of my mind: For GDB version >= 11, starting up a debugging session with 'gdb-mi.el' always ends with this message: > (gdb) Warning: 'set target-async', an alias for the command 'set mi-async', is > deprecated. Use 'set mi-async'. This is a bit of an eyesore and also breaks the initial prompt (although that is easily fixed by pressing enter, etc, but that may still be confusing for new users). It may be reasonable to either query the GDB version (not sure how though, unfortunately) and then use the old command (`set target-async`) or execute the non-deprecated command instead (`set mi-async`), and then possibly trying the old on if the new one did not work. Apparently, `set mi-async` is a GDB 7.8 feature (Released Jul 2014), so this change may cause incompatibilities with earlier GDB versions. That said, I suspect that it will only cause a warning message to appear for using an unsupported command, but unfortunately I don't have an old enough version of GDB handy to try that out. Any strong opinions either way? The attached patch only replaces the old command with the new one, but I'm open for suggestions. Best regards, Gustaf In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0) of 2023-03-26 built on ShadowX Repository revision: 248aabd9514c9eb21f4aa2e9062f8ce927d9fe54 Repository branch: master System Description: Ubuntu 22.04.2 LTS Configured using: 'configure --prefix=/home/xaldew/.local '--program-transform-name=s/^ctags$/ctags.emacs/' --without-makeinfo --with-xpm=ifavailable --with-jpeg=ifavailable --with-gif=ifavailable --with-tiff=ifavailable' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: sv_SE.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Magit Minor modes in effect: pyvenv-mode: t dap-tooltip-mode: t dap-ui-many-windows-mode: t dap-ui-controls-mode: t dap-ui-mode: t gdb-many-windows: t treemacs-filewatch-mode: t treemacs-follow-mode: t treemacs-git-mode: t treemacs-fringe-indicator-mode: t dap-auto-configure-mode: t dap-mode: t global-git-commit-mode: t magit-auto-revert-mode: t shell-dirtrack-mode: t beacon-mode: t server-mode: t hes-mode: t projectile-mode: t global-display-fill-column-indicator-mode: t global-display-line-numbers-mode: t global-so-long-mode: t yas-global-mode: t yas-minor-mode: t global-company-mode: t company-mode: t global-undo-tree-mode: t undo-tree-mode: t global-anzu-mode: t anzu-mode: t global-atomic-chrome-edit-mode: t windmove-mode: t which-key-mode: t anyclip-mode: t override-global-mode: t electric-pair-mode: t save-place-mode: t global-subword-mode: t subword-mode: t winner-mode: t global-auto-revert-mode: t xterm-mouse-mode: t savehist-mode: t ido-everywhere: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/xaldew/.config/emacs/elpa/transient-20230315.1520/transient hides /home/xaldew/.local/share/emacs/30.0.50/lisp/transient Features: (shadow sort bbdb-message mail-extr warnings emacsbug cdlatex reftex reftex-loaddefs reftex-vars org-element org-persist org-id org-refile avl-tree oc-basic ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum shr pixel-fill kinsoku url-file svg gnus-group gnus-undo gnus-start gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader range ol-docview doc-view jka-compr ol-bibtex bibtex ol-bbdb ol-w3m org-tempo tempo cus-start ob-latex ob-plantuml ob-org ob-shell ob-gnuplot ob-C ob-python ob-ditaa ob-dot org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat org-macs shortdoc help-fns radix-tree magit-annex magit-patch magit-subtree magit-gitignore magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util image-mode exif guess-language pyvenv eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util highlight-indentation anaconda-mode pythonic tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat parse-time iso8601 ls-lisp python-mode/.yas-setup.el dap-python python treesit c++-genostream cmake-mode rst ace-window all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view vc bug-reference misearch multi-isearch lsp-diagnostics lsp-headerline lsp-icons lsp-modeline dap-mouse dap-ui gdb-mi bui bui-list bui-info bui-entry bui-core bui-history bui-button bui-utils lsp-lens vc-git vc-dispatcher modern-cpp-font-lock .yas-setup.el cc-mode/.yas-setup.el view lsp-zig lsp-tilt lsp-steep lsp-svelte lsp-sqls lsp-ruby-syntax-tree lsp-ruby-lsp lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-volar lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v lsp-typeprof lsp-ttcn3 lsp-toml lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-ruff-lsp lsp-remark lsp-racket lsp-r lsp-purescript lsp-pylsp lsp-pyls lsp-pwsh lsp-php lsp-pls lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-magik lsp-nix lsp-nim lsp-nginx lsp-mint lsp-marksman lsp-markdown lsp-lua lsp-ltex lsp-kotlin lsp-json lsp-javascript lsp-idris lsp-haxe lsp-groovy lsp-hack lsp-graphql lsp-gleam lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang lsp-emmet lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure lsp-treemacs lsp-treemacs-generic lsp-treemacs-themes treemacs-treelib treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-interface treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-scope pulse treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils pfuture hl-line treemacs-logging treemacs-customization treemacs-macros lsp-semantic-tokens lsp-clangd lsp-beancount lsp-bash lsp-astro lsp-ansible lsp-angular lsp-ada lsp-actionscript dap-gdb-lldb dap-utils dom xml dap-mode dap-tasks dap-launch lsp-docker yaml posframe dap-overlays magit-extras magit-submodule magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func magit-diff smerge-mode diff-mode git-commit log-edit message sendmail yank-media rfc822 mml mml-sec epa derived gnus-util time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor shell pcomplete magit-mode transient magit-git magit-base magit-section format-spec crm compat dired-aux dired dired-loaddefs term/tmux term/xterm xterm pinentry beacon server form-feed paredit nameless flyspell ispell whitespace rainbow-delimiters highlight-escape-sequences projectile lisp-mnt grep ibuf-ext ibuffer ibuffer-loaddefs lsp-ui lsp-ui-flycheck lsp-ui-doc goto-addr lsp-ui-imenu lsp-ui-peek lsp-ui-sideline flycheck lsp-mode tree-widget spinner network-stream puny nsm markdown-mode noutline outline inline imenu f f-shortdoc ewoc epg rfc6068 epg-config compile text-property-search lsp-ui-util face-remap find-func lsp-protocol s ht dash display-fill-column-indicator display-line-numbers so-long py-snippets yasnippet-radical-snippets yasnippet-snippets yasnippet company-oddmuse company-keywords company-etags etags fileloop generator xref project company-gtags company-dabbrev-code company-dabbrev company-files company-clang company-capf company-cmake company-semantic company-template company-bbdb company undo-tree diff queue anzu thingatpt atomic-chrome websocket bindat let-alist color-theme-approximate advice color delim-col hydra-examples windmove rect hydra lv bbdb bbdb-site timezone cus-edit pp cus-load icons wid-edit ace-link avy which-key anyclip-mode cl-extra help-mode edmacro kmacro diminish use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core finder-inf local-autoloads cwarn cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs elec-pair saveplace cap-words superword subword winner autorevert filenotify xt-mouse tango-dark-theme savehist ido gud comint ansi-osc ansi-color ring keybinds terminals ivy-autoloads spacemacs-theme-autoloads ace-link-autoloads kotlin-mode-autoloads company-auctex-autoloads gl-conf-mode-autoloads css-eldoc-autoloads beacon-autoloads lsp-ltex-autoloads paredit-autoloads glsl-mode-autoloads highlight-escape-sequences-autoloads powershell-autoloads gnuplot-mode-autoloads cuda-mode-autoloads ein-autoloads request-autoloads ssh-config-mode-autoloads git-modes-autoloads mmm-mode-autoloads ebdb-autoloads rmsbolt-autoloads debbugs-autoloads dart-mode-autoloads sublime-themes-autoloads coffee-mode-autoloads graphviz-dot-mode-autoloads magit-annex-autoloads opencl-mode-autoloads json-mode-autoloads rx company-anaconda-autoloads pinentry-autoloads rainbow-mode-autoloads htmlize-autoloads projectile-autoloads flycheck-rust-autoloads bbdb-vcard-autoloads jira-markup-mode-autoloads browse-kill-ring-autoloads helm-dash-autoloads sx-autoloads jenkins-autoloads smart-jump-autoloads bbdb-autoloads which-key-autoloads anzu-autoloads x86-lookup-autoloads cmake-mode-autoloads flycheck-kotlin-autoloads undo-tree-autoloads rust-mode-autoloads plantuml-mode-autoloads magit-gerrit-autoloads lua-mode-autoloads yaml-mode-autoloads evil-autoloads deferred-autoloads iedit-autoloads unfill-autoloads srefactor-autoloads abc-mode-autoloads autoinsert solarized-theme-autoloads alert-autoloads gntp-autoloads emms-autoloads cider-autoloads sesman-autoloads queue-autoloads parseedn-autoloads parseclj-autoloads clojure-mode-autoloads flycheck-package-autoloads package-lint-autoloads atomic-chrome-autoloads websocket-autoloads powerthesaurus-autoloads jeison-autoloads dash-docs-autoloads rainbow-delimiters-autoloads form-feed-autoloads yasnippet-radical-snippets-autoloads pyimport-autoloads shut-up-autoloads json-snatcher-autoloads helm-lsp-autoloads helm-autoloads clang-format-autoloads poly-markdown-autoloads polymode-autoloads toml-mode-autoloads diminish-autoloads cdlatex-autoloads eclim-autoloads anaphora-autoloads py-snippets-autoloads yasnippet-snippets-autoloads zenburn-theme-autoloads dap-mode-autoloads lsp-docker-autoloads lsp-treemacs-autoloads treemacs-autoloads cfrs-autoloads posframe-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads bui-autoloads magit-svn-autoloads magit-autoloads pcase git-commit-autoloads with-editor-autoloads transient-autoloads go-mode-autoloads goto-chg-autoloads log4e-autoloads color-theme-approximate-autoloads cargo-autoloads calfw-autoloads company-quickhelp-autoloads helm-core-autoloads async-autoloads ecb-autoloads modern-cpp-font-lock-autoloads dts-mode-autoloads nov-autoloads esxml-autoloads kv-autoloads company-math-autoloads math-symbol-lists-autoloads elpy-autoloads pyvenv-autoloads highlight-indentation-autoloads ob-ipython-autoloads dash-functional-autoloads hydra-autoloads auto-complete-auctex-autoloads auto-complete-autoloads yasnippet-autoloads auctex-latexmk-autoloads auctex-autoloads tex-site yaml-autoloads ahk-mode-autoloads magit-section-autoloads compat-autoloads cask-mode-autoloads company-c-headers-autoloads company-autoloads csv-mode-autoloads gnuplot-autoloads anaconda-mode-autoloads pythonic-autoloads pos-tip-autoloads zerodark-theme-autoloads all-the-icons-autoloads image+-autoloads expand-region-autoloads gnus-desktop-notify-autoloads flycheck-autoloads pkg-info-autoloads epl-autoloads ggtags-autoloads web-mode-autoloads lsp-ui-autoloads lsp-mode-autoloads lv-autoloads markdown-mode-autoloads spinner-autoloads ht-autoloads f-autoloads uimage-autoloads guess-language-autoloads dumb-jump-autoloads popup-autoloads dash-autoloads s-autoloads google-c-style-autoloads nameless-autoloads info slime-autoloads macrostep-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 817895 212638) (symbols 48 62999 0) (strings 32 249530 19612) (string-bytes 1 8101995) (vectors 16 160320) (vector-slots 8 3855694 143961) (floats 8 1381 10031) (intervals 56 21064 2868) (buffers 976 49)) --0000000000006c13c705f8aa53e5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

This may be a bit too early, given how = prevalent it is to be using older
versions of GDB but I figured I should= send this patch anyways to get it out of
my mind:

For GDB versio= n >=3D 11, starting up a debugging session with 'gdb-mi.el' alwa= ys
ends with this message:

> (gdb) Warning: 'set target-as= ync', an alias for the command 'set mi-async', is
> depre= cated.=C2=A0 Use 'set mi-async'.

This is a bit of an eyesore= and also breaks the initial prompt (although that is
easily fixed by pr= essing enter, etc, but that may still be confusing for new
users).
It may be reasonable to either query the GDB version (not sure how though= ,
unfortunately) and then use the old command (`set target-async`) or ex= ecute the
non-deprecated command instead (`set mi-async`), and then poss= ibly trying the
old on if the new one did not work.

Apparently, `= set mi-async` is a GDB 7.8 feature (Released Jul 2014), so this
change m= ay cause incompatibilities with earlier GDB versions. That said, I
suspe= ct that it will only cause a warning message to appear for using an
unsu= pported command, but unfortunately I don't have an old enough version o= f GDB
handy to try that out.

Any strong opinions either way? The = attached patch only replaces the old command
with the new one, but I'= ;m open for suggestions.

Best regards,
Gustaf

<= /div>
In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version<= /div>=C2=A03.24.33, cairo version 1.16.0) of 2023-03-26 built on ShadowXRepository revision: 248aabd9514c9eb21f4aa2e9062f8ce927d9fe54
Repositor= y branch: master
System Description: Ubuntu 22.04.2 LTS

Configure= d using:
=C2=A0'configure --prefix=3D/home/xaldew/.local
=C2=A0&#= 39;--program-transform-name=3Ds/^ctags$/ctags.emacs/' --without-makeinf= o
=C2=A0--with-xpm=3Difavailable --with-jpeg=3Difavailable --with-gif=3D= ifavailable
=C2=A0--with-tiff=3Difavailable'

Configured featu= res:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LCM= S2
LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SO= UND
THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM GTK3 = ZLIB

Important settings:
=C2=A0 value of $LANG: sv_SE.UTF-8
= =C2=A0 value of $XMODIFIERS: @im=3Dibus
=C2=A0 locale-coding-system: utf= -8-unix

Major mode: Magit

Minor modes in effect:
=C2=A0 py= venv-mode: t
=C2=A0 dap-tooltip-mode: t
=C2=A0 dap-ui-many-windows-mo= de: t
=C2=A0 dap-ui-controls-mode: t
=C2=A0 dap-ui-mode: t
=C2=A0 = gdb-many-windows: t
=C2=A0 treemacs-filewatch-mode: t
=C2=A0 treemacs= -follow-mode: t
=C2=A0 treemacs-git-mode: t
=C2=A0 treemacs-fringe-in= dicator-mode: t
=C2=A0 dap-auto-configure-mode: t
=C2=A0 dap-mode: t<= br>=C2=A0 global-git-commit-mode: t
=C2=A0 magit-auto-revert-mode: t
= =C2=A0 shell-dirtrack-mode: t
=C2=A0 beacon-mode: t
=C2=A0 server-mod= e: t
=C2=A0 hes-mode: t
=C2=A0 projectile-mode: t
=C2=A0 global-di= splay-fill-column-indicator-mode: t
=C2=A0 global-display-line-numbers-m= ode: t
=C2=A0 global-so-long-mode: t
=C2=A0 yas-global-mode: t
=C2= =A0 yas-minor-mode: t
=C2=A0 global-company-mode: t
=C2=A0 company-mo= de: t
=C2=A0 global-undo-tree-mode: t
=C2=A0 undo-tree-mode: t
=C2= =A0 global-anzu-mode: t
=C2=A0 anzu-mode: t
=C2=A0 global-atomic-chro= me-edit-mode: t
=C2=A0 windmove-mode: t
=C2=A0 which-key-mode: t
= =C2=A0 anyclip-mode: t
=C2=A0 override-global-mode: t
=C2=A0 electric= -pair-mode: t
=C2=A0 save-place-mode: t
=C2=A0 global-subword-mode: t=
=C2=A0 subword-mode: t
=C2=A0 winner-mode: t
=C2=A0 global-auto-r= evert-mode: t
=C2=A0 xterm-mouse-mode: t
=C2=A0 savehist-mode: t
= =C2=A0 ido-everywhere: t
=C2=A0 tooltip-mode: t
=C2=A0 global-eldoc-m= ode: t
=C2=A0 show-paren-mode: t
=C2=A0 electric-indent-mode: t
= =C2=A0 mouse-wheel-mode: t
=C2=A0 tool-bar-mode: t
=C2=A0 file-name-s= hadow-mode: t
=C2=A0 global-font-lock-mode: t
=C2=A0 font-lock-mode: = t
=C2=A0 blink-cursor-mode: t
=C2=A0 buffer-read-only: t
=C2=A0 co= lumn-number-mode: t
=C2=A0 line-number-mode: t
=C2=A0 transient-mark-= mode: t
=C2=A0 auto-composition-mode: t
=C2=A0 auto-encryption-mode: = t
=C2=A0 auto-compression-mode: t

Load-path shadows:
/home/xal= dew/.config/emacs/elpa/transient-20230315.1520/transient hides /home/xaldew= /.local/share/emacs/30.0.50/lisp/transient

Features:
(shadow sort= bbdb-message mail-extr warnings emacsbug cdlatex reftex
reftex-loaddefs= reftex-vars org-element org-persist org-id org-refile
avl-tree oc-basic= ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc
ol-info ol-gnus = nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime
dig gnus-sum shr= pixel-fill kinsoku url-file svg gnus-group gnus-undo
gnus-start gnus-db= us dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-in= t gnus-range gnus-win gnus nnheader range ol-docview
doc-view jka-compr = ol-bibtex bibtex ol-bbdb ol-w3m org-tempo tempo
cus-start ob-latex ob-pl= antuml ob-org ob-shell ob-gnuplot ob-C ob-python
ob-ditaa ob-dot org ob = ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-src ob-comint org-= pcomplete org-list org-footnote org-faces
org-entities ob-emacs-lisp ob-= core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc o= rg-loaddefs cal-menu calendar
cal-loaddefs org-version org-compat org-ma= cs shortdoc help-fns
radix-tree magit-annex magit-patch magit-subtree ma= git-gitignore
magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-d= iff ediff-help
ediff-init ediff-util image-mode exif guess-language pyve= nv eshell
esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh= -groups
esh-util highlight-indentation anaconda-mode pythonic tramp
t= ramp-loaddefs trampver tramp-integration files-x tramp-compat
parse-time= iso8601 ls-lisp python-mode/.yas-setup.el dap-python python
treesit c++= -genostream cmake-mode rst ace-window all-the-icons
all-the-icons-faces = data-material data-weathericons data-octicons
data-fileicons data-faicon= s data-alltheicons vc-hg vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs log-= view vc bug-reference misearch multi-isearch
lsp-diagnostics lsp-headerl= ine lsp-icons lsp-modeline dap-mouse dap-ui
gdb-mi bui bui-list bui-info= bui-entry bui-core bui-history bui-button
bui-utils lsp-lens vc-git vc-= dispatcher modern-cpp-font-lock
.yas-setup.el cc-mode/.yas-setup.el view= lsp-zig lsp-tilt lsp-steep
lsp-svelte lsp-sqls lsp-ruby-syntax-tree lsp= -ruby-lsp lsp-yaml lsp-xml
lsp-vimscript lsp-vhdl lsp-volar lsp-vetur ls= p-html lsp-verilog lsp-vala
lsp-v lsp-typeprof lsp-ttcn3 lsp-toml lsp-te= rraform lsp-tex lsp-sorbet
lsp-solargraph lsp-rust lsp-rf lsp-ruff-lsp l= sp-remark lsp-racket lsp-r
lsp-purescript lsp-pylsp lsp-pyls lsp-pwsh ls= p-php lsp-pls
lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-magi= k lsp-nix
lsp-nim lsp-nginx lsp-mint lsp-marksman lsp-markdown lsp-lua l= sp-ltex
lsp-kotlin lsp-json lsp-javascript lsp-idris lsp-haxe lsp-groovy=
lsp-hack lsp-graphql lsp-gleam lsp-go lsp-completion lsp-gdscript
ls= p-fsharp lsp-fortran lsp-eslint lsp-erlang lsp-emmet lsp-elixir
lsp-elm = lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp gnutls
lsp-crystal lsp= -cmake lsp-clojure lsp-treemacs lsp-treemacs-generic
lsp-treemacs-themes= treemacs-treelib treemacs treemacs-header-line
treemacs-compatibility t= reemacs-mode treemacs-interface
treemacs-persistence treemacs-filewatch-= mode treemacs-follow-mode
treemacs-rendering treemacs-annotations treema= cs-async
treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-f= ringe-indicator treemacs-scope pulse treemacs-faces
treemacs-icons treem= acs-themes treemacs-core-utils pfuture hl-line
treemacs-logging treemacs= -customization treemacs-macros
lsp-semantic-tokens lsp-clangd lsp-beanco= unt lsp-bash lsp-astro
lsp-ansible lsp-angular lsp-ada lsp-actionscript = dap-gdb-lldb dap-utils
dom xml dap-mode dap-tasks dap-launch lsp-docker = yaml posframe
dap-overlays magit-extras magit-submodule magit-blame magi= t-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magi= t-clone
magit-remote magit-commit magit-sequence magit-notes magit-workt= ree
magit-tag magit-merge magit-branch magit-reset magit-files magit-ref= s
magit-status magit magit-repos magit-apply magit-wip magit-log
whic= h-func magit-diff smerge-mode diff-mode git-commit log-edit message
send= mail yank-media rfc822 mml mml-sec epa derived gnus-util time-date
mm-de= code mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf= -drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util a= dd-log magit-core magit-autorevert magit-margin
magit-transient magit-pr= ocess with-editor shell pcomplete magit-mode
transient magit-git magit-b= ase magit-section format-spec crm compat
dired-aux dired dired-loaddefs = term/tmux term/xterm xterm pinentry
beacon server form-feed paredit name= less flyspell ispell whitespace
rainbow-delimiters highlight-escape-sequ= ences projectile lisp-mnt grep
ibuf-ext ibuffer ibuffer-loaddefs lsp-ui = lsp-ui-flycheck lsp-ui-doc
goto-addr lsp-ui-imenu lsp-ui-peek lsp-ui-sid= eline flycheck lsp-mode
tree-widget spinner network-stream puny nsm mark= down-mode noutline
outline inline imenu f f-shortdoc ewoc epg rfc6068 ep= g-config compile
text-property-search lsp-ui-util face-remap find-func l= sp-protocol s ht
dash display-fill-column-indicator display-line-numbers= so-long
py-snippets yasnippet-radical-snippets yasnippet-snippets yasni= ppet
company-oddmuse company-keywords company-etags etags fileloop gener= ator
xref project company-gtags company-dabbrev-code company-dabbrev
= company-files company-clang company-capf company-cmake company-semantic
= company-template company-bbdb company undo-tree diff queue anzu
thingatp= t atomic-chrome websocket bindat let-alist
color-theme-approximate advic= e color delim-col hydra-examples windmove
rect hydra lv bbdb bbdb-site t= imezone cus-edit pp cus-load icons
wid-edit ace-link avy which-key anycl= ip-mode cl-extra help-mode edmacro
kmacro diminish use-package use-packa= ge-ensure use-package-delight
use-package-diminish use-package-bind-key = bind-key easy-mmode
use-package-core finder-inf local-autoloads cwarn cc= -mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc= -vars cc-defs
elec-pair saveplace cap-words superword subword winner aut= orevert
filenotify xt-mouse tango-dark-theme savehist ido gud comint ans= i-osc
ansi-color ring keybinds terminals ivy-autoloads
spacemacs-them= e-autoloads ace-link-autoloads kotlin-mode-autoloads
company-auctex-auto= loads gl-conf-mode-autoloads css-eldoc-autoloads
beacon-autoloads lsp-lt= ex-autoloads paredit-autoloads
glsl-mode-autoloads highlight-escape-sequ= ences-autoloads
powershell-autoloads gnuplot-mode-autoloads cuda-mode-au= toloads
ein-autoloads request-autoloads ssh-config-mode-autoloads
git= -modes-autoloads mmm-mode-autoloads ebdb-autoloads rmsbolt-autoloads
deb= bugs-autoloads dart-mode-autoloads sublime-themes-autoloads
coffee-mode-= autoloads graphviz-dot-mode-autoloads magit-annex-autoloads
opencl-mode-= autoloads json-mode-autoloads rx company-anaconda-autoloads
pinentry-aut= oloads rainbow-mode-autoloads htmlize-autoloads
projectile-autoloads fly= check-rust-autoloads bbdb-vcard-autoloads
jira-markup-mode-autoloads bro= wse-kill-ring-autoloads
helm-dash-autoloads sx-autoloads jenkins-autoloa= ds smart-jump-autoloads
bbdb-autoloads which-key-autoloads anzu-autoload= s x86-lookup-autoloads
cmake-mode-autoloads flycheck-kotlin-autoloads un= do-tree-autoloads
rust-mode-autoloads plantuml-mode-autoloads magit-gerr= it-autoloads
lua-mode-autoloads yaml-mode-autoloads evil-autoloads defer= red-autoloads
iedit-autoloads unfill-autoloads srefactor-autoloads abc-m= ode-autoloads
autoinsert solarized-theme-autoloads alert-autoloads gntp-= autoloads
emms-autoloads cider-autoloads sesman-autoloads queue-autoload= s
parseedn-autoloads parseclj-autoloads clojure-mode-autoloads
flyche= ck-package-autoloads package-lint-autoloads
atomic-chrome-autoloads webs= ocket-autoloads powerthesaurus-autoloads
jeison-autoloads dash-docs-auto= loads rainbow-delimiters-autoloads
form-feed-autoloads yasnippet-radical= -snippets-autoloads
pyimport-autoloads shut-up-autoloads json-snatcher-a= utoloads
helm-lsp-autoloads helm-autoloads clang-format-autoloads
pol= y-markdown-autoloads polymode-autoloads toml-mode-autoloads
diminish-aut= oloads cdlatex-autoloads eclim-autoloads anaphora-autoloads
py-snippets-= autoloads yasnippet-snippets-autoloads
zenburn-theme-autoloads dap-mode-= autoloads lsp-docker-autoloads
lsp-treemacs-autoloads treemacs-autoloads= cfrs-autoloads
posframe-autoloads pfuture-autoloads ace-window-autoload= s avy-autoloads
bui-autoloads magit-svn-autoloads magit-autoloads pcase<= br>git-commit-autoloads with-editor-autoloads transient-autoloads
go-mod= e-autoloads goto-chg-autoloads log4e-autoloads
color-theme-approximate-a= utoloads cargo-autoloads calfw-autoloads
company-quickhelp-autoloads hel= m-core-autoloads async-autoloads
ecb-autoloads modern-cpp-font-lock-auto= loads dts-mode-autoloads
nov-autoloads esxml-autoloads kv-autoloads comp= any-math-autoloads
math-symbol-lists-autoloads elpy-autoloads pyvenv-aut= oloads
highlight-indentation-autoloads ob-ipython-autoloads
dash-func= tional-autoloads hydra-autoloads auto-complete-auctex-autoloads
auto-com= plete-autoloads yasnippet-autoloads auctex-latexmk-autoloads
auctex-auto= loads tex-site yaml-autoloads ahk-mode-autoloads
magit-section-autoloads= compat-autoloads cask-mode-autoloads
company-c-headers-autoloads compan= y-autoloads csv-mode-autoloads
gnuplot-autoloads anaconda-mode-autoloads= pythonic-autoloads
pos-tip-autoloads zerodark-theme-autoloads all-the-i= cons-autoloads
image+-autoloads expand-region-autoloads gnus-desktop-not= ify-autoloads
flycheck-autoloads pkg-info-autoloads epl-autoloads ggtags= -autoloads
web-mode-autoloads lsp-ui-autoloads lsp-mode-autoloads lv-aut= oloads
markdown-mode-autoloads spinner-autoloads ht-autoloads f-autoload= s
uimage-autoloads guess-language-autoloads dumb-jump-autoloads
popup= -autoloads dash-autoloads s-autoloads google-c-style-autoloads
nameless-= autoloads info slime-autoloads macrostep-autoloads package
browse-url ur= l url-proxy url-privacy url-expand url-methods url-history
url-cookie ge= nerate-lisp-file url-domsuf url-util mailcap url-handlers
url-parse auth= -source cl-seq eieio eieio-core cl-macs password-cache
json subr-x map b= yte-opt gv bytecomp byte-compile url-vars cl-loaddefs
cl-lib rmc iso-tra= nsl tooltip cconv eldoc paren electric uniquify
ediff-hook vc-hooks lisp= -float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd too= l-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomm= ent text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-esh= adow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock s= yntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-g= eneric indonesian philippine
cham georgian utf-8-lang misc-lang vietname= se tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew gre= ek romanian slovak czech
european ethiopic indian cyrillic chinese compo= site emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook hel= p abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs fa= ces cus-face macroexp
files window text-properties overlay sha1 md5 base= 64 format env
code-pages mule custom widget keymap hashtable-print-reada= ble backquote
threads dbusbind inotify lcms2 dynamic-setting system-font= -setting
font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x = multi-tty
make-network-process emacs)

Memory information:
((co= nses 16 817895 212638)
=C2=A0(symbols 48 62999 0)
=C2=A0(strings 32 2= 49530 19612)
=C2=A0(string-bytes 1 8101995)
=C2=A0(vectors 16 160320)=
=C2=A0(vector-slots 8 3855694 143961)
=C2=A0(floats 8 1381 10031)=C2=A0(intervals 56 21064 2868)
=C2=A0(buffers 976 49))
--0000000000006c13c705f8aa53e5-- --0000000000006c13c905f8aa53e7 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Convert-gdb-command-target-async-to-mi-async.patch" Content-Disposition: attachment; filename="0001-Convert-gdb-command-target-async-to-mi-async.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lg541zy90 RnJvbSA2NjgyZTQ3MmU0ZWZlZTU0NDdjNDFiNmUwZTQ4YTFkMDA3MDU0OGQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YWYgV2FsZGVtYXJzb24gPGd1c3RhZi53YWxkZW1hcnNv bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTggSmFuIDIwMjMgMTY6MTQ6NDAgKzAxMDAKU3ViamVj dDogW1BBVENIXSBDb252ZXJ0IGdkYiBjb21tYW5kIGB0YXJnZXQtYXN5bmMnIHRvIGBtaS1hc3lu YycuCgoqIGxpc3AvcHJvZ21vZGVzL2dkYi1taS5lbDogQ2hhbmdlIGRlcHJlY2F0ZWQgZ2RiIGNv bW1hbmQKYHRhcmdldC1hc3luYycgdG8gYG15LWFzeW5jJy4gRnVuY3Rpb25zIHVzaW5nIHRoZSBv bGQgbmFtZSBoYXMgYWxzbwp1cGRhdGVkLgotLS0KIGxpc3AvcHJvZ21vZGVzL2dkYi1taS5lbCB8 IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2dkYi1taS5lbCBiL2xpc3AvcHJvZ21vZGVz L2dkYi1taS5lbAppbmRleCAwNjA5NTdlYWMyOS4uMzVhZjlmNjBmZmMgMTAwNjQ0Ci0tLSBhL2xp c3AvcHJvZ21vZGVzL2dkYi1taS5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9nZGItbWkuZWwKQEAg LTExNDMsMTAgKzExNDMsMTAgQEAgZ2RiLW5vbi1zdG9wLWhhbmRsZXIKIAkoc2V0cSBnZGItbm9u LXN0b3AgbmlsKQogCShzZXRxIGdkYi1zdXBwb3J0cy1ub24tc3RvcCBuaWwpKQogICAgIChzZXRx IGdkYi1zdXBwb3J0cy1ub24tc3RvcCB0KQotICAgIChnZGItaW5wdXQgIi1nZGItc2V0IHRhcmdl dC1hc3luYyAxIiAnaWdub3JlKQotICAgIChnZGItaW5wdXQgIi1saXN0LXRhcmdldC1mZWF0dXJl cyIgJ2dkYi1jaGVjay10YXJnZXQtYXN5bmMpKSkKKyAgICAoZ2RiLWlucHV0ICItZ2RiLXNldCBt aS1hc3luYyBvbiIgJ2lnbm9yZSkKKyAgICAoZ2RiLWlucHV0ICItbGlzdC10YXJnZXQtZmVhdHVy ZXMiICdnZGItY2hlY2stbWktYXN5bmMpKSkKIAotKGRlZnVuIGdkYi1jaGVjay10YXJnZXQtYXN5 bmMgKCkKKyhkZWZ1biBnZGItY2hlY2stbWktYXN5bmMgKCkKICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKICAgKHVubGVzcyAocmUtc2VhcmNoLWZvcndhcmQgImFzeW5jIiBuaWwgdCkKICAgICAo bWVzc2FnZQotLSAKMi4zNC4xCgo= --0000000000006c13c905f8aa53e7-- From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 06 09:32:44 2023 Received: (at 62697) by debbugs.gnu.org; 6 Apr 2023 13:32:44 +0000 Received: from localhost ([127.0.0.1]:53672 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkPjH-0001p5-Po for submit@debbugs.gnu.org; Thu, 06 Apr 2023 09:32:44 -0400 Received: from eggs.gnu.org ([209.51.188.92]:55112) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkPjF-0001os-3e for 62697@debbugs.gnu.org; Thu, 06 Apr 2023 09:32:42 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkPj9-0006bX-4e; Thu, 06 Apr 2023 09:32:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=OPtvW57m4ER+Cl5CEZW59DhiefW/Oh+NCFA/eFxnzq8=; b=FW+klWcZe4Bt /ribfm6PUV3JJ41evz+7vI7aigt2pQ8LxWvSrUpsXV6dsHYS1XZivnY2HIwx08Zm3zN/b8FdvVYJC lm2W+kE5b9Y7qDOto4lYyqk4WHv25LsyuDc2/+qSB9c16h4z0UlIVbZTuA0UZzVmfYl8w4YxSPokt +tldugnbNn3kBxbkdhDHlCYQEHrLvZXC99hVOgzrZrViThMXTAMpVOsHiolRYN7Ks8Yo8TuwvZaeF EAXpkPpLJIO/e9W2Ys0hZjt7wQk+6xOj1oD5fvJhXUwqkqt4CG1k3jr7i7ZeiboJRe0zJgSiVenCr Q3j0fr7fsTORjdUFUNfprQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkPir-000554-PD; Thu, 06 Apr 2023 09:32:34 -0400 Date: Thu, 06 Apr 2023 16:32:46 +0300 Message-Id: <835ya9qgox.fsf@gnu.org> From: Eli Zaretskii To: Gustaf Waldemarson In-Reply-To: (message from Gustaf Waldemarson on Thu, 6 Apr 2023 14:48:20 +0200) Subject: Re: bug#62697: gdb-mi.el: Change target-async to mi-async References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 62697 Cc: 62697@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Gustaf Waldemarson > Date: Thu, 6 Apr 2023 14:48:20 +0200 > > This may be a bit too early, given how prevalent it is to be using older > versions of GDB but I figured I should send this patch anyways to get it out of > my mind: > > For GDB version >= 11, starting up a debugging session with 'gdb-mi.el' always > ends with this message: > > > (gdb) Warning: 'set target-async', an alias for the command 'set mi-async', is > > deprecated. Use 'set mi-async'. > > This is a bit of an eyesore and also breaks the initial prompt (although that is > easily fixed by pressing enter, etc, but that may still be confusing for new > users). > > It may be reasonable to either query the GDB version (not sure how though, > unfortunately) and then use the old command (`set target-async`) or execute the > non-deprecated command instead (`set mi-async`), and then possibly trying the > old on if the new one did not work. > > Apparently, `set mi-async` is a GDB 7.8 feature (Released Jul 2014), so this > change may cause incompatibilities with earlier GDB versions. That said, I > suspect that it will only cause a warning message to appear for using an > unsupported command, but unfortunately I don't have an old enough version of GDB > handy to try that out. > > Any strong opinions either way? The attached patch only replaces the old command > with the new one, but I'm open for suggestions. We cannot simply replace the command, as GDB 7.8 is not old enough to assume it isn't used anymore. We could either (1) ask GDB about its version, or (2) filter out the annoying message so it isn't shown to the users; we'd then have to revisit this if/when GDB actually drops the command, if it ever does. Alternative (1) is AFAIR problematic because the initialization of a GDB session under Emacs is entirely asynchronous, so sending a command and waiting for its response before sending the rest is not easy. So I tend to the second alternative. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 06 21:26:59 2023 Received: (at 62697) by debbugs.gnu.org; 7 Apr 2023 01:26:59 +0000 Received: from localhost ([127.0.0.1]:55420 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkasV-0006Ds-9v for submit@debbugs.gnu.org; Thu, 06 Apr 2023 21:26:59 -0400 Received: from mail-pl1-f181.google.com ([209.85.214.181]:38543) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkasS-0006Dd-3h for 62697@debbugs.gnu.org; Thu, 06 Apr 2023 21:26:57 -0400 Received: by mail-pl1-f181.google.com with SMTP id ja10so38961439plb.5 for <62697@debbugs.gnu.org>; Thu, 06 Apr 2023 18:26:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680830810; x=1683422810; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=iiTo0dAX5aqcm977mKt29aZf2Li6XchYkQtSqYv1Se8=; b=MMNMQ42Mdci9UnGNmdAb/hdocE3A9rujg5EJ49Cq2AEWSnroVQ7/0Iw8g2chbT+dVu kFFwe1WbMvvpdhwtIrVpGkh9EiVforagZfjRPRZV3IyS9kjLk4twmvrcwD2hsKRhuayj HppsDp3NAuZwzHr+0XA2y0NdpCJwUZsEruNX3pPbM/faHIIe8qfWlOd7TIQxrqLf+KMW Bw/AJvnXHbMb9QVpqYRRqG/mrf4T2XR6MlxbIwgn4JFXX3u+0XGLo34Yq+dKwYbjGTHq FxyQ2T2JeQ5D7iI1TegOMdwEBUa+DXDyfLPUSzoJOPYIO5LAVO0uW2r/KASL8ezFlXEm L1iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680830810; x=1683422810; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iiTo0dAX5aqcm977mKt29aZf2Li6XchYkQtSqYv1Se8=; b=m5CdVZl1ZW9pi4ft/FNBfiRYsIFuttJnt2I3rlV46MwcZqQdhVdzMooz/GhuuTrY/C AWD6B1d2P6lfhjoTWsNBeBzxdM5qxjHLIPE+prlRXVsZaPkY20tvzciL4QOIswSPsJTu 3AWLiWzZOkhh6W0aUPZOnSb1QBlJ2Aos9zdAwQ49W8mUVLwMeFmIggg5/LAjoEGUd2Pz q/o+XyjhtxxOmbdwDUAQaHJXwyVsi2zHu1KlL7tli1JPYNbY4/gHVYKz8TqmJCGHr4cq LeyZYQyXn4MPBnTGt30tCsbxk1qgNg7RZdfW5nQJV1OH7DEKgqXpkxIgrULaTKjSdbFc 3bbA== X-Gm-Message-State: AAQBX9emeYKj3ftF183OIcqoRBH1mFk1gbj3flRadF7tYks1r+go78ww zlqnrHCfZrdPzklIFtNvPSc= X-Google-Smtp-Source: AKy350ZMkjiu//gIQ4wsOY1YR5yuW2pga3DUmXeTpeSjiKtXi3OZPMVPaHb5/Qicxbe7tA44WuPI9A== X-Received: by 2002:a17:903:110f:b0:19e:8088:b852 with SMTP id n15-20020a170903110f00b0019e8088b852mr1342970plh.10.1680830809835; Thu, 06 Apr 2023 18:26:49 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id jl12-20020a170903134c00b0019e88d9bed3sm1930915plb.210.2023.04.06.18.26.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 06 Apr 2023 18:26:49 -0700 (PDT) Message-ID: <79ec3700-02ab-7574-1411-dfef0ec5eb7f@gmail.com> Date: Thu, 6 Apr 2023 18:26:48 -0700 MIME-Version: 1.0 Subject: Re: bug#62697: gdb-mi.el: Change target-async to mi-async Content-Language: en-US To: Eli Zaretskii , Gustaf Waldemarson References: <835ya9qgox.fsf@gnu.org> From: Jim Porter In-Reply-To: <835ya9qgox.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 62697 Cc: 62697@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 4/6/2023 6:32 AM, Eli Zaretskii wrote: > We could either (1) ask GDB about its version, or (2) filter out the > annoying message so it isn't shown to the users; we'd then have to > revisit this if/when GDB actually drops the command, if it ever does. > > Alternative (1) is AFAIR problematic because the initialization of a > GDB session under Emacs is entirely asynchronous, so sending a command > and waiting for its response before sending the rest is not easy. So > I tend to the second alternative. I don't know much about gdb-mi.el's internals, but taking a quick look at the code, 'gdb-input' takes a callback, so something like the following pseudocode would probably do the trick? (gdb-input "-gdb-version" (lambda () (if (gdb-should-use-mi-async) ; Check the version output. (gdb-input "-gdb-set mi-async on" #'ignore) (gdb-input "-gdb-set target-async on" #'ignore)) (gdb-input "-list-target-features" #'gdb-check-target-async))) The existing 'gdb-check-target-async' already chains GDB-MI commands like this, so I imagine the above will Just Work. From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 07 02:25:44 2023 Received: (at 62697) by debbugs.gnu.org; 7 Apr 2023 06:25:44 +0000 Received: from localhost ([127.0.0.1]:55587 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkfXc-0006bS-Ai for submit@debbugs.gnu.org; Fri, 07 Apr 2023 02:25:44 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkfXY-0006b9-Ns for 62697@debbugs.gnu.org; Fri, 07 Apr 2023 02:25:42 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkfXT-0005Po-AK; Fri, 07 Apr 2023 02:25:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=4JlXqJqqqbXmfW/WNH3VM6bBGEwL4/nVilYH7+08o60=; b=C8AhabO//2qr WD7Eo3NVz/hLlC5ri1/IaCL6d1OgLVtJUqdoPEE4tO26j/F6iWgbFZ+XyM1frSUNLnGFixxtVSmVY vM6/cPj9PFE4BJpYxHKO857DwIcEnS6lyLQL6dF8VCjQpLt+b0XIbXYcoLksocPImzlROyxhigKy4 GBsh4WUCFJLOhzxJH2Ji4yfSl+US6Y31jGC6nPOY6vKJ2lYTGgFNwY5zJru62D5bjxNICMUrkWpPM wKtvvB6naROLGK+GSGWkJjCsWLfEcRj1jw9hznMCJdQ02QRSiOZfwRFiB4A3jNi0xmRfW0GRufGsK C+dCmlM+Jg4thpJBDv32lA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkfXS-0000Pf-NV; Fri, 07 Apr 2023 02:25:35 -0400 Date: Fri, 07 Apr 2023 09:26:06 +0300 Message-Id: <83h6tsp5s1.fsf@gnu.org> From: Eli Zaretskii To: Jim Porter In-Reply-To: <79ec3700-02ab-7574-1411-dfef0ec5eb7f@gmail.com> (message from Jim Porter on Thu, 6 Apr 2023 18:26:48 -0700) Subject: Re: bug#62697: gdb-mi.el: Change target-async to mi-async References: <835ya9qgox.fsf@gnu.org> <79ec3700-02ab-7574-1411-dfef0ec5eb7f@gmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 62697 Cc: 62697@debbugs.gnu.org, gustaf.waldemarson@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Thu, 6 Apr 2023 18:26:48 -0700 > Cc: 62697@debbugs.gnu.org > From: Jim Porter > > On 4/6/2023 6:32 AM, Eli Zaretskii wrote: > > We could either (1) ask GDB about its version, or (2) filter out the > > annoying message so it isn't shown to the users; we'd then have to > > revisit this if/when GDB actually drops the command, if it ever does. > > > > Alternative (1) is AFAIR problematic because the initialization of a > > GDB session under Emacs is entirely asynchronous, so sending a command > > and waiting for its response before sending the rest is not easy. So > > I tend to the second alternative. > > I don't know much about gdb-mi.el's internals, but taking a quick look > at the code, 'gdb-input' takes a callback, so something like the > following pseudocode would probably do the trick? The problem is not with the callback, the problem is with _when_ the callback is called. gdb-mi doesn't wait for each gdb-input call to complete and its callback called before calling the next gdb-input. In practice, we send a dozen gdb-input commands before the response for the first one is received and its callback called. You can clearly see that if you enable gdb-enable-debug and look at the log it collects. So sending a command via gdb-input, then conditioning another command on it is not trivial, since the callback could be called much later. > (gdb-input "-gdb-version" > (lambda () > (if (gdb-should-use-mi-async) ; Check the version output. > (gdb-input "-gdb-set mi-async on" #'ignore) > (gdb-input "-gdb-set target-async on" #'ignore)) > (gdb-input "-list-target-features" #'gdb-check-target-async))) > > The existing 'gdb-check-target-async' already chains GDB-MI commands > like this, so I imagine the above will Just Work. It "will work", but what if the other commands sent via the other gdb-input calls during initialization depend, or change the GDB behavior depending, on whether mi-async was or wasn't already sent? Or are you saying that mi-async can be sent anywhere during the initialization sequence, including after it finishes? The GDB manual says: The frontend may specify a preference for asynchronous execution using the '-gdb-set mi-async 1' command, which should be emitted before either running the executable or attaching to the target. If GDB is invoked with, e.g., "gdb -p PID", then we need to send this command up front, before GDB attaches. And there could be other issues with that proposal. Which is why I said that alternative was "problematic". Filtering out the annoying message is much safer, IMO. From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 07 03:25:19 2023 Received: (at 62697) by debbugs.gnu.org; 7 Apr 2023 07:25:19 +0000 Received: from localhost ([127.0.0.1]:55626 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkgTC-0008Is-IH for submit@debbugs.gnu.org; Fri, 07 Apr 2023 03:25:18 -0400 Received: from mail-pj1-f53.google.com ([209.85.216.53]:41767) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkgT7-0008IZ-R7 for 62697@debbugs.gnu.org; Fri, 07 Apr 2023 03:25:13 -0400 Received: by mail-pj1-f53.google.com with SMTP id fy10-20020a17090b020a00b0023b4bcf0727so42720808pjb.0 for <62697@debbugs.gnu.org>; Fri, 07 Apr 2023 00:25:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680852304; x=1683444304; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=CbbYsPQuWb09M9Y3pk94m/nwaqdtvMMQaDoPkM/tWFs=; b=MeV60wajuUnVK26tXsyD6FdG5JBynMZZd34NPIBOxeJZW+lWjEjXSJei1W7UUoh3T3 sOJiekQU1Ws1sG7QErZZTjSJHfp6gj3XHbr46m8t6rX3YsMnzKRpqmcx8eBnyB5juMu0 4f7dcZiMC0gD4ODBUH7SdOWIxk1QeZl9Ml1plX2/ahhuX3LSs7yz/nuSoLMWfHzALcsO psRsmZoSeB6i631AszaiCRB5rJCuux9WQsd4KhkeY3mp/KLzccE3JRv8RnWp4coVzsob EkRlBj0GaCO+/P1Ty2mSneRV/V6p0dRIJ2HoyGOhGbFzaTi7dncpExQvymKqmd8TM2SN vDvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680852304; x=1683444304; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=CbbYsPQuWb09M9Y3pk94m/nwaqdtvMMQaDoPkM/tWFs=; b=DeEHcGBk+b/AP4yc2Pxr1rSFtNPjhNnMW0agUT62n6a1ObPQTqAr66g2QBcQgKO5+X WFrhJs0alLRWIXITZwpe5q7QppfPl8ziUMNPuINurXwacKIz6coVtXsWEfPr9xutL4XQ XmAXi8SmQ2JNBQVIZTDiriMkuz9j+iXVCNjDbFOPug53F8GQh/yP8trVgrKRKhX4XOUM heM48rRepTehvGUHsqW2/cwR14lqnz//8YVHrmP/hWe2rlU7LBbNWBMZ16rmuVdvP6Ki 96C88r4oXiOCSw2Tn0M3yI8ZrugvPSFoMt5Rrjo8XxpJzPzOJh7SIKg0EUDu5mgLraRh YjyA== X-Gm-Message-State: AAQBX9dpWnxuVZk/O8hPhPC1jO412QzrNUFXMG65P7urb8nT5m4tYhr7 aZ5fYu9gNdet+gAhRYfmRrQ= X-Google-Smtp-Source: AKy350YKpXfHiFOz6cwa5+r8CLrB0Q+TRNqPMPf9dwR6HLzgv4nmggQWgtXpbWxlx+K1+LB2wdKTVg== X-Received: by 2002:a17:90b:3a8f:b0:246:57f6:44b5 with SMTP id om15-20020a17090b3a8f00b0024657f644b5mr805870pjb.12.1680852303651; Fri, 07 Apr 2023 00:25:03 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id y13-20020a17090a154d00b002376d85844dsm495232pja.51.2023.04.07.00.25.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Apr 2023 00:25:03 -0700 (PDT) Message-ID: Date: Fri, 7 Apr 2023 00:25:03 -0700 MIME-Version: 1.0 Subject: Re: bug#62697: gdb-mi.el: Change target-async to mi-async Content-Language: en-US To: Eli Zaretskii References: <835ya9qgox.fsf@gnu.org> <79ec3700-02ab-7574-1411-dfef0ec5eb7f@gmail.com> <83h6tsp5s1.fsf@gnu.org> From: Jim Porter In-Reply-To: <83h6tsp5s1.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 62697 Cc: 62697@debbugs.gnu.org, gustaf.waldemarson@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 4/6/2023 11:26 PM, Eli Zaretskii wrote: > It "will work", but what if the other commands sent via the other > gdb-input calls during initialization depend, or change the GDB > behavior depending, on whether mi-async was or wasn't already sent? > Or are you saying that mi-async can be sent anywhere during the > initialization sequence, including after it finishes? The GDB manual > says: > > The frontend may specify a preference for asynchronous execution > using the '-gdb-set mi-async 1' command, which should be emitted > before either running the executable or attaching to the target. > > If GDB is invoked with, e.g., "gdb -p PID", then we need to send this > command up front, before GDB attaches. Maybe I'm just misunderstanding something, but it looks like "-gdb-set target-async 1" is already sent from a callback: specifically, the one for "-gdb-set non-stop 1". Is this code already violating GDB's rules? Would adding another layer of callback make it any worse? Maybe so, but if we're worried about the latter, then couldn't we do something like: ------------------------------ (defun gdb-init-1 () ;; ... ;; Add this call: (gdb-input "-gdb-version" #'gdb-version-handler) ;; ... ;; This is existing code: (when gdb-non-stop (gdb-input "-gdb-set non-stop 1" 'gdb-non-stop-handler)) ;; ... ) (defun gdb-version-handler () (setq gdb-version (some-logic-here))) ;; This is also existing code: (defun gdb-non-stop-handler () ;; By here, 'gdb-version-handler' should have been called, right? ;; I'm assuming handlers are called in the same order as the input was ;; sent to gdb. If so, just check 'gdb-version' and do the right ;; thing. ) ------------------------------ Assuming handlers are called in the same order as their inputs are sent, this should work, and then everything will happen in the same order as gdb-mi.el currently does. My main worry with just suppressing the warning is that presumably at some point in the future, GDB will remove the old form entirely, and then gdb-mi.el breaks. If we could get this code to use the new form when available, then there's no need to worry about having to publish a hotfix for gdb-mi.el on short notice. From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 07 06:29:24 2023 Received: (at 62697) by debbugs.gnu.org; 7 Apr 2023 10:29:24 +0000 Received: from localhost ([127.0.0.1]:55716 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkjLP-0007rp-Uo for submit@debbugs.gnu.org; Fri, 07 Apr 2023 06:29:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45922) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkjLN-0007rX-4y for 62697@debbugs.gnu.org; Fri, 07 Apr 2023 06:29:23 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkjLH-0005ju-Fb; Fri, 07 Apr 2023 06:29:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=PvflA2tM8yFOqt+qvSLaY1LPIkDbstrfbH0tUdNXGdQ=; b=lubYlPIOUGR8 1OF1/WGhOfpvPDuQXlHODha5/pPUUe1LvztuXKm7VrY06duwvAiqZDLV4eXjWXD64xEQzYU1yL5Dy r+Xsv2kzrp5uCA1eY5rWOGG7XyymlLit99W3ym/0480r7XIcKYUDYKejunAognFG622GRekZ5ExZ3 EiFPWJntBxcq6AvlU6jWa1lOY8dKkEXrn0KZ7arsGv5Zu9xM62yG2R3RFLCR8XzqMCI8X1lriAa20 GbiZ2nxarF0KZo29c4eCVvR2DFIyxP6Zb8pvISfKDS3dMmSzsJ1c34p4/CanWdoOk/nj4frA9bwbg rRn0Ma0qrTMzenk9mxEqFQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkjLG-0001Bg-Ob; Fri, 07 Apr 2023 06:29:15 -0400 Date: Fri, 07 Apr 2023 13:29:46 +0300 Message-Id: <83bkk0ouhx.fsf@gnu.org> From: Eli Zaretskii To: Jim Porter In-Reply-To: (message from Jim Porter on Fri, 7 Apr 2023 00:25:03 -0700) Subject: Re: bug#62697: gdb-mi.el: Change target-async to mi-async References: <835ya9qgox.fsf@gnu.org> <79ec3700-02ab-7574-1411-dfef0ec5eb7f@gmail.com> <83h6tsp5s1.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 62697 Cc: 62697@debbugs.gnu.org, gustaf.waldemarson@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Fri, 7 Apr 2023 00:25:03 -0700 > Cc: 62697@debbugs.gnu.org, gustaf.waldemarson@gmail.com > From: Jim Porter > > On 4/6/2023 11:26 PM, Eli Zaretskii wrote: > > > > The frontend may specify a preference for asynchronous execution > > using the '-gdb-set mi-async 1' command, which should be emitted > > before either running the executable or attaching to the target. > > > > If GDB is invoked with, e.g., "gdb -p PID", then we need to send this > > command up front, before GDB attaches. > > Maybe I'm just misunderstanding something, but it looks like "-gdb-set > target-async 1" is already sent from a callback: specifically, the one > for "-gdb-set non-stop 1". Is this code already violating GDB's rules? I don't know. > Would adding another layer of callback make it any worse? I don't know. > Maybe so, but if we're worried about the latter, then couldn't we do > something like: I don't know! It will take someone who knows a lot more than I do about both GDB/MI and gdb-mi.el to tell, and the changes need to be tested with many different versions of GDB. Feel free to do that and see if those changes are benign, and then we can install them. Failing that, given that we don't have an active enough maintainer of gdb-mi.el on board, I feel that suppressing the annoying message is a much more easy way out. > Assuming handlers are called in the same order as their inputs are sent, They are called in the order in which responses for inputs are received, not in the order these inputs are sent. I don't think these are the same orders, at least they aren't guaranteed to be. You can see this by yourself if you enable the gdb-mi debug mode (each response is tagged with the number of the corresponding input command, and those numbers are given to commands by gdb-mi.el in the order it sends the commands). > My main worry with just suppressing the warning is that presumably at > some point in the future, GDB will remove the old form entirely, and > then gdb-mi.el breaks. I'm not even sure this will be removed at all. It certainly won't be removed soon, as they just recently started issuing a warning. For example, the annotations feature of GDB, use by "M-x gud-gdb", is still being supported, although it became deprecated as soon as GDB/MI was added to GDB. > If we could get this code to use the new form when available, then > there's no need to worry about having to publish a hotfix for > gdb-mi.el on short notice. I agree. But if adding that means dealing with tricky timing-dependent and version-dependent bugs, I prefer to use a less radical solution, even if it's less clean and less future-proof. Btw, as an easy alternative, we could add a defcustom whose value would be the minimum supported value of GDB. Then users could set it to, say, 7.8.0, to force gdb-mi.el to use mi-async, and by that avoid the annoyance. This could even go into Emacs 29. From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 07 06:36:50 2023 Received: (at 62697) by debbugs.gnu.org; 7 Apr 2023 10:36:50 +0000 Received: from localhost ([127.0.0.1]:55732 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkjSb-00089b-M3 for submit@debbugs.gnu.org; Fri, 07 Apr 2023 06:36:50 -0400 Received: from mail-yw1-f173.google.com ([209.85.128.173]:43905) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkjSa-00089O-DL for 62697@debbugs.gnu.org; Fri, 07 Apr 2023 06:36:49 -0400 Received: by mail-yw1-f173.google.com with SMTP id 00721157ae682-5491fa028adso292499157b3.10 for <62697@debbugs.gnu.org>; Fri, 07 Apr 2023 03:36:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680863803; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=W/v9pZvpZkCNT+QBFRyij4nH6l3DlHD2JZJ3GxBV/M0=; b=JSjO6qw2Y8IvBxpsofe+TrR8cHcVndyRozMY+dhUkZfDUz0rWXMF/Qi0riA4r9KYxV TibxlHFtzMw/5sbZJvGwIzKVN91evDOwJrQpNoMBrFxSQVrEPVBTkPdsOYaliW39W1No KZtjbX63tjWzOtDalyN2J5TCptlMcN+BPfq3t60foJnwjNU/PSc4Am7OMGJbECRPwu+P jZ7gqH22fwzOJi5c813y9+pf33d6bIFDK9H7v0/W2hZKdBK02U06vr+VNL2uYgy0U7Om WgAxBRDyT8VHQ6sWiIwDFTAF3VPAd4fEG6yzYoeqvNsr/hCss8EVJsITOvK7EO9+e5m9 1jeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680863803; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=W/v9pZvpZkCNT+QBFRyij4nH6l3DlHD2JZJ3GxBV/M0=; b=SSu45a6hi50jAXn1tqJcx1cvIz5OWL7R79zcTeHJr/DOlcqMkvGGdgHEJuPv1uDk/c 6e0CDde2gHp5xTBNNFPDoeBYNJ4cqowHYkQ/zbR3uRbrtazgTOtr7EfcPK5BrAR1q1EE qiirmthEiq3fn6z59uskCT8QpE1te5iF2seNV4IYhsya+YubP2kfxtW1SvSUtwbfqiTw R8MDS8WNMzXhD3JBmCP7HODEGWqyHCE8s2f4VjdFzvTWpvfCZ9AjBcxSBwGC+Anc1OGx ACVzVhPZxVhLWfEs4XCtcLT/gh/HOmgUfYQaYhnewWGRc7RmAdKbfYuyFoJhU8BthFJH 6hbA== X-Gm-Message-State: AAQBX9fpCrt08705YJqq6jiaejBYbA9ZT4EVmjBsC0l4T4iJlpIxHzL1 qxCvapMlA3gDHgr0atmg2ygSMdwta9zxtgcm/I0= X-Google-Smtp-Source: AKy350bUbdNCVTioWWReCkW8nj+Kj9fX5061K6qOMQsEmli7nPXh6bnSRybVtmtduFBZy8jHX+36wLKayajkq2mm7qM= X-Received: by 2002:a81:ac44:0:b0:544:5042:324a with SMTP id z4-20020a81ac44000000b005445042324amr883255ywj.3.1680863802732; Fri, 07 Apr 2023 03:36:42 -0700 (PDT) MIME-Version: 1.0 References: <835ya9qgox.fsf@gnu.org> <79ec3700-02ab-7574-1411-dfef0ec5eb7f@gmail.com> <83h6tsp5s1.fsf@gnu.org> <83bkk0ouhx.fsf@gnu.org> In-Reply-To: <83bkk0ouhx.fsf@gnu.org> From: Gustaf Waldemarson Date: Fri, 7 Apr 2023 12:36:31 +0200 Message-ID: Subject: Re: bug#62697: gdb-mi.el: Change target-async to mi-async To: Eli Zaretskii Content-Type: multipart/alternative; boundary="000000000000e0b44605f8bc99a6" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 62697 Cc: Jim Porter , 62697@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000e0b44605f8bc99a6 Content-Type: text/plain; charset="UTF-8" Filtering the message is probably easy, but as Jim pointed out, it will probably have unintended consequences later on. Besides, extracting the version could enable a lot of different things down the line. I had actually started on a "check-gdb-version-string", but was never able to get it to work. In fact, revisiting that code now makes we wonder if any of these "handlers" are actually working as intended. >From what I can see, the handlers scan the current buffer (which one is that anyways?) to determine whether to do some operations. However, adding some prints to these handlers reveal that they seem to always be empty: (defun gdb-non-stop-handler () (goto-char (point-min)) (print (buffer-substring-no-properties (point-min) (point-max))) (if (re-search-forward "No symbol" nil t) (progn (message "This version of GDB doesn't support non-stop mode. Turning it off.") (setq gdb-non-stop nil) (setq gdb-supports-non-stop nil)) (setq gdb-supports-non-stop t) (gdb-input "-gdb-set mi-async on" 'ignore) (gdb-input "-list-target-features" 'gdb-check-mi-async))) (defun gdb-version-handler () "Set the version of gdb currently being used." (message "Searching for GDB version...") (goto-char (point-min)) (print (buffer-substring-no-properties (point-min) (point-max))) (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer) (goto-char (point-min)) (print (buffer-substring-no-properties (point-min) (point-max))) (when (re-search-forward "GNU gdb (GDB) \\(.+\\)" nil t) (message "Attempting to retrieve GDB version: %s" (match-string 1)) (setq gdb-version (match-string 1))))) I also tried to change the buffer in the `gdb-version-handler`, but that didn't actually change anything. Am I making some wrong assumption here? To me at least, it does not make sense that these are empty. Best regards, Gustaf Den fre 7 apr. 2023 kl 12:29 skrev Eli Zaretskii : > > Date: Fri, 7 Apr 2023 00:25:03 -0700 > > Cc: 62697@debbugs.gnu.org, gustaf.waldemarson@gmail.com > > From: Jim Porter > > > > On 4/6/2023 11:26 PM, Eli Zaretskii wrote: > > > > > > The frontend may specify a preference for asynchronous execution > > > using the '-gdb-set mi-async 1' command, which should be emitted > > > before either running the executable or attaching to the target. > > > > > > If GDB is invoked with, e.g., "gdb -p PID", then we need to send this > > > command up front, before GDB attaches. > > > > Maybe I'm just misunderstanding something, but it looks like "-gdb-set > > target-async 1" is already sent from a callback: specifically, the one > > for "-gdb-set non-stop 1". Is this code already violating GDB's rules? > > I don't know. > > > Would adding another layer of callback make it any worse? > > I don't know. > > > Maybe so, but if we're worried about the latter, then couldn't we do > > something like: > > I don't know! It will take someone who knows a lot more than I do > about both GDB/MI and gdb-mi.el to tell, and the changes need to be > tested with many different versions of GDB. Feel free to do that and > see if those changes are benign, and then we can install them. > Failing that, given that we don't have an active enough maintainer of > gdb-mi.el on board, I feel that suppressing the annoying message is a > much more easy way out. > > > Assuming handlers are called in the same order as their inputs are sent, > > They are called in the order in which responses for inputs are > received, not in the order these inputs are sent. I don't think these > are the same orders, at least they aren't guaranteed to be. You can > see this by yourself if you enable the gdb-mi debug mode (each > response is tagged with the number of the corresponding input command, > and those numbers are given to commands by gdb-mi.el in the order it > sends the commands). > > > My main worry with just suppressing the warning is that presumably at > > some point in the future, GDB will remove the old form entirely, and > > then gdb-mi.el breaks. > > I'm not even sure this will be removed at all. It certainly won't be > removed soon, as they just recently started issuing a warning. For > example, the annotations feature of GDB, use by "M-x gud-gdb", is > still being supported, although it became deprecated as soon as GDB/MI > was added to GDB. > > > If we could get this code to use the new form when available, then > > there's no need to worry about having to publish a hotfix for > > gdb-mi.el on short notice. > > I agree. But if adding that means dealing with tricky > timing-dependent and version-dependent bugs, I prefer to use a less > radical solution, even if it's less clean and less future-proof. > > Btw, as an easy alternative, we could add a defcustom whose value > would be the minimum supported value of GDB. Then users could set it > to, say, 7.8.0, to force gdb-mi.el to use mi-async, and by that avoid > the annoyance. This could even go into Emacs 29. > --000000000000e0b44605f8bc99a6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Filtering the message is probably easy, but as Jim po= inted out, it will probably
have unintended consequences lat= er on. Besides, extracting the version could
enable a lot of diff= erent things down the line.

I had actually started= on a "check-gdb-version-string", but was never able to
get it to work. In fact, revisiting that code now makes we wonder if any o= f these
"handlers" are actually working as intended.

From what I can see, the handlers scan the current b= uffer (which one is that anyways?)
to determine whether to do som= e operations. However, adding some prints to
these handlers revea= l that they seem to always be empty:

(defun gd= b-non-stop-handler ()
=C2=A0 (goto-char (point-min))
=C2=A0 (print (b= uffer-substring-no-properties (point-min) (point-max)))
=C2=A0 (if (re-s= earch-forward "No symbol" nil t)
=C2=A0 =C2=A0 =C2=A0 (progn (message
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"This version of GDB = doesn't support non-stop mode.=C2=A0 Turning it off.")
(setq g= db-non-stop nil)
(setq gdb-supports-non-stop nil))
=C2=A0 =C2=A0 (se= tq gdb-supports-non-stop t)
=C2=A0 =C2=A0 (gdb-input "-gdb-set mi-a= sync on" 'ignore)
=C2=A0 =C2=A0 (gdb-input "-list-target-f= eatures" 'gdb-check-mi-async)))

(defu= n gdb-version-handler ()
=C2=A0 "Set the version of gdb currently b= eing used."
=C2=A0 (message "Searching for GDB version..."= ;)
=C2=A0 (goto-char (point-min))
=C2=A0 (print (buffer-substring-no-= properties (point-min) (point-max)))
=C2=A0 (with-current-buffer (gdb-ge= t-buffer 'gdb-partial-output-buffer)
=C2=A0 =C2=A0 (goto-char (point= -min))
=C2=A0 =C2=A0 (print (buffer-substring-no-properties (point-min) = (point-max)))
=C2=A0 =C2=A0 (when (re-search-forward "GNU gdb (GDB)= \\(.+\\)" nil t)
=C2=A0 =C2=A0 =C2=A0 (message
=C2=A0 =C2=A0 = =C2=A0 =C2=A0"Attempting to retrieve GDB version: %s" (match-stri= ng 1))
=C2=A0 =C2=A0 =C2=A0 (setq gdb-version (match-string 1)))))
=

I also tried to change the buffer in the `gdb-version-h= andler`, but that didn't
actually change anything. Am I makin= g some wrong assumption here? To me
at least, it does not make se= nse that these are empty.

Best regards,
= Gustaf

Den fre 7 apr. 2023 kl 12:29 skrev Eli Zaretskii <eliz@gnu.org>:
> Date: Fri, 7 Apr 2023 00:25:03 -0700
> Cc: 62697@d= ebbugs.gnu.org, gustaf.waldemarson@gmail.com
> From: Jim Porter <jporterbugs@gmail.com>
>
> On 4/6/2023 11:26 PM, Eli Zaretskii wrote:
> >
> >=C2=A0 =C2=A0 The frontend may specify a preference for asynchrono= us execution
> >=C2=A0 =C2=A0 using the '-gdb-set mi-async 1' command, whi= ch should be emitted
> >=C2=A0 =C2=A0 before either running the executable or attaching to= the target.
> >
> > If GDB is invoked with, e.g., "gdb -p PID", then we nee= d to send this
> > command up front, before GDB attaches.
>
> Maybe I'm just misunderstanding something, but it looks like "= ;-gdb-set
> target-async 1" is already sent from a callback: specifically, th= e one
> for "-gdb-set non-stop 1". Is this code already violating GD= B's rules?

I don't know.

> Would adding another layer of callback make it any worse?

I don't know.

> Maybe so, but if we're worried about the latter, then couldn't= we do
> something like:

I don't know!=C2=A0 It will take someone who knows a lot more than I do=
about both GDB/MI and gdb-mi.el to tell, and the changes need to be
tested with many different versions of GDB.=C2=A0 Feel free to do that and<= br> see if those changes are benign, and then we can install them.
Failing that, given that we don't have an active enough maintainer of gdb-mi.el on board, I feel that suppressing the annoying message is a
much more easy way out.

> Assuming handlers are called in the same order as their inputs are sen= t,

They are called in the order in which responses for inputs are
received, not in the order these inputs are sent.=C2=A0 I don't think t= hese
are the same orders, at least they aren't guaranteed to be.=C2=A0 You c= an
see this by yourself if you enable the gdb-mi debug mode (each
response is tagged with the number of the corresponding input command,
and those numbers are given to commands by gdb-mi.el in the order it
sends the commands).

> My main worry with just suppressing the warning is that presumably at =
> some point in the future, GDB will remove the old form entirely, and <= br> > then gdb-mi.el breaks.

I'm not even sure this will be removed at all.=C2=A0 It certainly won&#= 39;t be
removed soon, as they just recently started issuing a warning.=C2=A0 For example, the annotations feature of GDB, use by "M-x gud-gdb", is=
still being supported, although it became deprecated as soon as GDB/MI
was added to GDB.

> If we could get this code to use the new form when available, then
> there's no need to worry about having to publish a hotfix for
> gdb-mi.el on short notice.

I agree.=C2=A0 But if adding that means dealing with tricky
timing-dependent and version-dependent bugs, I prefer to use a less
radical solution, even if it's less clean and less future-proof.

Btw, as an easy alternative, we could add a defcustom whose value
would be the minimum supported value of GDB.=C2=A0 Then users could set it<= br> to, say, 7.8.0, to force gdb-mi.el to use mi-async, and by that avoid
the annoyance.=C2=A0 This could even go into Emacs 29.
--000000000000e0b44605f8bc99a6-- From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 07 06:53:35 2023 Received: (at 62697) by debbugs.gnu.org; 7 Apr 2023 10:53:35 +0000 Received: from localhost ([127.0.0.1]:55771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkjio-0000L0-W3 for submit@debbugs.gnu.org; Fri, 07 Apr 2023 06:53:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:57840) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pkjin-0000Ko-Nn for 62697@debbugs.gnu.org; Fri, 07 Apr 2023 06:53:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkjii-0008Ly-6a; Fri, 07 Apr 2023 06:53:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=TZsbHuySFWYrVwyKS8fiyqhBB6tCH4ccqYk7PkLwdVk=; b=iBc9YE969wfk jmJTdwTMcxGNQAqnZRrRU3v+X+eL2+UP/Z3eHYdB41DG/XqvEbrQ4cPDgBhPm6MNaoomRbDevuRUo TuqUyd+ukuIl0Az44515cWfju9WdjbohQ0FhBlxZAkqnSCuX13UMhh5LGlmlZLJCIY/0QzrPejcPc beAp8YwON0g/SHhy11A0FRBNFhoujwL7M24ANLYH7QXrFf8p7apwXLjNm32RptI1cSYHk3TGP/ICx fjevcxUhf0RDAkYqhVcc/AYZSEFvZnAN0oWMbmlWjUBIhksUQ6lc2RJRxXuvIi/MrXZKPzTdlGTtD LcqVqrUZU3/ueVsyOIypMQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pkjih-0004ib-Ds; Fri, 07 Apr 2023 06:53:27 -0400 Date: Fri, 07 Apr 2023 13:53:59 +0300 Message-Id: <834jpsotdk.fsf@gnu.org> From: Eli Zaretskii To: Gustaf Waldemarson In-Reply-To: (message from Gustaf Waldemarson on Fri, 7 Apr 2023 12:36:31 +0200) Subject: Re: bug#62697: gdb-mi.el: Change target-async to mi-async References: <835ya9qgox.fsf@gnu.org> <79ec3700-02ab-7574-1411-dfef0ec5eb7f@gmail.com> <83h6tsp5s1.fsf@gnu.org> <83bkk0ouhx.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 62697 Cc: jporterbugs@gmail.com, 62697@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Gustaf Waldemarson > Date: Fri, 7 Apr 2023 12:36:31 +0200 > Cc: Jim Porter , 62697@debbugs.gnu.org > > Filtering the message is probably easy, but as Jim pointed out, it will probably > have unintended consequences later on. Leave that problem to me (or to the maintainer that will come after me). The problem you raised was with the annoying message; let's solve that first and foremost. > Besides, extracting the version could > enable a lot of different things down the line. It could, but it is "tricky", as you have discovered (and I discovered before you). > I had actually started on a "check-gdb-version-string", but was never able to > get it to work. In fact, revisiting that code now makes we wonder if any of these > "handlers" are actually working as intended. They do work. It's just that the way this is implemented is "tricky", as I said from the get-go. > From what I can see, the handlers scan the current buffer (which one is that anyways?) > to determine whether to do some operations. However, adding some prints to > these handlers reveal that they seem to always be empty: > > (defun gdb-non-stop-handler () > (goto-char (point-min)) > (print (buffer-substring-no-properties (point-min) (point-max))) > (if (re-search-forward "No symbol" nil t) > (progn > (message > "This version of GDB doesn't support non-stop mode. Turning it off.") > (setq gdb-non-stop nil) > (setq gdb-supports-non-stop nil)) > (setq gdb-supports-non-stop t) > (gdb-input "-gdb-set mi-async on" 'ignore) > (gdb-input "-list-target-features" 'gdb-check-mi-async))) The "No symbol" text means that we have invoked a command that is not supported by the GDB you have installed. Unless you test this with a very old version of GDB, you will never see that text. The way these commands work is like this: . gdb-input sends a command which has a serial number (the numbers are allocated by gdb-mi.el in increasing order, starting from 1) . gdb-input also registers a callback for the response . when the response is received, it is recognized by the serial number (GDB responds with the same serial number as the command to which it responded), and the corresponding callback is then called, and removed from the list of callbacks waiting for response . each callback is programmed to look for possible known GDB reactions (per the GDB/MI protocol), which could be one or more of: - nothing (a normal reaction in many cases) - some output, like if the command requests the list of threads - an error message - free text message . these texts are (AFAIR) looked for in the process buffer, where the filter puts them