gdb
* infrun.c (save_infcall_control_state): Handle the exception-resume breakpoint. (restore_infcall_control_state): Likewise. (discard_infcall_control_state): Likewise. gdb/testsuite 2010-12-15 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.cp/nextoverthrow.cc (dummy): Return int 0. (NextOverThrowDerivates) <resumebpt>: New. (resumebpt_test): New. (main): Call resumebpt_test. * gdb.cp/nextoverthrow.exp: New block for test of "resumebpt".
This commit is contained in:
parent
8bdf35dcae
commit
5b79abe7f1
5 changed files with 68 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-12-15 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* infrun.c (save_infcall_control_state): Handle the
|
||||
exception-resume breakpoint.
|
||||
(restore_infcall_control_state): Likewise.
|
||||
(discard_infcall_control_state): Likewise.
|
||||
|
||||
2010-12-15 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* mips-tdep.c (mips_pseudo_register_write): Sign extend 32-bit
|
||||
|
|
|
@ -6379,6 +6379,7 @@ save_infcall_control_state (void)
|
|||
inf_status->inferior_control = inf->control;
|
||||
|
||||
tp->control.step_resume_breakpoint = NULL;
|
||||
tp->control.exception_resume_breakpoint = NULL;
|
||||
|
||||
/* Save original bpstat chain to INF_STATUS; replace it in TP with copy of
|
||||
chain. If caller's caller is walking the chain, they'll be happier if we
|
||||
|
@ -6428,6 +6429,10 @@ restore_infcall_control_state (struct infcall_control_state *inf_status)
|
|||
if (tp->control.step_resume_breakpoint)
|
||||
tp->control.step_resume_breakpoint->disposition = disp_del_at_next_stop;
|
||||
|
||||
if (tp->control.exception_resume_breakpoint)
|
||||
tp->control.exception_resume_breakpoint->disposition
|
||||
= disp_del_at_next_stop;
|
||||
|
||||
/* Handle the bpstat_copy of the chain. */
|
||||
bpstat_clear (&tp->control.stop_bpstat);
|
||||
|
||||
|
@ -6476,6 +6481,10 @@ discard_infcall_control_state (struct infcall_control_state *inf_status)
|
|||
inf_status->thread_control.step_resume_breakpoint->disposition
|
||||
= disp_del_at_next_stop;
|
||||
|
||||
if (inf_status->thread_control.exception_resume_breakpoint)
|
||||
inf_status->thread_control.exception_resume_breakpoint->disposition
|
||||
= disp_del_at_next_stop;
|
||||
|
||||
/* See save_infcall_control_state for info on stop_bpstat. */
|
||||
bpstat_clear (&inf_status->thread_control.stop_bpstat);
|
||||
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2010-12-15 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.cp/nextoverthrow.cc (dummy): Return int 0.
|
||||
(NextOverThrowDerivates) <resumebpt>: New.
|
||||
(resumebpt_test): New.
|
||||
(main): Call resumebpt_test.
|
||||
* gdb.cp/nextoverthrow.exp: New block for test of "resumebpt".
|
||||
|
||||
2010-12-12 Stan Shebs <stan@codesourcery.com>
|
||||
|
||||
* gdb.trace/tsv.exp: Test print command on trace state variables.
|
||||
|
|
|
@ -19,8 +19,9 @@
|
|||
|
||||
using namespace std;
|
||||
|
||||
void dummy ()
|
||||
int dummy ()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
class NextOverThrowDerivates
|
||||
|
@ -89,10 +90,39 @@ public:
|
|||
function1 (val); // until here
|
||||
}
|
||||
|
||||
void resumebpt (int val)
|
||||
{
|
||||
try
|
||||
{
|
||||
throw val;
|
||||
}
|
||||
catch (int x)
|
||||
{
|
||||
dummy ();
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
NextOverThrowDerivates next_cases;
|
||||
|
||||
|
||||
int
|
||||
resumebpt_test (int x)
|
||||
{
|
||||
try
|
||||
{
|
||||
next_cases.resumebpt (x); // Start: resumebpt
|
||||
next_cases.resumebpt (x + 1); // Second: resumebpt
|
||||
}
|
||||
catch (int val)
|
||||
{
|
||||
dummy ();
|
||||
x = val;
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
int testval = -1;
|
||||
|
@ -198,6 +228,8 @@ int main ()
|
|||
testval = val; // End: advance
|
||||
}
|
||||
|
||||
// Test of "resumebpt".
|
||||
testval = resumebpt_test (10);
|
||||
|
||||
testval = 32; // done
|
||||
}
|
||||
|
||||
|
|
|
@ -149,5 +149,14 @@ gdb_test "advance $line" ".*" "advance-over-throw"
|
|||
tbreak_and_cont "End: advance"
|
||||
verify_testval "pre-check - advance" 8
|
||||
|
||||
tbreak_and_cont "Start: resumebpt"
|
||||
gdb_test "tbreak _Unwind_RaiseException"
|
||||
gdb_test "continue" "Temporary breakpoint.*" "continuing to _Unwind_RaiseException"
|
||||
gdb_test "finish" "Run till exit .*"
|
||||
gdb_test {set $retpc=$pc}
|
||||
gdb_test {break *$retpc if dummy ()}
|
||||
tbreak_and_cont "Second: resumebpt"
|
||||
gdb_test "next"
|
||||
|
||||
tbreak_and_cont "done"
|
||||
verify_testval "post-check - advance" 9
|
||||
verify_testval "post-check - advance" 10
|
||||
|
|
Loading…
Reference in a new issue