This is the mail archive of the
archer-commits@sourceware.org
mailing list for the Archer project.
[SCM] archer-pmuldoon-exception-rewind-master: Add Eli's patch changes.
- From: pmuldoon at sourceware dot org
- To: archer-commits at sourceware dot org
- Date: 8 Jun 2009 21:33:15 -0000
- Subject: [SCM] archer-pmuldoon-exception-rewind-master: Add Eli's patch changes.
The branch, archer-pmuldoon-exception-rewind-master has been updated
via 92d739312d860bfe9784109efc7c4389364cf36e (commit)
from 7bc0f5b9e11393838e2760a5b3cdbe48aa0b7c54 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email.
- Log -----------------------------------------------------------------
commit 92d739312d860bfe9784109efc7c4389364cf36e
Author: Phil Muldoon <pmuldoon@redhat.com>
Date: Mon Jun 8 22:32:51 2009 +0100
Add Eli's patch changes.
-----------------------------------------------------------------------
Summary of changes:
gdb/doc/gdb.texinfo | 16 ++++++++++------
gdb/infcall.c | 10 +++++-----
gdb/testsuite/gdb.cp/gdb2495.exp | 3 +--
3 files changed, 16 insertions(+), 13 deletions(-)
First 500 lines of diff:
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index df6909e..7b70745 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -12858,10 +12858,14 @@ It is possible for the function you call via the @code{print} or
the function, or if you passed it incorrect arguments). What happens
in that case is controlled by the @code{set unwindonsignal} command.
-Similarly, with a C++ program it is possible for the function you
+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
exception that is not handled due to the constraints of the dummy
-frame. What happens in that case is controlled by the
+frame. In this case, any exception that is raised in the frame, but has
+an out-of-frame exception handler will not be found. GDB builds a
+dummy-frame for the inferior function call, and the unwinder cannot
+seek for exception handlers outside of this dummy-frame. What happens
+in that case is controlled by the
@code{set unwind-on-terminating-exception} command.
@table @code
@@ -12883,14 +12887,14 @@ Show the current setting of stack unwinding in the functions called by
@item set unwind-on-terminating-exception
@kindex set unwind-on-terminating-exception
-@cindex unwind stack in called functions
+@cindex unwind stack in called functions with unhandled exceptions
@cindex call dummy stack unwinding on unhandled exception.
-Set unwinding of the stack if a C++ exception is raised but unhandled
-while in a function that @value{GDBN} called in the program being
+Set unwinding of the stack if a C@t{++} exception is raised, but left
+unhandled while in a function that @value{GDBN} called in the program being
debugged. If set to on (the default), @value{GDBN} unwinds the stack
it created for the call and restores the context to what it was before
the call. If set to off, @value{GDBN} the exception is delivered to
-the default C++ exception handler.
+the default C@t{++} exception handler and the inferior terminated.
@item show unwind-on-terminating-exception
@kindex show unwind-on-terminating-exception
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 9a4e27b..acb0ba4 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -1078,13 +1078,13 @@ The default is to stop in the frame where the signal was received."),
add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
&unwind_on_terminating_exception_p, _("\
-Set unwinding of stack if a std::terminate() call originates from\n\
-the default C++ exception handler."), _("\
-Show unwinding of stack if a std::terminate() call originates from\n\
-the default C++ exception handler."), _("\
+Set unwinding of stack if std::terminate is called while in call dummy."), _("\
+Show unwinding of stack if std::terminate() is called while in a call dummy."), _("\
The unwind on terminating exception flag lets the user determine\n\
what gdb should do if a std::terminate() call is made from the\n\
-default exception handler.\n\
+default exception handler. If set, gdb unwinds the stack and restores\n\
+the context to what it was before the call. If unset, gdb allows the
+std::terminate call to proceed.\n\
The default is to unwind the frame."),
NULL,
show_unwind_on_terminating_exception_p,
diff --git a/gdb/testsuite/gdb.cp/gdb2495.exp b/gdb/testsuite/gdb.cp/gdb2495.exp
index f1a9761..0be68ce 100644
--- a/gdb/testsuite/gdb.cp/gdb2495.exp
+++ b/gdb/testsuite/gdb.cp/gdb2495.exp
@@ -111,10 +111,9 @@ gdb_test "show unwind-on-terminating-exception" \
# Check that the old behaviour is restored.
gdb_test "p exceptions.throw_function()" \
- "The program being debugged stopped while in a function called .*" \
+ "The program being debugged was signaled while in a function called .*" \
"Call a function that raises an exception with unwinding off.."
-
# Restart the inferior back at main.
if ![runto_main] then {
perror "couldn't run to main"
hooks/post-receive
--
Repository for Project Archer.