fix "server" command prefix handling (unexpected confirmation queries)
authorJoel Brobecker <brobecker@adacore.com>
Tue, 12 Dec 2017 04:51:29 +0000 (23:51 -0500)
committerJoel Brobecker <brobecker@adacore.com>
Wed, 13 Dec 2017 03:23:19 +0000 (22:23 -0500)
commit9937536c23ae005422cec23d38a6b7f6fa8e1f48
tree7f2207c6d87e3d0f589613f59f304b8c7829a365
parent2c66e1634c92040a8fcb9590cd80fe881def0b20
fix "server" command prefix handling (unexpected confirmation queries)

The "server" command prefix no longer turns confirmation queries off.
We can reproduce this with any program by tring to delete all breakpoints,
for instance:

    (gdb) break main
    Breakpoint 1 at 0x40049b: file /[...]/break-fun-addr1.c, line 21.
    (gdb) server delete breakpoints
    Delete all breakpoints? (y or n)

GDB should not be asking "Delete all breakpoints? (y or n)", but
instead just delete all breakpoints without asking for confirmation.

Looking at utils.c::defaulted_query gives a glimpse of how this feature
is expected to work:

  /* Automatically answer the default value if the user did not want
     prompts or the command was issued with the server prefix.  */
  if (!confirm || server_command)
    return def_value;

So, it relies on the server_command global to be set when the "server "
command prefix is used, which is no longer the case since the following
commit:

    commit b69d38afdea34e4fecab5ea47ffe1e594e0b6233
    Date:   Wed Mar 9 18:25:00 2016 +0000
    Subject: Command line input handling TLC

The patch was simplifying the handling for the command line, and
I believe there was just a small oversight of removing the setting
of the server_command global.

This patch restores that, and adds a testcase to make sure we test
that feature.

gdb/ChangeLog:

        * event-top.c (handle_line_of_input): Set server_command.

gdb/testsuite/ChangeLog:

        * gdb.base/server-del-break.c: New file.
        * gdb.base/server-del-break.exp: New file.

Tested on x86_64-linux, no regression.
gdb/ChangeLog
gdb/event-top.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/server-del-break.c [new file with mode: 0644]
gdb/testsuite/gdb.base/server-del-break.exp [new file with mode: 0644]