Subject: bug#40210: 28.0.50; gdb-mi incorrectly handles EOF/C-d/gdb-io-eof when gdb-many-windows is t. Additionally, variable documentation for gdb-many-windows is misleading.

From: Vladimir Nikishkin <[email-masked]>
Date: Tue, 24 Mar 2020 22:40:47 +0800

Yes, seems to be working for me.

Shan't the same (get-buffer-process (gdb-get-buffer-create
'gdb-inferior-io)) be also added to gdb-io-stop, gdb-io-quit,
gdb-io-interrupt functions? They seem to also be doing their job in
the input/output buffer.

2020-03-24 22:30 GMT+08:00, Eli Zaretskii <[email-masked]>:
>> From: Vladimir Nikishkin <[email-masked]>
>> Date: Tue, 24 Mar 2020 20:12:32 +0800
>>
>> 1. emacs -q
>> 2. M-: (require 'gdb-mi) RET
>> 3. M-x set-variable RET gdb-many-windows RET t
>> 4. gdb RET /usr/bin/cat RET
>> 5. run
>> 6. C-x b *input/output-of-cat* RET
>> 7. C-d
>>
>> Nothing happens, although EOF should be sent to the cat process.
>
> Does the patch below give good results?
>
>> Additionally, clicking on <menu> <signals> <EOF> kills gdb process
>> rather than sending the EOF to the cat process.
>
> That's expected, I think, since that sends EOF to GDB.
>
> diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
> index ea3b1b8..228e506 100644
> --- a/lisp/progmodes/gdb-mi.el
> +++ b/lisp/progmodes/gdb-mi.el
> @@ -1747,7 +1747,7 @@ gdb-io-eof
>    "Send end-of-file to the program being debugged."
>    (interactive)
>    (process-send-eof
> -   (get-buffer-process gud-comint-buffer)))
> +   (get-buffer-process (gdb-get-buffer-create 'gdb-inferior-io))))
>
>  (defun gdb-clear-inferior-io ()
>    (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
>

-- 
Yours sincerely, Vladimir Nikishkin