diff options
author | Vladimir Prus <vladimir@codesourcery.com> | 2009-08-03 12:39:01 +0000 |
---|---|---|
committer | Vladimir Prus <vladimir@codesourcery.com> | 2009-08-03 12:39:01 +0000 |
commit | 48cb2d85819efcb448e7b635e0a5da776f5bfd8c (patch) | |
tree | 48ad67af6be4c92c46688853d2e165cd1e867783 /gdb/breakpoint.c | |
parent | 3c1179ff511933179e64e854ac7b39c8003d9868 (diff) | |
download | gdb-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.c | 30 |
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); |