summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2023-01-18 12:09:05 +0000
committerAndrew Burgess <aburgess@redhat.com>2023-01-25 15:48:58 +0000
commit3c2dc6de6545d671cffb46b3ca6a25ffae94c253 (patch)
tree49c4b713a568d5f035538b7f0c7d3ffeeb9e924e
parentc7d08e62fc9e2c0ccefd9c8f5bf4566b52526b3d (diff)
downloadbinutils-gdb-users/aburgess/bp-inferior-calls.tar.gz
gdb: rename unwindonsignal to unwind-on-signalusers/aburgess/bp-inferior-calls
We now have unwind-on-timeout and unwind-on-terminating-exception, and then the odd one out unwindonsignal. I'm not a great fan of these squashed together command names, so in this commit I propose renaming this to unwind-on-signal. Obviously I've added the hidden alias unwindonsignal so any existing GDB scripts will keep working. There's one test that I've extended to test the alias works, but in most of the other test scripts I've changed over to use the new name. The docs are updated to reference the new name.
-rw-r--r--gdb/NEWS11
-rw-r--r--gdb/doc/gdb.texinfo16
-rw-r--r--gdb/infcall.c21
-rw-r--r--gdb/testsuite/gdb.base/callfuncs.exp4
-rw-r--r--gdb/testsuite/gdb.base/infcall-failure.exp4
-rw-r--r--gdb/testsuite/gdb.base/unwindonsignal.exp36
-rw-r--r--gdb/testsuite/gdb.compile/compile-cplus.exp2
-rw-r--r--gdb/testsuite/gdb.compile/compile.exp2
-rw-r--r--gdb/testsuite/gdb.cp/gdb2495.exp16
-rw-r--r--gdb/testsuite/gdb.fortran/function-calls.exp2
-rw-r--r--gdb/testsuite/gdb.mi/mi-syn-frame.exp2
-rw-r--r--gdb/testsuite/gdb.threads/infcall-from-bp-cond-simple.exp2
-rw-r--r--gdb/testsuite/gdb.threads/thread-unwindonsignal.exp8
13 files changed, 83 insertions, 43 deletions
diff --git a/gdb/NEWS b/gdb/NEWS
index 0e8a0dc80ff..3ba8c819266 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -44,6 +44,17 @@ show unwind-on-timeout
dummy frame that was added for the inferior call, and restoring the
inferior state to how it was before the inferior call started.
+set unwind-on-signal on|off
+show unwind-on-signal
+ These new commands replaces the existing set/show unwindonsignal. The
+ old command is maintained as an alias.
+
+* Changed commands
+
+set unwindonsignal on|off
+show unwindonsignal
+ These commands are now aliases for the new set/show unwind-on-signal.
+
* MI changes
** mi now reports 'no-history' as a stop reason when hitting the end of the
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 9e6f240bfce..00226080943 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -20707,7 +20707,7 @@ value history.
It is possible for the function you call via the @code{print} or
@code{call} command to generate a signal (e.g., if there's a bug in
the function, or if you passed it incorrect arguments). What happens
-in that case is controlled by the @code{set unwindonsignal} command.
+in that case is controlled by the @code{set unwind-on-signal} command.
Similarly, with a C@t{++} program it is possible for the function you
call via the @code{print} or @code{call} command to generate an
@@ -20720,7 +20720,8 @@ in that case is controlled by the
@code{set unwind-on-terminating-exception} command.
@table @code
-@item set unwindonsignal
+@item set unwind-on-signal
+@kindex set unwind-on-signal
@kindex set unwindonsignal
@cindex unwind stack in called functions
@cindex call dummy stack unwinding
@@ -20731,11 +20732,18 @@ the context to what it was before the call. If set to off (the
default), @value{GDBN} stops in the frame where the signal was
received.
-@item show unwindonsignal
+The command @code{set unwindonsignal} is an alias for this command,
+and is maintained for backward compatibility.
+
+@item show unwind-on-signal
+@kindex show unwind-on-signal
@kindex show unwindonsignal
Show the current setting of stack unwinding in the functions called by
@value{GDBN}.
+The command @code{show unwindonsignal} is an alias for this command,
+and is maintained for backward compatibility.
+
@item set unwind-on-terminating-exception
@kindex set unwind-on-terminating-exception
@cindex unwind stack in called functions with unhandled exceptions
@@ -20798,7 +20806,7 @@ call by typing the interrupt character (often @kbd{Ctrl-c}).
If a called function is interrupted for any reason, and the stack is
not unwound (due to @code{set unwind-on-terminating-exception on},
-@code{set unwind-on-timeout}, or @code{set unwindonsignal on}), then
+@code{set unwind-on-timeout}, or @code{set unwind-on-signal on}), then
the dummy-frame, created by @value{GDBN} to facilitate the call to the
program function, will be visible in the backtrace, for example frame
@code{#3} in the following backtrace:
diff --git a/gdb/infcall.c b/gdb/infcall.c
index b934026931c..7bd8b7bc346 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -1678,7 +1678,7 @@ When the function is done executing, GDB will silently stop."),
error (_("\
The program being debugged was signaled while in a function called from GDB.\n\
GDB has restored the context to what it was before the call.\n\
-To change this behavior use \"set unwindonsignal off\".\n\
+To change this behavior use \"set unwind-on-signal off\".\n\
Evaluation of the expression containing the function\n\
(%s) will be abandoned."),
name.c_str ());
@@ -1696,7 +1696,7 @@ Evaluation of the expression containing the function\n\
error (_("\
The program being debugged was signaled while in a function called from GDB.\n\
GDB remains in the frame where the signal was received.\n\
-To change this behavior use \"set unwindonsignal on\".\n\
+To change this behavior use \"set unwind-on-signal on\".\n\
Evaluation of the expression containing the function\n\
(%s) will be abandoned.\n\
When the function is done executing, GDB will silently stop."),
@@ -1828,17 +1828,22 @@ The default is to perform the conversion."),
show_coerce_float_to_double_p,
&setlist, &showlist);
- add_setshow_boolean_cmd ("unwindonsignal", no_class,
- &unwind_on_signal_p, _("\
+ set_show_commands setshow_unwind_on_signal_cmds
+ = add_setshow_boolean_cmd ("unwind-on-signal", no_class,
+ &unwind_on_signal_p, _("\
Set unwinding of stack if a signal is received while in a call dummy."), _("\
Show unwinding of stack if a signal is received while in a call dummy."), _("\
-The unwindonsignal lets the user determine what gdb should do if a signal\n\
+The unwind-on-signal lets the user determine what gdb should do if a signal\n\
is received while in a function called from gdb (call dummy). If set, gdb\n\
unwinds the stack and restore the context to what as it was before the call.\n\
The default is to stop in the frame where the signal was received."),
- NULL,
- show_unwind_on_signal_p,
- &setlist, &showlist);
+ NULL,
+ show_unwind_on_signal_p,
+ &setlist, &showlist);
+ add_alias_cmd ("unwindonsignal", setshow_unwind_on_signal_cmds.set,
+ no_class, 1, &setlist);
+ add_alias_cmd ("unwindonsignal", setshow_unwind_on_signal_cmds.show,
+ no_class, 1, &showlist);
add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
&unwind_on_terminating_exception_p, _("\
diff --git a/gdb/testsuite/gdb.base/callfuncs.exp b/gdb/testsuite/gdb.base/callfuncs.exp
index df67c772e41..da994789d88 100644
--- a/gdb/testsuite/gdb.base/callfuncs.exp
+++ b/gdb/testsuite/gdb.base/callfuncs.exp
@@ -49,7 +49,7 @@ proc do_function_calls {prototypes} {
# If any of these calls segv we don't want to affect subsequent tests.
# E.g., we want to ensure register values are restored.
- gdb_test_no_output "set unwindonsignal on"
+ gdb_test_no_output "set unwind-on-signal on"
gdb_test "p t_char_values(0,0)" " = 0"
gdb_test "p t_char_values('a','b')" " = 1"
@@ -240,7 +240,7 @@ proc do_function_calls {prototypes} {
"call inferior func with struct - returns char *"
# Restore default value.
- gdb_test_no_output "set unwindonsignal off"
+ gdb_test_no_output "set unwind-on-signal off"
}
# Procedure to get current content of all registers.
diff --git a/gdb/testsuite/gdb.base/infcall-failure.exp b/gdb/testsuite/gdb.base/infcall-failure.exp
index 8fa2c407fc5..cf50a3baf0a 100644
--- a/gdb/testsuite/gdb.base/infcall-failure.exp
+++ b/gdb/testsuite/gdb.base/infcall-failure.exp
@@ -137,7 +137,7 @@ proc_with_prefix run_cond_hits_segfault_test { async_p non_stop_p } {
"Error in testing condition for breakpoint ${bp_1_num}:" \
"The program being debugged was signaled while in a function called from GDB\\." \
"GDB remains in the frame where the signal was received\\." \
- "To change this behavior use \"set unwindonsignal on\"\\." \
+ "To change this behavior use \"set unwind-on-signal on\"\\." \
"Evaluation of the expression containing the function" \
"\\(func_segfault\\) will be abandoned\\." \
"When the function is done executing, GDB will silently stop\\."]
@@ -165,7 +165,7 @@ proc_with_prefix run_call_hits_segfault_test { async_p non_stop_p } {
"${::decimal}\\s+\[^\r\n\]+Segfault here\[^\r\n\]+" \
"The program being debugged was signaled while in a function called from GDB\\." \
"GDB remains in the frame where the signal was received\\." \
- "To change this behavior use \"set unwindonsignal on\"\\." \
+ "To change this behavior use \"set unwind-on-signal on\"\\." \
"Evaluation of the expression containing the function" \
"\\(func_segfault\\) will be abandoned\\." \
"When the function is done executing, GDB will silently stop\\."]
diff --git a/gdb/testsuite/gdb.base/unwindonsignal.exp b/gdb/testsuite/gdb.base/unwindonsignal.exp
index 8470634e502..41a4de8b472 100644
--- a/gdb/testsuite/gdb.base/unwindonsignal.exp
+++ b/gdb/testsuite/gdb.base/unwindonsignal.exp
@@ -40,35 +40,51 @@ gdb_test "break stop_here" "Breakpoint \[0-9\]* at .*"
gdb_test "continue" "Continuing.*Breakpoint \[0-9\]*, stop_here.*" \
"continue to breakpoint at stop_here"
-# Turn on unwindonsignal.
-gdb_test_no_output "set unwindonsignal on" \
- "setting unwindonsignal"
+# Turn on unwind-on-signal.
+gdb_test_no_output "set unwind-on-signal on" \
+ "setting unwind-on-signal"
-gdb_test "show unwindonsignal" \
+gdb_test "show unwind-on-signal" \
"Unwinding of stack .* is on." \
- "showing unwindonsignal"
+ "showing unwind-on-signal"
+
+# For backward compatibility we maintain a 'unwindonsignal' alias for
+# 'unwind-on-signal', check it now.
+gdb_test "show unwindonsignal" \
+ "Unwinding of stack .* is on\\." \
+ "showing unwindonsignal alias"
+
+gdb_test_no_output "set unwindonsignal off" \
+ "setting unwindonsignal alias to off"
+
+gdb_test "show unwind-on-signal" \
+ "Unwinding of stack .* is off\\." \
+ "showing unwind-on-signal after setting via alias"
+
+gdb_test_no_output "set unwindonsignal on" \
+ "setting unwindonsignal alias to on"
# Call function (causing the program to get a signal), and see if gdb handles
# it properly.
if {[gdb_test "call gen_signal ()" \
"\[\r\n\]*The program being debugged was signaled.*" \
- "unwindonsignal, inferior function call signaled"] != 0} {
+ "inferior function call signaled"] != 0} {
return 0
}
# Verify the stack got unwound.
gdb_test "bt" \
"#0 *\[x0-9a-f in\]*stop_here \\(.*\\) at .*#1 *\[x0-9a-f in\]*main \\(.*\\) at .*" \
- "unwindonsignal, stack unwound"
+ "stack unwound"
# Verify the dummy frame got removed from dummy_frame_stack.
gdb_test_multiple "maint print dummy-frames" \
- "unwindonsignal, dummy frame removed" {
+ "unwind-on-signal, dummy frame removed" {
-re "\[\r\n\]*.*stack=.*code=.*\[\r\n\]+$gdb_prompt $" {
- fail "unwindonsignal, dummy frame removed"
+ fail $gdb_test_name
}
-re "\[\r\n\]+$gdb_prompt $" {
- pass "unwindonsignal, dummy frame removed"
+ pass $gdb_test_name
}
}
diff --git a/gdb/testsuite/gdb.compile/compile-cplus.exp b/gdb/testsuite/gdb.compile/compile-cplus.exp
index 0b7cb59727a..4960e03408e 100644
--- a/gdb/testsuite/gdb.compile/compile-cplus.exp
+++ b/gdb/testsuite/gdb.compile/compile-cplus.exp
@@ -129,7 +129,7 @@ gdb_test "return" "\r\n#0 main .*" "return" \
"Make _gdb_expr\\(__gdb_regs\\*\\) return now\\? \\(y or n\\) " "y"
gdb_test "info sym $infcall_pc" "\r\nNo symbol matches .*" "info sym not found"
-gdb_test_no_output "set unwindonsignal on"
+gdb_test_no_output "set unwind-on-signal on"
gdb_test "compile code *(volatile int *) 0 = 0;" \
"The program being debugged was signaled while in a function called from GDB\\.\r\nGDB has restored the context to what it was before the call\\.\r\n.*" \
"compile code segfault second"
diff --git a/gdb/testsuite/gdb.compile/compile.exp b/gdb/testsuite/gdb.compile/compile.exp
index 9fdd36719ae..a9717088c05 100644
--- a/gdb/testsuite/gdb.compile/compile.exp
+++ b/gdb/testsuite/gdb.compile/compile.exp
@@ -159,7 +159,7 @@ gdb_test "return" "\r\n#0 main .*" "return" \
"Make _gdb_expr return now\\? \\(y or n\\) " "y"
gdb_test "info sym $infcall_pc" "\r\nNo symbol matches .*" "info sym not found"
-gdb_test_no_output "set unwindonsignal on"
+gdb_test_no_output "set unwind-on-signal on"
gdb_test "compile code *(volatile int *) 0 = 0;" \
"The program being debugged was signaled while in a function called from GDB\\.\r\nGDB has restored the context to what it was before the call\\.\r\n.*" \
"compile code segfault second"
diff --git a/gdb/testsuite/gdb.cp/gdb2495.exp b/gdb/testsuite/gdb.cp/gdb2495.exp
index 0cb8bdd0ada..af94d959d83 100644
--- a/gdb/testsuite/gdb.cp/gdb2495.exp
+++ b/gdb/testsuite/gdb.cp/gdb2495.exp
@@ -104,29 +104,29 @@ if {![runto_main]} {
# behaviour; it should not. Test both on and off states.
# Turn on unwind on signal behaviour.
-gdb_test_no_output "set unwindonsignal on"
+gdb_test_no_output "set unwind-on-signal on"
# Check that it is turned on.
-gdb_test "show unwindonsignal" \
+gdb_test "show unwind-on-signal" \
"signal is received while in a call dummy is on.*" \
"turn on unwind on signal"
# Check to see if new behaviour interferes with
# normal signal handling in inferior function calls.
gdb_test "p exceptions.raise_signal(1)" \
- "To change this behavior use \"set unwindonsignal off\".*" \
- "check for unwindonsignal off message"
+ "To change this behavior use \"set unwind-on-signal off\".*" \
+ "check for unwind-on-signal off message"
# And reverse - turn off again.
-gdb_test_no_output "set unwindonsignal off"
+gdb_test_no_output "set unwind-on-signal off"
# Check that it is actually turned off.
-gdb_test "show unwindonsignal" \
+gdb_test "show unwind-on-signal" \
"signal is received while in a call dummy is off.*" \
"turn off unwind on signal"
# Check to see if new behaviour interferes with
# normal signal handling in inferior function calls.
gdb_test "p exceptions.raise_signal(1)" \
- "To change this behavior use \"set unwindonsignal on\".*" \
- "check for unwindonsignal on message"
+ "To change this behavior use \"set unwind-on-signal on\".*" \
+ "check for unwind-on-signal on message"
diff --git a/gdb/testsuite/gdb.fortran/function-calls.exp b/gdb/testsuite/gdb.fortran/function-calls.exp
index f9a1efc241f..c4d1f232576 100644
--- a/gdb/testsuite/gdb.fortran/function-calls.exp
+++ b/gdb/testsuite/gdb.fortran/function-calls.exp
@@ -44,7 +44,7 @@ if {![runto [gdb_get_line_number "post_init"]]} {
}
# Use inspired by gdb.base/callfuncs.exp.
-gdb_test_no_output "set unwindonsignal on"
+gdb_test_no_output "set unwind-on-signal on"
# Baseline: function and subroutine call with no arguments.
gdb_test "p no_arg()" " = .TRUE."
diff --git a/gdb/testsuite/gdb.mi/mi-syn-frame.exp b/gdb/testsuite/gdb.mi/mi-syn-frame.exp
index 409fac623a7..f65d57028a5 100644
--- a/gdb/testsuite/gdb.mi/mi-syn-frame.exp
+++ b/gdb/testsuite/gdb.mi/mi-syn-frame.exp
@@ -97,7 +97,7 @@ mi_gdb_test "409-stack-list-frames 0 0" \
#
mi_gdb_test "410-data-evaluate-expression bar()" \
- ".*410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\".\\\\nEvaluation of the expression containing the function\\\\n\\(bar\\) will be abandoned.\\\\nWhen the function is done executing, GDB will silently stop.\"" \
+ ".*410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwind-on-signal on\\\\\".\\\\nEvaluation of the expression containing the function\\\\n\\(bar\\) will be abandoned.\\\\nWhen the function is done executing, GDB will silently stop.\"" \
"call inferior function which raises exception"
mi_gdb_test "411-stack-list-frames" "411\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\",arch=\"$any\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\",arch=\"$any\"}.*\\\]" "backtrace from inferior function at exception"
diff --git a/gdb/testsuite/gdb.threads/infcall-from-bp-cond-simple.exp b/gdb/testsuite/gdb.threads/infcall-from-bp-cond-simple.exp
index 8d94d24f9b3..402d8f7de69 100644
--- a/gdb/testsuite/gdb.threads/infcall-from-bp-cond-simple.exp
+++ b/gdb/testsuite/gdb.threads/infcall-from-bp-cond-simple.exp
@@ -174,7 +174,7 @@ proc_with_prefix run_bp_cond_segfaults { target_async target_non_stop } {
"Error in testing condition for breakpoint ${bp_1_num}:" \
"The program being debugged was signaled while in a function called from GDB\\." \
"GDB remains in the frame where the signal was received\\." \
- "To change this behavior use \"set unwindonsignal on\"\\." \
+ "To change this behavior use \"set unwind-on-signal on\"\\." \
"Evaluation of the expression containing the function" \
"\\(function_that_segfaults\\) will be abandoned\\." \
"When the function is done executing, GDB will silently stop\\."]
diff --git a/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp b/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp
index 0b08723fffa..2fa210c506f 100644
--- a/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp
+++ b/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Test use of unwindonsignal when a hand function call that gets interrupted
+# Test use of unwind-on-signal when a hand function call that gets interrupted
# by a signal in another thread.
set NR_THREADS 4
@@ -52,12 +52,12 @@ gdb_test "continue" \
# We want the main thread (hand_call_with_signal) and
# thread 1 (sigabrt_handler) to both run.
-# Do turn on unwindonsignal.
+# Do turn on unwind-on-signal.
# We want to test gdb handling of the current thread changing when
# unwindonsignal is in effect.
-gdb_test_no_output "set unwindonsignal on" \
+gdb_test_no_output "set unwind-on-signal on" \
"setting unwindonsignal"
-gdb_test "show unwindonsignal" \
+gdb_test "show unwind-on-signal" \
"Unwinding of stack .* is on." \
"showing unwindonsignal"