Give every interpreter a command_loop_proc.
authorAndrew Burgess <aburgess@broadcom.com>
Fri, 6 Sep 2013 08:53:09 +0000 (08:53 +0000)
committerAndrew Burgess <aburgess@broadcom.com>
Fri, 6 Sep 2013 08:53:09 +0000 (08:53 +0000)
  https://sourceware.org/ml/gdb-patches/2013-09/msg00179.html

gdb/ChangeLog

        * cli/cli-interp.c (_initialize_cli_interp): Add a
        command_loop_proc to interp_procs.
        * event-top.c (cli_command_loop): Change signature to match
        interp_command_loop_ftype.
        * event-top.h (cli_command_loop): Same.
        * interps.c (interp_new): Require every interpreter to have a
        command_loop_proc.
        (current_interp_command_loop): Just call the command_loop_proc on
        the current interpreter.
        * tui/tui-interp.c (_initialize_tui_interp): Add a
        command_loop_proc to interp_procs.

gdb/ChangeLog
gdb/cli/cli-interp.c
gdb/event-top.c
gdb/event-top.h
gdb/interps.c
gdb/tui/tui-interp.c

index 8a30eb2..e4ebab8 100644 (file)
@@ -1,3 +1,17 @@
+2013-09-06  Andrew Burgess  <aburgess@broadcom.com>
+
+       * cli/cli-interp.c (_initialize_cli_interp): Add a
+       command_loop_proc to interp_procs.
+       * event-top.c (cli_command_loop): Change signature to match
+       interp_command_loop_ftype.
+       * event-top.h (cli_command_loop): Same.
+       * interps.c (interp_new): Require every interpreter to have a
+       command_loop_proc.
+       (current_interp_command_loop): Just call the command_loop_proc on
+       the current interpreter.
+       * tui/tui-interp.c (_initialize_tui_interp): Add a
+       command_loop_proc to interp_procs.
+
 2013-09-06  Ricard Wanderlof  <ricardw@axis.com>
 
        * cris-tdep.c (cris_gdbarch_init): Add call to
index 1003cc7..ac3d9a8 100644 (file)
@@ -151,7 +151,9 @@ _initialize_cli_interp (void)
     cli_interpreter_suspend,   /* suspend_proc */
     cli_interpreter_exec,      /* exec_proc */
     cli_interpreter_display_prompt_p,  /* prompt_proc_p */
-    cli_ui_out                 /* ui_out_proc */
+    cli_ui_out,                        /* ui_out_proc */
+    NULL,                       /* set_logging_proc */
+    cli_command_loop            /* command_loop_proc */
   };
   struct interp *cli_interp;
 
index f1d55b3..1f2e6fb 100644 (file)
@@ -167,9 +167,11 @@ rl_callback_read_char_wrapper (gdb_client_data client_data)
 }
 
 /* Initialize all the necessary variables, start the event loop,
-   register readline, and stdin, start the loop.  */
+   register readline, and stdin, start the loop.  The DATA is the
+   interpreter data cookie, ignored for now.  */
+
 void
-cli_command_loop (void)
+cli_command_loop (void *data)
 {
   display_gdb_prompt (0);
 
index e6166f6..97142d4 100644 (file)
@@ -62,6 +62,6 @@ extern void (*input_handler) (char *);
 extern int input_fd;
 extern void (*after_char_processing_hook) (void);
 
-extern void cli_command_loop (void);
+extern void cli_command_loop (void *);
 
 #endif
index 33e0f72..7f19385 100644 (file)
@@ -101,6 +101,9 @@ interp_new (const char *name, const struct interp_procs *procs)
   new_interp->procs = procs;
   new_interp->inited = 0;
 
+  /* Check for required procs.  */
+  gdb_assert (procs->command_loop_proc != NULL);
+
   return new_interp;
 }
 
@@ -319,13 +322,9 @@ current_interp_display_prompt_p (void)
 void
 current_interp_command_loop (void)
 {
-  /* Somewhat messy.  For the moment prop up all the old ways of
-     selecting the command loop.  */
-  if (current_interpreter != NULL
-      && current_interpreter->procs->command_loop_proc != NULL)
-    current_interpreter->procs->command_loop_proc (current_interpreter->data);
-  else
-    cli_command_loop ();
+  gdb_assert (current_interpreter != NULL);
+
+  current_interpreter->procs->command_loop_proc (current_interpreter->data);
 }
 
 int
index 42526e6..1095220 100644 (file)
@@ -153,6 +153,8 @@ _initialize_tui_interp (void)
     tui_exec,
     tui_display_prompt_p,
     tui_ui_out,
+    NULL,
+    cli_command_loop
   };
   struct interp *tui_interp;