* breakpoint.h (bpstat_num): Likewise.
* infcmd.c (continue_command): Adjust to new bpstat_num
interface.
(program_info): Likewise.
+2007-03-27 Pedro Alves <pedro_alves@portugalmail.pt>
+
+ * breakpoint.c (bpstat_num): Add int *num parameter.
+ * breakpoint.h (bpstat_num): Likewise.
+ * infcmd.c (continue_command): Adjust to new bpstat_num
+ interface.
+ (program_info): Likewise.
+
2007-03-27 Ulrich Weigand <uweigand@de.ibm.com>
* config/sh/tm-sh.h: Remove file.
}
-/* Return the breakpoint number of the first breakpoint we are stopped
+/* Put in *NUM the breakpoint number of the first breakpoint we are stopped
at. *BSP upon return is a bpstat which points to the remaining
breakpoints stopped at (but which is not guaranteed to be good for
anything but further calls to bpstat_num).
- Return 0 if passed a bpstat which does not indicate any breakpoints. */
+ Return 0 if passed a bpstat which does not indicate any breakpoints.
+ Return -1 if stopped at a breakpoint that has been deleted since
+ we set it.
+ Return 1 otherwise. */
int
-bpstat_num (bpstat *bsp)
+bpstat_num (bpstat *bsp, int *num)
{
struct breakpoint *b;
if ((*bsp) == NULL)
return 0; /* No more breakpoint values */
- else
- {
- b = (*bsp)->breakpoint_at;
- *bsp = (*bsp)->next;
- if (b == NULL)
- return -1; /* breakpoint that's been deleted since */
- else
- return b->number; /* We have its number */
- }
+
+ b = (*bsp)->breakpoint_at;
+ *bsp = (*bsp)->next;
+ if (b == NULL)
+ return -1; /* breakpoint that's been deleted since */
+
+ *num = b->number; /* We have its number */
+ return 1;
}
/* Modify BS so that the actions will not be performed. */
return means print the frame as well as the source line). */
extern enum print_stop_action bpstat_print (bpstat);
-/* Return the breakpoint number of the first breakpoint we are stopped
+/* Put in *NUM the breakpoint number of the first breakpoint we are stopped
at. *BSP upon return is a bpstat which points to the remaining
breakpoints stopped at (but which is not guaranteed to be good for
anything but further calls to bpstat_num).
- Return 0 if passed a bpstat which does not indicate any breakpoints. */
-extern int bpstat_num (bpstat *);
+ Return 0 if passed a bpstat which does not indicate any breakpoints.
+ Return -1 if stopped at a breakpoint that has been deleted since
+ we set it.
+ Return 1 otherwise. */
+extern int bpstat_num (bpstat *, int *);
/* Perform actions associated with having stopped at *BSP. Actually, we just
use this for breakpoint commands. Perhaps other actions will go here
if (proc_count_exp != NULL)
{
bpstat bs = stop_bpstat;
- int num = bpstat_num (&bs);
- if (num == 0 && from_tty)
+ int num, stat;
+ int stopped = 0;
+
+ while ((stat = bpstat_num (&bs, &num)) != 0)
+ if (stat > 0)
+ {
+ set_ignore_count (num,
+ parse_and_eval_long (proc_count_exp) - 1,
+ from_tty);
+ /* set_ignore_count prints a message ending with a period.
+ So print two spaces before "Continuing.". */
+ if (from_tty)
+ printf_filtered (" ");
+ stopped = 1;
+ }
+
+ if (!stopped && from_tty)
{
printf_filtered
("Not stopped at any breakpoint; argument ignored.\n");
}
- while (num != 0)
- {
- set_ignore_count (num,
- parse_and_eval_long (proc_count_exp) - 1,
- from_tty);
- /* set_ignore_count prints a message ending with a period.
- So print two spaces before "Continuing.". */
- if (from_tty)
- printf_filtered (" ");
- num = bpstat_num (&bs);
- }
}
if (from_tty)
program_info (char *args, int from_tty)
{
bpstat bs = stop_bpstat;
- int num = bpstat_num (&bs);
+ int num;
+ int stat = bpstat_num (&bs, &num);
if (!target_has_execution)
{
hex_string ((unsigned long) stop_pc));
if (stop_step)
printf_filtered (_("It stopped after being stepped.\n"));
- else if (num != 0)
+ else if (stat != 0)
{
/* There may be several breakpoints in the same place, so this
isn't as strange as it seems. */
- while (num != 0)
+ while (stat != 0)
{
- if (num < 0)
+ if (stat < 0)
{
printf_filtered (_("\
It stopped at a breakpoint that has since been deleted.\n"));
}
else
printf_filtered (_("It stopped at breakpoint %d.\n"), num);
- num = bpstat_num (&bs);
+ stat = bpstat_num (&bs, &num);
}
}
else if (stop_signal != TARGET_SIGNAL_0)