summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2002-07-25 17:20:56 +0000
committerKeith Seitz <keiths@redhat.com>2002-07-25 17:20:56 +0000
commit0dd7a0d895bc1d3bff6caa47504f26edd9177c1a (patch)
tree4c4ce94838ed83f13a8846aa41dfb940f0f79e74
parentd72dd965cdb5e3bcdd187028c7e9c4f78c6d8736 (diff)
downloadgdb-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/ChangeLog19
-rw-r--r--gdb/mi/mi-cmd-stack.c7
-rw-r--r--gdb/mi/mi-events.c94
-rw-r--r--gdb/mi/mi-interp.c13
-rw-r--r--gdb/mi/mi.h4
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 */