]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
merge from mainline
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>
Mon, 4 Nov 2002 00:25:38 +0000 (00:25 +0000)
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>
Mon, 4 Nov 2002 00:25:38 +0000 (00:25 +0000)
13 files changed:
gdb/mi/ChangeLog
gdb/mi/gdbmi.texinfo
gdb/mi/mi-cmd-stack.c
gdb/mi/mi-cmd-var.c
gdb/mi/mi-main.c
gdb/mi/mi-out.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/ChangeLog
gdb/testsuite/gdb.mi/mi-return.exp
gdb/testsuite/gdb.mi/mi-stack.exp
gdb/testsuite/gdb.mi/mi-var-block.exp
gdb/testsuite/gdb.mi/mi-var-child.exp
gdb/testsuite/gdb.mi/mi-var-cmd.exp

index d895a044529eeb659cf7c8c1b7c98382848f9daa..3a59321263d642973cb7f398824b1607d0faed1a 100644 (file)
        (mi_init_ui): Remove.
        (_initialize_mi_main): Remove. No longer needed.
 
+2002-10-23  Jeff Johnston  <jjohnstn@redhat.com>
+
+       * mi-cmd-var.c: Change all remaining occurrences of ui_out_tuple_begin 
+       to make_cleanup_ui_out_tuple_begin_end.  Change all remaining 
+       occurrences of ui_out_list_begin to make_cleanup_ui_out_list_begin_end.
+       Use do_cleanups instead of ui_out_list_end or ui_out_tuple_end.  This 
+       is a fix for PR gdb/680.
+       * mi-cmd-stack.c: Ditto.
+       * mi-main.c: Ditto.
+
+2002-10-22  Keith Seitz  <keiths@redhat.com>
+
+       * mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR
+       when we really did catch an error(). If we got GDB_RC_FAIL, return
+       MI_CMD_ERROR instead.
+
+2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>
+
+       * gdbmi.texinfo: Fix examples that show frames to remove
+       extraneous blank in level field.  Part of fix for PR gdb/192.
+        
+2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>
+        
+       * mi-cmd-var.c (mi_cmd_var_update): Fix for PR gdb/672.  For m2, 
+       output list begin and end for "changelist" rather than tuple begin/end.
+       (varobj_update_one): For m2, add tuple begin and end for varobj 
+       update output.
+
+2002-10-02  Elena Zannoni  <ezannoni@redhat.com>
+
+       * mi-main.c (mi_cmd_exec_return): Don't use
+       return_command_wrapper, use return_command instead.
+       (mi_cmd_exec_interrupt): Don't use
+       interrupt_target_command_wrapper, use interrupt_target_command
+       instead.
+       (return_command_wrapper, interrupt_target_command_wrapper):
+       Delete.
+       Include frame.h.
+
+2002-10-01  Andrew Cagney  <ac131313@redhat.com>
+
+       * mi-main.c (mi2_command_loop): New function.
+       (mi0_command_loop): Delete function.
+       (_initialize_mi_main): Recognize, and default to, "mi2".  Do not
+       recognize "mi0".
+       * mi-out.c (mi_table_begin): Remove mi0 code.
+       (mi_table_body, mi_table_end): Ditto.
+       (mi_table_header, mi_open, mi_close): Ditto.
+
 2002-09-29  Andrew Cagney  <ac131313@redhat.com>
 
        * mi-out.c (mi_version): New function.
index 6efedd32ee34cb66e31be27cfc8efae288791625..0d65c8b9717268da11e0a17cc8ed1447d1c7b66e 100644 (file)
@@ -2074,7 +2074,7 @@ file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
 205^done
 (@value{GDBP})
 111-exec-return
-111^done,frame=@{level="0 ",func="callee3",
+111^done,frame=@{level="0",func="callee3",
 args=[@{name="strarg",
 value="0x11940 \"A string argument.\""@}],
 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
@@ -2709,15 +2709,15 @@ functionality of @samp{-stack-list-arguments}.
 -stack-list-frames
 ^done,
 stack=[
-frame=@{level="0 ",addr="0x00010734",func="callee4",
+frame=@{level="0",addr="0x00010734",func="callee4",
 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
-frame=@{level="1 ",addr="0x0001076c",func="callee3",
+frame=@{level="1",addr="0x0001076c",func="callee3",
 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
-frame=@{level="2 ",addr="0x0001078c",func="callee2",
+frame=@{level="2",addr="0x0001078c",func="callee2",
 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
-frame=@{level="3 ",addr="0x000107b4",func="callee1",
+frame=@{level="3",addr="0x000107b4",func="callee1",
 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
-frame=@{level="4 ",addr="0x000107e0",func="main",
+frame=@{level="4",addr="0x000107e0",func="main",
 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
 (@value{GDBP})
 -stack-list-arguments 0
@@ -2799,25 +2799,25 @@ Full stack backtrace:
 (@value{GDBP})
 -stack-list-frames
 ^done,stack=
-[frame=@{level="0 ",addr="0x0001076c",func="foo",
+[frame=@{level="0",addr="0x0001076c",func="foo",
   file="recursive2.c",line="11"@},
-frame=@{level="1 ",addr="0x000107a4",func="foo",
+frame=@{level="1",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="2 ",addr="0x000107a4",func="foo",
+frame=@{level="2",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="3 ",addr="0x000107a4",func="foo",
+frame=@{level="3",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="4 ",addr="0x000107a4",func="foo",
+frame=@{level="4",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="5 ",addr="0x000107a4",func="foo",
+frame=@{level="5",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="6 ",addr="0x000107a4",func="foo",
+frame=@{level="6",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="7 ",addr="0x000107a4",func="foo",
+frame=@{level="7",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="8 ",addr="0x000107a4",func="foo",
+frame=@{level="8",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="9 ",addr="0x000107a4",func="foo",
+frame=@{level="9",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
 frame=@{level="10",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
@@ -2832,11 +2832,11 @@ Show frames between @var{low_frame} and @var{high_frame}:
 (@value{GDBP})
 -stack-list-frames 3 5
 ^done,stack=
-[frame=@{level="3 ",addr="0x000107a4",func="foo",
+[frame=@{level="3",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="4 ",addr="0x000107a4",func="foo",
+frame=@{level="4",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@},
-frame=@{level="5 ",addr="0x000107a4",func="foo",
+frame=@{level="5",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@}]
 (@value{GDBP})
 @end smallexample
@@ -2847,7 +2847,7 @@ Show a single frame:
 (@value{GDBP})
 -stack-list-frames 3 3
 ^done,stack=
-[frame=@{level="3 ",addr="0x000107a4",func="foo",
+[frame=@{level="3",addr="0x000107a4",func="foo",
   file="recursive2.c",line="14"@}]
 (@value{GDBP})
 @end smallexample
@@ -3510,7 +3510,7 @@ number-of-threads="3"
 (@value{GDBP})
 -thread-select 3
 ^done,new-thread-id="3",
-frame=@{level="0 ",func="vprintf",
+frame=@{level="0",func="vprintf",
 args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
 @{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
 (@value{GDBP})
index da6f7496b2a4e46aaf519ec1337dec979bc50f26..a4cea3e9aaeba099095a4add797c8626c6c92c21 100644 (file)
@@ -46,6 +46,7 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc)
   int frame_low;
   int frame_high;
   int i;
+  struct cleanup *cleanup_stack;
   struct frame_info *fi;
 
   if (!target_has_stack)
@@ -77,7 +78,7 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc)
   if (fi == NULL)
     error ("mi_cmd_stack_list_frames: Not enough frames in stack.");
 
-  ui_out_list_begin (uiout, "stack");
+  cleanup_stack = make_cleanup_ui_out_list_begin_end (uiout, "stack");
 
   /* Now let;s print the frames up to frame_high, or until there are
      frames in the stack. */
@@ -96,7 +97,7 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc)
                        0 /* args */ );
     }
 
-  ui_out_list_end (uiout);
+  do_cleanups (cleanup_stack);
   if (i < frame_high)
     error ("mi_cmd_stack_list_frames: Not enough frames in stack.");
 
@@ -156,6 +157,7 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
   int frame_high;
   int i;
   struct frame_info *fi;
+  struct cleanup *cleanup_stack_args;
 
   if (argc < 1 || argc > 3 || argc == 2)
     error ("mi_cmd_stack_list_args: Usage: PRINT_VALUES [FRAME_LOW FRAME_HIGH]");
@@ -183,7 +185,7 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
   if (fi == NULL)
     error ("mi_cmd_stack_list_args: Not enough frames in stack.");
 
-  ui_out_list_begin (uiout, "stack-args");
+  cleanup_stack_args = make_cleanup_ui_out_list_begin_end (uiout, "stack-args");
 
   /* Now let's print the frames up to frame_high, or until there are
      frames in the stack. */
@@ -191,14 +193,15 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
        fi && (i <= frame_high || frame_high == -1);
        i++, fi = get_prev_frame (fi))
     {
+      struct cleanup *cleanup_frame;
       QUIT;
-      ui_out_tuple_begin (uiout, "frame");
+      cleanup_frame = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
       ui_out_field_int (uiout, "level", i);
       list_args_or_locals (0, atoi (argv[0]), fi);
-      ui_out_tuple_end (uiout);
+      do_cleanups (cleanup_frame);
     }
 
-  ui_out_list_end (uiout);
+  do_cleanups (cleanup_stack_args);
   if (i < frame_high)
     error ("mi_cmd_stack_list_args: Not enough frames in stack.");
 
@@ -215,13 +218,14 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
   struct block *block;
   struct symbol *sym;
   int i, nsyms;
+  struct cleanup *cleanup_list;
   static struct ui_stream *stb = NULL;
 
   stb = ui_out_stream_new (uiout);
 
   block = get_frame_block (fi, 0);
 
-  ui_out_list_begin (uiout, locals ? "locals" : "args");
+  cleanup_list = make_cleanup_ui_out_list_begin_end (uiout, locals ? "locals" : "args");
 
   while (block != 0)
     {
@@ -263,8 +267,10 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
            }
          if (print_me)
            {
+             struct cleanup *cleanup_tuple = NULL;
              if (values)
-               ui_out_tuple_begin (uiout, NULL);
+               cleanup_tuple = 
+                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
              ui_out_field_string (uiout, "name", SYMBOL_NAME (sym));
 
              if (values)
@@ -279,7 +285,7 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
                    sym2 = sym;
                  print_variable_value (sym2, fi, stb->stream);
                  ui_out_field_stream (uiout, "value", stb);
-                 ui_out_tuple_end (uiout);
+                 do_cleanups (cleanup_tuple);
                }
            }
        }
@@ -288,7 +294,7 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
       else
        block = BLOCK_SUPERBLOCK (block);
     }
-  ui_out_list_end (uiout);
+  do_cleanups (cleanup_list);
   ui_out_stream_delete (stb);
 }
 
index cb5e939e9f1a1035d96ed68b31b96a49b86cd968..ee65deb773f64a2260c68efe1d2b37f7f059f694 100644 (file)
@@ -254,6 +254,7 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
   struct varobj *var;
   struct varobj **childlist;
   struct varobj **cc;
+  struct cleanup *cleanup_children;
   int numchild;
   char *type;
 
@@ -271,11 +272,12 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
   if (numchild <= 0)
     return MI_CMD_DONE;
 
-  ui_out_tuple_begin (uiout, "children");
+  cleanup_children = make_cleanup_ui_out_tuple_begin_end (uiout, "children");
   cc = childlist;
   while (*cc != NULL)
     {
-      ui_out_tuple_begin (uiout, "child");
+      struct cleanup *cleanup_child;
+      cleanup_child = make_cleanup_ui_out_tuple_begin_end (uiout, "child");
       ui_out_field_string (uiout, "name", varobj_get_objname (*cc));
       ui_out_field_string (uiout, "exp", varobj_get_expression (*cc));
       ui_out_field_int (uiout, "numchild", varobj_get_num_children (*cc));
@@ -283,10 +285,10 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
       /* C++ pseudo-variables (public, private, protected) do not have a type */
       if (type)
        ui_out_field_string (uiout, "type", varobj_get_type (*cc));
-      ui_out_tuple_end (uiout);
+      do_cleanups (cleanup_child);
       cc++;
     }
-  ui_out_tuple_end (uiout);
+  do_cleanups (cleanup_children);
   xfree (childlist);
   return MI_CMD_DONE;
 }
@@ -405,6 +407,7 @@ mi_cmd_var_update (char *command, char **argv, int argc)
   struct varobj *var;
   struct varobj **rootlist;
   struct varobj **cr;
+  struct cleanup *cleanup;
   char *name;
   int nv;
 
@@ -419,10 +422,13 @@ mi_cmd_var_update (char *command, char **argv, int argc)
   if ((*name == '*') && (*(name + 1) == '\0'))
     {
       nv = varobj_list (&rootlist);
-      ui_out_tuple_begin (uiout, "changelist");
+      if (mi_version (uiout) <= 1)
+        cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
+      else
+        cleanup = make_cleanup_ui_out_list_begin_end (uiout, "changelist");
       if (nv <= 0)
        {
-         ui_out_tuple_end (uiout);
+         do_cleanups (cleanup);
          return MI_CMD_DONE;
        }
       cr = rootlist;
@@ -432,7 +438,7 @@ mi_cmd_var_update (char *command, char **argv, int argc)
          cr++;
        }
       xfree (rootlist);
-      ui_out_tuple_end (uiout);
+      do_cleanups (cleanup);
     }
   else
     {
@@ -441,9 +447,12 @@ mi_cmd_var_update (char *command, char **argv, int argc)
       if (var == NULL)
        error ("mi_cmd_var_update: Variable object not found");
 
-      ui_out_tuple_begin (uiout, "changelist");
+      if (mi_version (uiout) <= 1)
+        cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
+      else
+        cleanup = make_cleanup_ui_out_list_begin_end (uiout, "changelist");
       varobj_update_one (var);
-      ui_out_tuple_end (uiout);
+      do_cleanups (cleanup);
     }
     return MI_CMD_DONE;
 }
@@ -457,6 +466,7 @@ varobj_update_one (struct varobj *var)
 {
   struct varobj **changelist;
   struct varobj **cc;
+  struct cleanup *cleanup = NULL;
   int nc;
 
   nc = varobj_update (&var, &changelist);
@@ -469,17 +479,25 @@ varobj_update_one (struct varobj *var)
     return 1;
   else if (nc == -1)
     {
+      if (mi_version (uiout) > 1)
+        cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
       ui_out_field_string (uiout, "name", varobj_get_objname(var));
       ui_out_field_string (uiout, "in_scope", "false");
+      if (mi_version (uiout) > 1)
+        do_cleanups (cleanup);
       return -1;
     }
   else if (nc == -2)
     {
+      if (mi_version (uiout) > 1)
+        cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
       ui_out_field_string (uiout, "name", varobj_get_objname (var));
       ui_out_field_string (uiout, "in_scope", "true");
       ui_out_field_string (uiout, "new_type", varobj_get_type(var));
       ui_out_field_int (uiout, "new_num_children", 
                           varobj_get_num_children(var));
+      if (mi_version (uiout) > 1)
+        do_cleanups (cleanup);
     }
   else
     {
@@ -487,9 +505,13 @@ varobj_update_one (struct varobj *var)
       cc = changelist;
       while (*cc != NULL)
        {
+         if (mi_version (uiout) > 1)
+           cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
          ui_out_field_string (uiout, "name", varobj_get_objname (*cc));
          ui_out_field_string (uiout, "in_scope", "true");
          ui_out_field_string (uiout, "type_changed", "false");
+         if (mi_version (uiout) > 1)
+           do_cleanups (cleanup);
          cc++;
        }
       xfree (changelist);
index 533c2fbd9c488a5bc055811161d56e9fe7da77e0..5e2f4cc08c9cef355cd2147e4337bf222b4adcc8 100644 (file)
@@ -40,6 +40,8 @@
 #include "value.h"             /* for write_register_bytes() */
 #include "regcache.h"
 #include "gdb.h"
+#include "frame.h"
+
 #include <ctype.h>
 #include <sys/time.h>
 
@@ -98,12 +100,6 @@ void mi_load_progress (const char *section_name,
                       unsigned long total_sent,
                       unsigned long grand_total);
 
-/* FIXME: these should go in some .h file, but infcmd.c doesn't have a
-   corresponding .h file. These wrappers will be obsolete anyway, once
-   we pull the plug on the sanitization. */
-extern void interrupt_target_command_wrapper (char *, int);
-extern void return_command_wrapper (char *, int);
-
 /* A helper function which will set mi_error_message to error_last_message. */
 void
 mi_error_last_message (void)
@@ -187,11 +183,11 @@ mi_cmd_exec_return (char *args, int from_tty)
   if (*args)
     /* Call return_command with from_tty argument equal to 0 so as to
        avoid being queried. */
-    return_command_wrapper (args, 0);
+    return_command (args, 0);
   else
     /* Call return_command with from_tty argument equal to 0 so as to
        avoid being queried. */
-    return_command_wrapper (NULL, 0);
+    return_command (NULL, 0);
 
   /* Because we have called return_command with from_tty = 0, we need
      to print the frame here. */
@@ -223,7 +219,7 @@ mi_cmd_exec_interrupt (char *args, int from_tty)
                 "mi_cmd_exec_interrupt: Inferior not executing.");
       return MI_CMD_ERROR;
     }
-  interrupt_target_command_wrapper (args, from_tty);
+  interrupt_target_command (args, from_tty);
   if (last_async_command)
     fputs_unfiltered (last_async_command, raw_stdout);
   fputs_unfiltered ("^done", raw_stdout);
@@ -252,8 +248,12 @@ mi_cmd_thread_select (char *command, char **argv, int argc)
   else
     rc = gdb_thread_select (uiout, argv[0]);
 
-  if (rc == GDB_RC_FAIL)
+  /* RC is enum gdb_rc if it is successful (>=0)
+     enum return_reason if not (<0). */
+  if ((int) rc < 0 && (enum return_reason) rc == RETURN_ERROR)
     return MI_CMD_CAUGHT_ERROR;
+  else if ((int) rc >= 0 && rc == GDB_RC_FAIL)
+    return MI_CMD_ERROR;
   else
     return MI_CMD_DONE;
 }
@@ -923,19 +923,22 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
   /* Build the result as a two dimentional table. */
   {
     struct ui_stream *stream = ui_out_stream_new (uiout);
+    struct cleanup *cleanup_list_memory;
     int row;
     int row_byte;
-    ui_out_list_begin (uiout, "memory");
+    cleanup_list_memory = make_cleanup_ui_out_list_begin_end (uiout, "memory");
     for (row = 0, row_byte = 0;
         row < nr_rows;
         row++, row_byte += nr_cols * word_size)
       {
        int col;
        int col_byte;
-       ui_out_tuple_begin (uiout, NULL);
+       struct cleanup *cleanup_tuple;
+       struct cleanup *cleanup_list_data;
+       cleanup_tuple = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
        ui_out_field_core_addr (uiout, "addr", addr + row_byte);
        /* ui_out_field_core_addr_symbolic (uiout, "saddr", addr + row_byte); */
-       ui_out_list_begin (uiout, "data");
+       cleanup_list_data = make_cleanup_ui_out_list_begin_end (uiout, "data");
        for (col = 0, col_byte = row_byte;
             col < nr_cols;
             col++, col_byte += word_size)
@@ -952,7 +955,7 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
                ui_out_field_stream (uiout, NULL, stream);
              }
          }
-       ui_out_list_end (uiout);
+       do_cleanups (cleanup_list_data);
        if (aschar)
          {
            int byte;
@@ -972,10 +975,10 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
              }
            ui_out_field_stream (uiout, "ascii", stream);
          }
-       ui_out_tuple_end (uiout);
+       do_cleanups (cleanup_tuple);
       }
     ui_out_stream_delete (stream);
-    ui_out_list_end (uiout);
+    do_cleanups (cleanup_list_memory);
   }
   do_cleanups (cleanups);
   return MI_CMD_DONE;
@@ -1429,17 +1432,18 @@ mi_load_progress (const char *section_name,
                 strcmp (previous_sect_name, section_name) : 1);
   if (new_section)
     {
+      struct cleanup *cleanup_tuple;
       xfree (previous_sect_name);
       previous_sect_name = xstrdup (section_name);
 
       if (last_async_command)
        fputs_unfiltered (last_async_command, raw_stdout);
       fputs_unfiltered ("+download", raw_stdout);
-      ui_out_tuple_begin (uiout, NULL);
+      cleanup_tuple = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
       ui_out_field_string (uiout, "section", section_name);
       ui_out_field_int (uiout, "section-size", total_section);
       ui_out_field_int (uiout, "total-size", grand_total);
-      ui_out_tuple_end (uiout);
+      do_cleanups (cleanup_tuple);
       mi_out_put (uiout, raw_stdout);
       fputs_unfiltered ("\n", raw_stdout);
       gdb_flush (raw_stdout);
@@ -1448,26 +1452,96 @@ mi_load_progress (const char *section_name,
   if (delta.tv_sec >= update_threshold.tv_sec &&
       delta.tv_usec >= update_threshold.tv_usec)
     {
+      struct cleanup *cleanup_tuple;
       last_update.tv_sec = time_now.tv_sec;
       last_update.tv_usec = time_now.tv_usec;
       if (last_async_command)
        fputs_unfiltered (last_async_command, raw_stdout);
       fputs_unfiltered ("+download", raw_stdout);
-      ui_out_tuple_begin (uiout, NULL);
+      cleanup_tuple = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
       ui_out_field_string (uiout, "section", section_name);
       ui_out_field_int (uiout, "section-sent", sent_so_far);
       ui_out_field_int (uiout, "section-size", total_section);
       ui_out_field_int (uiout, "total-sent", total_sent);
       ui_out_field_int (uiout, "total-size", grand_total);
-      ui_out_tuple_end (uiout);
+      do_cleanups (cleanup_tuple);
       mi_out_put (uiout, raw_stdout);
       fputs_unfiltered ("\n", raw_stdout);
       gdb_flush (raw_stdout);
     }
 }
 
-void
-mi_setup_architecture_data (void)
+static void
+mi_command_loop (int mi_version)
+{
+  /* HACK: Force stdout/stderr to point at the console.  This avoids
+     any potential side effects caused by legacy code that is still
+     using the TUI / fputs_unfiltered_hook */
+  raw_stdout = stdio_fileopen (stdout);
+  /* Route normal output through the MIx */
+  gdb_stdout = mi_console_file_new (raw_stdout, "~");
+  /* Route error and log output through the MI */
+  gdb_stderr = mi_console_file_new (raw_stdout, "&");
+  gdb_stdlog = gdb_stderr;
+  /* Route target output through the MI. */
+  gdb_stdtarg = mi_console_file_new (raw_stdout, "@");
+
+  /* HACK: Poke the ui_out table directly.  Should we be creating a
+     mi_out object wired up to the above gdb_stdout / gdb_stderr? */
+  uiout = mi_out_new (mi_version);
+
+  /* HACK: Override any other interpreter hooks.  We need to create a
+     real event table and pass in that. */
+  init_ui_hook = 0;
+  /* command_loop_hook = 0; */
+  print_frame_info_listing_hook = 0;
+  query_hook = 0;
+  warning_hook = 0;
+  create_breakpoint_hook = 0;
+  delete_breakpoint_hook = 0;
+  modify_breakpoint_hook = 0;
+  interactive_hook = 0;
+  registers_changed_hook = 0;
+  readline_begin_hook = 0;
+  readline_hook = 0;
+  readline_end_hook = 0;
+  register_changed_hook = 0;
+  memory_changed_hook = 0;
+  context_hook = 0;
+  target_wait_hook = 0;
+  call_command_hook = 0;
+  error_hook = 0;
+  error_begin_hook = 0;
+  show_load_progress = mi_load_progress;
+
+  /* Turn off 8 bit strings in quoted output.  Any character with the
+     high bit set is printed using C's octal format. */
+  sevenbit_strings = 1;
+
+  /* Tell the world that we're alive */
+  fputs_unfiltered ("(gdb) \n", raw_stdout);
+  gdb_flush (raw_stdout);
+
+  if (!event_loop_p)
+    simplified_command_loop (mi_input, mi_execute_command);
+  else
+    start_event_loop ();
+}
+
+static void
+mi1_command_loop (void)
+{
+  mi_command_loop (1);
+}
+
+static void
+mi2_command_loop (void)
+{
+  mi_command_loop (2);
+}
+
+static void
+setup_architecture_data (void)
 {
   /* don't trust REGISTER_BYTES to be zero. */
   old_regs = xmalloc (REGISTER_BYTES + 1);
@@ -1477,6 +1551,21 @@ mi_setup_architecture_data (void)
 void
 mi_register_gdbarch_swap (void)
 {
+  if (interpreter_p == NULL)
+    return;
+
+  /* If we're _the_ interpreter, take control. */
+  if (strcmp (interpreter_p, "mi") == 0)
+    command_loop_hook = mi2_command_loop;
+  else if (strcmp (interpreter_p, "mi1") == 0)
+    command_loop_hook = mi1_command_loop;
+  else if (strcmp (interpreter_p, "mi2") == 0)
+    command_loop_hook = mi2_command_loop;
+  else
+    return;
+
+  init_ui_hook = mi_init_ui;
+  setup_architecture_data ();
   register_gdbarch_swap (&old_regs, sizeof (old_regs), NULL);
   register_gdbarch_swap (NULL, 0, mi_setup_architecture_data);
 }
index f7ed7ecfbdcd88f82ddf18fa925b79a5047288af..f7156ca9c59286f0eba5e6a78281d4d531275422 100644 (file)
@@ -109,14 +109,6 @@ mi_table_begin (struct ui_out *uiout,
 {
   struct ui_out_data *data = ui_out_data (uiout);
   mi_open (uiout, tblid, ui_out_type_tuple);
-  if (data->mi_version == 0)
-    {
-      if (nr_rows == 0)
-       data->suppress_output = 1;
-      else
-       mi_open (uiout, "hdr", ui_out_type_list);
-      return;
-    }
   mi_field_int (uiout, -1/*fldno*/, -1/*width*/, -1/*alin*/,
                "nr_rows", nr_rows);
   mi_field_int (uiout, -1/*fldno*/, -1/*width*/, -1/*alin*/,
@@ -134,8 +126,6 @@ mi_table_body (struct ui_out *uiout)
     return;
   /* close the table header line if there were any headers */
   mi_close (uiout, ui_out_type_list);
-  if (data->mi_version == 0)
-    return;
   mi_open (uiout, "body", ui_out_type_list);
 }
 
@@ -146,11 +136,6 @@ mi_table_end (struct ui_out *uiout)
 {
   struct ui_out_data *data = ui_out_data (uiout);
   data->suppress_output = 0;
-  if (data->mi_version == 0)
-    {
-      mi_close (uiout, ui_out_type_tuple);
-      return;
-    }
   mi_close (uiout, ui_out_type_list); /* body */
   mi_close (uiout, ui_out_type_tuple);
 }
@@ -165,11 +150,6 @@ mi_table_header (struct ui_out *uiout, int width, enum ui_align alignment,
   struct ui_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
-  if (data->mi_version == 0)
-    {
-      mi_field_string (uiout, 0, width, alignment, 0, colhdr);
-      return;
-    }
   mi_open (uiout, NULL, ui_out_type_tuple);
   mi_field_int (uiout, 0, 0, 0, "width", width);
   mi_field_int (uiout, 0, 0, 0, "alignment", alignment);
@@ -361,10 +341,7 @@ mi_open (struct ui_out *uiout,
       fputc_unfiltered ('{', data->buffer);
       break;
     case ui_out_type_list:
-      if (data->mi_version == 0)
-       fputc_unfiltered ('{', data->buffer);
-      else
-       fputc_unfiltered ('[', data->buffer);
+      fputc_unfiltered ('[', data->buffer);
       break;
     default:
       internal_error (__FILE__, __LINE__, "bad switch");
@@ -382,10 +359,7 @@ mi_close (struct ui_out *uiout,
       fputc_unfiltered ('}', data->buffer);
       break;
     case ui_out_type_list:
-      if (data->mi_version == 0)
-       fputc_unfiltered ('}', data->buffer);
-      else
-       fputc_unfiltered (']', data->buffer);
+      fputc_unfiltered (']', data->buffer);
       break;
     default:
       internal_error (__FILE__, __LINE__, "bad switch");
index b2b729c405cd93181d40ebddf4c195e6ea449ce0..57db691328b44e7dced9a737fd74f6944a31316b 100644 (file)
        out what version of MI is running. Use this to determine the proper
        output of setting a breakpoint.
 
+2002-10-22  Daniel Jacobowitz  <drow@mvista.com>
+
+       * gdb.threads/schedlock.c (args): Make unsigned.
+
+2002-10-21  Daniel Jacobowitz  <drow@mvista.com>
+
+       * gdb.asm/asm-source.exp: Add "mips*-*" pattern.  Update line
+       numbers.  Allow "foo2|selected stack frame".
+       * gdb.asm/asmsrc1.s: Use gdbasm_declare and gdbasm_end.
+       * gdb.asm/asmsrc2.s: Likewise.
+       * gdb.asm/common.inc: Define gdbasm_declare and gdbasm_end.  Update
+       comments.
+       * gdb.asm/mips.inc: New file.
+
+2002-10-18  Adam Fedor  <fedor@gnu.org>
+
+       * gdb.base/default.exp: Update expected output to include 'ObjC'.
+       * gdb.base/help.exp: Likewise.
+
+2002-10-17  Kevin Buettner  <kevinb@redhat.com>
+
+       * gdb.base/constvars.c (struct crass, struct crisp): New structs.
+       * gdb.base/constvars.exp (ptype crass, ptype crisp): New tests.
+
+2002-10-02  Jim Blandy  <jimb@redhat.com>
+
+       * gdb.c++/casts.cc, gdb.c++/casts.exp: New test.
+
+2002-10-01  Andrew Cagney  <ac131313@redhat.com>
+
+       * mi1-basics.exp: Copy of mi1-basics.exp MIFLAGS set "-i=mi1".
+       * mi1-break.exp, mi1-console.exp, mi1-disassemble.exp: Ditto.
+       * mi1-eval.exp, mi1-hack-cli.exp, mi1-pthreads.exp: Ditto.
+       * mi1-read-memory.exp, mi1-regs.exp, mi1-return.exp: Ditto.
+       * mi1-simplerun.exp, mi1-stack.exp, mi1-stepi.exp: Ditto.
+       * mi1-until.exp, mi1-var-block.exp, mi1-var-child.exp: Ditto.
+       * mi1-var-cmd.exp, mi1-var-display.exp, mi1-watch.exp: Ditto.
+
 2002-09-29  Andrew Cagney  <ac131313@redhat.com>
 
        * mi0-basics.exp, mi0-break.exp, mi0-console.exp: Delete.
index 49df958003541055fb20a238c4532924a301d59a..bb46f56cfe349802b86ff45aa29511835503ae88 100644 (file)
        mi-var-display.exp mi-watch.exp: Update to conform to MI2
        notify-async-output (events).
 
+2002-10-23  Jeff Johnston  <jjohnstn@redhat.com>
+
+       * mi-var-cmd.exp: Add tests to verify that a -var-assign that changes
+       a value shows up in the changelist of a -var-update.  Part of fix
+       for gdb/702.
+       * mi1-var-cmd.exp: Ditto.
+
+2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>
+
+       * mi-return.exp: Change expected frame output to remove extraneous
+       space in level field when frame level is single digit.  Part of
+       fix for PR gdb/192.
+       * mi-stack.exp: Ditto.
+       * mi1-return.exp: Ditto.
+       * mi1-stack.exp: Ditto.
+
+2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>
+
+       * mi-var-block.exp: Change expected output from -var-update
+       command to expect list format for "changelist".  Fix for
+       PR gdb/672.
+       * mi-var-cmd.exp: Ditto.
+       * mi-var-child: Ditto.
+
 2002-09-25  Keith Seitz  <keiths@redhat.com>
 
        * mi-pthreads.exp (get_mi_thread_list): Check if expect_out
index 9b029a5b6952a2cd665eb6d3be1dcd06e220f13f..1cc7c2651cc32d9f98784333358e809e1d51e68a 100644 (file)
@@ -80,7 +80,7 @@ proc test_return_simple {} {
 
     send_gdb "111-exec-return\n"
     gdb_expect {
-       -re "111\\^done,frame=\{level=\"0 \",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"18\"\}\r\n$mi_gdb_prompt$" {pass "return from callee4 now"}
+       -re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"18\"\}\r\n$mi_gdb_prompt$" {pass "return from callee4 now"}
        -re ".*\r\n$mi_gdb_prompt$" { fail "return from callee4 now" }
        timeout { fail "return from callee4 now (timeout)"
        }
index 07f8e9ba348a4cc07479ae649e69ec4c96a437d0..79da6ee0e8d92201f98ca036c075fa6157f4ffea 100644 (file)
@@ -73,13 +73,13 @@ proc test_stack_frame_listing {} {
     # -stack-list-frames 1 3
 
     mi_gdb_test "231-stack-list-frames" \
-           "231\\^done,stack=\\\[frame=\{level=\"0 \",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"8\"\},frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2 \",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3 \",addr=\"$hex\",func=\"callee1\",.*\},frame=\{level=\"4 \",addr=\"$hex\",func=\"main\",.*\}\\\]" \
+           "231\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"8\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$hex\",func=\"callee1\",.*\},frame=\{level=\"4\",addr=\"$hex\",func=\"main\",.*\}\\\]" \
                 "stack frame listing"
     mi_gdb_test "232-stack-list-frames 1 1" \
-           "232\\^done,stack=\\\[frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\}\\\]" \
+           "232\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\}\\\]" \
                 "stack frame listing 1 1"
     mi_gdb_test "233-stack-list-frames 1 3" \
-           "233\\^done,stack=\\\[frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2 \",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3 \",addr=\"$hex\",func=\"callee1\",.*\}\\\]" \
+           "233\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$hex\",func=\"callee1\",.*\}\\\]" \
                 "stack frame listing 1 3"
 
     mi_gdb_test "234-stack-list-frames 1" \
index 89a4998b7407188c6fd0f381235d4bf93edb84d0..5f6a413963badefd3f8e5f791969b796450af754 100644 (file)
@@ -104,7 +104,7 @@ gdb_expect {
 # Test: c_variable-3.4
 # Desc: check foo, cb changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"foo\",in_scope=\"true\",type_changed=\"false\",name=\"cb\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"foo\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"cb\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: cb foo changed"
 
 # step to "foo = 321;"
@@ -155,7 +155,7 @@ mi_gdb_test "-var-evaluate-expression inner_foo" \
 clear_xfail *-*-*
 
 mi_gdb_test "-var-update foo" \
-       "\\^done,changelist=\{\}" \
+       "\\^done,changelist=\\\[\\\]" \
        "update foo: did not change"
 
 mi_gdb_test "-var-delete inner_foo" \
@@ -193,7 +193,7 @@ gdb_expect {
 # Desc: check that only cb is in scope (known gdb problem)
 setup_xfail *-*-*
 mi_gdb_test "-var-update foo2" \
-       "\\^done,changelist=\{FIXME\}" \
+       "\\^done,changelist=\\\[FIXME\\\]" \
        "update foo2 should be out of scope: KNOWN PROBLEM"
 clear_xfail *-*-*
 setup_xfail *-*-*
@@ -202,7 +202,7 @@ mi_gdb_test "-var-update foo" \
        "update foo should be out of scope: KNOWN PROBLEM"
 clear_xfail *-*-*
 mi_gdb_test "-var-update cb" \
-       "\\^done,changelist=\{\}" \
+       "\\^done,changelist=\\\[\\\]" \
        "update cb"
 
 # Test: c_variable-3.10
index 18b5a29d86fdf41bdcff34903cee8dd488194342..af058d5170d061d7a12140bc2b316e1f300ce8a2 100644 (file)
@@ -750,7 +750,7 @@ mi_gdb_test "-var-delete weird" \
 # Test: c_variable-5.1
 # Desc: check that nothing changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{\}" \
+       "\\^done,changelist=\\\[\\\]" \
        "update all vars. None changed"
 
 # Step over "struct_declarations.integer = 123;"
@@ -760,7 +760,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.2
 # Desc: check that integer changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"struct_declarations.integer\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"struct_declarations.integer\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars struct_declarations.integer"
 
 # Step over:
@@ -773,7 +773,7 @@ mi_execute_to "exec-step 3" "end-stepping-range" do_children_tests {} {.*var-cmd
 # Test: c_variable-5.3
 # Desc: check that char_ptr changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"struct_declarations.char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"struct_declarations.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars struct_declarations.char_ptr"
 
 # Step over "struct_declarations.int_ptr_ptr = &foo;"
@@ -783,7 +783,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.4
 # Desc: check that int_ptr_ptr and children changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr.\\*\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr.\\*\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars int_ptr_ptr and children changed"
 
 # Step over "weird->long_array[0] = 1234;"
@@ -793,7 +793,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.5
 # Desc: check that long_array[0] changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"struct_declarations.long_array.0\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.0\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars struct_declarations.long_array.0 changed"
 
 # Step over "struct_declarations.long_array[1] = 2345;"
@@ -803,7 +803,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.6
 # Desc: check that long_array[1] changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"struct_declarations.long_array.1\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.1\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars struct_declarations.long_array.1 changed"
 
 # Step over "weird->long_array[2] = 3456;"
@@ -813,7 +813,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.7
 # Desc: check that long_array[2] changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"struct_declarations.long_array.2\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.2\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars struct_declarations.long_array.2 changed"
 
 # Step over:
@@ -830,7 +830,7 @@ mi_execute_to "exec-step 7" "end-stepping-range" do_children_tests {} {.*var-cmd
 # Test: c_variable-5.8
 # Desc: check that long_array[3-9] changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"struct_declarations.long_array.3\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.long_array.4\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.long_array.5\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.long_array.6\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.long_array.7\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.long_array.8\",in_scope=\"true\",type_changed=\"false\",name=\"struct_declarations.long_array.9\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.3\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.4\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.5\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.6\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.7\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.8\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.9\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars struct_declarations.long_array.3-9 changed"
 
 
@@ -841,7 +841,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.9
 # Desc: check that func_ptr changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"struct_declarations.func_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"struct_declarations.func_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars struct_declarations.func_ptr changed"
 
 # Delete all variables
@@ -1133,7 +1133,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.47
 # Desc: check that psnp->char_ptr (and [0].char_ptr) changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"psnp->ptrs.0.char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->char_ptr.\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars psnp->char_ptr (and 0.char_ptr) changed"
 
 #  Step over "snp1.char_ptr = &c3;"
@@ -1143,7 +1143,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.48
 # Desc: check that psnp->next->char_ptr (and [1].char_ptr) changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"psnp->ptrs.0.next.char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars psnp->next->char_ptr (and 1.char_ptr) changed"
 
 
@@ -1154,7 +1154,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.49
 # Desc: check that psnp->next->next->char_ptr (and [2].char_ptr) changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"psnp->ptrs.0.next.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed"
 
 
@@ -1165,7 +1165,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.50
 # Desc: check that psnp->long_ptr (and [0].long_ptr) changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"psnp->ptrs.0.long_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->long_ptr.\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\",name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr.\\*\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr.\\*\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars psnp->long_ptr (and 0.long_ptr) changed"
 
 
@@ -1178,7 +1178,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Why does this have a FIXME?
 setup_xfail *-*-*
 mi_gdb_test "-var-update *" \
-       "FIXME\\^done,changelist=\{name=\"psnp->ptrs.0.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "FIXME\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars psnp->next->long_ptr (and 1.long_ptr) changed"
 clear_xfail *-*-*
 
@@ -1193,7 +1193,7 @@ mi_step_to do_children_tests {} {.*var-cmd.c} $line "step $line"
 # Test: c_variable-5.52
 # Desc: check that psnp->next->next->long_ptr (and [2].long_ptr) changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"psnp->ptrs.0.next.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed"
 
 
index 8352734b14d8edbfdf3a9bc9497b88cb94dfec5c..2c6041d3cbdf2423e4639f1f540de0235b6b51bb 100644 (file)
@@ -176,7 +176,7 @@ mi_gdb_test "-var-create int * int" \
 # Test: c_variable-2.1
 # Desc: check whether values changed at do_block_tests
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{\}" \
+       "\\^done,changelist=\\\[\\\]" \
        "update all vars"
 
 # Step over "linteger = 1234;"
@@ -185,7 +185,7 @@ mi_step_to "do_locals_tests" "" "var-cmd.c" "107" "step at do_locals_test"
 # Test: c_variable-2.2
 # Desc: check whether only linteger changed values
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: linteger changed"
 
 # Step over "lpinteger = &linteger;"
@@ -194,7 +194,7 @@ mi_step_to "do_locals_tests" "" "var-cmd.c" 108 "step at do_locals_tests (2)"
 # Test: c_variable-2.3
 # Desc: check whether only lpinteger changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"lpinteger\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"lpinteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: lpinteger changed"
 
 # Step over "lcharacter = 'a';"
@@ -203,7 +203,7 @@ mi_step_to "do_locals_tests" "" "var-cmd.c" "109" "step at do_locals_tests (3)"
 # Test: c_variable-2.4
 # Desc: check whether only lcharacter changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"lcharacter\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"lcharacter\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: lcharacter changed"
 
 # Step over "lpcharacter = &lcharacter;"
@@ -212,7 +212,7 @@ mi_step_to "do_locals_tests" "" "var-cmd.c" "110" "step at do_locals_tests (4)"
 # Test: c_variable-2.5
 # Desc: check whether only lpcharacter changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"lpcharacter\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"lpcharacter\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: lpcharacter changed"
 
 
@@ -234,7 +234,7 @@ mi_execute_to "exec-step 9" "end-stepping-range" "do_locals_tests" "" \
 # Desc: check whether llong, lplong, lfloat, lpfloat, ldouble, lpdouble, lsimple.integer,
 #       lsimple.unsigned_character lsimple.integer lsimple.character changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"lsimple.integer\",in_scope=\"true\",type_changed=\"false\",name=\"lsimple->integer\",in_scope=\"true\",type_changed=\"false\",name=\"lsimple.character\",in_scope=\"true\",type_changed=\"false\",name=\"lpdouble\",in_scope=\"true\",type_changed=\"false\",name=\"ldouble\",in_scope=\"true\",type_changed=\"false\",name=\"lpfloat\",in_scope=\"true\",type_changed=\"false\",name=\"lfloat\",in_scope=\"true\",type_changed=\"false\",name=\"lplong\",in_scope=\"true\",type_changed=\"false\",name=\"llong\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"lsimple.integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple->integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple.character\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lpdouble\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"ldouble\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lpfloat\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lfloat\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lplong\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"llong\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: many changed"
 
 # Step over:
@@ -249,7 +249,7 @@ mi_execute_to "exec-step 4" "end-stepping-range" "do_locals_tests" "" \
 # Test: c_variable-2.7
 # Desc: check whether (lsimple.signed_character, lsimple.char_ptr) lpsimple, func changed
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"func\",in_scope=\"true\",type_changed=\"false\",name=\"lpsimple\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"func\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lpsimple\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: func and lpsimple changed"
 
 # Step over
@@ -271,7 +271,7 @@ mi_execute_to "exec-step 8" "end-stepping-range" "do_locals_tests" "" \
 # Note: this test also checks that lpsimple->integer and lsimple.integer have
 #       changed (they are the same)
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"lsimple.integer\",in_scope=\"true\",type_changed=\"false\",name=\"lsimple->integer\",in_scope=\"true\",type_changed=\"false\",name=\"lsimple.character\",in_scope=\"true\",type_changed=\"false\",name=\"ldouble\",in_scope=\"true\",type_changed=\"false\",name=\"lfloat\",in_scope=\"true\",type_changed=\"false\",name=\"llong\",in_scope=\"true\",type_changed=\"false\",name=\"lcharacter\",in_scope=\"true\",type_changed=\"false\",name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"lsimple.integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple->integer\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lsimple.character\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"ldouble\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lfloat\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"llong\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"lcharacter\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: func and lpsimple changed"
 
 
@@ -288,6 +288,18 @@ mi_gdb_test "-var-assign linteger 3333" \
        "\\^done,value=\"3333\"" \
        "assign to linteger"
 
+mi_gdb_test "-var-update *" \
+       "\\^done,changelist=\\\[\{name=\"linteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
+       "update all vars: linteger changed after assign"
+
+mi_gdb_test "-var-assign linteger 3333" \
+       "\\^done,value=\"3333\"" \
+       "assign to linteger again, same value"
+
+mi_gdb_test "-var-update *" \
+       "\\^done,changelist=\\\[\\\]" \
+       "update all vars: linteger not changed after same assign"
+
 mi_gdb_test "-var-evaluate-expression linteger" \
        "\\^done,value=\"3333\"" \
        "eval linteger"
@@ -296,6 +308,14 @@ mi_gdb_test "-var-assign lpinteger \"&linteger + 3\"" \
        "\\^done,value=\"$hex\"" \
        "assign to lpinteger"
 
+mi_gdb_test "-var-update *" \
+       "\\^done,changelist=\\\[\{name=\"lpinteger\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
+       "update all vars: lpinteger changed after assign"
+
+mi_gdb_test "-var-update *" \
+       "\\^done,changelist=\\\[\\\]" \
+       "update all vars: no changes on second update"
+
 mi_gdb_test "-var-evaluate-expression lpinteger" \
        "\\^done,value=\"$hex\"" \
        "eval lpinteger"
@@ -421,7 +441,7 @@ mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\
 # Test: c_variable-2.13
 # Desc: change subroutine1 local i
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"i\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"i\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: i changed"
 
 mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\}" \
@@ -430,7 +450,7 @@ mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\
 # Test: c_variable-2.14
 # Desc: change do_locals_tests local llong
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"llong\",in_scope=\"true\",type_changed=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"llong\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
        "update all vars: llong changed"
 
 mi_next_to "do_locals_tests" ""        "var-cmd.c" "136" "next out of subroutine1"
@@ -438,7 +458,7 @@ mi_next_to "do_locals_tests" ""     "var-cmd.c" "136" "next out of subroutine1"
 # Test: c_variable-2.15
 # Desc: check for out of scope subroutine1 locals
 mi_gdb_test "-var-update *" \
-       "\\^done,changelist=\{name=\"l\",in_scope=\"false\",name=\"i\",in_scope=\"false\"\}" \
+       "\\^done,changelist=\\\[\{name=\"l\",in_scope=\"false\"\},\{name=\"i\",in_scope=\"false\"\}\\\]" \
        "update all vars: all now out of scope"
 
 # Done with locals/globals tests. Erase all variables
@@ -538,15 +558,15 @@ mi_gdb_test "-break-insert incr_a" \
 mi_continue_to {.*} incr_a {.*} {.*var-cmd.c} {.*} {stop in incr_a}
 
 mi_gdb_test "-var-update selected_a" \
-  {\^done,changelist=\{name="selected_a",in_scope="true",new_type="char",new_num_children="0"\}} \
-  "update selected_a in incr_a"
+       "\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",new_type=\"char\",new_num_children=\"0\"\}\\\]" \
+       "update selected_a in incr_a"
 
 mi_next "step a line in incr_a"
 mi_next "return from incr_a to do_special_tests"
 
 mi_gdb_test "-var-update selected_a" \
-  {\^done,changelist=\{name="selected_a",in_scope="true",new_type="int",new_num_children="0"\}} \
-  "update selected_a in do_special_tests"
+       "\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",new_type=\"int\",new_num_children=\"0\"\}\\\]" \
+       "update selected_a in do_special_tests"
 
 mi_gdb_exit
 return 0