+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.
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)
{
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, ...)
{
}
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);
+}
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);
mi_delete_tracepoint,
mi_modify_tracepoint,
mi_architecture_changed,
- mi_register_update
+ mi_register_update,
+ mi_selected_frame_level_changed
};
static int
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;
}
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;
}
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);
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 */