From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30750 invoked by alias); 24 Apr 2008 08:48:07 -0000 Received: (qmail 30737 invoked by uid 22791); 24 Apr 2008 08:48:03 -0000 X-Spam-Check-By: sourceware.org Received: from main.gmane.org (HELO ciao.gmane.org) (80.91.229.2) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 24 Apr 2008 08:47:36 +0000 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1Jox76-0003Z7-HE for gdb-patches@sources.redhat.com; Thu, 24 Apr 2008 08:47:33 +0000 Received: from 78.158.192.230 ([78.158.192.230]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 24 Apr 2008 08:47:32 +0000 Received: from vladimir by 78.158.192.230 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 24 Apr 2008 08:47:32 +0000 To: gdb-patches@sources.redhat.com From: Vladimir Prus Subject: Re: [RFA/RFC] Report the original location specification for a breakpoint. Date: Thu, 24 Apr 2008 11:45:00 -0000 Message-ID: References: <200804151434.57665.vladimir@codesourcery.com> <20080417025749.GA18352@caradoc.them.org> <200804171359.09556.vladimir@codesourcery.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart3169773.pTv9WUu6C5" Content-Transfer-Encoding: 7Bit User-Agent: KNode/0.10.5 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-04/txt/msg00549.txt.bz2 --nextPart3169773.pTv9WUu6C5 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8Bit Content-length: 925 Vladimir Prus wrote: > On Thursday 17 April 2008 06:57:49 Daniel Jacobowitz wrote: >> On Tue, Apr 15, 2008 at 02:34:57PM +0400, Vladimir Prus wrote: >> > This patch adds the necessary MI support for reporting the original location. >> > It's not ready to be checked in because MI testsuite will likely break all over. >> > OTOH, I've tested this with KDevelop4, and it works just fine. I'll fix this >> > before committing. >> > >> > Is this patch OK? >> > >> > In fact, I wonder if I can commit patches like this, that touch files >> > outside of MI code but apparently change behaviour only for MI, without >> > approval. Any comments? >> >> Isn't this going to affect more than MI? I thought the text from >> ui_out_field_string was displayed for console too, just without the >> label. > > I don't this so, but I'll check. We can always make this field output > just for MI. I've checked in the below. - Volodya --nextPart3169773.pTv9WUu6C5 Content-Type: text/x-diff; name="commit.diff" Content-Transfer-Encoding: 8Bit Content-Disposition: attachment; filename="commit.diff" Content-length: 29808 Index: gdb/ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.9307 diff -u -p -r1.9307 ChangeLog --- gdb/ChangeLog 23 Apr 2008 21:17:04 -0000 1.9307 +++ gdb/ChangeLog 24 Apr 2008 08:45:16 -0000 @@ -1,3 +1,9 @@ +2008-04-24 Vladimir Prus + + * breakpoint.c (print_one_breakpoint_location): In MI + mode, report the location string the breakpoint was + originally created with. + 2008-04-23 Maxim Grigoriev * Makefile.in (xtensa-tdep.o): Update dependencies. Index: gdb/breakpoint.c =================================================================== RCS file: /cvs/src/src/gdb/breakpoint.c,v retrieving revision 1.310 diff -u -p -r1.310 breakpoint.c --- gdb/breakpoint.c 18 Apr 2008 00:41:28 -0000 1.310 +++ gdb/breakpoint.c 24 Apr 2008 08:45:16 -0000 @@ -3696,6 +3696,15 @@ print_one_breakpoint_location (struct br print_command_lines (uiout, l, 4); do_cleanups (script_chain); } + + if (ui_out_is_mi_like_p (uiout) && !part_of_multiple) + { + if (b->addr_string) + ui_out_field_string (uiout, "original-location", b->addr_string); + else if (b->exp_string) + ui_out_field_string (uiout, "original-location", b->exp_string); + } + do_cleanups (bkpt_chain); do_cleanups (old_chain); } Index: gdb/testsuite/ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/testsuite/ChangeLog,v retrieving revision 1.1615 diff -u -p -r1.1615 ChangeLog --- gdb/testsuite/ChangeLog 23 Apr 2008 12:21:50 -0000 1.1615 +++ gdb/testsuite/ChangeLog 24 Apr 2008 08:45:17 -0000 @@ -1,5 +1,24 @@ +2008-04-24 Vladimir Prus + + * lib/mi-support.exp (mi_runto_helper): Adjust + for the original-location field. + (mi_create_breakpoint, mi_list_breakpoints): New. + * gdb.mi/mi-break.exp: Adjust. + * gdb.mi/mi2-break.exp: Adjust. + * gdb.mi/mi-pending.exp: Adjust. + * gdb.mi/mi-simplerun.exp: Adjust. + * gdb.mi/mi2-simplerun.exp: Adjust. + * gdb.mi/mi-syn-frame.exp: Adjust. + * gdb.mi/mi2-syn-frame.exp: Adjust. + * gdb.mi/mi-until.exp: Adjust. + * gdb.mi/mi2-until.exp: Adjust. + * gdb.mi/mi-var-display.exp: Adjust. + * gdb.mi/mi2-var-display.exp: Adjust. + * gdb.mi/mi-watch.exp: Adjust. + * gdb.mi/mi2-watch.exp: Adjust. + 2008-04-23 Paolo Bonzini - + * aclocal.m4: Add override.m4. * configure: Regenerate. @@ -13,7 +32,7 @@ * gdb.dwarf2/dw2-compressed.S, gdb.dwarf2/dw2-compressed.exp: New files. - + 2008-04-18 Joel Brobecker * gdb.ada/atomic_enum: New test program. Index: gdb/testsuite/gdb.mi/mi-break.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-break.exp,v retrieving revision 1.16 diff -u -p -r1.16 mi-break.exp --- gdb/testsuite/gdb.mi/mi-break.exp 27 Feb 2008 20:29:31 -0000 1.16 +++ gdb/testsuite/gdb.mi/mi-break.exp 24 Apr 2008 08:45:17 -0000 @@ -78,25 +78,21 @@ proc test_tbreak_creation_and_listing {} # -break-insert -t srcfile:$line_callee4_head # -break-list - mi_gdb_test "222-break-insert -t main" \ - "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t main" 1 del main ".*basics.c" $line_main_body $hex \ "break-insert -t operation" - mi_gdb_test "333-break-insert -t basics.c:callee2" \ - "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t basics.c:callee2" 2 del callee2 ".*basics.c" $line_callee2_body $hex \ "insert temp breakpoint at basics.c:callee2" - mi_gdb_test "444-break-insert -t basics.c:$line_callee3_head" \ - "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t basics.c:$line_callee3_head" 3 del callee3 ".*basics.c" $line_callee3_body $hex \ "insert temp breakpoint at basics.c:\$line_callee3_head" # Getting the quoting right is tricky. That is "\"\":$line_callee4_head" - mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4_head\"" \ - "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t \"\\\"${srcfile}\\\":$line_callee4_head\"" 4 del callee4 ".*basics.c" $line_callee4_body $hex \ "insert temp breakpoint at \"\":\$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\"\}.*\\\]\}" \ + "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=\".*\"\}.*\\\]\}" \ "list of breakpoints" mi_gdb_test "777-break-delete" \ Index: gdb/testsuite/gdb.mi/mi-pending.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-pending.exp,v retrieving revision 1.5 diff -u -p -r1.5 mi-pending.exp --- gdb/testsuite/gdb.mi/mi-pending.exp 15 Apr 2008 14:33:54 -0000 1.5 +++ gdb/testsuite/gdb.mi/mi-pending.exp 24 Apr 2008 08:45:17 -0000 @@ -64,7 +64,7 @@ if [target_info exists gdb_stub] { # Set pending breakpoint via MI mi_gdb_test "-break-insert -f pendfunc1" \ - ".*\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"\",pending=\"pendfunc1\",times=\"0\"\}"\ + ".*\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"\",pending=\"pendfunc1\",times=\"0\",original-location=\"pendfunc1\"\}"\ "MI pending breakpoint on pendfunc1" mi_run_cmd Index: gdb/testsuite/gdb.mi/mi-simplerun.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-simplerun.exp,v retrieving revision 1.20 diff -u -p -r1.20 mi-simplerun.exp --- gdb/testsuite/gdb.mi/mi-simplerun.exp 15 Apr 2008 14:33:54 -0000 1.20 +++ gdb/testsuite/gdb.mi/mi-simplerun.exp 24 Apr 2008 08:45:17 -0000 @@ -68,24 +68,20 @@ proc test_breakpoints_creation_and_listi # -break-disable # -break-info - mi_gdb_test "200-break-insert main" \ - "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}" \ + mi_create_breakpoint "main" 1 keep main ".*basics.c" $line_main_body $hex \ "break-insert operation" - mi_gdb_test "201-break-insert basics.c:callee2" \ - "201\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"$line_callee2_body\",times=\"0\"\}" \ + mi_create_breakpoint "basics.c:callee2" 2 keep callee2 ".*basics.c" $line_callee2_body $hex \ "insert breakpoint at basics.c:callee2" - mi_gdb_test "202-break-insert basics.c:$line_callee3_head" \ - "202\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"$line_callee3_body\",times=\"0\"\}" \ + mi_create_breakpoint "basics.c:$line_callee3_head" 3 keep callee3 ".*basics.c" $line_callee3_body $hex \ "insert breakpoint at basics.c:\$line_callee3_head" - mi_gdb_test "203-break-insert \"\\\"${srcfile}\\\":$line_callee4_head\"" \ - "203\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_body\",times=\"0\"\}" \ + mi_create_breakpoint "\"\\\"${srcfile}\\\":$line_callee4_head\"" 4 keep callee4 ".*basics.c" $line_callee4_body $hex \ "insert breakpoint at \"\":\$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\"\},.*\}\\\]\}" \ + "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=\".*\"\},.*\}\\\]\}" \ "list of breakpoints" mi_gdb_test "205-break-disable 2 3 4" \ Index: gdb/testsuite/gdb.mi/mi-syn-frame.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-syn-frame.exp,v retrieving revision 1.15 diff -u -p -r1.15 mi-syn-frame.exp --- gdb/testsuite/gdb.mi/mi-syn-frame.exp 5 Apr 2008 17:12:46 -0000 1.15 +++ gdb/testsuite/gdb.mi/mi-syn-frame.exp 24 Apr 2008 08:45:17 -0000 @@ -39,10 +39,8 @@ mi_gdb_exit mi_gdb_start mi_run_to_main -mi_gdb_test "400-break-insert foo" \ - "400\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}" \ - "insert breakpoint foo" - +mi_create_breakpoint "foo" 2 keep foo ".*mi-syn-frame.c" $decimal $hex \ + "insert breakpoint foo" # # Call foo() by hand, where we'll hit a breakpoint. @@ -73,9 +71,8 @@ mi_gdb_test "404-stack-list-frames 0 0" # Call have_a_very_merry_interrupt() which will eventually raise a signal # that's caught by handler() which calls subroutine(). -mi_gdb_test "405-break-insert subroutine" \ - "405\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}" \ - "insert breakpoint subroutine" +mi_create_breakpoint "subroutine" 3 keep subroutine ".*mi-syn-frame.c" $decimal $hex \ + "insert breakpoint subroutine" mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" \ "406\\^error,msg=\"The program being debugged stopped while in a function called from GDB.\\\\nWhen the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\nstop \\(instead of continuing to evaluate the expression containing\\\\nthe function call\\).\"" \ Index: gdb/testsuite/gdb.mi/mi-until.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-until.exp,v retrieving revision 1.17 diff -u -p -r1.17 mi-until.exp --- gdb/testsuite/gdb.mi/mi-until.exp 15 Apr 2008 14:33:54 -0000 1.17 +++ gdb/testsuite/gdb.mi/mi-until.exp 24 Apr 2008 08:45:17 -0000 @@ -50,8 +50,7 @@ proc test_running_to_foo {} { global mi_gdb_prompt global hex - mi_gdb_test "200-break-insert 10" \ - "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*until.c\",line=\"10\",times=\"0\"\}" \ + mi_create_breakpoint "10" 1 "keep" foo ".*until.c" 10 ".*" \ "break-insert operation" mi_run_cmd Index: gdb/testsuite/gdb.mi/mi-var-display.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-var-display.exp,v retrieving revision 1.28 diff -u -p -r1.28 mi-var-display.exp --- gdb/testsuite/gdb.mi/mi-var-display.exp 15 Apr 2008 14:33:55 -0000 1.28 +++ gdb/testsuite/gdb.mi/mi-var-display.exp 24 Apr 2008 08:45:17 -0000 @@ -42,9 +42,8 @@ mi_gdb_load ${binfile} set line_dct_end [gdb_get_line_number "{int a = 0;}"] -mi_gdb_test "200-break-insert $srcfile:$line_dct_end" \ - "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"do_children_tests\",file=\".*var-cmd.c\",line=\"$line_dct_end\",times=\"0\"\}" \ - "break-insert operation" +mi_create_breakpoint "$srcfile:$line_dct_end" 1 keep do_children_tests ".*var-cmd.c" $line_dct_end $hex \ + "break-insert operation" mi_run_cmd mi_expect_stop "breakpoint-hit" "do_children_tests" "" ".*var-cmd.c" \ @@ -371,9 +370,8 @@ mi_gdb_test "-var-delete weird" \ set line_dst_incr_a_2 [gdb_get_line_number "incr_a(2);"] -mi_gdb_test "200-break-insert $line_dst_incr_a_2" \ - "200\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"do_special_tests\",file=\".*var-cmd.c\",line=\"$line_dst_incr_a_2\",times=\"0\"\}" \ - "break-insert operation" +mi_create_breakpoint "$line_dst_incr_a_2" 2 keep do_special_tests ".*var-cmd.c" $line_dst_incr_a_2 $hex \ + "break-insert operation 2" mi_execute_to "exec-continue" "breakpoint-hit" "do_special_tests" "" \ ".*var-cmd.c" $line_dst_incr_a_2 { "" "disp=\"keep\"" } \ Index: gdb/testsuite/gdb.mi/mi-watch.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-watch.exp,v retrieving revision 1.21 diff -u -p -r1.21 mi-watch.exp --- gdb/testsuite/gdb.mi/mi-watch.exp 5 Apr 2008 17:12:46 -0000 1.21 +++ gdb/testsuite/gdb.mi/mi-watch.exp 24 Apr 2008 08:45:17 -0000 @@ -59,7 +59,7 @@ proc test_watchpoint_creation_and_listin "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\",addr=\"\",what=\"C\",times=\"0\"\}\\\]\}" \ + "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\",addr=\"\",what=\"C\",times=\"0\",original-location=\"C\"\}\\\]\}" \ "list of watchpoints" } Index: gdb/testsuite/gdb.mi/mi2-break.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-break.exp,v retrieving revision 1.9 diff -u -p -r1.9 mi2-break.exp --- gdb/testsuite/gdb.mi/mi2-break.exp 27 Feb 2008 20:29:31 -0000 1.9 +++ gdb/testsuite/gdb.mi/mi2-break.exp 24 Apr 2008 08:45:17 -0000 @@ -79,25 +79,21 @@ proc test_tbreak_creation_and_listing {} # -break-insert -t srcfile:$line_callee4_head # -break-list - mi_gdb_test "222-break-insert -t main" \ - "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t main" 1 del main ".*basics.c" $line_main_body $hex \ "break-insert -t operation" - mi_gdb_test "333-break-insert -t basics.c:callee2" \ - "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t basics.c:callee2" 2 del callee2 ".*basics.c" $line_callee2_body $hex \ "insert temp breakpoint at basics.c:callee2" - mi_gdb_test "444-break-insert -t basics.c:$line_callee3_head" \ - "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t basics.c:$line_callee3_head" 3 del callee3 ".*basics.c" $line_callee3_body $hex \ "insert temp breakpoint at basics.c:\$line_callee3_head" # Getting the quoting right is tricky. That is "\"\":$line_callee4_head" - mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4_head\"" \ - "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\",times=\"0\"\}" \ + mi_create_breakpoint "-t \"\\\"${srcfile}\\\":$line_callee4_head\"" 4 del callee4 ".*basics.c" $line_callee4_body $hex \ "insert temp breakpoint at \"\":\$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\"\}.*\\\]\}" \ + "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=\".*\"\}.*\\\]\}" \ "list of breakpoints" mi_gdb_test "777-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.11 diff -u -p -r1.11 mi2-simplerun.exp --- gdb/testsuite/gdb.mi/mi2-simplerun.exp 15 Apr 2008 14:33:55 -0000 1.11 +++ gdb/testsuite/gdb.mi/mi2-simplerun.exp 24 Apr 2008 08:45:17 -0000 @@ -68,24 +68,20 @@ proc test_breakpoints_creation_and_listi # -break-disable # -break-info - mi_gdb_test "200-break-insert main" \ - "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}" \ + mi_create_breakpoint "main" 1 keep main ".*basics.c" $line_main_body $hex \ "break-insert operation" - mi_gdb_test "201-break-insert basics.c:callee2" \ - "201\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"$line_callee2_body\",times=\"0\"\}" \ + mi_create_breakpoint "basics.c:callee2" 2 keep callee2 ".*basics.c" $line_callee2_body $hex \ "insert breakpoint at basics.c:callee2" - mi_gdb_test "202-break-insert basics.c:$line_callee3_head" \ - "202\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"$line_callee3_body\",times=\"0\"\}" \ + mi_create_breakpoint "basics.c:$line_callee3_head" 3 keep callee3 ".*basics.c" $line_callee3_body $hex \ "insert breakpoint at basics.c:\$line_callee3_head" - mi_gdb_test "203-break-insert \"\\\"${srcfile}\\\":$line_callee4_head\"" \ - "203\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_body\",times=\"0\"\}" \ + mi_create_breakpoint "\"\\\"${srcfile}\\\":$line_callee4_head\"" 4 keep callee4 ".*basics.c" $line_callee4_body $hex \ "insert breakpoint at \"\":\$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\"\},.*\}\\\]\}" \ + "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=\".*\"\},.*\}\\\]\}" \ "list of breakpoints" mi_gdb_test "205-break-disable 2 3 4" \ Index: gdb/testsuite/gdb.mi/mi2-syn-frame.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-syn-frame.exp,v retrieving revision 1.11 diff -u -p -r1.11 mi2-syn-frame.exp --- gdb/testsuite/gdb.mi/mi2-syn-frame.exp 4 Apr 2008 21:59:25 -0000 1.11 +++ gdb/testsuite/gdb.mi/mi2-syn-frame.exp 24 Apr 2008 08:45:17 -0000 @@ -41,10 +41,8 @@ mi_gdb_exit mi_gdb_start mi_run_to_main -mi_gdb_test "400-break-insert foo" \ - "400\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}" \ - "insert breakpoint foo" - +mi_create_breakpoint "foo" 2 keep foo ".*mi-syn-frame.c" $decimal $hex \ + "insert breakpoint foo" # # Call foo() by hand, where we'll hit a breakpoint. @@ -77,9 +75,8 @@ mi_gdb_test "404-stack-list-frames 0 0" # Call have_a_very_merry_interrupt() which will eventually raise a signal # that's caught by handler() which calls subroutine(). -mi_gdb_test "405-break-insert subroutine" \ - "405\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}" \ - "insert breakpoint subroutine" +mi_create_breakpoint "subroutine" 3 keep subroutine ".*mi-syn-frame.c" $decimal $hex \ + "insert breakpoint subroutine" mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" \ "406\\^error,msg=\"The program being debugged stopped while in a function called from GDB.\\\\nWhen the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\nstop \\(instead of continuing to evaluate the expression containing\\\\nthe function call\\).\"" \ Index: gdb/testsuite/gdb.mi/mi2-until.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-until.exp,v retrieving revision 1.11 diff -u -p -r1.11 mi2-until.exp --- gdb/testsuite/gdb.mi/mi2-until.exp 15 Apr 2008 14:33:55 -0000 1.11 +++ gdb/testsuite/gdb.mi/mi2-until.exp 24 Apr 2008 08:45:17 -0000 @@ -51,8 +51,7 @@ proc test_running_to_foo {} { global mi_gdb_prompt global hex - mi_gdb_test "200-break-insert 10" \ - "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*until.c\",line=\"10\",times=\"0\"\}" \ + mi_create_breakpoint "10" 1 "keep" foo ".*until.c" 10 ".*" \ "break-insert operation" mi_run_cmd Index: gdb/testsuite/gdb.mi/mi2-var-display.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-var-display.exp,v retrieving revision 1.21 diff -u -p -r1.21 mi2-var-display.exp --- gdb/testsuite/gdb.mi/mi2-var-display.exp 15 Apr 2008 14:33:55 -0000 1.21 +++ gdb/testsuite/gdb.mi/mi2-var-display.exp 24 Apr 2008 08:45:17 -0000 @@ -42,9 +42,8 @@ mi_gdb_load ${binfile} set line_dct_end [gdb_get_line_number "{int a = 0;}"] -mi_gdb_test "200-break-insert $srcfile:$line_dct_end" \ - "200\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"do_children_tests\",file=\".*var-cmd.c\",line=\"$line_dct_end\",times=\"0\"\}" \ - "break-insert operation" +mi_create_breakpoint "$srcfile:$line_dct_end" 1 keep do_children_tests ".*var-cmd.c" $line_dct_end $hex \ + "break-insert operation" mi_run_cmd mi_expect_stop "breakpoint-hit" "do_children_tests" "" ".*var-cmd.c" \ @@ -370,9 +369,8 @@ mi_gdb_test "-var-delete weird" \ set line_dst_incr_a_2 [gdb_get_line_number "incr_a(2);"] -mi_gdb_test "200-break-insert $line_dst_incr_a_2" \ - "200\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"do_special_tests\",file=\".*var-cmd.c\",line=\"$line_dst_incr_a_2\",times=\"0\"\}" \ - "break-insert operation" +mi_create_breakpoint "$line_dst_incr_a_2" 2 keep do_special_tests ".*var-cmd.c" $line_dst_incr_a_2 $hex \ + "break-insert operation 2" mi_execute_to "exec-continue" "breakpoint-hit" "do_special_tests" "" \ ".*var-cmd.c" $line_dst_incr_a_2 { "" "disp=\"keep\"" } \ Index: gdb/testsuite/gdb.mi/mi2-watch.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-watch.exp,v retrieving revision 1.12 diff -u -p -r1.12 mi2-watch.exp --- gdb/testsuite/gdb.mi/mi2-watch.exp 5 Apr 2008 17:12:46 -0000 1.12 +++ gdb/testsuite/gdb.mi/mi2-watch.exp 24 Apr 2008 08:45:17 -0000 @@ -59,7 +59,7 @@ proc test_watchpoint_creation_and_listin "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\",addr=\"\",what=\"C\",times=\"0\"\}\\\]\}" \ + "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\",addr=\"\",what=\"C\",times=\"0\",original-location=\"C\"\}\\\]\}" \ "list of watchpoints" } Index: gdb/testsuite/lib/mi-support.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/lib/mi-support.exp,v retrieving revision 1.56 diff -u -p -r1.56 mi-support.exp --- gdb/testsuite/lib/mi-support.exp 15 Apr 2008 14:33:55 -0000 1.56 +++ gdb/testsuite/lib/mi-support.exp 24 Apr 2008 08:45:17 -0000 @@ -875,7 +875,7 @@ proc mi_runto_helper {func run_or_contin 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\"\}" \ + "200\\^done,bkpt=\{number=\"\[0-9\]+\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"$func\(\\\(.*\\\)\)?\",file=\".*\",line=\"\[0-9\]*\",times=\"0\",original-location=\".*\"\}" \ "breakpoint at $func" if {![regexp {number="[0-9]+"} $expect_out(buffer) str] @@ -1059,6 +1059,40 @@ proc mi0_continue_to { bkptno func args "$func" "$args" "$file" "$line" "" "$test" } +# 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=\".*\"\}" + 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=\".*\"\}" \ + $test +} + +proc mi_list_breakpoints { expected test } { + set fullname ".*" + + set body "" + set first 1 + + foreach item $children { + if {$first == 0} { + set body "$body," + } + set number disp func file line address + set number [lindex $item 0] + set disp [lindex $item 1] + set func [lindex $item 2] + set line [lindex $item 3] + set address [lindex $item 4] + 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 first 0 + } + + verbose -log "Expecint: 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=\\\[$body\\\]\}" \ + 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=\\\[$body\\\]\}" \ + $test +} + # Creates varobj named NAME for EXPRESSION. # Name cannot be "-". proc mi_create_varobj { name expression testname } { --nextPart3169773.pTv9WUu6C5--