This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
RE: [MI][patch v2] -break-list to specify "thread-group"
- From: "Abid, Hafiz" <Hafiz_Abid at mentor dot com>
- To: Marc Khouzam <marc dot khouzam at ericsson dot com>, "'gdb-patches at sourceware dot org'" <gdb-patches at sourceware dot org>, 'Tom Tromey' <tromey at redhat dot com>
- Cc: "Qi, Yao" <Yao_Qi at mentor dot com>
- Date: Wed, 28 Nov 2012 06:06:59 +0000
- Subject: RE: [MI][patch v2] -break-list to specify "thread-group"
- References: <F7CE05678329534C957159168FA70DEC5E11404FDC@EUSAACMS0703.eamcs.ericsson.se> <F7CE05678329534C957159168FA70DEC5E11404FE0@EUSAACMS0703.eamcs.ericsson.se> <F7CE05678329534C957159168FA70DEC5E11B177EA@EUSAACMS0703.eamcs.ericsson.se> <505DB611.70706@codesourcery.com> <F7CE05678329534C957159168FA70DEC5E11404FE6@EUSAACMS0703.eamcs.ericsson.se> <87vceyrlyg.fsf@fleche.redhat.com> <F7CE05678329534C957159168FA70DEC5E11CD801D@EUSAACMS0703.eamcs.ericsson.se> <F7CE05678329534C957159168FA70DEC5E13D9C950@EUSAACMS0703.eamcs.ericsson.se> <F7CE05678329534C957159168FA70DEC5E13F96053@EUSAACMS0703.eamcs.ericsson.se> <E59706EF8DB1D147B15BECA3322E4BDC02E2E1@eusaamb103.ericsson.se>
> -----Original Message-----
> From: gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] On Behalf Of Marc Khouzam
> Sent: Tuesday, November 27, 2012 7:56 PM
> To: 'gdb-patches@sourceware.org'; 'Tom Tromey'
> Cc: Qi, Yao
> Subject: RE: [MI][patch v2] -break-list to specify "thread-group"
>
>
> > -----Original Message-----
> > From: gdb-patches-owner@sourceware.org
> > [mailto:gdb-patches-owner@sourceware.org] On Behalf Of Marc Khouzam
> > Sent: Wednesday, October 24, 2012 2:43 PM
> > To: 'Tom Tromey'; 'gdb-patches@sourceware.org'
> > Cc: 'Yao Qi'
> > Subject: RE: [MI][patch v2] -break-list to specify "thread-group"
> >
> > Polite re-ping :)
> > (http://sourceware.org/ml/gdb-patches/2012-10/msg00006.html)
> >
> > Turns out Eclipse is also missing the extra information this patch
> > is adding in the case of processing =breakpoint-create MI
> > notifications because it cannot tell what inferior the breakpoint
> > was created for.
>
> Hi,
>
> I've updated the proposed patch to current head.
> It is a little smaller since there is no more mi2-*.exp tests.
>
> As a reminder, this patch add a "thread-groups" field to the
> different breakpoint MI printouts. This information is important
> for a frontend but is currently only available through CLI.
>
> Doc was already approved here:
> http://sourceware.org/ml/gdb-patches/2012-10/msg00007.html
>
> No regressions
>
> Thanks
>
> Marc
>
> 2012-11-27 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-11-27 Marc Khouzam <marc.khouzam@ericsson.com>
>
> * gdb.texinfo (GDB/MI Breakpoint Commands): Document new
> `thread-group' field when printing a breakpoint in MI.
>
> 2012-11-27 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.
> * lib/mi-support.exp: Ditto.
>
> ### Eclipse Workspace Patch 1.0
> #P src
> Index: gdb/breakpoint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/breakpoint.c,v
> retrieving revision 1.719
> diff -u -r1.719 breakpoint.c
> --- gdb/breakpoint.c 20 Nov 2012 22:51:04 -0000 1.719
> +++ gdb/breakpoint.c 27 Nov 2012 19:06:38 -0000
> @@ -5781,6 +5781,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);
Please use xsnprintf instead.
> + 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
> @@ -5932,35 +5977,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)
> @@ -7905,8 +7945,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.1026
> diff -u -r1.1026 gdb.texinfo
> --- gdb/doc/gdb.texinfo 16 Nov 2012 19:43:39 -0000 1.1026
> +++ gdb/doc/gdb.texinfo 27 Nov 2012 19:06:39 -0000
> @@ -27969,7 +27969,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
>
> @@ -28093,7 +28094,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
> ~
> @@ -28109,7 +28111,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
>
> @@ -28145,7 +28147,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
> @@ -28187,7 +28190,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
>
> @@ -28259,7 +28262,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
>
> @@ -28295,7 +28298,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
>
> @@ -28376,14 +28379,15 @@
>
> ^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
>
> enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filen
> ame}",
>
> fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{thread
> no},]
> -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).
> @@ -28402,11 +28406,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",
> @@ -28418,15 +28424,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
>
> @@ -28456,6 +28465,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
> @@ -28483,7 +28494,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.37
> diff -u -r1.37 mi-break.exp
> --- gdb/testsuite/gdb.mi/mi-break.exp 9 Nov 2012 07:21:03 -0000
> 1.37
> +++ gdb/testsuite/gdb.mi/mi-break.exp 27 Nov 2012 19:06:39 -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=\\\[\{wi
> dth=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhd
> r=\"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=\\\[\{wi
> dth=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhd
> r=\"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=\\\[\{widt
> h=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=
> \"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\
> "What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"k
> eep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",lin
> e=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
> +
> "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{widt
> h=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=
> \"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\
> "What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"k
> eep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",lin
> e=\"$line_main_body\",thread-
> groups=\\\[\"i1\"\\\],times=\"0\"\},.*\}\\\]\}" \
> "list of breakpoints"
>
> mi_gdb_test "177-break-delete" \
> @@ -208,7 +208,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" \
> @@ -229,7 +229,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=\"W
> hat\".*\\\],body=\\\[bkpt=\{number=\"7\",type=\"breakpoint\",disp=\"kee
> p\",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=\"W
> hat\".*\\\],body=\\\[bkpt=\{number=\"7\",type=\"breakpoint\",disp=\"kee
> p\",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 27 Nov 2012 19:06:39 -
> 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\",enabl
> ed=\"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 27 Nov 2012 19:06:39 -
> 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\",fun
> c=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\",ori
> ginal-location=\".*\"\},.*\}\\\]\}" \
> +
> "204\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=
> \"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",fun
> c=\"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.33
> diff -u -r1.33 mi-watch.exp
> --- gdb/testsuite/gdb.mi/mi-watch.exp 9 Nov 2012 02:30:49 -0000
> 1.33
> +++ gdb/testsuite/gdb.mi/mi-watch.exp 27 Nov 2012 19:06:39 -0000
> @@ -58,7 +58,7 @@
> "break-watch operation"
>
> mi_gdb_test "222-break-list" \
> -
> "222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{wi
> dth=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhd
> r=\"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=\\\[\{wi
> dth=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhd
> r=\"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-watch -r operation"
>
> mi_gdb_test "300-break-list" \
> -
> "300\\^done,BreakpointTable=\{.*,hdr=\\\[.*\\\],body=\\\[bkpt=\{number=
> \"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",fun
> c=\"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\",fun
> c=\"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 27 Nov 2012 19:06:39 -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\",fun
> c=\"$func\(\\\(.*\\\)\)?\",file=\".*\",line=\"\[0-
> 9\]*\",times=\"0\",original-location=\".*\"\}" \
> + "200\\^done,bkpt=\{number=\"\[0-
> 9\]+\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",fun
> c=\"$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\",fullnam
> e=\".*\",line=\"$line\",times=\"0\",original-location=\".*\"\}" \
> +
> "222\\^done,bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\
> ",enabled=\"y\",addr=\"$address\",func=\"$func\",file=\"$file\",fullnam
> e=\".*\",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\",en
> abled=\"y\",addr=\"$address\",func=\"$func\",file=\".*$file\",${fullnam
> e},line=\"$line\",times=\"0\",original-location=\".*\"\}"
> + set body
> "${body}bkpt=\{number=\"$number\",type=\"breakpoint\",disp=\"$disp\",en
> abled=\"y\",addr=\"$address\",func=\"$func\",file=\".*$file\",${fullnam
> e},line=\"$line\",thread-groups=\\\[\"i1\"\\\],times=\"0\",original-
> location=\".*\"\}"
> set first 0
> }