This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Decouple "set confirm" from `from_tty'.
- From: Pedro Alves <palves at redhat dot com>
- To: GDB Patches <gdb-patches at sourceware dot org>
- Date: Fri, 20 Jan 2012 11:13:51 +0000
- Subject: Decouple "set confirm" from `from_tty'.
Short version: I'd like to stop "set confirm off" from also disabling from_tty.
I got confused yesterday because I did (without realizing I specified
the wrong path):
...
(gdb) source /wrong/path/to/file.py
(gdb)
...
...
and then bits that were supposedly loaded from file.py
weren't working. I then got really surprised when I realized
that I had used the wrong path to the file, but GDB hadn't
complained. Restarting GDB, and retrying the source command,
I got the expected error back:
(gdb) source /wrong/path/to/file.py
/wrong/path/to/file.py: No such file or directory.
Eventually, I figured out this was caused by having done
"set confirm off" before the source command.
(gdb) source /wrong/path/to/file.py
/wrong/path/to/file.py: No such file or directory.
(gdb) set confirm off
(gdb) source /wrong/path/to/file.py
(gdb)
This was very surprising to me, and I assume to surprise other
users too. Turns out that "set confirm off" also has the
side-effect of running commands with from_tty == 0, which
silences many things. E.g.,
(gdb) attach 10203
Attaching to process 10203
Reading symbols from /bin/sleep...(no debugging symbols found)...done.
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0x000000339e6bbcd0 in __nanosleep_nocancel () from /lib64/libc.so.6
(gdb)
vs
(gdb) set confirm off
(gdb) attach 10203
0x000000339e6bbcd0 in __nanosleep_nocancel () from /lib64/libc.so.6
(gdb)
I couldn't find anything in the documentation mentioning
this. I can't think of why this is done this way, other than an
historic accident of the command's evolution.
Sat Dec 22 02:51:40 1990 John Gilmore (gnu at cygint)
* main.c: Replace "stupid" with "caution"; you now "set caution
on or off".
Mon Apr 15 21:45:35 1991 Jim Kingdon (kingdon at cygint.cygnus.com)
* main.c (initialize_main): Rename "set caution" to
"set confirm".
So I'd like to stop it doing that.
Comments?
gdb/
2012-01-19 Pedro Alves <palves@redhat.com>
* top.c (caution): Rename to ...
(confirm): ... this.
(show_caution): Rename to ...
(show_confirm): ... this.
(quit_cover): Adjust.
(execute_command): Don't consider the current value of `caution'.
(_initialize_command): Adjust.
* top.h (caution): Rename to ...
(confirm): ... this.
(internal_vproblem, defaulted_query): Adjust.
gdb/testsuite/
2012-01-19 Pedro Alves <palves@redhat.com>
* call-signal-resume.exp: Allow output after "return".
---
gdb/testsuite/gdb.base/call-signal-resume.exp | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gdb/testsuite/gdb.base/call-signal-resume.exp b/gdb/testsuite/gdb.base/call-signal-resume.exp
index 1c4517d..d383f5c 100644
--- a/gdb/testsuite/gdb.base/call-signal-resume.exp
+++ b/gdb/testsuite/gdb.base/call-signal-resume.exp
@@ -99,7 +99,7 @@ if { "$frame_number" == "" } {
# Pop the dummy frame.
gdb_test "frame $frame_number" ".*"
gdb_test_no_output "set confirm off"
-gdb_test_no_output "return"
+gdb_test "return" ""
# Resume execution, the program should continue without any signal.
@@ -132,7 +132,7 @@ if { "$frame_number" == "" } {
# Pop the dummy frame.
gdb_test "frame $frame_number" ".*"
gdb_test_no_output "set confirm off"
-gdb_test_no_output "return"
+gdb_test "return" ""
# Continue again, this time we should get to the signal handler.
diff --git a/gdb/top.c b/gdb/top.c
index c4e913d..e41f56c 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -98,11 +98,13 @@ int use_windows = 0;
extern char lang_frame_mismatch_warn[]; /* language.c */
-/* Flag for whether we want all the "from_tty" gubbish printed. */
+/* Flag for whether we want to confirm potentially dangerous
+ operations. Default is yes. */
+
+int confirm = 1;
-int caution = 1; /* Default is yes, sigh. */
static void
-show_caution (struct ui_file *file, int from_tty,
+show_confirm (struct ui_file *file, int from_tty,
struct cmd_list_element *c, const char *value)
{
fprintf_filtered (file, _("Whether to confirm potentially "
@@ -289,9 +291,9 @@ void (*deprecated_context_hook) (int id);
/* static */ void
quit_cover (void)
{
- caution = 0; /* Throw caution to the wind -- we're exiting.
- This prevents asking the user dumb
- questions. */
+ /* Stop asking user for confirmation --- we're exiting. This
+ prevents asking the user dumb questions. */
+ confirm = 0;
quit_command ((char *) 0, 0);
}
#endif /* defined SIGHUP */
@@ -471,13 +473,13 @@ execute_command (char *p, int from_tty)
if (c->class == class_user)
execute_user_command (c, arg);
else if (c->type == set_cmd || c->type == show_cmd)
- do_setshow_command (arg, from_tty & caution, c);
+ do_setshow_command (arg, from_tty, c);
else if (!cmd_func_p (c))
error (_("That is not a command, just a help topic."));
else if (deprecated_call_command_hook)
- deprecated_call_command_hook (c, arg, from_tty & caution);
+ deprecated_call_command_hook (c, arg, from_tty);
else
- cmd_func (c, arg, from_tty & caution);
+ cmd_func (c, arg, from_tty);
/* If the interpreter is in sync mode (we're running a user
command's list, running command hooks or similars), and we
@@ -1633,11 +1635,11 @@ Show the filename in which to record the command history"), _("\
show_history_filename,
&sethistlist, &showhistlist);
- add_setshow_boolean_cmd ("confirm", class_support, &caution, _("\
+ add_setshow_boolean_cmd ("confirm", class_support, &confirm, _("\
Set whether to confirm potentially dangerous operations."), _("\
Show whether to confirm potentially dangerous operations."), NULL,
NULL,
- show_caution,
+ show_confirm,
&setlist, &showlist);
add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
diff --git a/gdb/top.h b/gdb/top.h
index 55ce104..6f74233 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -26,7 +26,7 @@ extern char *saved_command_line;
extern int saved_command_line_size;
extern FILE *instream;
extern int in_user_command;
-extern int caution;
+extern int confirm;
extern char gdb_dirbuf[1024];
extern int inhibit_gdbinit;
extern int epoch_interface;
diff --git a/gdb/utils.c b/gdb/utils.c
index 4863e41..39ec254 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -970,7 +970,7 @@ internal_vproblem (struct internal_problem *problem,
/* Default (yes/batch case) is to quit GDB. When in batch mode
this lessens the likelihood of GDB going into an infinite
loop. */
- if (caution == 0)
+ if (!confirm)
{
/* Emit the message and quit. */
fputs_unfiltered (reason, gdb_stderr);
@@ -1384,7 +1384,7 @@ defaulted_query (const char *ctlstr, const char defchar, va_list args)
/* Automatically answer the default value if the user did not want
prompts or the command was issued with the server prefix. */
- if (! caution || server_command)
+ if (!confirm || server_command)
return def_value;
/* If input isn't coming from the user directly, just say what