aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorVladimir Prus <vladimir@codesourcery.com>2009-08-03 12:39:01 +0000
committerVladimir Prus <vladimir@codesourcery.com>2009-08-03 12:39:01 +0000
commit48cb2d85819efcb448e7b635e0a5da776f5bfd8c (patch)
tree48ad67af6be4c92c46688853d2e165cd1e867783 /gdb/breakpoint.c
parent3c1179ff511933179e64e854ac7b39c8003d9868 (diff)
downloadgdb-48cb2d85819efcb448e7b635e0a5da776f5bfd8c.zip
gdb-48cb2d85819efcb448e7b635e0a5da776f5bfd8c.tar.gz
gdb-48cb2d85819efcb448e7b635e0a5da776f5bfd8c.tar.bz2
Implement -break-commands
* breakpoint.c (get_breakpoint, breakpoint_set_commands): New. (commands_command): Use breakpoint_set_commands. * breakpoint.h (get_breakpoint, breakpoint_set_commands): Declare. * mi/mi-cmds.h (mi_cmd_break_commands): New. * mi/mi-cmds.c: Register -break-commands. * mi/mi-cmd-break.c (mi_cmd_break_commands, mi_read_next_line) (mi_command_line_array, mi_command_line_array_cnt) (mi_command_line_array_ptr): New.
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r--gdb/breakpoint.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 2e598e4..f3940e1 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -562,6 +562,20 @@ get_number_or_range (char **pp)
return last_retval;
}
+/* Return the breakpoint with the specified number, or NULL
+ if the number does not refer to an existing breakpoint. */
+
+struct breakpoint *
+get_breakpoint (int num)
+{
+ struct breakpoint *b;
+
+ ALL_BREAKPOINTS (b)
+ if (b->number == num)
+ return b;
+
+ return NULL;
+}
/* condition N EXP -- set break condition of breakpoint N to EXP. */
@@ -626,6 +640,17 @@ condition_command (char *arg, int from_tty)
error (_("No breakpoint number %d."), bnum);
}
+/* Set the command list of B to COMMANDS. */
+
+void
+breakpoint_set_commands (struct breakpoint *b, struct command_line *commands)
+{
+ free_command_lines (&b->commands);
+ b->commands = commands;
+ breakpoints_changed ();
+ observer_notify_breakpoint_modified (b->number);
+}
+
static void
commands_command (char *arg, int from_tty)
{
@@ -655,10 +680,7 @@ commands_command (char *arg, int from_tty)
struct cleanup *cleanups = make_cleanup (xfree, tmpbuf);
l = read_command_lines (tmpbuf, from_tty, 1);
do_cleanups (cleanups);
- free_command_lines (&b->commands);
- b->commands = l;
- breakpoints_changed ();
- observer_notify_breakpoint_modified (b->number);
+ breakpoint_set_commands (b, l);
return;
}
error (_("No breakpoint number %d."), bnum);