Change Ada catchpoints to be bp_catchpoint
Like Pedro's earlier patches to change catchpoint to be of type bp_catchpoint, this changes the Ada catchpoints to follow. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-07-10 Tom Tromey <tromey@adacore.com> * ada-lang.h (is_ada_exception_catchpoint): Declare. * breakpoint.c (init_ada_exception_breakpoint): Register as bp_catchpoint. (print_one_breakpoint_location, print_one_breakpoint): Use is_ada_exception_catchpoint. * ada-lang.c (class ada_catchpoint_location): Pass bp_loc_software_breakpoint to bp_location constructor. (is_ada_exception_catchpoint): New function. gdb/testsuite/ChangeLog 2019-07-10 Tom Tromey <tromey@adacore.com> * gdb.ada/mi_ex_cond.exp: Update expected results. * gdb.ada/mi_catch_ex_hand.exp: Update expected results. * gdb.ada/mi_catch_ex.exp: Update expected results. * gdb.ada/mi_catch_assert.exp: Update expected results. * gdb.ada/catch_ex.exp (catch_exception_info) (catch_exception_entry, catch_assert_entry) (catch_unhandled_entry): Update. * gdb.ada/catch_assert_if.exp: Update expected results.
This commit is contained in:
parent
7a5d944b9e
commit
f06f1252b0
11 changed files with 58 additions and 22 deletions
|
@ -1,3 +1,14 @@
|
|||
2019-07-10 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* ada-lang.h (is_ada_exception_catchpoint): Declare.
|
||||
* breakpoint.c (init_ada_exception_breakpoint): Register as
|
||||
bp_catchpoint.
|
||||
(print_one_breakpoint_location, print_one_breakpoint): Use
|
||||
is_ada_exception_catchpoint.
|
||||
* ada-lang.c (class ada_catchpoint_location): Pass
|
||||
bp_loc_software_breakpoint to bp_location constructor.
|
||||
(is_ada_exception_catchpoint): New function.
|
||||
|
||||
2019-07-10 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* arm-tdep.c (arm_exidx_entry_s): Remove typedef. Don't define
|
||||
|
|
|
@ -12283,7 +12283,7 @@ class ada_catchpoint_location : public bp_location
|
|||
{
|
||||
public:
|
||||
ada_catchpoint_location (breakpoint *owner)
|
||||
: bp_location (owner)
|
||||
: bp_location (owner, bp_loc_software_breakpoint)
|
||||
{}
|
||||
|
||||
/* The condition that checks whether the exception that was raised
|
||||
|
@ -12546,14 +12546,11 @@ print_one_exception (enum ada_exception_catchpoint_kind ex,
|
|||
struct value_print_options opts;
|
||||
|
||||
get_user_print_options (&opts);
|
||||
|
||||
if (opts.addressprint)
|
||||
{
|
||||
annotate_field (4);
|
||||
uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
|
||||
}
|
||||
uiout->field_skip ("addr");
|
||||
|
||||
annotate_field (5);
|
||||
*last_loc = b->loc;
|
||||
switch (ex)
|
||||
{
|
||||
case ada_catch_exception:
|
||||
|
@ -12871,6 +12868,17 @@ print_recreate_catch_handlers (struct breakpoint *b,
|
|||
|
||||
static struct breakpoint_ops catch_handlers_breakpoint_ops;
|
||||
|
||||
/* See ada-lang.h. */
|
||||
|
||||
bool
|
||||
is_ada_exception_catchpoint (breakpoint *bp)
|
||||
{
|
||||
return (bp->ops == &catch_exception_breakpoint_ops
|
||||
|| bp->ops == &catch_exception_unhandled_breakpoint_ops
|
||||
|| bp->ops == &catch_assert_breakpoint_ops
|
||||
|| bp->ops == &catch_handlers_breakpoint_ops);
|
||||
}
|
||||
|
||||
/* Split the arguments specified in a "catch exception" command.
|
||||
Set EX to the appropriate catchpoint type.
|
||||
Set EXCEP_STRING to the name of the specific exception if
|
||||
|
|
|
@ -378,6 +378,10 @@ extern void create_ada_exception_catchpoint
|
|||
const std::string &excep_string, const std::string &cond_string, int tempflag,
|
||||
int disabled, int from_tty);
|
||||
|
||||
/* Return true if BP is an Ada catchpoint. */
|
||||
|
||||
extern bool is_ada_exception_catchpoint (breakpoint *bp);
|
||||
|
||||
/* Some information about a given Ada exception. */
|
||||
|
||||
struct ada_exc_info
|
||||
|
|
|
@ -6054,7 +6054,8 @@ print_one_breakpoint_location (struct breakpoint *b,
|
|||
annotate_field (5);
|
||||
uiout->field_string ("what", w->exp_string);
|
||||
}
|
||||
else if (!is_catchpoint (b) || is_exception_catchpoint (b))
|
||||
else if (!is_catchpoint (b) || is_exception_catchpoint (b)
|
||||
|| is_ada_exception_catchpoint (b))
|
||||
{
|
||||
if (opts.addressprint)
|
||||
{
|
||||
|
@ -6329,7 +6330,8 @@ print_one_breakpoint (struct breakpoint *b,
|
|||
exposed to users. We do however display the internal
|
||||
breakpoint locations with "maint info breakpoints". */
|
||||
if (!is_hardware_watchpoint (b)
|
||||
&& (!is_catchpoint (b) || is_exception_catchpoint (b))
|
||||
&& (!is_catchpoint (b) || is_exception_catchpoint (b)
|
||||
|| is_ada_exception_catchpoint (b))
|
||||
&& (allflag
|
||||
|| (b->loc && (b->loc->next || !b->loc->enabled))))
|
||||
{
|
||||
|
@ -11212,7 +11214,7 @@ init_ada_exception_breakpoint (struct breakpoint *b,
|
|||
enough for now, though. */
|
||||
}
|
||||
|
||||
init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
|
||||
init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
|
||||
|
||||
b->enable_state = enabled ? bp_enabled : bp_disabled;
|
||||
b->disposition = tempflag ? disp_del : disp_donttouch;
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
2019-07-10 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* gdb.ada/mi_ex_cond.exp: Update expected results.
|
||||
* gdb.ada/mi_catch_ex_hand.exp: Update expected results.
|
||||
* gdb.ada/mi_catch_ex.exp: Update expected results.
|
||||
* gdb.ada/mi_catch_assert.exp: Update expected results.
|
||||
* gdb.ada/catch_ex.exp (catch_exception_info)
|
||||
(catch_exception_entry, catch_assert_entry)
|
||||
(catch_unhandled_entry): Update.
|
||||
* gdb.ada/catch_assert_if.exp: Update expected results.
|
||||
|
||||
2019-07-10 Richard Bunt <richard.bunt@arm.com>
|
||||
Stephen Roberts <stephen.roberts@arm.com>
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ gdb_test "catch assert if Global_Var = 2" \
|
|||
|
||||
# Check that condition is stored and properly displayed.
|
||||
|
||||
set exp_bp ".*$decimal${sp}breakpoint${sp}keep${sp}y${sp}$hex failed Ada assertions$eol${sp}stop only if Global_Var = 2.*"
|
||||
set exp_bp ".*$decimal${sp}catchpoint${sp}keep${sp}y${sp}failed Ada assertions$eol${sp}stop only if Global_Var = 2.*"
|
||||
gdb_test "info breakpoint" $exp_bp "Check catch assertions with condition"
|
||||
|
||||
set bp_location [gdb_get_line_number "STOP" ${testdir}/bla.adb]
|
||||
|
|
|
@ -32,7 +32,7 @@ set sp "\[ \t\]*"
|
|||
|
||||
set info_break_header "Num${sp}Type${sp}Disp${sp}Enb${sp}Address${sp}What"
|
||||
set catch_exception_info \
|
||||
"$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}all Ada exceptions"
|
||||
"$any_nb${sp}catchpoint${sp}keep${sp}y${sp}all Ada exceptions"
|
||||
|
||||
####################################
|
||||
# 1. Try catching all exceptions. #
|
||||
|
@ -105,11 +105,11 @@ gdb_test "catch exception unhandled" \
|
|||
"insert catchpoint on unhandled exceptions"
|
||||
|
||||
set catch_exception_entry \
|
||||
"$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}\`Program_Error' Ada exception"
|
||||
"$any_nb${sp}catchpoint${sp}keep${sp}y${sp}\`Program_Error' Ada exception"
|
||||
set catch_assert_entry \
|
||||
"$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}failed Ada assertions"
|
||||
"$any_nb${sp}catchpoint${sp}keep${sp}y${sp}failed Ada assertions"
|
||||
set catch_unhandled_entry \
|
||||
"$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}unhandled Ada exceptions"
|
||||
"$any_nb${sp}catchpoint${sp}keep${sp}y${sp}unhandled Ada exceptions"
|
||||
|
||||
gdb_test "info break" \
|
||||
"$info_break_header$eol.*$catch_exception_entry$eol$catch_assert_entry$eol$catch_unhandled_entry" \
|
||||
|
|
|
@ -81,7 +81,7 @@ if ![mi_run_to_main] then {
|
|||
}
|
||||
|
||||
mi_gdb_test "-catch-assert -c \"Global_Var = 2\"" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"failed Ada assertions\",.*,cond=\"Global_Var = 2\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"failed Ada assertions\",.*,cond=\"Global_Var = 2\",.*}" \
|
||||
"catch assert failures with condition"
|
||||
|
||||
set bp_location [gdb_get_line_number "STOP" ${testdir}/bla.adb]
|
||||
|
|
|
@ -75,7 +75,7 @@ if ![mi_run_to_main] then {
|
|||
}
|
||||
|
||||
mi_gdb_test "-catch-exception" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"all Ada exceptions\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"all Ada exceptions\",.*}" \
|
||||
"catch all exceptions"
|
||||
|
||||
# Continue to caught exception.
|
||||
|
@ -131,15 +131,15 @@ if ![mi_run_to_main] then {
|
|||
}
|
||||
|
||||
mi_gdb_test "-catch-exception -e Program_Error" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"`Program_Error' Ada exception\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"`Program_Error' Ada exception\",.*}" \
|
||||
"catch Program_Error"
|
||||
|
||||
mi_gdb_test "-catch-assert" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"failed Ada assertions\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"failed Ada assertions\",.*}" \
|
||||
"catch assert failures"
|
||||
|
||||
mi_gdb_test "-catch-exception -u" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"unhandled Ada exceptions\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"unhandled Ada exceptions\",.*}" \
|
||||
"catch unhandled exceptions"
|
||||
|
||||
mi_execute_to "exec-continue" \
|
||||
|
|
|
@ -70,7 +70,7 @@ if ![mi_run_to_main] then {
|
|||
}
|
||||
|
||||
mi_gdb_test "-catch-handlers" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"all Ada exceptions handlers\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"all Ada exceptions handlers\",.*}" \
|
||||
"catch all exceptions handlers"
|
||||
|
||||
# Continue to exception handler.
|
||||
|
@ -120,7 +120,7 @@ if ![mi_run_to_main] then {
|
|||
}
|
||||
|
||||
mi_gdb_test "-catch-handlers -e Constraint_Error" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"`Constraint_Error' Ada exception handlers\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"`Constraint_Error' Ada exception handlers\",.*}" \
|
||||
"catch Constraint_Error"
|
||||
|
||||
mi_execute_to "exec-continue" \
|
||||
|
|
|
@ -69,7 +69,7 @@ mi_gdb_load ${binfile}
|
|||
# catchpoint that uses both conditions and exception name.
|
||||
|
||||
mi_gdb_test "-catch-exception -c \"i = 2\" -e constraint_error" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"`constraint_error' Ada exception\",.*,cond=\"i = 2\",.*}" \
|
||||
"\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"`constraint_error' Ada exception\",.*,cond=\"i = 2\",.*}" \
|
||||
"catch C_E if i = 2"
|
||||
|
||||
# It is important that we start the program's execution after having
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue