Subject: bug#64186: Patch: Suppress deprecated '-gdb-set target-async' warning message in gdb-mi.el

From: Eli Zaretskii <[email-masked]>
Date: Thu, 29 Jun 2023 09:09:21 +0300

> From: Wang Diancheng <[email-masked]>
> Date: Wed, 28 Jun 2023 11:51:39 +0800
> Cc: [email-masked], [email-masked]
> 
> I did some hacks to make gdb-non-stop work, patch is attached. The
> patch try to set `gdb-non-stop` when target is running or at first
> stop. Sorry for rough patch. I'm new for elisp.

Thanks.  This looks about right to me, except that "run&" is not the
only command whose side effect is that the debuggee is running in the
background mode.  We also need to at least consider "attach&", I
think.  Maybe it would be useful to have a list of such commands, so
that we could expand it as needed in the future, because currently I
don't really understand what triggers background execution that causes
"-list-target-features" to report "async".  It sounds possible that
this happens only after the first command that ends with "&", in which
case we will need to add to the list all the commands mentioned in the
"Background Execution" node of the GDB manual.  This affects the test
below:

> +  ;; Set `gdb-non-stop` when `gdb-last-command` is a CLI background
> +  ;; `run` command e.g. r& or MI command `-exec-run`
> +  (when (or (string-match "&\s*$" gdb-last-command)
> +            (string-match "-exec-run" gdb-last-command))
> +    (gdb-try-check-target-async-support))

And I'm not sure I understand the idea behind this part:

> @@ -2722,6 +2744,9 @@ gdb-stopped
>  
>      ;; Print "(gdb)" to GUD console
>      (when gdb-first-done-or-error
> +      ;; If run target with CLI foreground command `run`, `target
> +      ;; async` can only be checked when target is stopped
> +      (gdb-try-check-target-async-support)
>        (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name)))

Can you elaborate?

Finally, please don't quote symbols `like this` in comments.  Our
conventions are to quote symbols 'like this' or `like this'.