PR gdb/2424
* infrun.c (normal_stop) Move breakpoint_auto_delete further down to allow printing to 'see' real reason of stop. This fixes PR 2424. * breakpoint.c (bpdisp_texst): New function. The function takes over the role of bpstats static array in print_one_breakpoint_location. (print_it_typical): Print "Temporary breakpoint" instead of just "Breakpoint" when breakpoint is, well, temporary. For mi-like protocols, print disp field. (print_one_breakpoint_location): Removed bpdisps static definition. Call new bpstat_text function to get value for 'disp' field. (mention): Print "Temporary breakpoint" instead of just "Breakpoint".
This commit is contained in:
parent
a5f245b565
commit
2cec12e55b
3 changed files with 43 additions and 13 deletions
|
@ -1,3 +1,17 @@
|
|||
2008-04-15 Aleksandar Ristovski <aristovski@qnx.com>
|
||||
|
||||
PR gdb/2424
|
||||
* infrun.c (normal_stop) Move breakpoint_auto_delete further down
|
||||
to allow printing to 'see' real reason of stop. This fixes PR 2424.
|
||||
* breakpoint.c (bpdisp_texst): New function. The function takes over
|
||||
the role of bpstats static array in print_one_breakpoint_location.
|
||||
(print_it_typical): Print "Temporary breakpoint" instead
|
||||
of just "Breakpoint" when breakpoint is, well, temporary. For mi-like
|
||||
protocols, print disp field.
|
||||
(print_one_breakpoint_location): Removed bpdisps static definition.
|
||||
Call new bpstat_text function to get value for 'disp' field.
|
||||
(mention): Print "Temporary breakpoint" instead of just "Breakpoint".
|
||||
|
||||
2008-04-15 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* gnulib/Makefile.am, gnulib/m4/gnulib-cache.m4,
|
||||
|
|
|
@ -211,8 +211,16 @@ unlink_locations_from_global_list (struct breakpoint *bpt);
|
|||
static int
|
||||
is_hardware_watchpoint (struct breakpoint *bpt);
|
||||
|
||||
/* Prototypes for exported functions. */
|
||||
static const char *
|
||||
bpdisp_text (enum bpdisp disp)
|
||||
{
|
||||
/* NOTE: the following values are a part of MI protocol and represent
|
||||
values of 'disp' field returned when inferior stops at a breakpoint. */
|
||||
static char *bpdisps[] = {"del", "dstp", "dis", "keep"};
|
||||
return bpdisps[(int) disp];
|
||||
}
|
||||
|
||||
/* Prototypes for exported functions. */
|
||||
/* If FALSE, gdb will not use hardware support for watchpoints, even
|
||||
if such is available. */
|
||||
static int can_use_hw_watchpoints;
|
||||
|
@ -2181,6 +2189,7 @@ print_it_typical (bpstat bs)
|
|||
struct breakpoint *b;
|
||||
const struct bp_location *bl;
|
||||
struct ui_stream *stb;
|
||||
int bp_temp = 0;
|
||||
stb = ui_out_stream_new (uiout);
|
||||
old_chain = make_cleanup_ui_out_stream_delete (stb);
|
||||
/* bs->breakpoint_at can be NULL if it was a momentary breakpoint
|
||||
|
@ -2194,15 +2203,22 @@ print_it_typical (bpstat bs)
|
|||
{
|
||||
case bp_breakpoint:
|
||||
case bp_hardware_breakpoint:
|
||||
bp_temp = bs->breakpoint_at->owner->disposition == disp_del;
|
||||
if (bl->address != bl->requested_address)
|
||||
breakpoint_adjustment_warning (bl->requested_address,
|
||||
bl->address,
|
||||
b->number, 1);
|
||||
annotate_breakpoint (b->number);
|
||||
if (bp_temp)
|
||||
ui_out_text (uiout, "\nTemporary breakpoint ");
|
||||
else
|
||||
ui_out_text (uiout, "\nBreakpoint ");
|
||||
if (ui_out_is_mi_like_p (uiout))
|
||||
{
|
||||
ui_out_field_string (uiout, "reason",
|
||||
async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
|
||||
ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
|
||||
}
|
||||
ui_out_field_int (uiout, "bkptno", b->number);
|
||||
ui_out_text (uiout, ", ");
|
||||
return PRINT_SRC_AND_LOC;
|
||||
|
@ -3412,8 +3428,6 @@ print_one_breakpoint_location (struct breakpoint *b,
|
|||
{bp_catch_exec, "catch exec"}
|
||||
};
|
||||
|
||||
static char *bpdisps[] =
|
||||
{"del", "dstp", "dis", "keep"};
|
||||
static char bpenables[] = "nynny";
|
||||
char wrap_indent[80];
|
||||
struct ui_stream *stb = ui_out_stream_new (uiout);
|
||||
|
@ -3470,7 +3484,7 @@ print_one_breakpoint_location (struct breakpoint *b,
|
|||
if (part_of_multiple)
|
||||
ui_out_field_skip (uiout, "disp");
|
||||
else
|
||||
ui_out_field_string (uiout, "disp", bpdisps[(int) b->disposition]);
|
||||
ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
|
||||
|
||||
|
||||
/* 4 */
|
||||
|
@ -4842,7 +4856,11 @@ mention (struct breakpoint *b)
|
|||
say_where = 0;
|
||||
break;
|
||||
}
|
||||
printf_filtered (_("Breakpoint %d"), b->number);
|
||||
if (b->disposition == disp_del)
|
||||
printf_filtered (_("Temporary breakpoint"));
|
||||
else
|
||||
printf_filtered (_("Breakpoint"));
|
||||
printf_filtered (_(" %d"), b->number);
|
||||
say_where = 1;
|
||||
break;
|
||||
case bp_hardware_breakpoint:
|
||||
|
|
|
@ -3132,11 +3132,6 @@ Further execution is probably impossible.\n"));
|
|||
}
|
||||
}
|
||||
|
||||
/* Delete the breakpoint we stopped at, if it wants to be deleted.
|
||||
Delete any breakpoint that is to be deleted at the next stop. */
|
||||
|
||||
breakpoint_auto_delete (stop_bpstat);
|
||||
|
||||
/* If an auto-display called a function and that got a signal,
|
||||
delete that auto-display to avoid an infinite recursion. */
|
||||
|
||||
|
@ -3275,6 +3270,9 @@ Further execution is probably impossible.\n"));
|
|||
done:
|
||||
annotate_stopped ();
|
||||
observer_notify_normal_stop (stop_bpstat);
|
||||
/* Delete the breakpoint we stopped at, if it wants to be deleted.
|
||||
Delete any breakpoint that is to be deleted at the next stop. */
|
||||
breakpoint_auto_delete (stop_bpstat);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue