aboutsummaryrefslogtreecommitdiff
path: root/gdb/obsd-nat.c
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2024-10-30 12:16:46 +0000
committerAndrew Burgess <aburgess@redhat.com>2024-11-12 14:07:35 +0000
commit31fa6221bf88accee782e2c93cb869eee5d4113c (patch)
treee87552b433e6a21f05609e3def1f733e861a5207 /gdb/obsd-nat.c
parentb0c6153ccfbbcf6c57f7eae2efbdea8019e0cba2 (diff)
downloadgdb-31fa6221bf88accee782e2c93cb869eee5d4113c.zip
gdb-31fa6221bf88accee782e2c93cb869eee5d4113c.tar.gz
gdb-31fa6221bf88accee782e2c93cb869eee5d4113c.tar.bz2
gdb/readline: don't get stuck thinking an EOF arrived
It was brought to my attention[1] that if a user makes use of Ctrl+d to quit from a secondary prompt (e.g. the prompt used to enter lines for the 'commands' command) then GDB will start displaying some unexpected blank lines. Here's an example: Reading symbols from /tmp/hello.x... (gdb) break main Breakpoint 1 at 0x401198: file hello.c, line 18. (gdb) commands Type commands for breakpoint(s) 1, one per line. End with a line saying just "end". >quit # <----------- Use Ctrl+d to quit here. (gdb) show architecture # <----------- This blank line is unexpected. The target architecture is set to "auto" (currently "i386:x86-64"). (gdb) I've marked up where I press 'Ctrl+d', and also the unexpected blank line. This issue will only happen if bracketed-paste-mode is in use. If this has been disabled (e.g. in ~/.inputrc) then this issue will not occur. The blank line is not just emitted for the 'show architecture' command. The blank line is actually caused by an extra '\n' character emitted by readline after it has gathered a complete line of input, and so will occur for any command. The problem is caused by readline getting "stuck" in a state where it thinks that an EOF has just been delivered. This state is set when the 'Ctrl+d' does deliver an EOF, but then this state is never fully reset. As a result, every time readline completes a line, it thinks that the line was completed due to an EOF and so adds an extra '\n' character. Obviously the real fix for this issue is to patch readline, and I do have a patch for that[2], however, version 8.2 of readline has been released, and contains this issue. As such, if GDB is linked against the system readline, and that system readline is 8.2, then we can expect to see this issue. There's a pretty simple, and cheap workaround that we can add to GDB that will mitigate this issue. I propose that we add this workaround to GDB. If/when the readline patch is accepted then I'll back-port this to our local readline copy, but retaining the workaround will be harmless, and will make GDB play nicer with system readline libraries (version 8.2). [1] https://inbox.sourceware.org/gdb-patches/34ef5438-8644-44cd-8537-5068e0e5e434@redhat.com [2] https://lists.gnu.org/archive/html/bug-readline/2024-10/msg00014.html Reviewed-By: Keith Seitz <keiths@redhat.com>
Diffstat (limited to 'gdb/obsd-nat.c')
0 files changed, 0 insertions, 0 deletions