diff options
author | Tom Tromey <tromey@redhat.com> | 2008-07-25 16:12:03 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-07-25 16:12:03 +0000 |
commit | 383f836e2002b1bc1793238ed099ed7aa215fec3 (patch) | |
tree | dfac517ac150fd2c7eb853e204f405d4bd6f5362 /gdb/mi/mi-cmd-break.c | |
parent | 2a00e4fb8e170de97cb80a0140ba4d42a8ffd42f (diff) | |
download | gdb-383f836e2002b1bc1793238ed099ed7aa215fec3.zip gdb-383f836e2002b1bc1793238ed099ed7aa215fec3.tar.gz gdb-383f836e2002b1bc1793238ed099ed7aa215fec3.tar.bz2 |
gdb:
* tui/tui-hooks.c: Include observer.h.
(tui_event_default, tui_old_event_hooks, tui_event_hooks):
Remove.
(tui_bp_created_observer, tui_bp_deleted_observer,
tui_bp_modified_observer): New globals.
(tui_install_hooks): Use observers, not events.
(tui_remove_hooks): Likewise.
* mi/mi-cmd-break.c: Include observer.h, not gdb-events.h.
(mi_breakpoint_observers_installed, mi_can_breakpoint_notify): New
globals.
(breakpoint_notify): Check mi_can_breakpoint_notify.
(breakpoint_hooks): Remove.
(mi_cmd_break_insert): Attach observers. Don't use events.
* tracepoint.c: Include observer.h, not gdb-events.h.
(tracepoint_operation, trace_pass_command): Notify observer.
* interps.c: Don't include gdb-events.h.
(clear_interpreter_hooks): Don't call clear_gdb_event_hooks.
* gdbarch.c: Rebuild.
* gdbarch.sh: Emit include for observer.h, not gdb-events.h.
(deprecated_current_gdbarch_select_hack): Notify observer.
* breakpoint.h: Don't include gdb-events.h.
* breakpoint.c: Don't include gdb-events.h.
(condition_command): Notify observer.
(commands_command): Likewise.
(commands_from_control_command): Likewise.
(mention, delete_breakpoint, set_ignore_count): Likewise.
(disable_breakpoint, do_enable_breakpoint): Likewise.
* Makefile.in (gdb_events_h): Remove.
(breakpoint_h): Update.
(COMMON_OBS): Remove gdb-events.o.
(gdb-events.o): Remove.
(breakpoint.o, gdbarch.o, interps.o, tracepoint.o, gdbtk-bp.o,
gdbtk-hooks.o, mi-cmd-break.o, tui-hooks.o): Update.
* gdb-events.c: Remove.
* gdb-events.h: Remove.
* gdb-events.sh: Remove.
gdb/doc:
* observer.texi (GDB Observers): Document new observers:
breakpoint_created, breakpoint_deleted, breakpoint_modified,
tracepoint_created, tracepoint_deleted, tracepoint_modified,
architecture_changed.
gdb/gdbtk:
* generic/gdbtk-hooks.c: Include observer.h, not gdb-events.h.
(gdbtk_add_hooks): Use observers, not events.
(gdbtk_architecture_changed): Add argument, for observer.
* generic/gdbtk-bp.c: Include observer.h.
(gdb_set_bp): Notify observer.
(gdb_set_bp_addr): Likewise.
Diffstat (limited to 'gdb/mi/mi-cmd-break.c')
-rw-r--r-- | gdb/mi/mi-cmd-break.c | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/gdb/mi/mi-cmd-break.c b/gdb/mi/mi-cmd-break.c index 1bfb567..96e38a9 100644 --- a/gdb/mi/mi-cmd-break.c +++ b/gdb/mi/mi-cmd-break.c @@ -24,32 +24,32 @@ #include "breakpoint.h" #include "gdb_string.h" #include "mi-getopt.h" -#include "gdb-events.h" #include "gdb.h" #include "exceptions.h" +#include "observer.h" enum { FROM_TTY = 0 }; -/* Output a single breakpoint. */ +/* True if MI breakpoint observers have been registered. */ + +static int mi_breakpoint_observers_installed; + +/* Control whether breakpoint_notify may act. */ + +static int mi_can_breakpoint_notify; + +/* Output a single breakpoint, when allowed. */ static void breakpoint_notify (int b) { - gdb_breakpoint_query (uiout, b, NULL); + if (mi_can_breakpoint_notify) + gdb_breakpoint_query (uiout, b, NULL); } - -struct gdb_events breakpoint_hooks = -{ - breakpoint_notify, - breakpoint_notify, - breakpoint_notify, -}; - - enum bp_type { REG_BP, @@ -132,7 +132,15 @@ mi_cmd_break_insert (char *command, char **argv, int argc) address = argv[optind]; /* Now we have what we need, let's insert the breakpoint! */ - old_hooks = deprecated_set_gdb_event_hooks (&breakpoint_hooks); + if (! mi_breakpoint_observers_installed) + { + observer_attach_breakpoint_created (breakpoint_notify); + observer_attach_breakpoint_modified (breakpoint_notify); + observer_attach_breakpoint_deleted (breakpoint_notify); + mi_breakpoint_observers_installed = 1; + } + + mi_can_breakpoint_notify = 1; /* Make sure we restore hooks even if exception is thrown. */ TRY_CATCH (e, RETURN_MASK_ALL) { @@ -163,7 +171,7 @@ mi_cmd_break_insert (char *command, char **argv, int argc) _("mi_cmd_break_insert: Bad switch.")); } } - deprecated_set_gdb_event_hooks (old_hooks); + mi_can_breakpoint_notify = 0; if (e.reason < 0) throw_exception (e); } |