diff options
author | Keith Seitz <keiths@redhat.com> | 2002-07-25 17:20:56 +0000 |
---|---|---|
committer | Keith Seitz <keiths@redhat.com> | 2002-07-25 17:20:56 +0000 |
commit | 0dd7a0d895bc1d3bff6caa47504f26edd9177c1a (patch) | |
tree | 4c4ce94838ed83f13a8846aa41dfb940f0f79e74 | |
parent | d72dd965cdb5e3bcdd187028c7e9c4f78c6d8736 (diff) | |
download | gdb-0dd7a0d895bc1d3bff6caa47504f26edd9177c1a.tar.gz |
* mi-interp.c (mi_event_handlers): Add selected_frame_level_changed
handler.
(mi_insert_notify_hooks): Remove breakpoint hooks and frame
changed hook.
(mi_remove_notify_hooks): Likewise.
* mi-events.c (mi_selected_frame_level_changed): New function.
(mi_interp_frame_changed_hook): Remove.
(mi_interp_create_breakpoint_hook): Remove.
(mi_interp_modify_breakpoint_hook): Remove.
(mi_interp_delete_breakpoint_hook): Remove.
* mi.h (mi_selected_frame_level_changed): Add declaration.
(mi_interp_create_breakpoint_hook): Remove declaration.
(mi_interp_modify_breakpoint_hook): Remove declaration.
(mi_interp_delete_breakpoint_hook): Remove declaration.
* mi-cmd-stack.c (mi_cmd_stack_select_frame): If the stack level changes,
issue a selected_frame_level_changed event.
-rw-r--r-- | gdb/mi/ChangeLog | 19 | ||||
-rw-r--r-- | gdb/mi/mi-cmd-stack.c | 7 | ||||
-rw-r--r-- | gdb/mi/mi-events.c | 94 | ||||
-rw-r--r-- | gdb/mi/mi-interp.c | 13 | ||||
-rw-r--r-- | gdb/mi/mi.h | 4 |
5 files changed, 36 insertions, 101 deletions
diff --git a/gdb/mi/ChangeLog b/gdb/mi/ChangeLog index dcb3330c3fd..e2510317415 100644 --- a/gdb/mi/ChangeLog +++ b/gdb/mi/ChangeLog @@ -1,3 +1,22 @@ +2002-07-25 Keith Seitz <keiths@redhat.com> + + * mi-interp.c (mi_event_handlers): Add selected_frame_level_changed + handler. + (mi_insert_notify_hooks): Remove breakpoint hooks and frame + changed hook. + (mi_remove_notify_hooks): Likewise. + * mi-events.c (mi_selected_frame_level_changed): New function. + (mi_interp_frame_changed_hook): Remove. + (mi_interp_create_breakpoint_hook): Remove. + (mi_interp_modify_breakpoint_hook): Remove. + (mi_interp_delete_breakpoint_hook): Remove. + * mi.h (mi_selected_frame_level_changed): Add declaration. + (mi_interp_create_breakpoint_hook): Remove declaration. + (mi_interp_modify_breakpoint_hook): Remove declaration. + (mi_interp_delete_breakpoint_hook): Remove declaration. + * mi-cmd-stack.c (mi_cmd_stack_select_frame): If the stack level changes, + issue a selected_frame_level_changed event. + 2002-07-22 Keith Seitz <keiths@redhat.com> * mi-events.c (mi_register_update): New function. diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c index b4bae47716d..cd999c890fb 100644 --- a/gdb/mi/mi-cmd-stack.c +++ b/gdb/mi/mi-cmd-stack.c @@ -26,6 +26,7 @@ #include "mi-cmds.h" #include "ui-out.h" #include "symtab.h" +#include "gdb-events.h" /* FIXME: these should go in some .h file but stack.c doesn't have a corresponding .h file. These wrappers will be obsolete anyway, once @@ -294,6 +295,8 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) enum mi_cmd_result mi_cmd_stack_select_frame (char *command, char **argv, int argc) { + int current_level = frame_relative_level (selected_frame); + if (!target_has_stack) error ("mi_cmd_stack_select_frame: No stack."); @@ -305,5 +308,9 @@ mi_cmd_stack_select_frame (char *command, char **argv, int argc) select_frame_command_wrapper (0, 1 /* not used */ ); else select_frame_command_wrapper (argv[0], 1 /* not used */ ); + + if (frame_relative_level (selected_frame) != current_level) + selected_frame_level_changed_event (frame_relative_level (selected_frame)); + return MI_CMD_DONE; } diff --git a/gdb/mi/mi-events.c b/gdb/mi/mi-events.c index 6b7255509ba..873101b65b6 100644 --- a/gdb/mi/mi-events.c +++ b/gdb/mi/mi-events.c @@ -43,25 +43,6 @@ mi_interp_stack_changed_hook (void) uiout = saved_ui_out; } -void -mi_interp_frame_changed_hook (int new_frame_number) -{ - struct ui_out *saved_ui_out = uiout; - struct mi_out *tmp_mi_out; - - if (gdb_current_interpreter_is_named (GDB_INTERPRETER_MI0)) - uiout = gdb_interpreter_ui_out (mi0_interp); - else - uiout = gdb_interpreter_ui_out (mi_interp); - - ui_out_list_begin (uiout, "MI_HOOK_RESULT"); - ui_out_field_string (uiout, "HOOK_TYPE", "frame_changed"); - ui_out_field_int (uiout, "frame", new_frame_number); - ui_out_list_end (uiout); - uiout = saved_ui_out; - -} - void mi_interp_context_hook (int thread_id) { @@ -80,73 +61,6 @@ mi_interp_context_hook (int thread_id) uiout = saved_ui_out; } -void -mi_interp_create_breakpoint_hook (struct breakpoint *bpt) -{ - CORE_ADDR unusued_addr; - struct ui_out *saved_ui_out = uiout; - struct mi_out *tmp_mi_out; - - if (gdb_current_interpreter_is_named (GDB_INTERPRETER_MI0)) - uiout = gdb_interpreter_ui_out (mi0_interp); - else - uiout = gdb_interpreter_ui_out (mi_interp); - - /* This is a little inefficient, but it probably isn't worth adding - a gdb_breakpoint_query that takes a bpt structure... */ - - ui_out_list_begin (uiout, "MI_HOOK_RESULT"); - ui_out_field_string (uiout, "HOOK_TYPE", "breakpoint_create"); - gdb_breakpoint_query (uiout, bpt->number); - ui_out_list_end (uiout); - uiout = saved_ui_out; -} - -void -mi_interp_modify_breakpoint_hook (struct breakpoint *bpt) -{ - - CORE_ADDR unusued_addr; - struct ui_out *saved_ui_out = uiout; - struct mi_out *tmp_mi_out; - - if (gdb_current_interpreter_is_named (GDB_INTERPRETER_MI0)) - uiout = gdb_interpreter_ui_out (mi0_interp); - else - uiout = gdb_interpreter_ui_out (mi_interp); - - /* This is a little inefficient, but it probably isn't worth adding - a gdb_breakpoint_query that takes a bpt structure... */ - - ui_out_list_begin (uiout, "MI_HOOK_RESULT"); - ui_out_field_string (uiout, "HOOK_TYPE", "breakpoint_modify"); - gdb_breakpoint_query (uiout, bpt->number); - ui_out_list_end (uiout); - uiout = saved_ui_out; -} - -void -mi_interp_delete_breakpoint_hook (struct breakpoint *bpt) -{ - CORE_ADDR unusued_addr; - struct ui_out *saved_ui_out = uiout; - struct mi_out *tmp_mi_out; - - if (gdb_current_interpreter_is_named (GDB_INTERPRETER_MI0)) - uiout = gdb_interpreter_ui_out (mi0_interp); - else - uiout = gdb_interpreter_ui_out (mi_interp); - - /* This is a little inefficient, but it probably isn't worth adding - a gdb_breakpoint_query that takes a bpt structure... */ - - ui_out_list_begin (uiout, "MI_HOOK_RESULT"); - ui_out_field_string (uiout, "HOOK_TYPE", "breakpoint_delete"); - ui_out_field_int (uiout, "bkptno", bpt->number); - ui_out_list_end (uiout); - uiout = saved_ui_out; -} - static void event_notify (const char *string, ...) { @@ -206,7 +120,13 @@ mi_architecture_changed (void) } void -mi_register_update(int regno) +mi_register_update (int regno) { event_notify ("register-update,number=\"%d\"", regno); } + +void +mi_selected_frame_level_changed (int level) +{ + event_notify ("selected-frame-level-changed,level=\"%d\"", level); +} diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c index a892795e3a0..5f1f0843047 100644 --- a/gdb/mi/mi-interp.c +++ b/gdb/mi/mi-interp.c @@ -59,7 +59,6 @@ static char *mi_input (char *); so we can report interesting things that happened "behind the mi's back" in this command */ static int mi_interp_query_hook (const char *ctlstr, va_list ap); -static void mi_interp_stack_changed_hook (void); static char *mi_interp_read_one_line_hook (char *prompt, int repeat, char *anno); @@ -78,7 +77,8 @@ static struct gdb_events mi_event_handlers = mi_delete_tracepoint, mi_modify_tracepoint, mi_architecture_changed, - mi_register_update + mi_register_update, + mi_selected_frame_level_changed }; static int @@ -341,11 +341,6 @@ mi_cmd_interpreter_set (char *command, char **argv, int argc) static void mi_insert_notify_hooks (void) { - - create_breakpoint_hook = mi_interp_create_breakpoint_hook; - delete_breakpoint_hook = mi_interp_delete_breakpoint_hook; - modify_breakpoint_hook = mi_interp_modify_breakpoint_hook; - selected_frame_level_changed_hook = mi_interp_frame_changed_hook; context_hook = mi_interp_context_hook; query_hook = mi_interp_query_hook; } @@ -353,10 +348,6 @@ mi_insert_notify_hooks (void) static void mi_remove_notify_hooks () { - create_breakpoint_hook = NULL; - delete_breakpoint_hook = NULL; - modify_breakpoint_hook = NULL; - selected_frame_level_changed_hook = NULL; context_hook = NULL; query_hook = NULL; } diff --git a/gdb/mi/mi.h b/gdb/mi/mi.h index 502efa409b8..cba6a9cdb13 100644 --- a/gdb/mi/mi.h +++ b/gdb/mi/mi.h @@ -43,9 +43,6 @@ extern void mi_load_progress (const char *section_name, unsigned long total_section, unsigned long total_sent, unsigned long grand_total); -extern void mi_interp_create_breakpoint_hook (struct breakpoint *bpt); -extern void mi_interp_delete_breakpoint_hook (struct breakpoint *bpt); -extern void mi_interp_modify_breakpoint_hook (struct breakpoint *bpt); extern void mi_interp_frame_changed_hook (int new_frame_number); extern void mi_interp_context_hook (int thread_id); @@ -57,4 +54,5 @@ extern void mi_modify_tracepoint (int bpnum); extern void mi_delete_tracepoint (int bpnum); extern void mi_architecture_changed (void); extern void mi_register_update(int regno); +extern void mi_selected_frame_level_changed (int level); #endif /* MI_H */ |