* breakpoint.c (get_number_trailer): No longer accept a NULL PP.
* breakpoint.h (get_number_or_range): Declare. * printcmd.c (ALL_DISPLAYS): Declare. (delete_display): Reimplement taking a display pointer. (undisplay_command): Accept a range of displays to delete, using get_number_or_range.
This commit is contained in:
parent
badc813953
commit
3c3fe74c6f
4 changed files with 45 additions and 37 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2011-02-18 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
|
* breakpoint.c (get_number_trailer): No longer accept a NULL PP.
|
||||||
|
* breakpoint.h (get_number_or_range): Declare.
|
||||||
|
* printcmd.c (ALL_DISPLAYS): Declare.
|
||||||
|
(delete_display): Reimplement taking a display pointer.
|
||||||
|
(undisplay_command): Accept a range of displays to delete, using
|
||||||
|
get_number_or_range.
|
||||||
|
|
||||||
2011-02-18 Pierre Muller <muller@ics.u-strasbg.fr>
|
2011-02-18 Pierre Muller <muller@ics.u-strasbg.fr>
|
||||||
|
|
||||||
* c-valprint.c (c_val_print): Add embedded_offset to address
|
* c-valprint.c (c_val_print): Add embedded_offset to address
|
||||||
|
|
|
@ -561,8 +561,6 @@ struct program_space *default_breakpoint_pspace;
|
||||||
name of a convenience variable. Making it an expression wouldn't
|
name of a convenience variable. Making it an expression wouldn't
|
||||||
work well for map_breakpoint_numbers (e.g. "4 + 5 + 6").
|
work well for map_breakpoint_numbers (e.g. "4 + 5 + 6").
|
||||||
|
|
||||||
If the string is a NULL pointer, that denotes the last breakpoint.
|
|
||||||
|
|
||||||
TRAILER is a character which can be found after the number; most
|
TRAILER is a character which can be found after the number; most
|
||||||
commonly this is `-'. If you don't want a trailer, use \0. */
|
commonly this is `-'. If you don't want a trailer, use \0. */
|
||||||
|
|
||||||
|
@ -572,10 +570,7 @@ get_number_trailer (char **pp, int trailer)
|
||||||
int retval = 0; /* default */
|
int retval = 0; /* default */
|
||||||
char *p = *pp;
|
char *p = *pp;
|
||||||
|
|
||||||
if (p == NULL)
|
if (*p == '$')
|
||||||
/* Empty line means refer to the last breakpoint. */
|
|
||||||
return breakpoint_count;
|
|
||||||
else if (*p == '$')
|
|
||||||
{
|
{
|
||||||
/* Make a copy of the name, so we can null-terminate it
|
/* Make a copy of the name, so we can null-terminate it
|
||||||
to pass to lookup_internalvar(). */
|
to pass to lookup_internalvar(). */
|
||||||
|
@ -651,7 +646,7 @@ get_number (char **pp)
|
||||||
is completed. The call that completes the range will advance
|
is completed. The call that completes the range will advance
|
||||||
pointer PP past <number2>. */
|
pointer PP past <number2>. */
|
||||||
|
|
||||||
int
|
int
|
||||||
get_number_or_range (char **pp)
|
get_number_or_range (char **pp)
|
||||||
{
|
{
|
||||||
static int last_retval, end_value;
|
static int last_retval, end_value;
|
||||||
|
|
|
@ -1191,4 +1191,6 @@ extern struct breakpoint *iterate_over_breakpoints (int (*) (struct breakpoint *
|
||||||
|
|
||||||
extern int user_breakpoint_p (struct breakpoint *);
|
extern int user_breakpoint_p (struct breakpoint *);
|
||||||
|
|
||||||
|
extern int get_number_or_range (char **pp);
|
||||||
|
|
||||||
#endif /* !defined (BREAKPOINT_H) */
|
#endif /* !defined (BREAKPOINT_H) */
|
||||||
|
|
|
@ -167,6 +167,11 @@ static struct display *display_chain;
|
||||||
|
|
||||||
static int display_number;
|
static int display_number;
|
||||||
|
|
||||||
|
/* Walk the following statement or block through all displays. */
|
||||||
|
|
||||||
|
#define ALL_DISPLAYS(B) \
|
||||||
|
for (B = display_chain; B; B = B->next)
|
||||||
|
|
||||||
/* Prototypes for exported functions. */
|
/* Prototypes for exported functions. */
|
||||||
|
|
||||||
void output_command (char *, int);
|
void output_command (char *, int);
|
||||||
|
@ -1555,35 +1560,26 @@ clear_displays (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete the auto-display number NUM. */
|
/* Delete the auto-display DISPLAY. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
delete_display (int num)
|
delete_display (struct display *display)
|
||||||
{
|
{
|
||||||
struct display *d1, *d;
|
struct display *d;
|
||||||
|
|
||||||
if (!display_chain)
|
gdb_assert (display != NULL);
|
||||||
error (_("No display number %d."), num);
|
|
||||||
|
|
||||||
if (display_chain->number == num)
|
if (display_chain == display)
|
||||||
{
|
display_chain = display->next;
|
||||||
d1 = display_chain;
|
|
||||||
display_chain = d1->next;
|
ALL_DISPLAYS (d)
|
||||||
free_display (d1);
|
if (d->next == display)
|
||||||
}
|
|
||||||
else
|
|
||||||
for (d = display_chain;; d = d->next)
|
|
||||||
{
|
{
|
||||||
if (d->next == 0)
|
d->next = display->next;
|
||||||
error (_("No display number %d."), num);
|
break;
|
||||||
if (d->next->number == num)
|
|
||||||
{
|
|
||||||
d1 = d->next;
|
|
||||||
d->next = d1->next;
|
|
||||||
free_display (d1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free_display (display);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete some values from the auto-display chain.
|
/* Delete some values from the auto-display chain.
|
||||||
|
@ -1607,18 +1603,24 @@ undisplay_command (char *args, int from_tty)
|
||||||
while (*p)
|
while (*p)
|
||||||
{
|
{
|
||||||
p1 = p;
|
p1 = p;
|
||||||
while (*p1 >= '0' && *p1 <= '9')
|
|
||||||
p1++;
|
|
||||||
if (*p1 && *p1 != ' ' && *p1 != '\t')
|
|
||||||
error (_("Arguments must be display numbers."));
|
|
||||||
|
|
||||||
num = atoi (p);
|
num = get_number_or_range (&p1);
|
||||||
|
if (num == 0)
|
||||||
|
warning (_("bad display number at or near '%s'"), p);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
struct display *d;
|
||||||
|
|
||||||
delete_display (num);
|
ALL_DISPLAYS (d)
|
||||||
|
if (d->number == num)
|
||||||
|
break;
|
||||||
|
if (d == NULL)
|
||||||
|
printf_unfiltered (_("No display number %d.\n"), num);
|
||||||
|
else
|
||||||
|
delete_display (d);
|
||||||
|
}
|
||||||
|
|
||||||
p = p1;
|
p = p1;
|
||||||
while (*p == ' ' || *p == '\t')
|
|
||||||
p++;
|
|
||||||
}
|
}
|
||||||
dont_repeat ();
|
dont_repeat ();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue