[MI][patch v2] -break-list to specify "thread-group"

Marc Khouzam marc.khouzam@ericsson.com
Mon Oct 1 16:10:00 GMT 2012


> Marc> Here's a second stab at it using the "i" prefix for MI.
>
> I think the general idea is great.
>
> Marc> The below patch adds the new field "thread-group".
>
> My recollection, reinforced by browsing the MI docs just now, is that
> generally the field name "thread-group" is used to specify a single
> group.  However, with this patch it is actually list-valued.  So, I
> think a different name would be somewhat better, maybe
> "thread-groups".

I've made the field "thread-groups" for now, since the patch still
returns a list of inferiors.

> Marc> or (if the bp applies to multiple inferiors, which I didn't quite
> Marc> out how to officially trigger, so I hacked the code to make sure
> Marc> the output was done properly in that case):
>
> Hm.  I think a given location can only apply to a single inferior.
> I am not totally sure.
>
> So maybe making it "thread-group" and giving it a single value is the
> right thing to do.

I'd prefer this.  And it would make things simpler for the frontend code.

> Yao> I don't know ether.  I can't think of a case that
> Yao> multiple inferiors share a single pspace.
>
> Thinking about it more -- maybe an inferior which just vforked?

Since we're still not sure if a list is needed or not, I kept
the patch returning a list, to be safe.

> Marc> I was going to update the doc, but when I looked at it
> Marc> I realized it was completely out-of-date with respect to
> Marc> -break-list _and_ that the MI output itself does not to have
> Marc> the right content in the  'hdr' part.  I wasn't sure if I can
> Marc> change such MI output or not due to backwards compatibility.
>
> The very best thing would be to fix the -break-list documentation.
>
> But, I understand if you don't want to do that.  But maybe you could
> file a bug report in this case.

Thanks for understanding.  I've opened
Bug 14651 - [doc] -break-list command not documented properly
http://sourceware.org/bugzilla/show_bug.cgi?id=14651

> However, I think you should still update the docs for your change.

The below patch now does this.

> I think changing the 'hdr' part of the MI output is ok, if it
> is useful to you somehow.  I think it has to be done with care to
> avoid  messing up the CLI output.

I haven't ventured down that path :)

> Marc> I had forgotten to update the tests to take into
> consideration the
> Marc> new parameter.  Those tests use -break-list in multiple places.
> Marc> The new patch below does update the testsuite.
> Marc> Only one new regression happens:
>
> Marc> FAIL: gdb.mi/mi-nsmoribund.exp: thread specific
> breakpoint at thread_function
>
> Marc> This was a latent problem where the unexpected 'thread'
> field was
> Marc> being sucked into a '.*' pattern, which hid the error.  Because
> Marc> the problem is in lib/mi-support.exp it is not as simple to fix.
> Marc> Since the problem is not caused by my patch, I suggest
> not to fix
> Marc> it right away.
>
> We try not to let any regressions in.
> So I think it does need to be fixed before this patch can go in.

I've updated that test and fixed the regression.

> Marc> +  /* Go through list in reverse order to print inferiors ids in
> Marc> +     increasing order. */
> Marc> +  for (index = len - 1; index >= 0; index--)
>
> It isn't clear to me that it is reliable to assume that the inferior
> list is sorted.
>
> However, this shouldn't really matter for clients, either.

I didn't like seeing "inf 4, 3, 2 ,1", but I agree that the order
is not guaranteed anyway.  Besides, we still don't know how to actually
see a list of inferior for a single breakpoint :)  I therefore
iterate over the VEC in whatever order it is.

> Marc> +       {
> Marc> +         char mi_group[10];
> Marc> +         sprintf (mi_group, "i%d", inf_num[index]);
>
> Blank line between declarations and code.

Done.

> Marc> +      int inf_num[number_of_inferiors ()];
>
> I think you'd have to use alloca here -- but it is better to use a VEC
> anyway.

Nice.  It is the first time I use the VEC macros.  Done.

No regressions with this patch.

Thanks!

Marc


2012-10-01  Marc Khouzam  <marc.khouzam@ericsson.com>

        * breakpoint.c (print_one_breakpoint_location): Add MI
        field 'thread-groups' when printing a breakpoint.
        (output_thread_groups): New function.

2012-10-01  Marc Khouzam  <marc.khouzam@ericsson.com>

        * gdb.mi/mi-break.exp: Expect new 'thread-groups' field.
        * gdb.mi/mi-nsmoribund.exp: Expect new 'thread-groups' field.
        Also handle 'thread' field.
        * gdb.mi/mi-simplerun.exp: Expect new 'thread-groups' field.
        * gdb.mi/mi-watch.exp: Ditto.
        * gdb.mi/mi2-break.exp: Ditto.
        * gdb.mi/mi2-simplerun.exp: Ditto.
        * gdb.mi/mi2-watch.exp: Ditto.
        * lib/mi-support.exp: Ditto.

2012-10-01  Marc Khouzam  <marc.khouzam@ericsson.com>

        * gdb.texinfo (GDB/MI Breakpoint Commands): Document new
        `thread-group' field when printing a breakpoint in MI.

### Eclipse Workspace Patch 1.0
#P src
Index: gdb/breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.707
diff -u -r1.707 breakpoint.c
--- gdb/breakpoint.c    26 Sep 2012 16:35:59 -0000      1.707
+++ gdb/breakpoint.c    1 Oct 2012 16:04:16 -0000
@@ -5778,6 +5778,51 @@
   return bptypes[(int) type].description;
 }

+DEF_VEC_I(int);
+
+/* For MI, output a field named 'thread-groups' with a list as the value.
+   For CLI, prefix the list with the string 'inf'. */
+
+static void
+output_thread_groups (struct ui_out *uiout,
+                     const char *field_name,
+                     VEC(int) *inf_num,
+                     int mi_only)
+{
+  struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
+                                                               field_name);
+  int is_mi = ui_out_is_mi_like_p (uiout);
+  int inf;
+  int i;
+
+  /* For backward compatibility, don't display inferiors in CLI unless
+     there are several.  Always display them for MI. */
+  if (!is_mi && mi_only)
+    return;
+
+  for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
+    {
+      if (is_mi)
+       {
+         char mi_group[10];
+
+         sprintf (mi_group, "i%d", inf);
+         ui_out_field_string (uiout, NULL, mi_group);
+       }
+      else
+       {
+         if (i == 0)
+           ui_out_text (uiout, " inf ");
+         else
+           ui_out_text (uiout, ", ");
+
+         ui_out_text (uiout, plongest (inf));
+       }
+    }
+
+  do_cleanups (back_to);
+}
+
 /* Print B to gdb_stdout.  */

 static void
@@ -5929,35 +5974,30 @@
       }


-  /* For backward compatibility, don't display inferiors unless there
-     are several.  */
-  if (loc != NULL
-      && !header_of_multiple
-      && (allflag
-         || (!gdbarch_has_global_breakpoints (target_gdbarch)
-             && (number_of_program_spaces () > 1
-                 || number_of_inferiors () > 1)
-             /* LOC is for existing B, it cannot be in
-                moribund_locations and thus having NULL OWNER.  */
-             && loc->owner->type != bp_catchpoint)))
+  if (loc != NULL && !header_of_multiple)
     {
       struct inferior *inf;
-      int first = 1;
+      VEC(int) *inf_num = NULL;
+      int mi_only = 1;

-      for (inf = inferior_list; inf != NULL; inf = inf->next)
+      ALL_INFERIORS (inf)
        {
          if (inf->pspace == loc->pspace)
-           {
-             if (first)
-               {
-                 first = 0;
-                 ui_out_text (uiout, " inf ");
-               }
-             else
-               ui_out_text (uiout, ", ");
-             ui_out_text (uiout, plongest (inf->num));
-           }
+           VEC_safe_push (int, inf_num, inf->num);
        }
+
+      /* For backward compatibility, don't display inferiors in CLI unless
+         there are several.  Always display for MI. */
+      if (allflag
+         || (!gdbarch_has_global_breakpoints (target_gdbarch)
+             && (number_of_program_spaces () > 1
+                 || number_of_inferiors () > 1)
+             /* LOC is for existing B, it cannot be in
+                moribund_locations and thus having NULL OWNER.  */
+             && loc->owner->type != bp_catchpoint))
+        mi_only = 0;
+      output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
+      VEC_free (int, inf_num);
     }

   if (!part_of_multiple)
@@ -7902,8 +7942,6 @@
   catch_load_or_unload (arg, from_tty, 0, command);
 }

-DEF_VEC_I(int);
-
 /* An instance of this type is used to represent a syscall catchpoint.
    It includes a "struct breakpoint" as a kind of base class; users
    downcast to "struct breakpoint *" when needed.  A breakpoint is
Index: gdb/doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.1012
diff -u -r1.1012 gdb.texinfo
--- gdb/doc/gdb.texinfo 21 Sep 2012 01:46:42 -0000      1.1012
+++ gdb/doc/gdb.texinfo 1 Oct 2012 16:04:18 -0000
@@ -27763,7 +27763,8 @@
 -> -break-insert main
 <- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
     enabled="y",addr="0x08048564",func="main",file="myprog.c",
-    fullname="/home/nickrob/myprog.c",line="68",times="0"@}
+    fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"],
+    times="0"@}
 <- (gdb)
 @end smallexample

@@ -27887,7 +27888,8 @@
 -break-insert main
 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
 enabled="y",addr="0x000100d0",func="main",file="hello.c",
-fullname="/home/foo/hello.c",line="5",times="0"@}
+fullname="/home/foo/hello.c",line="5",thread-groups=["i1"]
+,times="0"@}
 (gdb)
 -break-after 1 3
 ~
@@ -27903,7 +27905,7 @@
 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
-line="5",times="0",ignore="3"@}]@}
+line="5",thread-groups=["i1"],times="0",ignore="3"@}]@}
 (gdb)
 @end smallexample

@@ -27939,7 +27941,8 @@
 -break-insert main
 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
 enabled="y",addr="0x000100d0",func="main",file="hello.c",
-fullname="/home/foo/hello.c",line="5",times="0"@}
+fullname="/home/foo/hello.c",line="5",thread-groups=["i1"],
+times="0"@}
 (gdb)
 -break-commands 1 "print v" "continue"
 ^done
@@ -27981,7 +27984,7 @@
 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
-line="5",cond="1",times="0",ignore="3"@}]@}
+line="5",cond="1",thread-groups=["i1"],times="0",ignore="3"@}]@}
 (gdb)
 @end smallexample

@@ -28053,7 +28056,7 @@
 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
-line="5",times="0"@}]@}
+line="5",thread-groups=["i1"],times="0"@}]@}
 (gdb)
 @end smallexample

@@ -28089,7 +28092,7 @@
 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
-line="5",times="0"@}]@}
+line="5",thread-groups=["i1"],times="0"@}]@}
 (gdb)
 @end smallexample

@@ -28170,14 +28173,15 @@
 ^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
 enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
 fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
-times="@var{times}"@}
+thread-groups=["@var{group1}","@var{group2}"],times="@var{times}"@}
 @end smallexample

 @noindent
 where @var{number} is the @value{GDBN} number for this breakpoint,
 @var{funcname} is the name of the function where the breakpoint was
 inserted, @var{filename} is the name of the source file which contains
-this function, @var{lineno} is the source line number within that file
+this function, @var{lineno} is the source line number within that file,
+@var{thread-groups} is the list of inferiors to which this breakpoint applies,
 and @var{times} the number of times that the breakpoint has been hit
 (always 0 for -break-insert but may be greater for -break-info or -break-list
 which use the same output).
@@ -28196,11 +28200,13 @@
 (gdb)
 -break-insert main
 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
-fullname="/home/foo/recursive2.c,line="4",times="0"@}
+fullname="/home/foo/recursive2.c,line="4",thread-groups=["i1"],
+times="0"@}
 (gdb)
 -break-insert -t foo
 ^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
-fullname="/home/foo/recursive2.c,line="11",times="0"@}
+fullname="/home/foo/recursive2.c,line="11",thread-groups=["i1"],
+times="0"@}
 (gdb)
 -break-list
 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
@@ -28212,15 +28218,18 @@
 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
 addr="0x0001072c", func="main",file="recursive2.c",
-fullname="/home/foo/recursive2.c,"line="4",times="0"@},
+fullname="/home/foo/recursive2.c,"line="4",thread-groups=["i1"],
+times="0"@},
 bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
 addr="0x00010774",func="foo",file="recursive2.c",
-fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
+fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"],
+times="0"@}]@}
 (gdb)
 @c -break-insert -r foo.*
 @c ~int foo(int, int);
 @c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
-@c "fullname="/home/foo/recursive2.c",line="11",times="0"@}
+@c "fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"],
+@c times="0"@}
 @c (gdb)
 @end smallexample

@@ -28250,6 +28259,8 @@
 @item What
 logical location of the breakpoint, expressed by function name, file
 name, line number
+@item Thread-groups
+list of inferiors to which this breakpoint applies
 @item Times
 number of times the breakpoint has been hit
 @end table
@@ -28277,7 +28288,7 @@
 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
 bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
 addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
-line="13",times="0"@}]@}
+line="13",thread-groups=["i1"],times="0"@}]@}
 (gdb)
 @end smallexample

Index: gdb/testsuite/gdb.mi/mi-break.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-break.exp,v
retrieving revision 1.36
diff -u -r1.36 mi-break.exp
--- gdb/testsuite/gdb.mi/mi-break.exp   10 Jul 2012 15:32:51 -0000      1.36
+++ gdb/testsuite/gdb.mi/mi-break.exp   1 Oct 2012 16:04:18 -0000
@@ -93,7 +93,7 @@
              "insert temp breakpoint at \"<fullfilename>\":\$line_callee4_head"

     mi_gdb_test "666-break-list" \
-           "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\",original-location=\".*\"\}.*\\\]\}" \
+           "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\".*\"\}.*\\\]\}" \
                 "list of breakpoints"

     mi_gdb_test "777-break-delete" \
@@ -142,7 +142,7 @@

     setup_kfail "*-*-*" mi/14270
     mi_gdb_test "166-break-list" \
-           "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
+           "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\"\},.*\}\\\]\}" \
                 "list of breakpoints"

     mi_gdb_test "177-break-delete" \
@@ -190,7 +190,7 @@
     global line_callee2_body

     mi_gdb_test "-break-insert -d basics.c:callee2" \
-        "\\^done,bkpt=\{number=\"6\",type=\"breakpoint\",disp=\"keep\",enabled=\"n\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",fullname=\".*\",line=\"$line_callee2_body\",times=\"0\",original-location=\".*\"\}" \
+        "\\^done,bkpt=\{number=\"6\",type=\"breakpoint\",disp=\"keep\",enabled=\"n\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",fullname=\".*\",line=\"$line_callee2_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\".*\"\}" \
         "test disabled creation"

     mi_gdb_test "-break-delete" \
@@ -211,7 +211,7 @@
         "breakpoint commands: set commands"

     mi_gdb_test "-break-info 7" \
-       "\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"7\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\",script=\{\"print 10\",\"continue\"\},original-location=\".*\"\}.*\\\]\}" \
+       "\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"7\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\",script=\{\"print 10\",\"continue\"\},original-location=\".*\"\}.*\\\]\}" \
         "breakpoint commands: check that commands are set"

     mi_gdb_test "-break-commands 7" \
Index: gdb/testsuite/gdb.mi/mi-nsmoribund.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-nsmoribund.exp,v
retrieving revision 1.17
diff -u -r1.17 mi-nsmoribund.exp
--- gdb/testsuite/gdb.mi/mi-nsmoribund.exp      10 Jul 2012 15:32:51 -0000      1.17
+++ gdb/testsuite/gdb.mi/mi-nsmoribund.exp      1 Oct 2012 16:04:18 -0000
@@ -79,8 +79,11 @@
 mi_delete_breakpoints

 # Recreate the same breakpoint, but this time, specific to thread 5.
-mi_create_breakpoint "-p 5 $srcfile:$bkpt_line" 3 keep thread_function .* .* .* \
-    "thread specific breakpoint at thread_function"
+mi_gdb_test "234-break-insert -p 5 $srcfile:$bkpt_line" \
+    "234\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\".*\",\
+    func=\"thread_function\",file=\".*\",fullname=\".*\",line=\".*\",thread-groups=\\\[\".*\"\\\],\
+    thread=\"5\",thread=\"5\",times=\"0\",original-location=\".*\"\}" \
+    "thread specific breakpoint at thread_function"

 # Resume all threads.  Only thread 5 should report a stop.

Index: gdb/testsuite/gdb.mi/mi-simplerun.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-simplerun.exp,v
retrieving revision 1.29
diff -u -r1.29 mi-simplerun.exp
--- gdb/testsuite/gdb.mi/mi-simplerun.exp       10 Jul 2012 15:32:51 -0000      1.29
+++ gdb/testsuite/gdb.mi/mi-simplerun.exp       1 Oct 2012 16:04:18 -0000
@@ -79,7 +79,7 @@
              "insert breakpoint at \"<fullfilename>\":\$line_callee4_head"

     mi_gdb_test "204-break-list" \
-           "204\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\",original-location=\".*\"\},.*\}\\\]\}" \
+           "204\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\".*\"\},.*\}\\\]\}" \
                 "list of breakpoints"

     mi_gdb_test "205-break-disable 2 3 4" \
Index: gdb/testsuite/gdb.mi/mi-watch.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-watch.exp,v
retrieving revision 1.32
diff -u -r1.32 mi-watch.exp
--- gdb/testsuite/gdb.mi/mi-watch.exp   10 Jul 2012 15:32:52 -0000      1.32
+++ gdb/testsuite/gdb.mi/mi-watch.exp   1 Oct 2012 16:04:18 -0000
@@ -58,7 +58,7 @@
              "break-watch operation"

     mi_gdb_test "222-break-list" \
-           "222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",what=\"C\",times=\"0\",original-location=\"C\"\}\\\]\}" \
+           "222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",what=\"C\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\"C\"\}\\\]\}" \
                 "list of watchpoints"

 }
@@ -82,7 +82,7 @@
              "break-watch -a operation"

     mi_gdb_test "444-break-list" \
-           "444\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"3\",type=\"watchpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
+           "444\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"3\",type=\"watchpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\"\},.*\}\\\]\}" \
                 "list of watchpoints awatch"

     mi_gdb_test "777-break-delete 3" \
@@ -109,7 +109,7 @@
              "break-insert -r operation"

     mi_gdb_test "300-break-list" \
-           "300\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\},.*\}\\\}\}" \
+           "300\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\"\},.*\}\\\}\}" \
                 "list of breakpoints"

     mi_gdb_test "177-break-delete 4" \
Index: gdb/testsuite/gdb.mi/mi2-break.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-break.exp,v
retrieving revision 1.18
diff -u -r1.18 mi2-break.exp
--- gdb/testsuite/gdb.mi/mi2-break.exp  10 Jul 2012 15:32:52 -0000      1.18
+++ gdb/testsuite/gdb.mi/mi2-break.exp  1 Oct 2012 16:04:18 -0000
@@ -92,7 +92,7 @@
              "insert temp breakpoint at \"<fullfilename>\":\$line_callee4_head"

     mi_gdb_test "666-break-list" \
-           "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\",original-location=\".*\"\}.*\\\]\}" \
+           "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\".*\"\}.*\\\]\}" \
                 "list of breakpoints"

     mi_gdb_test "777-break-delete" \
@@ -142,7 +142,7 @@

     setup_xfail "*-*-*"
     mi_gdb_test "166-break-list" \
-           "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
+           "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\"\},.*\}\\\]\}" \
                 "list of breakpoints"

     mi_gdb_test "177-break-delete" \
Index: gdb/testsuite/gdb.mi/mi2-simplerun.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-simplerun.exp,v
retrieving revision 1.20
diff -u -r1.20 mi2-simplerun.exp
--- gdb/testsuite/gdb.mi/mi2-simplerun.exp      10 Jul 2012 15:32:52 -0000      1.20
+++ gdb/testsuite/gdb.mi/mi2-simplerun.exp      1 Oct 2012 16:04:18 -0000
@@ -79,7 +79,7 @@
              "insert breakpoint at \"<fullfilename>\":\$line_callee4_head"

     mi_gdb_test "204-break-list" \
-           "204\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\",original-location=\".*\"\},.*\}\\\]\}" \
+           "204\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\".*\"\},.*\}\\\]\}" \
                 "list of breakpoints"

     mi_gdb_test "205-break-disable 2 3 4" \
Index: gdb/testsuite/gdb.mi/mi2-watch.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-watch.exp,v
retrieving revision 1.23
diff -u -r1.23 mi2-watch.exp
--- gdb/testsuite/gdb.mi/mi2-watch.exp  10 Jul 2012 15:32:52 -0000      1.23
+++ gdb/testsuite/gdb.mi/mi2-watch.exp  1 Oct 2012 16:04:18 -0000
@@ -57,7 +57,7 @@
              "break-watch operation"

     mi_gdb_test "222-break-list" \
-           "222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",what=\"C\",times=\"0\",original-location=\"C\"\}\\\]\}" \
+           "222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",what=\"C\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\"C\"\}\\\]\}" \
                 "list of watchpoints"

 }
@@ -81,7 +81,7 @@
              "break-watch -a operation"

     mi_gdb_test "444-break-list" \
-           "444\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"3\",type=\"watchpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
+           "444\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"3\",type=\"watchpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\"\},.*\}\\\]\}" \
                 "list of watchpoints awatch"

     mi_gdb_test "777-break-delete 3" \
@@ -108,7 +108,7 @@
              "break-insert -r operation"

     mi_gdb_test "300-break-list" \
-           "300\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\},.*\}\\\}\}" \
+           "300\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",thread-groups=\\\[\"i1\"\\\],times=\"0\"\},.*\}\\\}\}" \
                 "list of breakpoints"

     mi_gdb_test "177-break-delete 4" \
Index: gdb/testsuite/lib/mi-support.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/mi-support.exp,v
retrieving revision 1.112
diff -u -r1.112 mi-support.exp
--- gdb/testsuite/lib/mi-support.exp    25 Jul 2012 20:19:56 -0000      1.112
+++ gdb/testsuite/lib/mi-support.exp    1 Oct 2012 16:04:18 -0000
@@ -923,7 +923,7 @@

   set test "mi runto $func"
   mi_gdb_test "200-break-insert -t $func" \
-    "200\\^done,bkpt=\{number=\"\[0-9\]+\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"$func\(\\\(.*\\\)\)?\",file=\".*\",line=\"\[0-9\]*\",times=\"0\",original-location=\".*\"\}" \
+    "200\\^done,bkpt=\{number=\"\[0-9\]+\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"$func\(\\\(.*\\\)\)?\",file=\".*\",line=\"\[0-9\]*\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\".*\"\}" \
     "breakpoint at $func"

   if {![regexp {number="[0-9]+"} $expect_out(buffer) str]
@@ -1205,9 +1205,9 @@

 # Creates a breakpoint and checks the reported fields are as expected
 proc mi_create_breakpoint { location number disp func file line address test } {
-    verbose -log "Expecting: 222\\^done,bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\",enabled=\"y\",addr=\"$address\",func=\"$func\",file=\"$file\",fullname=\".*\",line=\"$line\",times=\"0\",original-location=\".*\"\}"
+    verbose -log "Expecting: 222\\^done,bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\",enabled=\"y\",addr=\"$address\",func=\"$func\",file=\"$file\",fullname=\".*\",line=\"$line\",thread-groups=\\\[\".*\"\\\],times=\"0\",original-location=\".*\"\}"
     mi_gdb_test "222-break-insert $location" \
-        "222\\^done,bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\",enabled=\"y\",addr=\"$address\",func=\"$func\",file=\"$file\",fullname=\".*\",line=\"$line\",times=\"0\",original-location=\".*\"\}" \
+        "222\\^done,bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\",enabled=\"y\",addr=\"$address\",func=\"$func\",file=\"$file\",fullname=\".*\",line=\"$line\",thread-groups=\\\[\".*\"\\\],times=\"0\",original-location=\".*\"\}" \
         $test
 }

@@ -1228,7 +1228,7 @@
         set file [lindex $item 3]
         set line [lindex $item 4]
         set address [lindex $item 5]
-        set body "${body}bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\",enabled=\"y\",addr=\"$address\",func=\"$func\",file=\".*$file\",${fullname},line=\"$line\",times=\"0\",original-location=\".*\"\}"
+        set body "${body}bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\",enabled=\"y\",addr=\"$address\",func=\"$func\",file=\".*$file\",${fullname},line=\"$line\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-location=\".*\"\}"
         set first 0
     }



More information about the Gdb-patches mailing list