]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* mi-interp.c (mi_event_handlers): Add selected_frame_level_changed
authorKeith Seitz <keiths@redhat.com>
Thu, 25 Jul 2002 17:20:56 +0000 (17:20 +0000)
committerKeith Seitz <keiths@redhat.com>
Thu, 25 Jul 2002 17:20:56 +0000 (17:20 +0000)
        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.

gdb/mi/ChangeLog
gdb/mi/mi-cmd-stack.c
gdb/mi/mi-events.c
gdb/mi/mi-interp.c
gdb/mi/mi.h

index dcb3330c3fd2150192741ee9176a252f8216fefa..e2510317415d4c6e340bb7129441efe7821d6a03 100644 (file)
@@ -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.
index b4bae47716dcbfe960150223004efdde1ee1cb3e..cd999c890fbb528e6eb082fa0f1dc9f78349c9b1 100644 (file)
@@ -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;
 }
index 6b7255509baa18647a6e464ba05eed85fa7f58e6..873101b65b6c1e0deaa3a4085b31f3078cc373e6 100644 (file)
@@ -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);
+}
index a892795e3a05aca3dcddf41476cc5c5df91392ea..5f1f0843047dd8dc23494a8836cddb36937d47da 100644 (file)
@@ -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;
 }
index 502efa409b8cd4e7b4113041aa7102fdf58102a9..cba6a9cdb13e3e4ecc8eb97cd7d3f52b6c1b4d8e 100644 (file)
@@ -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 */