Include token in ^running notification for CLI commands.
authorVladimir Prus <vladimir@codesourcery.com>
Thu, 12 Mar 2009 20:08:04 +0000 (20:08 +0000)
committerVladimir Prus <vladimir@codesourcery.com>
Thu, 12 Mar 2009 20:08:04 +0000 (20:08 +0000)
        * mi/mi-main.c (mi_execute_command): Set current_token here.
        (mi_cmd_execute): Do not set current_token here.

gdb/ChangeLog
gdb/mi/mi-main.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/mi-cli.exp

index 9e6ecda692d829663080ee294f492c3fc8ff461e..2aeca94bcdc39e627f1468abe9f0d46f4e3f78e4 100644 (file)
@@ -1,3 +1,10 @@
+2009-03-12  Vladimir Prus  <vladimir@codesourcery.com>
+
+       Include token in ^running notification for CLI commands.
+
+        * mi/mi-main.c (mi_execute_command): Set current_token here.
+        (mi_cmd_execute): Do not set current_token here.
+
 2009-03-12  Vladimir Prus  <vladimir@codesourcery.com>
 
        Fix MI timings.
index 2873b4d6d8e67daa65683d9970546ab036d9d0c6..97a136b043eb4f0cd8fb17af38643b9da97e9d9e 100644 (file)
@@ -1137,11 +1137,15 @@ mi_cmd_list_target_features (char *command, char **argv, int argc)
 static void
 captured_mi_execute_command (struct ui_out *uiout, void *data)
 {
+  struct cleanup *cleanup;
   struct mi_parse *context = (struct mi_parse *) data;
 
   if (do_timings)
     current_command_ts = context->cmd_start;
 
+  current_token = xstrdup (context->token);
+  cleanup = make_cleanup (free_current_contents, &current_token);
+
   running_result_record_printed = 0;
   switch (context->op)
     {
@@ -1216,6 +1220,8 @@ captured_mi_execute_command (struct ui_out *uiout, void *data)
 
     }
 
+  do_cleanups (cleanup);
+
   return;
 }
 
@@ -1310,10 +1316,9 @@ mi_cmd_execute (struct mi_parse *parse)
 {
   struct cleanup *cleanup;
   int i;
-  free_all_values ();
 
-  current_token = xstrdup (parse->token);
-  cleanup = make_cleanup (free_current_contents, &current_token);
+  free_all_values ();
+  cleanup = make_cleanup (null_cleanup, NULL);
 
   if (parse->frame != -1 && parse->thread == -1)
     error (_("Cannot specify --frame without --thread"));
index 50e61ce0731423fbbcb74fc58de182291ea9f837..9407f9f04c1d90b608cd87af3e3c159365eb3157 100644 (file)
@@ -1,3 +1,8 @@
+2009-03-12  Vladimir Prus  <vladimir@codesourcery.com>
+
+        * gdb.mi/mi-cli.exp: Verify that CLI commands that run inferior
+        include the token in ^running and frame info in *stopped.
+
 2009-03-05  Paul Pluzhnikov  <ppluzhnikov@google.com>
 
        * solib-display.exp: New file.
index b469acbbfb94d40671be0facf9c49e7b16af2e77..8427edfbc714ac3b06ff043bb2c94126efb69f31 100644 (file)
@@ -155,8 +155,24 @@ mi_execute_to "exec-continue" "breakpoint-hit" "main" "" ".*basics.c" \
     $line_main_hello { "" "disp=\"del\"" } \
     "-exec-continue to line $line_main_hello"
 
-mi_execute_to "exec-next" "end-stepping-range" "main" "" ".*basics.c" $line_main_return "" \
-    "-exec-next to line $line_main_return"
+# Test that the token is output even for CLI commands
+# Also test that *stopped includes frame information.
+mi_gdb_test "34 next" \
+    ".*34\\\^running.*\\*running,thread-id=\"all\"" \
+    "34 next: run"
+
+gdb_expect {
+    -re "~\[^\r\n\]+\r\n" {
+        verbose -log "Hi there"
+    }
+}
+
+# Note that the output does not include stop reason. This is fine.
+# The purpose of *stopped notification for CLI command is to make
+# sure that frontend knows that inferior is stopped, and knows where.
+# Supplementary information is not necessary.
+mi_expect_stop "" "main" "" ".*basics.c" $line_main_return "" \
+    "34 next: stop"
 
 mi_gdb_test "-interpreter-exec console \"list\"" \
   "\~\"$line_main_return\[\\\\t ]*callme \\(1\\);\\\\n\".*\\^done" \