Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* Re: [RFC] fullname attribute for GDB/MI stack frames
@ 2005-04-01 19:13 Dennis Brueni
  2005-04-02  9:22 ` Eli Zaretskii
  2005-04-30 19:18 ` Daniel Jacobowitz
  0 siblings, 2 replies; 103+ messages in thread
From: Dennis Brueni @ 2005-04-01 19:13 UTC (permalink / raw)
  To: gdb-patches; +Cc: bob


> -----Original Message-----
> From: Bob Rossi [mailto:bob@brasko.net] 
> Sent: Thursday, March 31, 2005 9:40 PM
> To: Dennis Brueni
> Cc: gdb-patches@sources.redhat.com
> Subject: Re: [RFC] fullname attribute for GDB/MI stack frames
> 
> 
> > > I would look at mi-file.exp. Make sure the regex you use in the 
> > > testsuite for matching the fullname is fullname=\"/.*/${srcfile}\"
> > > 
> > > I know that I originally committed something different, 
> and it ended 
> > > up morphing into this, so that it could pass the testsuite in a 
> > > variety of different environments.
> > > 
> > > Bob Rossi
> > 
> > 
> > Apologies for the broken lines; I also noticed that, after 
> the fact :( 
> > Updated patch set follows.
> > 
> > I have fixed the path issues in gdb.texinfo and also added 
> ChangeLog 
> > entries to the patch set.
> > 
> > For the testsuite regex's, I was just trying to remain 
> consistent with 
> > the tests for "file=" and not break anything.
> >   # # NOTE: cagney/2003-02-03: Not yet.
> >   # mi_gdb_test "-exec-continue" \
> > ! #    
> {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".
> *basics.c",line="8"\}} \
> >   #    "-interpreter-exec console \"continue to callee4\""
> >   send_gdb "999-exec-continue\n"
> >   gdb_expect {
> > --- 100,106 ----
> >   
> >   # # NOTE: cagney/2003-02-03: Not yet.
> >   # mi_gdb_test "-exec-continue" \
> > ! #    
> {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".
> *basics.c",fullname=".*basics.c",line="8"\}} \
> >   #    "-interpreter-exec console \"continue to callee4\""
> >   send_gdb "999-exec-continue\n"
> >   gdb_expect {
> 
> Hi,
> 
> Again, for the fullname regex, I would recommend using the 
> same regex used in mi-file.exp. This would be like 
> fullname="/.*basics.c" This forces the regex to ensure that 
> the path is absolute, which the check you have does not.
> 
> Bob Rossi
>

As promised, here is an updated patch set with the regex
changes you suggested, plus checking for a little more directory
information with respect to the fullname path, to the extent
that we can be sure the test case still passes in all environments.



Index: ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.7049
diff -c -p -b -r1.7049 ChangeLog
*** ChangeLog	31 Mar 2005 20:39:08 -0000	1.7049
--- ChangeLog	1 Apr 2005 16:06:42 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2005-03-29  Dennis Brueni  <dennis@slickedit.com>
+ 
+ 	* stack.c (print_frame): In MI mode,
+ 	output fullname attribute with stack frame
+ 
  2005-03-31  Kevin Buettner  <kevinb@redhat.com>
  
  	* solib-frv.c (struct lm_info): Add new field ``lm_addr''.
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.130
diff -c -p -b -r1.130 stack.c
*** stack.c	28 Feb 2005 17:00:49 -0000	1.130
--- stack.c	1 Apr 2005 16:06:42 -0000
*************** print_frame (struct frame_info *fi, 
*** 679,684 ****
--- 679,692 ----
        ui_out_text (uiout, " at ");
        annotate_frame_source_file ();
        ui_out_field_string (uiout, "file", sal.symtab->filename);
+       if (ui_out_is_mi_like_p(uiout)) {
+          if (!sal.symtab->fullname) {
+             symtab_to_fullname(sal.symtab);
+          }
+          if (sal.symtab->fullname) {
+             ui_out_field_string (uiout, "fullname", sal.symtab->fullname);
+          }
+       }
        annotate_frame_source_file_end ();
        ui_out_text (uiout, ":");
        annotate_frame_source_line ();
Index: doc/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/doc/ChangeLog,v
retrieving revision 1.473
diff -c -p -b -r1.473 ChangeLog
*** doc/ChangeLog	10 Mar 2005 13:12:32 -0000	1.473
--- doc/ChangeLog	1 Apr 2005 16:06:43 -0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2005-03-29  Dennis Brueni  <dennis@slickedit.com>
+ 
+ 	* gdb.texinfo: Update docs for MI stack frames with fullname attribute.
+ 
  2005-03-10  Bob Rossi  <bob@brasko.net>
  
  	* gdb.texinfo: Update copyright
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.233
diff -c -p -b -r1.233 gdb.texinfo
*** doc/gdb.texinfo	10 Mar 2005 13:12:33 -0000	1.233
--- doc/gdb.texinfo	1 Apr 2005 16:06:47 -0000
*************** Setting a watchpoint on a variable in th
*** 15894,15900 ****
  ^running
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
  value=@{old="-268439212",new="55"@},
! frame=@{func="main",args=[],file="recursive2.c",line="5"@}
  (@value{GDBP})
  @end smallexample
  
--- 15894,15901 ----
  ^running
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
  value=@{old="-268439212",new="55"@},
! frame=@{func="main",args=[],file="recursive2.c",
! fullname="/home/foo/bar/devo/myproject/recursive2.c",line="5"@}
  (@value{GDBP})
  @end smallexample
  
*************** for the watchpoint going out of scope.
*** 15912,15925 ****
  ^done,reason="watchpoint-trigger",
  wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -exec-continue
  ^running
  ^done,reason="watchpoint-scope",wpnum="5",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
--- 15913,15928 ----
  ^done,reason="watchpoint-trigger",
  wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -exec-continue
  ^running
  ^done,reason="watchpoint-scope",wpnum="5",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
*************** enabled="y",addr="",what="C",times="0"@}
*** 15951,15957 ****
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
  value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
--- 15954,15961 ----
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
  value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
*************** enabled="y",addr="",what="C",times="-5"@
*** 15972,15978 ****
  ^done,reason="watchpoint-scope",wpnum="2",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
--- 15976,15983 ----
  ^done,reason="watchpoint-scope",wpnum="2",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
*************** On a PPC MBX board:
*** 16207,16213 ****
  
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
! args=[],file="try.c",line="5"@}
  (@value{GDBP})
  -data-list-changed-registers
  ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
--- 16212,16218 ----
  
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
! args=[],file="try.c",fullname="/home/foo/bar/devo/myproject/try.c",line="5"@}
  (@value{GDBP})
  -data-list-changed-registers
  ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
*************** The corresponding @value{GDBN} correspon
*** 16814,16820 ****
  (@value{GDBP})
  @@Hello world
  *stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
! file="hello.c",line="13"@}
  (@value{GDBP})
  @end smallexample
  
--- 16819,16825 ----
  (@value{GDBP})
  @@Hello world
  *stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
! file="hello.c",fullname="/home/foo/bar/devo/myproject/hello.c",line="13"@}
  (@value{GDBP})
  @end smallexample
  
*************** Function returning @code{void}.
*** 16846,16852 ****
  (@value{GDBP})
  @@hello from foo
  *stopped,reason="function-finished",frame=@{func="main",args=[],
! file="hello.c",line="7"@}
  (@value{GDBP})
  @end smallexample
  
--- 16851,16857 ----
  (@value{GDBP})
  @@hello from foo
  *stopped,reason="function-finished",frame=@{func="main",args=[],
! file="hello.c",fullname="/home/foo/bar/devo/myproject/hello.c",line="7"@}
  (@value{GDBP})
  @end smallexample
  
*************** value itself.
*** 16860,16866 ****
  (@value{GDBP})
  *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
  args=[@{name="a",value="1"],@{name="b",value="9"@}@},
! file="recursive2.c",line="14"@},
  gdb-result-var="$1",return-value="0"
  (@value{GDBP})
  @end smallexample
--- 16865,16871 ----
  (@value{GDBP})
  *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
  args=[@{name="a",value="1"],@{name="b",value="9"@}@},
! file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  gdb-result-var="$1",return-value="0"
  (@value{GDBP})
  @end smallexample
*************** The corresponding @value{GDBN} command i
*** 16897,16903 ****
  222^done
  (@value{GDBP})
  111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
! frame=@{addr="0x00010140",func="foo",args=[],file="try.c",line="13"@}
  (@value{GDBP})
  
  (@value{GDBP})
--- 16902,16909 ----
  222^done
  (@value{GDBP})
  111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
! frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
! fullname="/home/foo/bar/devo/myproject/try.c",line="13"@}
  (@value{GDBP})
  
  (@value{GDBP})
*************** file="../../../devo/gdb/testsuite/gdb.mi
*** 16995,17001 ****
  (@value{GDBP})
  000*stopped,reason="breakpoint-hit",bkptno="1",
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
  (@value{GDBP})
  205-break-delete
  205^done
--- 17001,17008 ----
  (@value{GDBP})
  000*stopped,reason="breakpoint-hit",bkptno="1",
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
  (@value{GDBP})
  205-break-delete
  205^done
*************** file="../../../devo/gdb/testsuite/gdb.mi
*** 17004,17010 ****
  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"@}
  (@value{GDBP})
  @end smallexample
  
--- 17011,17018 ----
  111^done,frame=@{level="0",func="callee3",
  args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17037,17043 ****
  ^running
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",
! frame=@{func="main",args=[],file="recursive2.c",line="4"@}
  (@value{GDBP})
  @end smallexample
  
--- 17045,17052 ----
  ^running
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",
! frame=@{func="main",args=[],file="recursive2.c",
! fullname="/home/foo/bar/devo/myproject/recursive2.c",line="4"@}
  (@value{GDBP})
  @end smallexample
  
*************** Stepping into a function:
*** 17090,17096 ****
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
  frame=@{func="foo",args=[@{name="a",value="10"@},
! @{name="b",value="0"@}],file="recursive2.c",line="11"@}
  (@value{GDBP})
  @end smallexample
  
--- 17099,17106 ----
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
  frame=@{func="foo",args=[@{name="a",value="10"@},
! @{name="b",value="0"@}],file="recursive2.c",
! fullname="/home/foo/bar/devo/myproject/recursive2.c",line="11"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17133,17146 ****
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{func="foo",args=[],file="try.c",line="10"@}
  (@value{GDBP})
  -exec-step-instruction
  ^running
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",line="10"@}
  (@value{GDBP})
  @end smallexample
  
--- 17143,17158 ----
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{func="foo",args=[],file="try.c",
! fullname="/home/foo/bar/devo/myproject/try.c",line="10"@}
  (@value{GDBP})
  -exec-step-instruction
  ^running
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
! fullname="/home/foo/bar/devo/myproject/try.c",line="10"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17172,17178 ****
  (@value{GDBP})
  x = 55
  *stopped,reason="location-reached",frame=@{func="main",args=[],
! file="recursive2.c",line="6"@}
  (@value{GDBP})
  @end smallexample
  
--- 17184,17190 ----
  (@value{GDBP})
  x = 55
  *stopped,reason="location-reached",frame=@{func="main",args=[],
! file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="6"@}
  (@value{GDBP})
  @end smallexample
  
*************** functionality of @samp{-stack-list-argum
*** 17672,17686 ****
  ^done,
  stack=[
  frame=@{level="0",addr="0x00010734",func="callee4",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1",addr="0x0001076c",func="callee3",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
  frame=@{level="2",addr="0x0001078c",func="callee2",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
  frame=@{level="3",addr="0x000107b4",func="callee1",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
--- 17684,17703 ----
  ^done,
  stack=[
  frame=@{level="0",addr="0x00010734",func="callee4",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1",addr="0x0001076c",func="callee3",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
  frame=@{level="2",addr="0x0001078c",func="callee2",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
  frame=@{level="3",addr="0x000107b4",func="callee1",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
*************** Full stack backtrace:
*** 17762,17790 ****
  -stack-list-frames
  ^done,stack=
  [frame=@{level="0",addr="0x0001076c",func="foo",
!   file="recursive2.c",line="11"@},
  frame=@{level="1",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="2",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="6",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="7",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="8",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="9",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="10",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",line="4"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17779,17807 ----
  -stack-list-frames
  ^done,stack=
  [frame=@{level="0",addr="0x0001076c",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="11"@},
  frame=@{level="1",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="2",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="6",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="7",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="8",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="9",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="10",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="4"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show frames between @var{low_frame} and 
*** 17795,17805 ****
  -stack-list-frames 3 5
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17812,17822 ----
  -stack-list-frames 3 5
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show a single frame:
*** 17810,17816 ****
  -stack-list-frames 3 3
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17827,17833 ----
  -stack-list-frames 3 3
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
Index: testsuite/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/ChangeLog,v
retrieving revision 1.1096
diff -c -p -b -r1.1096 ChangeLog
*** testsuite/ChangeLog	29 Mar 2005 20:37:18 -0000	1.1096
--- testsuite/ChangeLog	1 Apr 2005 16:06:50 -0000
***************
*** 1,3 ****
--- 1,22 ----
+ 2005-03-29  Dennis Brueni  <dennis@slickedit.com>
+ 
+ 	* gdb.mi/mi-cli.exp: Add tests for fullname in stack frame.
+ 	* gdb.mi/mi-return.exp: Likewise.
+ 	* gdb.mi/mi-stack.exp: Likewise.
+ 	* gdb.mi/mi-stepi.exp: Likewise.
+ 	* gdb.mi/mi-syn-frame.exp: Likewise.
+ 	* gdb.mi/mi-until.exp: Likewise.
+ 	* gdb.mi/mi-var-display.exp: Likewise.
+ 	* gdb.mi/mi-watch.exp: Likewise.
+ 	* gdb.mi/mi2-cli.exp: Likewise.
+ 	* gdb.mi/mi2-return.exp: Likewise.
+ 	* gdb.mi/mi2-stack.exp: Likewise.
+ 	* gdb.mi/mi2-stepi.exp: Likewise.
+ 	* gdb.mi/mi2-syn-frame.exp: Likewise.
+ 	* gdb.mi/mi2-until.exp: Likewise.
+ 	* gdb.mi/mi2-var-display.exp: Likewise.
+ 	* lib/mi-support.exp: Likewise.
+ 
  2005-03-29  Daniel Jacobowitz  <dan@codesourcery.com>
  
  	* gdb.base/ptr-typedef.exp, gdb.base/ptr-typedef.c: New files.
Index: testsuite/gdb.mi/mi-cli.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-cli.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi-cli.exp
*** testsuite/gdb.mi/mi-cli.exp	15 Aug 2004 10:15:58 -0000	1.3
--- testsuite/gdb.mi/mi-cli.exp	1 Apr 2005 16:06:51 -0000
*************** mi_gdb_test "-interpreter-exec console \
*** 100,106 ****
  
  # # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-continue" \
! #    {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c",line="8"\}} \
  #    "-interpreter-exec console \"continue to callee4\""
  send_gdb "999-exec-continue\n"
  gdb_expect {
--- 100,106 ----
  
  # # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-continue" \
! #    {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c",fullname="/.*/gdb/testsuite/gdb.mi/basics.c",line="8"\}} \
  #    "-interpreter-exec console \"continue to callee4\""
  send_gdb "999-exec-continue\n"
  gdb_expect {
*************** mi_gdb_test "600-break-insert -t basics.
*** 161,171 ****
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
--- 161,171 ----
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",fullname="/.*/gdb/testsuite/gdb.mi/basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
*************** gdb_expect {
*** 175,185 ****
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=.*basics.c.,line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
--- 175,185 ----
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",fullname="/.*/gdb/testsuite/gdb.mi/basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
Index: testsuite/gdb.mi/mi-return.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-return.exp,v
retrieving revision 1.11
diff -c -p -b -r1.11 mi-return.exp
*** testsuite/gdb.mi/mi-return.exp	15 Aug 2004 10:15:58 -0000	1.11
--- testsuite/gdb.mi/mi-return.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_return_simple {} {
*** 53,59 ****
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\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)"
  	}
--- 53,59 ----
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee3_close_brace\"\}\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: testsuite/gdb.mi/mi-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stack.exp,v
retrieving revision 1.14
diff -c -p -b -r1.14 mi-stack.exp
*** testsuite/gdb.mi/mi-stack.exp	15 Aug 2004 10:15:58 -0000	1.14
--- testsuite/gdb.mi/mi-stack.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_stack_frame_listing {} {
*** 57,63 ****
      # -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=\"$line_callee4_body\"\},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\",.*\}\\\]" \
--- 57,63 ----
      # -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\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee4_body\"\},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\",.*\}\\\]" \
*************** set line_callee4_return_0 [gdb_get_line_
*** 161,167 ****
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
--- 161,167 ----
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
Index: testsuite/gdb.mi/mi-stepi.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stepi.exp,v
retrieving revision 1.10
diff -c -p -b -r1.10 mi-stepi.exp
*** testsuite/gdb.mi/mi-stepi.exp	15 Aug 2004 10:15:58 -0000	1.10
--- testsuite/gdb.mi/mi-stepi.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_stepi_nexti {} {
*** 53,59 ****
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
--- 53,59 ----
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
*************** proc test_stepi_nexti {} {
*** 67,73 ****
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 67,73 ----
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
*************** proc test_stepi_nexti {} {
*** 81,87 ****
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 81,87 ----
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
Index: testsuite/gdb.mi/mi-syn-frame.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-syn-frame.exp,v
retrieving revision 1.2
diff -c -p -b -r1.2 mi-syn-frame.exp
*** testsuite/gdb.mi/mi-syn-frame.exp	24 Feb 2003 20:15:47 -0000	1.2
--- testsuite/gdb.mi/mi-syn-frame.exp	1 Apr 2005 16:06:51 -0000
*************** gdb_expect {
*** 69,75 ****
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
--- 69,75 ----
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
*************** mi_gdb_test "406-data-evaluate-expressio
*** 83,89 ****
  # We should have both a signal handler and a call dummy frame
  # in this next output.
  
! mi_gdb_test "407-stack-list-frames" "407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_very_merry_interrupt\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  send_gdb "408-exec-continue\n"
--- 83,89 ----
  # We should have both a signal handler and a call dummy frame
  # in this next output.
  
! mi_gdb_test "407-stack-list-frames" "407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_very_merry_interrupt\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  send_gdb "408-exec-continue\n"
*************** gdb_expect {
*** 96,102 ****
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
--- 96,102 ----
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
*************** mi_gdb_test "409-stack-list-frames 0 0" 
*** 104,110 ****
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
--- 104,110 ----
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
Index: testsuite/gdb.mi/mi-until.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-until.exp,v
retrieving revision 1.8
diff -c -p -b -r1.8 mi-until.exp
*** testsuite/gdb.mi/mi-until.exp	9 Aug 2004 16:32:44 -0000	1.8
--- testsuite/gdb.mi/mi-until.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_until {} {
*** 78,84 ****
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
--- 78,84 ----
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
*************** proc test_until {} {
*** 88,94 ****
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
--- 88,94 ----
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
*************** proc test_until {} {
*** 98,104 ****
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
--- 98,104 ----
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
*************** proc test_until {} {
*** 110,116 ****
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
--- 110,116 ----
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
Index: testsuite/gdb.mi/mi-var-display.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-var-display.exp,v
retrieving revision 1.12
diff -c -p -b -r1.12 mi-var-display.exp
*** testsuite/gdb.mi/mi-var-display.exp	17 Aug 2004 09:38:29 -0000	1.12
--- testsuite/gdb.mi/mi-var-display.exp	1 Apr 2005 16:06:51 -0000
*************** mi_gdb_test "200-break-insert $line_dct_
*** 48,54 ****
  mi_run_cmd
  # The running part has been checked already by mi_run_cmd
  gdb_expect {
!     -re "\[\r\n\]*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_children_tests\",args=\\\[\\\],file=\".*var-cmd.c\",line=\"$line_dct_close_brace\"\}\r\n$mi_gdb_prompt$" {
  	pass "run to do_children_tests"
      }
      -re ".*$mi_gdb_prompt$" {fail "run to do_children_tests (2)"}
--- 48,54 ----
  mi_run_cmd
  # The running part has been checked already by mi_run_cmd
  gdb_expect {
!     -re "\[\r\n\]*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_children_tests\",args=\\\[\\\],file=\".*var-cmd.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/var-cmd.c\",line=\"$line_dct_close_brace\"\}\r\n$mi_gdb_prompt$" {
  	pass "run to do_children_tests"
      }
      -re ".*$mi_gdb_prompt$" {fail "run to do_children_tests (2)"}
*************** mi_gdb_test "200-break-insert do_special
*** 332,338 ****
  
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_special_tests\",args=\\\[\\\],file=\".*var-cmd.c\",line=\"$line_dst_a_1\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to do_special_tests"
      }
      timeout {
--- 332,338 ----
  
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_special_tests\",args=\\\[\\\],file=\".*var-cmd.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/var-cmd.c\",line=\"$line_dst_a_1\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to do_special_tests"
      }
      timeout {
*************** mi_gdb_test "200-break-insert incr_a" \
*** 592,601 ****
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
--- 592,601 ----
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
Index: testsuite/gdb.mi/mi-watch.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-watch.exp,v
retrieving revision 1.11
diff -c -p -b -r1.11 mi-watch.exp
*** testsuite/gdb.mi/mi-watch.exp	15 Aug 2004 10:15:58 -0000	1.11
--- testsuite/gdb.mi/mi-watch.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_watchpoint_triggering {} {
*** 139,145 ****
      gdb_expect {
        -re "222\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "222\\*stopped,reason=\"watchpoint-trigger\",wpt=\{number=\"2\",exp=\"C\"\},value=\{old=\".*\",new=\"3\"\},thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
              pass "watchpoint trigger"
            }
            -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (2)"}
--- 139,145 ----
      gdb_expect {
        -re "222\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "222\\*stopped,reason=\"watchpoint-trigger\",wpt=\{number=\"2\",exp=\"C\"\},value=\{old=\".*\",new=\"3\"\},thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
              pass "watchpoint trigger"
            }
            -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (2)"}
*************** proc test_watchpoint_triggering {} {
*** 154,160 ****
      gdb_expect {
        -re "223\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "\[\r\n\]*223\\*stopped,reason=\"watchpoint-scope\",wpnum=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\r\n$mi_gdb_prompt$" {
              pass "wp out of scope"
            }
            -re ".*$mi_gdb_prompt$" {fail "wp out of scope (2)"}
--- 154,160 ----
      gdb_expect {
        -re "223\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "\[\r\n\]*223\\*stopped,reason=\"watchpoint-scope\",wpnum=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee3_close_brace\"\}\r\n$mi_gdb_prompt$" {
              pass "wp out of scope"
            }
            -re ".*$mi_gdb_prompt$" {fail "wp out of scope (2)"}
Index: testsuite/gdb.mi/mi2-cli.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-cli.exp,v
retrieving revision 1.2
diff -c -p -b -r1.2 mi2-cli.exp
*** testsuite/gdb.mi/mi2-cli.exp	15 Aug 2004 10:15:58 -0000	1.2
--- testsuite/gdb.mi/mi2-cli.exp	1 Apr 2005 16:06:51 -0000
*************** mi_gdb_test "600-break-insert -t basics.
*** 161,171 ****
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
--- 161,171 ----
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",fullname="/.*/gdb/testsuite/gdb.mi/basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
*************** gdb_expect {
*** 175,185 ****
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=.*basics.c.,line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
--- 175,185 ----
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",fullname="/.*/gdb/testsuite/gdb.mi/basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
Index: testsuite/gdb.mi/mi2-return.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-return.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-return.exp
*** testsuite/gdb.mi/mi2-return.exp	15 Aug 2004 10:15:58 -0000	1.3
--- testsuite/gdb.mi/mi2-return.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_return_simple {} {
*** 53,59 ****
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\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)"
  	}
--- 53,59 ----
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee3_close_brace\"\}\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: testsuite/gdb.mi/mi2-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-stack.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-stack.exp
*** testsuite/gdb.mi/mi2-stack.exp	15 Aug 2004 10:15:58 -0000	1.3
--- testsuite/gdb.mi/mi2-stack.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_stack_frame_listing {} {
*** 57,63 ****
      # -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=\"$line_callee4_body\"\},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\",.*\}\\\]" \
--- 57,63 ----
      # -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\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee4_body\"\},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\",.*\}\\\]" \
*************** set line_callee4_return_0 [gdb_get_line_
*** 160,166 ****
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
--- 160,166 ----
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
Index: testsuite/gdb.mi/mi2-stepi.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-stepi.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-stepi.exp
*** testsuite/gdb.mi/mi2-stepi.exp	15 Aug 2004 10:15:58 -0000	1.3
--- testsuite/gdb.mi/mi2-stepi.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_stepi_nexti {} {
*** 53,59 ****
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
--- 53,59 ----
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
*************** proc test_stepi_nexti {} {
*** 67,73 ****
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 67,73 ----
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
*************** proc test_stepi_nexti {} {
*** 81,87 ****
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 81,87 ----
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
Index: testsuite/gdb.mi/mi2-syn-frame.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-syn-frame.exp,v
retrieving revision 1.1
diff -c -p -b -r1.1 mi2-syn-frame.exp
*** testsuite/gdb.mi/mi2-syn-frame.exp	7 Aug 2003 17:47:42 -0000	1.1
--- testsuite/gdb.mi/mi2-syn-frame.exp	1 Apr 2005 16:06:51 -0000
*************** gdb_expect {
*** 69,75 ****
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
--- 69,75 ----
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
*************** gdb_expect {
*** 96,102 ****
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
--- 96,102 ----
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
*************** mi_gdb_test "409-stack-list-frames 0 0" 
*** 104,110 ****
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
--- 104,110 ----
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
Index: testsuite/gdb.mi/mi2-until.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-until.exp,v
retrieving revision 1.2
diff -c -p -b -r1.2 mi2-until.exp
*** testsuite/gdb.mi/mi2-until.exp	9 Aug 2004 22:21:54 -0000	1.2
--- testsuite/gdb.mi/mi2-until.exp	1 Apr 2005 16:06:51 -0000
*************** proc test_until {} {
*** 78,84 ****
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
--- 78,84 ----
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
*************** proc test_until {} {
*** 88,94 ****
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
--- 88,94 ----
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
*************** proc test_until {} {
*** 98,104 ****
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
--- 98,104 ----
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
*************** proc test_until {} {
*** 110,116 ****
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
--- 110,116 ----
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
Index: testsuite/gdb.mi/mi2-var-display.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-var-display.exp,v
retrieving revision 1.4
diff -c -p -b -r1.4 mi2-var-display.exp
*** testsuite/gdb.mi/mi2-var-display.exp	17 Aug 2004 09:38:29 -0000	1.4
--- testsuite/gdb.mi/mi2-var-display.exp	1 Apr 2005 16:06:51 -0000
*************** mi_gdb_test "200-break-insert incr_a" \
*** 592,601 ****
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
--- 592,601 ----
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\"/.*/gdb/testsuite/gdb.mi/var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
Index: testsuite/lib/mi-support.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/mi-support.exp,v
retrieving revision 1.26
diff -c -p -b -r1.26 mi-support.exp
*** testsuite/lib/mi-support.exp	25 Mar 2005 20:38:55 -0000	1.26
--- testsuite/lib/mi-support.exp	1 Apr 2005 16:06:51 -0000
*************** proc mi_runto {func} {
*** 813,819 ****
  
    mi_run_cmd
    gdb_expect {
!     -re ".*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"$bkptno\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.*\}\),file=\".*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$" {
        pass "$test"
        return 0
      }
--- 813,819 ----
  
    mi_run_cmd
    gdb_expect {
!     -re ".*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"$bkptno\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.*\}\),file=\".*\",fullname=\"/.*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$" {
        pass "$test"
        return 0
      }
*************** proc mi_execute_to_helper { cmd reason f
*** 859,869 ****
      global decimal
      send_gdb "220-$cmd\n"
      gdb_expect {
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",line=\"$line\"\}$extra\r\n$mi_gdb_prompt$" {
  	    pass "$test"
  	    return 0
  	}
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].*\[\\\]\}\],file=\".*\",line=\"\[0-9\]*\"\}.*\r\n$mi_gdb_prompt$" {
  	    fail "$test (stopped at wrong place)"
  	    return -1
  	}
--- 859,869 ----
      global decimal
      send_gdb "220-$cmd\n"
      gdb_expect {
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",fullname=\"/.*/$file\",line=\"$line\"\}$extra\r\n$mi_gdb_prompt$" {
  	    pass "$test"
  	    return 0
  	}
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].*\[\\\]\}\],file=\".*\",fullname=\"/.*\",line=\"\[0-9\]*\"\}.*\r\n$mi_gdb_prompt$" {
  	    fail "$test (stopped at wrong place)"
  	    return -1
  	}



^ permalink raw reply	[flat|nested] 103+ messages in thread
* Re: [RFC] fullname attribute for GDB/MI stack frames
@ 2005-05-05 15:15 Dennis Brueni
  2005-05-05 15:25 ` Bob Rossi
  0 siblings, 1 reply; 103+ messages in thread
From: Dennis Brueni @ 2005-05-05 15:15 UTC (permalink / raw)
  To: gdb-patches; +Cc: Dennis Brueni, Bob Rossi

On Wed, 4 May 2005 20:05:06 -0400, Bob Rossi wrote:
> 
> This may or may not be what you mean. However, if you do
> -file-list-exec-source-files, GDB prints the filename and fullname for
> every file that it knows about. The purpose of this is to let the
front
> end know about each and every file that GDB knows about. As I've
stated
> before, I believe most if not all FE's depend on the fullname to be a
> unique key.

I think you have just struck on the right way to write the tests
for fullname with respect to stack frames.  Forget regex's, we
want the value of the fullname to exactly match the same fullname
attribute pumped out by -file-list-exec-source-files.  This would just
take one utility function.  The test for -file-list-exec-source-files
could then be the central point for verifying the "correctness" of
fullname.  I'm willing to redo my stack/fullname tests if this idea
is amenable to the group.

--Dennis

------------------------
Dennis Brueni
Software Engineer
SlickEdit Inc.
3000 Aerial Center Pkwy
Suite 120
Morrisville, NC  27560
Tel:  919.473.0132
Fax:  919.473.0080
http://www.slickedit.com
------------------------       


^ permalink raw reply	[flat|nested] 103+ messages in thread
* RE: [RFC] fullname attribute for GDB/MI stack frames
@ 2005-05-02 14:22 Dennis Brueni
  2005-05-02 19:38 ` Eli Zaretskii
  0 siblings, 1 reply; 103+ messages in thread
From: Dennis Brueni @ 2005-05-02 14:22 UTC (permalink / raw)
  To: gdb-patches; +Cc: Bob Rossi, Eli Zaretskii, Daniel Jacobowitz

> -----Original Message-----
> 
> > > Like Dennis noted, it could be possible that the fullname 
> might not 
> > > start with a "/". I originally posted the patch with the fullname 
> > > starting with a "/", and since then, there hasn't been any 
> > > complaints. If there is a better regex that ensures that the 
> > > fullname is absolute I'd be happy to change the 
> mi-file.exp test to 
> > > it.
> > 
> > The proper regexp should be something like
> > 
> >    \([A-z]:\)?[/\\].*basics.c
> > 
> > This assumes that \(...\) is the proper syntax for grouping 
> (I don't 
> > know much about the regexp syntax expected by Expect).
> > 
> > (The uppercase A but lowercase z in the above are 
> intentional: that's 
> > because letters between Z and a can also be drive letters, amazingly
> > enough.)
> 
> OK, I don't know why no one has ever posted to this list with 
> testsuite failures on the mi-file.exp testcase. Maybe no one 
> runs the mi testsuite 
> on windows?

I tried.  Many failures, unrelated to fullname, led me to
believe that configuration was not considered as supported
by the mi testsuite.

Also, in my tests at least, the fullname paths from stack frames
all come back as /cygdrive/<drive_letter>/..., so the simplistic
regex would suffice.

> Either way, I'm going to submit a patch later today which 
> will add a variable to mi-support.exp similar to 
> mi_gdb_prompt. The variable will describe the syntax of a 
> fullname field. It will abstract the details 
> and complications from new users trying to write testcase's.
> 
> I'll try to find time to make this quick change tonight. If 
> people don't like this idea, let me know.

This is a good idea, but as the complexity of the regex
increases it becomes more compelling to do an exact check.
Calculate what the absolute path to the source file should
be and compare that with the fullname attribute.  However,
I'm not volunteering to do that.  ;)  It's easy to overblow
the testing for what amounts to a five line code change.

--Dennis


^ permalink raw reply	[flat|nested] 103+ messages in thread
* RE: [RFC] fullname attribute for GDB/MI stack frames
@ 2005-04-01 15:09 Dennis Brueni
  0 siblings, 0 replies; 103+ messages in thread
From: Dennis Brueni @ 2005-04-01 15:09 UTC (permalink / raw)
  To: Bob Rossi; +Cc: gdb-patches


> -----Original Message-----
> From: Bob Rossi [mailto:bob@brasko.net] 
> Sent: Thursday, March 31, 2005 9:40 PM
> To: Dennis Brueni
> Cc: gdb-patches@sources.redhat.com
> Subject: Re: [RFC] fullname attribute for GDB/MI stack frames
> 
> 
> > > I would look at mi-file.exp. Make sure the regex you use in the 
> > > testsuite for matching the fullname is fullname=\"/.*/${srcfile}\"
> > > 
> > > I know that I originally committed something different, 
> and it ended 
> > > up morphing into this, so that it could pass the testsuite in a 
> > > variety of different environments.
> > > 
> > > Bob Rossi
> > 
> > 
> > Apologies for the broken lines; I also noticed that, after 
> the fact :( 
> > Updated patch set follows.
> > 
> > I have fixed the path issues in gdb.texinfo and also added 
> ChangeLog 
> > entries to the patch set.
> > 
> > For the testsuite regex's, I was just trying to remain 
> consistent with 
> > the tests for "file=" and not break anything.
> >   # # NOTE: cagney/2003-02-03: Not yet.
> >   # mi_gdb_test "-exec-continue" \
> > ! #    
> {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".
> *basics.c",line="8"\}} \
> >   #    "-interpreter-exec console \"continue to callee4\""
> >   send_gdb "999-exec-continue\n"
> >   gdb_expect {
> > --- 100,106 ----
> >   
> >   # # NOTE: cagney/2003-02-03: Not yet.
> >   # mi_gdb_test "-exec-continue" \
> > ! #    
> {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".
> *basics.c",fullname=".*basics.c",line="8"\}} \
> >   #    "-interpreter-exec console \"continue to callee4\""
> >   send_gdb "999-exec-continue\n"
> >   gdb_expect {
> 
> Hi,
> 
> Again, for the fullname regex, I would recommend using the 
> same regex used in mi-file.exp. This would be like 
> fullname="/.*basics.c" This forces the regex to ensure that 
> the path is absolute, which the check you have does not.
> 
> Bob Rossi
>

I was concerned that regex would fail in cases where the
fullname path starts with a drive letter.  Nevertheless,
I will rework the patch again and post it later today.

--Dennis Brueni


^ permalink raw reply	[flat|nested] 103+ messages in thread
* Re: [RFC] fullname attribute for GDB/MI stack frames
@ 2005-03-29 20:43 Dennis Brueni
  2005-03-30  4:46 ` Eli Zaretskii
  2005-04-01  1:41 ` Bob Rossi
  0 siblings, 2 replies; 103+ messages in thread
From: Dennis Brueni @ 2005-03-29 20:43 UTC (permalink / raw)
  To: gdb-patches; +Cc: Dennis Brueni

> On Sat, Mar 26, 2005 at 03:38:55PM +0200, Eli Zaretskii wrote:
> > > Date: Thu, 24 Mar 2005 15:48:45 -0500
> > > From: "Dennis Brueni" <dbrueni@slickedit.com>
> > > Cc: <gdb-patches@sources.redhat.com>,
> > > 	"Dennis Brueni" <dbrueni@slickedit.com>
> > > 
> > > *** gdb/doc/gdb.texinfo	10 Mar 2005 13:12:33 -0000	1.233
> > > --- gdb/doc/gdb.texinfo	24 Mar 2005 18:34:13 -0000
> > > *************** Setting a watchpoint on a variable in th
> > > *** 15894,15900 ****
> > >   ^running
> > >   ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
> > >   value=@{old="-268439212",new="55"@},
> > > ! frame=@{func="main",args=[],file="recursive2.c",line="5"@}
> > >   (@value{GDBP})
> > >   @end smallexample
> > >   
> > > --- 15894,15900 ----
> > >   ^running
> > >   ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
> > >   value=@{old="-268439212",new="55"@},
> > > !
> > > frame=@{func="main",args=[],file="recursive2.c",fullname="/.../recursive
> > > 2.c",line="5"@}
> > 
> > Your mail software breaks long lines, which will be an annoyance for
> > whoever tries to apply these patches.  Please resend the patches while
> > taking care that long lines are sent intact, TIA.
> > 
> > >   ^done,reason="watchpoint-trigger",
> > >   wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
> > >   frame=@{func="callee4",args=[],
> > > ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
> > >   (@value{GDBP})
> > >   -exec-continue
> > >   ^running
> > >   ^done,reason="watchpoint-scope",wpnum="5",
> > >   frame=@{func="callee3",args=[@{name="strarg",
> > >   value="0x11940 \"A string argument.\""@}],
> > > ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
> > >   (@value{GDBP})
> > >   @end smallexample
> > >   
> > > --- 15912,15927 ----
> > >   ^done,reason="watchpoint-trigger",
> > >   wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
> > >   frame=@{func="callee4",args=[],
> > > ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
> > > ! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
> > >   (@value{GDBP})
> > >   -exec-continue
> > >   ^running
> > >   ^done,reason="watchpoint-scope",wpnum="5",
> > >   frame=@{func="callee3",args=[@{name="strarg",
> > >   value="0x11940 \"A string argument.\""@}],
> > > ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
> > > ! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
> > >   (@value{GDBP})
> > >   @end smallexample
> > 
> > I think these changes are confusing: the full name for
> > "../../../devo/gdb/testsuite/gdb.mi/basics.c" cannot possibly be
> > "/devo/gdb/testsuite/gdb.mi/basics.c" unless "../../.." resolves to
> > the root directory.  While the latter is a possibility, it's a very
> > rare occasion, so it is better to replace "../../.." with something
> > like "/foo/bar/", not with "/".  The way you did it, a user could
> > misunderstand what fullname= does: your examples look like it simply
> > removes "../../.." part.
> > 
> > >   (@value{GDBP})
> > >   *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
> > > ! args=[],file="try.c",line="5"@}
> > >   (@value{GDBP})
> > >   -data-list-changed-registers
> > >   ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
> > > --- 16211,16217 ----
> > >   
> > >   (@value{GDBP})
> > >   *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
> > > ! args=[],file="try.c",fullname="/.../try.c",line="5"@}
> > 
> > Here, I don't understand the "/.../" part.  Did you mean for the 3
> > dots to stand for the omitted full path from the root?  If so, it's
> > less confusuing to use some invented file names, like /foo/bar/baz or
> > /dir/subdir/subsubdir.
> > 
> > Other than that, the doco patch is approved.  Thanks.
> 
> I would look at mi-file.exp. Make sure the regex you use in the
> testsuite for matching the fullname is fullname=\"/.*/${srcfile}\"
> 
> I know that I originally committed something different, and it ended up
> morphing into this, so that it could pass the testsuite in a variety of
> different environments.
> 
> Bob Rossi


Apologies for the broken lines; I also noticed that, after the fact :(
Updated patch set follows.

I have fixed the path issues in gdb.texinfo and also added ChangeLog
entries to the patch set.

For the testsuite regex's, I was just trying to remain consistent
with the tests for "file=" and not break anything.

--Dennis Brueni
  dennis@slickedit.com



Index: gdb/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.7046
diff -c -p -b -r1.7046 ChangeLog
*** gdb/ChangeLog	29 Mar 2005 16:58:22 -0000	1.7046
--- gdb/ChangeLog	29 Mar 2005 20:00:07 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2005-03-29  Dennis Brueni  <dennis@slickedit.com>
+ 
+ 	* stack.c (print_frame): In MI mode,
+ 	output fullname attribute with stack frame
+ 
  2005-03-29  Daniel Jacobowitz  <dan@codesourcery.com>
  
  	* arm-linux-nat.c (store_register, store_regs): Handle
Index: gdb/stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.130
diff -c -p -b -r1.130 stack.c
*** gdb/stack.c	28 Feb 2005 17:00:49 -0000	1.130
--- gdb/stack.c	29 Mar 2005 20:00:07 -0000
*************** print_frame (struct frame_info *fi, 
*** 679,684 ****
--- 679,692 ----
        ui_out_text (uiout, " at ");
        annotate_frame_source_file ();
        ui_out_field_string (uiout, "file", sal.symtab->filename);
+       if (ui_out_is_mi_like_p(uiout)) {
+          if (!sal.symtab->fullname) {
+             symtab_to_fullname(sal.symtab);
+          }
+          if (sal.symtab->fullname) {
+             ui_out_field_string (uiout, "fullname", sal.symtab->fullname);
+          }
+       }
        annotate_frame_source_file_end ();
        ui_out_text (uiout, ":");
        annotate_frame_source_line ();
Index: gdb/doc/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/doc/ChangeLog,v
retrieving revision 1.473
diff -c -p -b -r1.473 ChangeLog
*** gdb/doc/ChangeLog	10 Mar 2005 13:12:32 -0000	1.473
--- gdb/doc/ChangeLog	29 Mar 2005 20:00:08 -0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2005-03-29  Dennis Brueni  <dennis@slickedit.com>
+ 
+ 	* gdb.texinfo: Update docs for MI stack frames with fullname attribute.
+ 
  2005-03-10  Bob Rossi  <bob@brasko.net>
  
  	* gdb.texinfo: Update copyright
Index: gdb/doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.233
diff -c -p -b -r1.233 gdb.texinfo
*** gdb/doc/gdb.texinfo	10 Mar 2005 13:12:33 -0000	1.233
--- gdb/doc/gdb.texinfo	29 Mar 2005 20:00:13 -0000
*************** Setting a watchpoint on a variable in th
*** 15894,15900 ****
  ^running
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
  value=@{old="-268439212",new="55"@},
! frame=@{func="main",args=[],file="recursive2.c",line="5"@}
  (@value{GDBP})
  @end smallexample
  
--- 15894,15901 ----
  ^running
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
  value=@{old="-268439212",new="55"@},
! frame=@{func="main",args=[],file="recursive2.c",
! fullname="/home/foo/bar/devo/myproject/recursive2.c",line="5"@}
  (@value{GDBP})
  @end smallexample
  
*************** for the watchpoint going out of scope.
*** 15912,15925 ****
  ^done,reason="watchpoint-trigger",
  wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -exec-continue
  ^running
  ^done,reason="watchpoint-scope",wpnum="5",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
--- 15913,15928 ----
  ^done,reason="watchpoint-trigger",
  wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -exec-continue
  ^running
  ^done,reason="watchpoint-scope",wpnum="5",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
*************** enabled="y",addr="",what="C",times="0"@}
*** 15951,15957 ****
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
  value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
--- 15954,15961 ----
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
  value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
*************** enabled="y",addr="",what="C",times="-5"@
*** 15972,15978 ****
  ^done,reason="watchpoint-scope",wpnum="2",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
--- 15976,15983 ----
  ^done,reason="watchpoint-scope",wpnum="2",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
*************** On a PPC MBX board:
*** 16207,16213 ****
  
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
! args=[],file="try.c",line="5"@}
  (@value{GDBP})
  -data-list-changed-registers
  ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
--- 16212,16218 ----
  
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
! args=[],file="try.c",fullname="/home/foo/bar/devo/myproject/try.c",line="5"@}
  (@value{GDBP})
  -data-list-changed-registers
  ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
*************** The corresponding @value{GDBN} correspon
*** 16814,16820 ****
  (@value{GDBP})
  @@Hello world
  *stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
! file="hello.c",line="13"@}
  (@value{GDBP})
  @end smallexample
  
--- 16819,16825 ----
  (@value{GDBP})
  @@Hello world
  *stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
! file="hello.c",fullname="/home/foo/bar/devo/myproject/hello.c",line="13"@}
  (@value{GDBP})
  @end smallexample
  
*************** Function returning @code{void}.
*** 16846,16852 ****
  (@value{GDBP})
  @@hello from foo
  *stopped,reason="function-finished",frame=@{func="main",args=[],
! file="hello.c",line="7"@}
  (@value{GDBP})
  @end smallexample
  
--- 16851,16857 ----
  (@value{GDBP})
  @@hello from foo
  *stopped,reason="function-finished",frame=@{func="main",args=[],
! file="hello.c",fullname="/home/foo/bar/devo/myproject/hello.c",line="7"@}
  (@value{GDBP})
  @end smallexample
  
*************** value itself.
*** 16860,16866 ****
  (@value{GDBP})
  *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
  args=[@{name="a",value="1"],@{name="b",value="9"@}@},
! file="recursive2.c",line="14"@},
  gdb-result-var="$1",return-value="0"
  (@value{GDBP})
  @end smallexample
--- 16865,16871 ----
  (@value{GDBP})
  *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
  args=[@{name="a",value="1"],@{name="b",value="9"@}@},
! file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  gdb-result-var="$1",return-value="0"
  (@value{GDBP})
  @end smallexample
*************** The corresponding @value{GDBN} command i
*** 16897,16903 ****
  222^done
  (@value{GDBP})
  111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
! frame=@{addr="0x00010140",func="foo",args=[],file="try.c",line="13"@}
  (@value{GDBP})
  
  (@value{GDBP})
--- 16902,16909 ----
  222^done
  (@value{GDBP})
  111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
! frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
! fullname="/home/foo/bar/devo/myproject/try.c",line="13"@}
  (@value{GDBP})
  
  (@value{GDBP})
*************** file="../../../devo/gdb/testsuite/gdb.mi
*** 16995,17001 ****
  (@value{GDBP})
  000*stopped,reason="breakpoint-hit",bkptno="1",
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
  (@value{GDBP})
  205-break-delete
  205^done
--- 17001,17008 ----
  (@value{GDBP})
  000*stopped,reason="breakpoint-hit",bkptno="1",
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
  (@value{GDBP})
  205-break-delete
  205^done
*************** file="../../../devo/gdb/testsuite/gdb.mi
*** 17004,17010 ****
  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"@}
  (@value{GDBP})
  @end smallexample
  
--- 17011,17018 ----
  111^done,frame=@{level="0",func="callee3",
  args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17037,17043 ****
  ^running
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",
! frame=@{func="main",args=[],file="recursive2.c",line="4"@}
  (@value{GDBP})
  @end smallexample
  
--- 17045,17052 ----
  ^running
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",
! frame=@{func="main",args=[],file="recursive2.c",
! fullname="/home/foo/bar/devo/myproject/recursive2.c",line="4"@}
  (@value{GDBP})
  @end smallexample
  
*************** Stepping into a function:
*** 17090,17096 ****
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
  frame=@{func="foo",args=[@{name="a",value="10"@},
! @{name="b",value="0"@}],file="recursive2.c",line="11"@}
  (@value{GDBP})
  @end smallexample
  
--- 17099,17106 ----
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
  frame=@{func="foo",args=[@{name="a",value="10"@},
! @{name="b",value="0"@}],file="recursive2.c",
! fullname="/home/foo/bar/devo/myproject/recursive2.c",line="11"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17133,17146 ****
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{func="foo",args=[],file="try.c",line="10"@}
  (@value{GDBP})
  -exec-step-instruction
  ^running
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",line="10"@}
  (@value{GDBP})
  @end smallexample
  
--- 17143,17158 ----
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{func="foo",args=[],file="try.c",
! fullname="/home/foo/bar/devo/myproject/try.c",line="10"@}
  (@value{GDBP})
  -exec-step-instruction
  ^running
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
! fullname="/home/foo/bar/devo/myproject/try.c",line="10"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17172,17178 ****
  (@value{GDBP})
  x = 55
  *stopped,reason="location-reached",frame=@{func="main",args=[],
! file="recursive2.c",line="6"@}
  (@value{GDBP})
  @end smallexample
  
--- 17184,17190 ----
  (@value{GDBP})
  x = 55
  *stopped,reason="location-reached",frame=@{func="main",args=[],
! file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="6"@}
  (@value{GDBP})
  @end smallexample
  
*************** functionality of @samp{-stack-list-argum
*** 17672,17686 ****
  ^done,
  stack=[
  frame=@{level="0",addr="0x00010734",func="callee4",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1",addr="0x0001076c",func="callee3",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
  frame=@{level="2",addr="0x0001078c",func="callee2",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
  frame=@{level="3",addr="0x000107b4",func="callee1",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
--- 17684,17703 ----
  ^done,
  stack=[
  frame=@{level="0",addr="0x00010734",func="callee4",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1",addr="0x0001076c",func="callee3",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
  frame=@{level="2",addr="0x0001078c",func="callee2",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
  frame=@{level="3",addr="0x000107b4",func="callee1",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
*************** Full stack backtrace:
*** 17762,17790 ****
  -stack-list-frames
  ^done,stack=
  [frame=@{level="0",addr="0x0001076c",func="foo",
!   file="recursive2.c",line="11"@},
  frame=@{level="1",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="2",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="6",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="7",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="8",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="9",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="10",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",line="4"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17779,17807 ----
  -stack-list-frames
  ^done,stack=
  [frame=@{level="0",addr="0x0001076c",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="11"@},
  frame=@{level="1",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="2",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="6",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="7",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="8",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="9",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="10",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="4"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show frames between @var{low_frame} and 
*** 17795,17805 ****
  -stack-list-frames 3 5
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17812,17822 ----
  -stack-list-frames 3 5
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show a single frame:
*** 17810,17816 ****
  -stack-list-frames 3 3
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17827,17833 ----
  -stack-list-frames 3 3
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/home/foo/bar/devo/myproject/recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
Index: gdb/testsuite/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/ChangeLog,v
retrieving revision 1.1095
diff -c -p -b -r1.1095 ChangeLog
*** gdb/testsuite/ChangeLog	27 Mar 2005 00:18:54 -0000	1.1095
--- gdb/testsuite/ChangeLog	29 Mar 2005 20:00:16 -0000
***************
*** 1,3 ****
--- 1,22 ----
+ 2005-03-29  Dennis Brueni  <dennis@slickedit.com>
+ 
+ 	* gdb.mi/mi-cli.exp: Add tests for fullname in stack frame.
+ 	* gdb.mi/mi-return.exp: Likewise.
+ 	* gdb.mi/mi-stack.exp: Likewise.
+ 	* gdb.mi/mi-stepi.exp: Likewise.
+ 	* gdb.mi/mi-syn-frame.exp: Likewise.
+ 	* gdb.mi/mi-until.exp: Likewise.
+ 	* gdb.mi/mi-var-display.exp: Likewise.
+ 	* gdb.mi/mi-watch.exp: Likewise.
+ 	* gdb.mi/mi2-cli.exp: Likewise.
+ 	* gdb.mi/mi2-return.exp: Likewise.
+ 	* gdb.mi/mi2-stack.exp: Likewise.
+ 	* gdb.mi/mi2-stepi.exp: Likewise.
+ 	* gdb.mi/mi2-syn-frame.exp: Likewise.
+ 	* gdb.mi/mi2-until.exp: Likewise.
+ 	* gdb.mi/mi2-var-display.exp: Likewise.
+ 	* lib/mi-support.exp: Likewise.
+ 
  2005-03-27  Andreas Schwab  <schwab@suse.de>
  
  	* gdb.base/bigcore.c (main): Add missing mode argument in open
Index: gdb/testsuite/gdb.mi/mi-cli.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-cli.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi-cli.exp
*** gdb/testsuite/gdb.mi/mi-cli.exp	15 Aug 2004 10:15:58 -0000	1.3
--- gdb/testsuite/gdb.mi/mi-cli.exp	29 Mar 2005 20:00:16 -0000
*************** mi_gdb_test "-interpreter-exec console \
*** 100,106 ****
  
  # # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-continue" \
! #    {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c",line="8"\}} \
  #    "-interpreter-exec console \"continue to callee4\""
  send_gdb "999-exec-continue\n"
  gdb_expect {
--- 100,106 ----
  
  # # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-continue" \
! #    {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c",fullname=".*basics.c",line="8"\}} \
  #    "-interpreter-exec console \"continue to callee4\""
  send_gdb "999-exec-continue\n"
  gdb_expect {
*************** mi_gdb_test "600-break-insert -t basics.
*** 161,171 ****
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
--- 161,171 ----
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",fullname=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=\".*basics.c\",fullname=\".*basics.c\",line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
*************** gdb_expect {
*** 175,185 ****
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=.*basics.c.,line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
--- 175,185 ----
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",fullname=".*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=\".*basics.c\",fullname=\".*basics.c\",line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
Index: gdb/testsuite/gdb.mi/mi-return.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-return.exp,v
retrieving revision 1.11
diff -c -p -b -r1.11 mi-return.exp
*** gdb/testsuite/gdb.mi/mi-return.exp	15 Aug 2004 10:15:58 -0000	1.11
--- gdb/testsuite/gdb.mi/mi-return.exp	29 Mar 2005 20:00:16 -0000
*************** proc test_return_simple {} {
*** 53,59 ****
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\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)"
  	}
--- 53,59 ----
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\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: gdb/testsuite/gdb.mi/mi-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stack.exp,v
retrieving revision 1.14
diff -c -p -b -r1.14 mi-stack.exp
*** gdb/testsuite/gdb.mi/mi-stack.exp	15 Aug 2004 10:15:58 -0000	1.14
--- gdb/testsuite/gdb.mi/mi-stack.exp	29 Mar 2005 20:00:16 -0000
*************** proc test_stack_frame_listing {} {
*** 57,63 ****
      # -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=\"$line_callee4_body\"\},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\",.*\}\\\]" \
--- 57,63 ----
      # -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\",fullname=\".*/basics.c\",line=\"$line_callee4_body\"\},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\",.*\}\\\]" \
*************** set line_callee4_return_0 [gdb_get_line_
*** 161,167 ****
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
--- 161,167 ----
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*/basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
Index: gdb/testsuite/gdb.mi/mi-stepi.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stepi.exp,v
retrieving revision 1.10
diff -c -p -b -r1.10 mi-stepi.exp
*** gdb/testsuite/gdb.mi/mi-stepi.exp	15 Aug 2004 10:15:58 -0000	1.10
--- gdb/testsuite/gdb.mi/mi-stepi.exp	29 Mar 2005 20:00:16 -0000
*************** proc test_stepi_nexti {} {
*** 53,59 ****
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
--- 53,59 ----
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
*************** proc test_stepi_nexti {} {
*** 67,73 ****
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 67,73 ----
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
*************** proc test_stepi_nexti {} {
*** 81,87 ****
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 81,87 ----
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
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.2
diff -c -p -b -r1.2 mi-syn-frame.exp
*** gdb/testsuite/gdb.mi/mi-syn-frame.exp	24 Feb 2003 20:15:47 -0000	1.2
--- gdb/testsuite/gdb.mi/mi-syn-frame.exp	29 Mar 2005 20:00:16 -0000
*************** gdb_expect {
*** 69,75 ****
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
--- 69,75 ----
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
*************** mi_gdb_test "406-data-evaluate-expressio
*** 83,89 ****
  # We should have both a signal handler and a call dummy frame
  # in this next output.
  
! mi_gdb_test "407-stack-list-frames" "407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_very_merry_interrupt\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  send_gdb "408-exec-continue\n"
--- 83,89 ----
  # We should have both a signal handler and a call dummy frame
  # in this next output.
  
! mi_gdb_test "407-stack-list-frames" "407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_very_merry_interrupt\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  send_gdb "408-exec-continue\n"
*************** gdb_expect {
*** 96,102 ****
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
--- 96,102 ----
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
*************** mi_gdb_test "409-stack-list-frames 0 0" 
*** 104,110 ****
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
--- 104,110 ----
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
Index: gdb/testsuite/gdb.mi/mi-until.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-until.exp,v
retrieving revision 1.8
diff -c -p -b -r1.8 mi-until.exp
*** gdb/testsuite/gdb.mi/mi-until.exp	9 Aug 2004 16:32:44 -0000	1.8
--- gdb/testsuite/gdb.mi/mi-until.exp	29 Mar 2005 20:00:16 -0000
*************** proc test_until {} {
*** 78,84 ****
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
--- 78,84 ----
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
*************** proc test_until {} {
*** 88,94 ****
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
--- 88,94 ----
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
*************** proc test_until {} {
*** 98,104 ****
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
--- 98,104 ----
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
*************** proc test_until {} {
*** 110,116 ****
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
--- 110,116 ----
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
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.12
diff -c -p -b -r1.12 mi-var-display.exp
*** gdb/testsuite/gdb.mi/mi-var-display.exp	17 Aug 2004 09:38:29 -0000	1.12
--- gdb/testsuite/gdb.mi/mi-var-display.exp	29 Mar 2005 20:00:16 -0000
*************** mi_gdb_test "200-break-insert $line_dct_
*** 48,54 ****
  mi_run_cmd
  # The running part has been checked already by mi_run_cmd
  gdb_expect {
!     -re "\[\r\n\]*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_children_tests\",args=\\\[\\\],file=\".*var-cmd.c\",line=\"$line_dct_close_brace\"\}\r\n$mi_gdb_prompt$" {
  	pass "run to do_children_tests"
      }
      -re ".*$mi_gdb_prompt$" {fail "run to do_children_tests (2)"}
--- 48,54 ----
  mi_run_cmd
  # The running part has been checked already by mi_run_cmd
  gdb_expect {
!     -re "\[\r\n\]*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_children_tests\",args=\\\[\\\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\"$line_dct_close_brace\"\}\r\n$mi_gdb_prompt$" {
  	pass "run to do_children_tests"
      }
      -re ".*$mi_gdb_prompt$" {fail "run to do_children_tests (2)"}
*************** mi_gdb_test "200-break-insert do_special
*** 332,338 ****
  
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_special_tests\",args=\\\[\\\],file=\".*var-cmd.c\",line=\"$line_dst_a_1\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to do_special_tests"
      }
      timeout {
--- 332,338 ----
  
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_special_tests\",args=\\\[\\\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\"$line_dst_a_1\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to do_special_tests"
      }
      timeout {
*************** mi_gdb_test "200-break-insert incr_a" \
*** 592,601 ****
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
--- 592,601 ----
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
Index: gdb/testsuite/gdb.mi/mi-watch.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-watch.exp,v
retrieving revision 1.11
diff -c -p -b -r1.11 mi-watch.exp
*** gdb/testsuite/gdb.mi/mi-watch.exp	15 Aug 2004 10:15:58 -0000	1.11
--- gdb/testsuite/gdb.mi/mi-watch.exp	29 Mar 2005 20:00:17 -0000
*************** proc test_watchpoint_triggering {} {
*** 139,145 ****
      gdb_expect {
        -re "222\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "222\\*stopped,reason=\"watchpoint-trigger\",wpt=\{number=\"2\",exp=\"C\"\},value=\{old=\".*\",new=\"3\"\},thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
              pass "watchpoint trigger"
            }
            -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (2)"}
--- 139,145 ----
      gdb_expect {
        -re "222\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "222\\*stopped,reason=\"watchpoint-trigger\",wpt=\{number=\"2\",exp=\"C\"\},value=\{old=\".*\",new=\"3\"\},thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
              pass "watchpoint trigger"
            }
            -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (2)"}
*************** proc test_watchpoint_triggering {} {
*** 154,160 ****
      gdb_expect {
        -re "223\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "\[\r\n\]*223\\*stopped,reason=\"watchpoint-scope\",wpnum=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\r\n$mi_gdb_prompt$" {
              pass "wp out of scope"
            }
            -re ".*$mi_gdb_prompt$" {fail "wp out of scope (2)"}
--- 154,160 ----
      gdb_expect {
        -re "223\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re "\[\r\n\]*223\\*stopped,reason=\"watchpoint-scope\",wpnum=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\r\n$mi_gdb_prompt$" {
              pass "wp out of scope"
            }
            -re ".*$mi_gdb_prompt$" {fail "wp out of scope (2)"}
Index: gdb/testsuite/gdb.mi/mi2-cli.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-cli.exp,v
retrieving revision 1.2
diff -c -p -b -r1.2 mi2-cli.exp
*** gdb/testsuite/gdb.mi/mi2-cli.exp	15 Aug 2004 10:15:58 -0000	1.2
--- gdb/testsuite/gdb.mi/mi2-cli.exp	29 Mar 2005 20:00:17 -0000
*************** mi_gdb_test "600-break-insert -t basics.
*** 161,171 ****
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
--- 161,171 ----
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",fullname=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re "700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=\".*basics.c\",fullname=\".*basics.c\",line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
*************** gdb_expect {
*** 175,185 ****
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=.*basics.c.,line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
--- 175,185 ----
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",fullname=".*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re "800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-range.*,file=\".*basics.c\",fullname=\".*basics.c\",line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
Index: gdb/testsuite/gdb.mi/mi2-return.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-return.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-return.exp
*** gdb/testsuite/gdb.mi/mi2-return.exp	15 Aug 2004 10:15:58 -0000	1.3
--- gdb/testsuite/gdb.mi/mi2-return.exp	29 Mar 2005 20:00:17 -0000
*************** proc test_return_simple {} {
*** 53,59 ****
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\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)"
  	}
--- 53,59 ----
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\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: gdb/testsuite/gdb.mi/mi2-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-stack.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-stack.exp
*** gdb/testsuite/gdb.mi/mi2-stack.exp	15 Aug 2004 10:15:58 -0000	1.3
--- gdb/testsuite/gdb.mi/mi2-stack.exp	29 Mar 2005 20:00:17 -0000
*************** proc test_stack_frame_listing {} {
*** 57,63 ****
      # -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=\"$line_callee4_body\"\},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\",.*\}\\\]" \
--- 57,63 ----
      # -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\",fullname=\".*basics.c\",line=\"$line_callee4_body\"\},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\",.*\}\\\]" \
*************** set line_callee4_return_0 [gdb_get_line_
*** 160,166 ****
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
--- 160,166 ----
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
Index: gdb/testsuite/gdb.mi/mi2-stepi.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-stepi.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-stepi.exp
*** gdb/testsuite/gdb.mi/mi2-stepi.exp	15 Aug 2004 10:15:58 -0000	1.3
--- gdb/testsuite/gdb.mi/mi2-stepi.exp	29 Mar 2005 20:00:17 -0000
*************** proc test_stepi_nexti {} {
*** 53,59 ****
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
--- 53,59 ----
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "step-instruction at main"
*************** proc test_stepi_nexti {} {
*** 67,73 ****
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 67,73 ----
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
*************** proc test_stepi_nexti {} {
*** 81,87 ****
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
--- 81,87 ----
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello } {
  		pass "next-instruction at main"
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.1
diff -c -p -b -r1.1 mi2-syn-frame.exp
*** gdb/testsuite/gdb.mi/mi2-syn-frame.exp	7 Aug 2003 17:47:42 -0000	1.1
--- gdb/testsuite/gdb.mi/mi2-syn-frame.exp	29 Mar 2005 20:00:17 -0000
*************** gdb_expect {
*** 69,75 ****
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
--- 69,75 ----
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0" "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
*************** gdb_expect {
*** 96,102 ****
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
--- 96,102 ----
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0" "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
*************** mi_gdb_test "409-stack-list-frames 0 0" 
*** 104,110 ****
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
--- 104,110 ----
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in bar\[\r\n\]+\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
  
! mi_gdb_test "411-stack-list-frames" "411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\\\[\\\],file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
  
  mi_gdb_exit
  
Index: gdb/testsuite/gdb.mi/mi2-until.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-until.exp,v
retrieving revision 1.2
diff -c -p -b -r1.2 mi2-until.exp
*** gdb/testsuite/gdb.mi/mi2-until.exp	9 Aug 2004 22:21:54 -0000	1.2
--- gdb/testsuite/gdb.mi/mi2-until.exp	29 Mar 2005 20:00:17 -0000
*************** proc test_until {} {
*** 78,84 ****
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
--- 78,84 ----
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re "111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-range\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
*************** proc test_until {} {
*** 88,94 ****
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
--- 88,94 ----
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re "222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
*************** proc test_until {} {
*** 98,104 ****
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
--- 98,104 ----
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re "333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
*************** proc test_until {} {
*** 110,116 ****
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
--- 110,116 ----
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
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.4
diff -c -p -b -r1.4 mi2-var-display.exp
*** gdb/testsuite/gdb.mi/mi2-var-display.exp	17 Aug 2004 09:38:29 -0000	1.4
--- gdb/testsuite/gdb.mi/mi2-var-display.exp	29 Mar 2005 20:00:17 -0000
*************** mi_gdb_test "200-break-insert incr_a" \
*** 592,601 ****
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
--- 592,601 ----
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re "\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a - 1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
Index: gdb/testsuite/lib/mi-support.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/mi-support.exp,v
retrieving revision 1.26
diff -c -p -b -r1.26 mi-support.exp
*** gdb/testsuite/lib/mi-support.exp	25 Mar 2005 20:38:55 -0000	1.26
--- gdb/testsuite/lib/mi-support.exp	29 Mar 2005 20:00:17 -0000
*************** proc mi_runto {func} {
*** 813,819 ****
  
    mi_run_cmd
    gdb_expect {
!     -re ".*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"$bkptno\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.*\}\),file=\".*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$" {
        pass "$test"
        return 0
      }
--- 813,819 ----
  
    mi_run_cmd
    gdb_expect {
!     -re ".*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"$bkptno\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.*\}\),file=\".*\",fullname=\".*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$" {
        pass "$test"
        return 0
      }
*************** proc mi_execute_to_helper { cmd reason f
*** 859,869 ****
      global decimal
      send_gdb "220-$cmd\n"
      gdb_expect {
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",line=\"$line\"\}$extra\r\n$mi_gdb_prompt$" {
  	    pass "$test"
  	    return 0
  	}
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].*\[\\\]\}\],file=\".*\",line=\"\[0-9\]*\"\}.*\r\n$mi_gdb_prompt$" {
  	    fail "$test (stopped at wrong place)"
  	    return -1
  	}
--- 859,869 ----
      global decimal
      send_gdb "220-$cmd\n"
      gdb_expect {
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",fullname=\".*$file\",line=\"$line\"\}$extra\r\n$mi_gdb_prompt$" {
  	    pass "$test"
  	    return 0
  	}
! 	-re ".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].*\[\\\]\}\],file=\".*\",fullname=\".*\",line=\"\[0-9\]*\"\}.*\r\n$mi_gdb_prompt$" {
  	    fail "$test (stopped at wrong place)"
  	    return -1
  	}


^ permalink raw reply	[flat|nested] 103+ messages in thread
* Re: [RFC] fullname attribute for GDB/MI stack frames
@ 2005-03-26 13:43 Eli Zaretskii
  2005-03-26 13:50 ` Bob Rossi
  0 siblings, 1 reply; 103+ messages in thread
From: Eli Zaretskii @ 2005-03-26 13:43 UTC (permalink / raw)
  To: Dennis Brueni; +Cc: bob, gdb-patches, dbrueni@slickedit.com

> Date: Thu, 24 Mar 2005 15:48:45 -0500
> From: "Dennis Brueni" <dbrueni@slickedit.com>
> Cc: <gdb-patches@sources.redhat.com>,
> 	"Dennis Brueni" <dbrueni@slickedit.com>
> 
> *** gdb/doc/gdb.texinfo	10 Mar 2005 13:12:33 -0000	1.233
> --- gdb/doc/gdb.texinfo	24 Mar 2005 18:34:13 -0000
> *************** Setting a watchpoint on a variable in th
> *** 15894,15900 ****
>   ^running
>   ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
>   value=@{old="-268439212",new="55"@},
> ! frame=@{func="main",args=[],file="recursive2.c",line="5"@}
>   (@value{GDBP})
>   @end smallexample
>   
> --- 15894,15900 ----
>   ^running
>   ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
>   value=@{old="-268439212",new="55"@},
> !
> frame=@{func="main",args=[],file="recursive2.c",fullname="/.../recursive
> 2.c",line="5"@}

Your mail software breaks long lines, which will be an annoyance for
whoever tries to apply these patches.  Please resend the patches while
taking care that long lines are sent intact, TIA.

>   ^done,reason="watchpoint-trigger",
>   wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
>   frame=@{func="callee4",args=[],
> ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
>   (@value{GDBP})
>   -exec-continue
>   ^running
>   ^done,reason="watchpoint-scope",wpnum="5",
>   frame=@{func="callee3",args=[@{name="strarg",
>   value="0x11940 \"A string argument.\""@}],
> ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
>   (@value{GDBP})
>   @end smallexample
>   
> --- 15912,15927 ----
>   ^done,reason="watchpoint-trigger",
>   wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
>   frame=@{func="callee4",args=[],
> ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
> ! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
>   (@value{GDBP})
>   -exec-continue
>   ^running
>   ^done,reason="watchpoint-scope",wpnum="5",
>   frame=@{func="callee3",args=[@{name="strarg",
>   value="0x11940 \"A string argument.\""@}],
> ! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
> ! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
>   (@value{GDBP})
>   @end smallexample

I think these changes are confusing: the full name for
"../../../devo/gdb/testsuite/gdb.mi/basics.c" cannot possibly be
"/devo/gdb/testsuite/gdb.mi/basics.c" unless "../../.." resolves to
the root directory.  While the latter is a possibility, it's a very
rare occasion, so it is better to replace "../../.." with something
like "/foo/bar/", not with "/".  The way you did it, a user could
misunderstand what fullname= does: your examples look like it simply
removes "../../.." part.

>   (@value{GDBP})
>   *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
> ! args=[],file="try.c",line="5"@}
>   (@value{GDBP})
>   -data-list-changed-registers
>   ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
> --- 16211,16217 ----
>   
>   (@value{GDBP})
>   *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
> ! args=[],file="try.c",fullname="/.../try.c",line="5"@}

Here, I don't understand the "/.../" part.  Did you mean for the 3
dots to stand for the omitted full path from the root?  If so, it's
less confusuing to use some invented file names, like /foo/bar/baz or
/dir/subdir/subsubdir.

Other than that, the doco patch is approved.  Thanks.


^ permalink raw reply	[flat|nested] 103+ messages in thread
* RE: [RFC] fullname attribute for GDB/MI stack frames
@ 2005-03-24 20:49 Dennis Brueni
  0 siblings, 0 replies; 103+ messages in thread
From: Dennis Brueni @ 2005-03-24 20:49 UTC (permalink / raw)
  To: Bob Rossi; +Cc: gdb-patches, Dennis Brueni

> -----Original Message-----
> From: Bob Rossi [mailto:bob@brasko.net] 
> Sent: Wednesday, March 23, 2005 5:34 PM
> To: Dennis Brueni
> Cc: gdb-patches@sources.redhat.com
> Subject: Re: [RFC] fullname attribute for GDB/MI stack frames
> 
> 
> > The following patch fixes the code that reports stack 
> frames to append 
> > a "fullname" attribute to each stack frame, reporting the absolute 
> > path name of the source file.  This effects MI output mode only and 
> > does not hurt performance.
> > 
> > Index: gdb/stack.c 
> > ===================================================================
> > RCS file: /cvs/src/src/gdb/stack.c,v
> > 
> > $ diff -c -p -b stack.c-6.3 stack.c
> > *** stack.c-6.3 Wed Mar 23 17:03:57 2005
> > --- stack.c     Wed Mar 23 15:40:11 2005
> > *************** print_frame (struct frame_info *fi,
> > *** 666,671 ****
> > --- 666,679 ----
> >         ui_out_text (uiout, " at ");
> >         annotate_frame_source_file ();
> >         ui_out_field_string (uiout, "file", sal.symtab->filename);
> > +       if (ui_out_is_mi_like_p(uiout)) {
> > +          if (!sal.symtab->fullname) {
> > +             source_full_path_of(sal.symtab->filename,
> > &sal.symtab->fullname);
> > +          }
> > +          if (sal.symtab->fullname) {
> > +             ui_out_field_string (uiout, "fullname",
> > sal.symtab->fullname);
> > +          }
> > +       }
> >         annotate_frame_source_file_end ();
> >         ui_out_text (uiout, ":");
> >         annotate_frame_source_line ();
> 
> This is great, I've was eventually going to get to this. 
> Although I'm not the maintainer, I have a few comments,
> 
> You should probably be using symtab_to_fullname instead of 
> source_full_path_of. In fact, maybe source_full_path_of 
> should be deprecated. symtab_to_fullname is used in mi/mi-cmd-file.c.
> 
> Also, there should be a corresponding testcase, that ensures the new 
> field is working properly.
> 
> Thanks,
> Bob Rossi
> 

Thanks for the excellent suggestions!  Attached is a complete
patch for the latest GDB development stream, including testsuite and
docs.
Hint, hint, it would be great to see this in 6.4!

--Dennis Brueni
  dennis@slickedit.com


Index: gdb/stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.130
diff -c -p -b -r1.130 stack.c
*** gdb/stack.c	28 Feb 2005 17:00:49 -0000	1.130
--- gdb/stack.c	24 Mar 2005 18:34:08 -0000
*************** print_frame (struct frame_info *fi, 
*** 679,684 ****
--- 679,692 ----
        ui_out_text (uiout, " at ");
        annotate_frame_source_file ();
        ui_out_field_string (uiout, "file", sal.symtab->filename);
+       if (ui_out_is_mi_like_p(uiout)) {
+          if (!sal.symtab->fullname) {
+             symtab_to_fullname(sal.symtab);
+          }
+          if (sal.symtab->fullname) {
+             ui_out_field_string (uiout, "fullname",
sal.symtab->fullname);
+          }
+       }
        annotate_frame_source_file_end ();
        ui_out_text (uiout, ":");
        annotate_frame_source_line ();
Index: gdb/doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.233
diff -c -p -b -r1.233 gdb.texinfo
*** gdb/doc/gdb.texinfo	10 Mar 2005 13:12:33 -0000	1.233
--- gdb/doc/gdb.texinfo	24 Mar 2005 18:34:13 -0000
*************** Setting a watchpoint on a variable in th
*** 15894,15900 ****
  ^running
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
  value=@{old="-268439212",new="55"@},
! frame=@{func="main",args=[],file="recursive2.c",line="5"@}
  (@value{GDBP})
  @end smallexample
  
--- 15894,15900 ----
  ^running
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
  value=@{old="-268439212",new="55"@},
!
frame=@{func="main",args=[],file="recursive2.c",fullname="/.../recursive
2.c",line="5"@}
  (@value{GDBP})
  @end smallexample
  
*************** for the watchpoint going out of scope.
*** 15912,15925 ****
  ^done,reason="watchpoint-trigger",
  wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -exec-continue
  ^running
  ^done,reason="watchpoint-scope",wpnum="5",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
--- 15912,15927 ----
  ^done,reason="watchpoint-trigger",
  wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -exec-continue
  ^running
  ^done,reason="watchpoint-scope",wpnum="5",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
*************** enabled="y",addr="",what="C",times="0"@}
*** 15951,15957 ****
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
  value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
--- 15953,15960 ----
  ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
  value=@{old="-276895068",new="3"@},
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
*************** enabled="y",addr="",what="C",times="-5"@
*** 15972,15978 ****
  ^done,reason="watchpoint-scope",wpnum="2",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
--- 15975,15982 ----
  ^done,reason="watchpoint-scope",wpnum="2",
  frame=@{func="callee3",args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  -break-list
  ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
*************** On a PPC MBX board:
*** 16207,16213 ****
  
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
! args=[],file="try.c",line="5"@}
  (@value{GDBP})
  -data-list-changed-registers
  ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
--- 16211,16217 ----
  
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
! args=[],file="try.c",fullname="/.../try.c",line="5"@}
  (@value{GDBP})
  -data-list-changed-registers
  ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
*************** The corresponding @value{GDBN} correspon
*** 16814,16820 ****
  (@value{GDBP})
  @@Hello world
 
*stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
! file="hello.c",line="13"@}
  (@value{GDBP})
  @end smallexample
  
--- 16818,16824 ----
  (@value{GDBP})
  @@Hello world
 
*stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
! file="hello.c",fullname="/.../hello.c",line="13"@}
  (@value{GDBP})
  @end smallexample
  
*************** Function returning @code{void}.
*** 16846,16852 ****
  (@value{GDBP})
  @@hello from foo
  *stopped,reason="function-finished",frame=@{func="main",args=[],
! file="hello.c",line="7"@}
  (@value{GDBP})
  @end smallexample
  
--- 16850,16856 ----
  (@value{GDBP})
  @@hello from foo
  *stopped,reason="function-finished",frame=@{func="main",args=[],
! file="hello.c",fullname="/.../hello.c",line="7"@}
  (@value{GDBP})
  @end smallexample
  
*************** value itself.
*** 16860,16866 ****
  (@value{GDBP})
 
*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo"
,
  args=[@{name="a",value="1"],@{name="b",value="9"@}@},
! file="recursive2.c",line="14"@},
  gdb-result-var="$1",return-value="0"
  (@value{GDBP})
  @end smallexample
--- 16864,16870 ----
  (@value{GDBP})
 
*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo"
,
  args=[@{name="a",value="1"],@{name="b",value="9"@}@},
! file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  gdb-result-var="$1",return-value="0"
  (@value{GDBP})
  @end smallexample
*************** The corresponding @value{GDBN} command i
*** 16897,16903 ****
  222^done
  (@value{GDBP})
  111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
! frame=@{addr="0x00010140",func="foo",args=[],file="try.c",line="13"@}
  (@value{GDBP})
  
  (@value{GDBP})
--- 16901,16907 ----
  222^done
  (@value{GDBP})
  111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
!
frame=@{addr="0x00010140",func="foo",args=[],file="try.c",fullname=/.../
try.c",line="13"@}
  (@value{GDBP})
  
  (@value{GDBP})
*************** file="../../../devo/gdb/testsuite/gdb.mi
*** 16995,17001 ****
  (@value{GDBP})
  000*stopped,reason="breakpoint-hit",bkptno="1",
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
  (@value{GDBP})
  205-break-delete
  205^done
--- 16999,17006 ----
  (@value{GDBP})
  000*stopped,reason="breakpoint-hit",bkptno="1",
  frame=@{func="callee4",args=[],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
  (@value{GDBP})
  205-break-delete
  205^done
*************** file="../../../devo/gdb/testsuite/gdb.mi
*** 17005,17010 ****
--- 17010,17016 ----
  args=[@{name="strarg",
  value="0x11940 \"A string argument.\""@}],
  file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
+ fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17037,17043 ****
  ^running
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",
! frame=@{func="main",args=[],file="recursive2.c",line="4"@}
  (@value{GDBP})
  @end smallexample
  
--- 17043,17049 ----
  ^running
  (@value{GDBP})
  *stopped,reason="breakpoint-hit",bkptno="1",
!
frame=@{func="main",args=[],file="recursive2.c",fullname="/.../recursive
2.c",line="4"@}
  (@value{GDBP})
  @end smallexample
  
*************** Stepping into a function:
*** 17090,17096 ****
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
  frame=@{func="foo",args=[@{name="a",value="10"@},
! @{name="b",value="0"@}],file="recursive2.c",line="11"@}
  (@value{GDBP})
  @end smallexample
  
--- 17096,17102 ----
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
  frame=@{func="foo",args=[@{name="a",value="10"@},
!
@{name="b",value="0"@}],file="recursive2.c",fullname="/.../recursive2.c"
,line="11"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17133,17146 ****
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{func="foo",args=[],file="try.c",line="10"@}
  (@value{GDBP})
  -exec-step-instruction
  ^running
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
! frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",line="10"@}
  (@value{GDBP})
  @end smallexample
  
--- 17139,17152 ----
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
!
frame=@{func="foo",args=[],file="try.c",fullname="/.../try.c",line="10"@
}
  (@value{GDBP})
  -exec-step-instruction
  ^running
  
  (@value{GDBP})
  *stopped,reason="end-stepping-range",
!
frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",fullname="/...
/try.c",line="10"@}
  (@value{GDBP})
  @end smallexample
  
*************** The corresponding @value{GDBN} command i
*** 17172,17178 ****
  (@value{GDBP})
  x = 55
  *stopped,reason="location-reached",frame=@{func="main",args=[],
! file="recursive2.c",line="6"@}
  (@value{GDBP})
  @end smallexample
  
--- 17178,17184 ----
  (@value{GDBP})
  x = 55
  *stopped,reason="location-reached",frame=@{func="main",args=[],
! file="recursive2.c",fullname="/.../recursive2.c",line="6"@}
  (@value{GDBP})
  @end smallexample
  
*************** functionality of @samp{-stack-list-argum
*** 17672,17686 ****
  ^done,
  stack=[
  frame=@{level="0",addr="0x00010734",func="callee4",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1",addr="0x0001076c",func="callee3",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
  frame=@{level="2",addr="0x0001078c",func="callee2",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
  frame=@{level="3",addr="0x000107b4",func="callee1",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
--- 17678,17697 ----
  ^done,
  stack=[
  frame=@{level="0",addr="0x00010734",func="callee4",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1",addr="0x0001076c",func="callee3",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
  frame=@{level="2",addr="0x0001078c",func="callee2",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
  frame=@{level="3",addr="0x000107b4",func="callee1",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
*************** Full stack backtrace:
*** 17762,17790 ****
  -stack-list-frames
  ^done,stack=
  [frame=@{level="0",addr="0x0001076c",func="foo",
!   file="recursive2.c",line="11"@},
  frame=@{level="1",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="2",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="6",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="7",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="8",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="9",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="10",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",line="4"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17773,17801 ----
  -stack-list-frames
  ^done,stack=
  [frame=@{level="0",addr="0x0001076c",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="11"@},
  frame=@{level="1",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="2",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="6",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="7",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="8",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="9",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="10",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",fullname="/.../recursive2.c",line="4"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show frames between @var{low_frame} and 
*** 17795,17805 ****
  -stack-list-frames 3 5
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17806,17816 ----
  -stack-list-frames 3 5
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="4",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@},
  frame=@{level="5",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show a single frame:
*** 17810,17816 ****
  -stack-list-frames 3 3
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
--- 17821,17827 ----
  -stack-list-frames 3 3
  ^done,stack=
  [frame=@{level="3",addr="0x000107a4",func="foo",
!   file="recursive2.c",fullname="/.../recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
Index: gdb/testsuite/gdb.mi/mi-cli.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-cli.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi-cli.exp
*** gdb/testsuite/gdb.mi/mi-cli.exp	15 Aug 2004 10:15:58 -0000
1.3
--- gdb/testsuite/gdb.mi/mi-cli.exp	24 Mar 2005 18:34:14 -0000
*************** mi_gdb_test "-interpreter-exec console \
*** 100,106 ****
  
  # # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-continue" \
! #
{.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c"
,line="8"\}} \
  #    "-interpreter-exec console \"continue to callee4\""
  send_gdb "999-exec-continue\n"
  gdb_expect {
--- 100,106 ----
  
  # # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-continue" \
! #
{.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c"
,fullname=\".*basics.c\",line="8"\}} \
  #    "-interpreter-exec console \"continue to callee4\""
  send_gdb "999-exec-continue\n"
  gdb_expect {
*************** mi_gdb_test "600-break-insert -t basics.
*** 161,171 ****
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re
"700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,lin
e=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
--- 161,171 ----
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #
{.*\*stopped.*,file=".*basics.c",fullname=".*basics.c",line="$line_main_
hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re
"700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,ful
lname=.*basics.c.,line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
*************** gdb_expect {
*** 175,185 ****
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #
{.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="$lin
e_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re
"800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-r
ange.*,file=.*basics.c.,line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
--- 175,185 ----
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #
{.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",fullname="
.*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re
"800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-r
ange.*,file=.*basics.c.,fullname=.*basics.c.,line=.$line_main_return.*$m
i_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
Index: gdb/testsuite/gdb.mi/mi-return.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-return.exp,v
retrieving revision 1.11
diff -c -p -b -r1.11 mi-return.exp
*** gdb/testsuite/gdb.mi/mi-return.exp	15 Aug 2004 10:15:58 -0000
1.11
--- gdb/testsuite/gdb.mi/mi-return.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_return_simple {} {
*** 53,59 ****
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re
"111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[
.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\r\n$mi_g
db_prompt$" {pass "return from callee4 now"}
  	-re ".*\r\n$mi_gdb_prompt$" { fail "return from callee4 now" }
  	timeout { fail "return from callee4 now (timeout)"
  	}
--- 53,59 ----
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re
"111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[
.*\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee3_
close_brace\"\}\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: gdb/testsuite/gdb.mi/mi-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stack.exp,v
retrieving revision 1.14
diff -c -p -b -r1.14 mi-stack.exp
*** gdb/testsuite/gdb.mi/mi-stack.exp	15 Aug 2004 10:15:58 -0000
1.14
--- gdb/testsuite/gdb.mi/mi-stack.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_stack_frame_listing {} {
*** 57,63 ****
      # -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=\"$line_callee4_body\"\},frame=\{level=\"1\",a
ddr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",fun
c=\"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\"
,.*\}\\\]" \
--- 57,63 ----
      # -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\",fullname=\".*/basics.c\",line=\"$line_callee4_body\
"\},frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{leve
l=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$
hex\",func=\"callee1\",.*\},frame=\{level=\"4\",addr=\"$hex\",func=\"mai
n\",.*\}\\\]" \
                  "stack frame listing"
      mi_gdb_test "232-stack-list-frames 1 1" \
 
"232\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\"
,.*\}\\\]" \
*************** set line_callee4_return_0 [gdb_get_line_
*** 161,167 ****
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",
thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\
],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_promp
t$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
--- 161,167 ----
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",
thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\
],file=\".*basics.c\",fullname=\".*/basics.c\",line=\"$line_callee4_retu
rn_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
Index: gdb/testsuite/gdb.mi/mi-stepi.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stepi.exp,v
retrieving revision 1.10
diff -c -p -b -r1.10 mi-stepi.exp
*** gdb/testsuite/gdb.mi/mi-stepi.exp	15 Aug 2004 10:15:58 -0000
1.10
--- gdb/testsuite/gdb.mi/mi-stepi.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_stepi_nexti {} {
*** 53,59 ****
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "step-instruction at main"
--- 53,59 ----
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r
\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "step-instruction at main"
*************** proc test_stepi_nexti {} {
*** 67,73 ****
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
--- 67,73 ----
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r
\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
*************** proc test_stepi_nexti {} {
*** 81,87 ****
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
--- 81,87 ----
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r
\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
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.2
diff -c -p -b -r1.2 mi-syn-frame.exp
*** gdb/testsuite/gdb.mi/mi-syn-frame.exp	24 Feb 2003 20:15:47
-0000	1.2
--- gdb/testsuite/gdb.mi/mi-syn-frame.exp	24 Mar 2005 18:34:14
-0000
*************** gdb_expect {
*** 69,75 ****
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0"
"404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
--- 69,75 ----
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0"
"404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\
}.*\\\]"
  
  
  #
*************** mi_gdb_test "406-data-evaluate-expressio
*** 83,89 ****
  # We should have both a signal handler and a call dummy frame
  # in this next output.
  
! mi_gdb_test "407-stack-list-frames"
"407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\
",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value
=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=
\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-sy
n-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\
"handler\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\
"2\",addr=\"$hex\",func=\"<signal handler
called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_ver
y_merry_interrupt\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=
\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from
gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".
*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  send_gdb "408-exec-continue\n"
--- 83,89 ----
  # We should have both a signal handler and a call dummy frame
  # in this next output.
  
! mi_gdb_test "407-stack-list-frames"
"407\\^done,reason=\"breakpoint-hit\",bkptno=\"3\",thread-id=\"$decimal\
",frame=\{addr=\"$hex\",func=\"subroutine\",args=\\\[\{name=\"in\",value
=\"$decimal\"\}\\\],file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.
c\",line=\"$decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func
=\"subroutine\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",
line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",f
ile=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"
\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler
called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_ver
y_merry_interrupt\",file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.
c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"
<function called from
gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".
*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\
]"
  
  
  send_gdb "408-exec-continue\n"
*************** gdb_expect {
*** 96,102 ****
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0"
"409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
--- 96,102 ----
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0"
"409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\
}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
*************** mi_gdb_test "409-stack-list-frames 0 0" 
*** 104,110 ****
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in
bar\[\r\n\]+\\&\"The program being debugged was signaled while in a
function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame
where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this
behavior use \\\\\"set unwindonsignal
on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the
function \\(bar\\) will be
abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged
was signaled while in a function called from GDB.\\\\nGDB remains in the
frame where the signal was received.\\\\nTo change this behavior use
\\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression
containing the function \\(bar\\) will be abandoned.\"" "call inferior
function which raises exception"
  
! mi_gdb_test "411-stack-list-frames"
"411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning
=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\
\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{
level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"
$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called
from
gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn
-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function
at exception"
  
  mi_gdb_exit
  
--- 104,110 ----
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in
bar\[\r\n\]+\\&\"The program being debugged was signaled while in a
function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame
where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this
behavior use \\\\\"set unwindonsignal
on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the
function \\(bar\\) will be
abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged
was signaled while in a function called from GDB.\\\\nGDB remains in the
frame where the signal was received.\\\\nTo change this behavior use
\\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression
containing the function \\(bar\\) will be abandoned.\"" "call inferior
function which raises exception"
  
! mi_gdb_test "411-stack-list-frames"
"411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning
=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\
\\[\\\],file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$
decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",fil
e=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"},
frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from
gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn
-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]"
"backtrace from inferior function at exception"
  
  mi_gdb_exit
  
Index: gdb/testsuite/gdb.mi/mi-until.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-until.exp,v
retrieving revision 1.8
diff -c -p -b -r1.8 mi-until.exp
*** gdb/testsuite/gdb.mi/mi-until.exp	9 Aug 2004 16:32:44 -0000
1.8
--- gdb/testsuite/gdb.mi/mi-until.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_until {} {
*** 78,84 ****
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\
\\],file=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
--- 78,84 ----
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\
\\],file=\".*until.c\",fullname=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_p
rompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
*************** proc test_until {} {
*** 88,94 ****
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
--- 88,94 ----
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",fullname=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_pro
mpt$" {
  	    pass "until line number"
  	}
  	timeout {
*************** proc test_until {} {
*** 98,104 ****
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
--- 98,104 ----
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",fullname=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_pro
mpt$" {
  	    pass "until line number:file"
  	}
  	timeout {
*************** proc test_until {} {
*** 110,116 ****
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re
"444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\
\],file=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
--- 110,116 ----
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re
"444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\
\],file=\".*until.c\",fullname=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_pr
ompt$" {
  	    pass "until after current function"
  	}
  	timeout {
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.12
diff -c -p -b -r1.12 mi-var-display.exp
*** gdb/testsuite/gdb.mi/mi-var-display.exp	17 Aug 2004 09:38:29
-0000	1.12
--- gdb/testsuite/gdb.mi/mi-var-display.exp	24 Mar 2005 18:34:14
-0000
*************** mi_gdb_test "200-break-insert $line_dct_
*** 48,54 ****
  mi_run_cmd
  # The running part has been checked already by mi_run_cmd
  gdb_expect {
!     -re
"\[\r\n\]*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id
=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_children_tests\",args=\\\[\\
\],file=\".*var-cmd.c\",line=\"$line_dct_close_brace\"\}\r\n$mi_gdb_prom
pt$" {
  	pass "run to do_children_tests"
      }
      -re ".*$mi_gdb_prompt$" {fail "run to do_children_tests (2)"}
--- 48,54 ----
  mi_run_cmd
  # The running part has been checked already by mi_run_cmd
  gdb_expect {
!     -re
"\[\r\n\]*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id
=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_children_tests\",args=\\\[\\
\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\"$line_dct_close_
brace\"\}\r\n$mi_gdb_prompt$" {
  	pass "run to do_children_tests"
      }
      -re ".*$mi_gdb_prompt$" {fail "run to do_children_tests (2)"}
*************** mi_gdb_test "200-break-insert do_special
*** 332,338 ****
  
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_special_te
sts\",args=\\\[\\\],file=\".*var-cmd.c\",line=\"$line_dst_a_1\"\}\r\n$mi
_gdb_prompt$" {
  	pass "continue to do_special_tests"
      }
      timeout {
--- 332,338 ----
  
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"2\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"do_special_te
sts\",args=\\\[\\\],file=\".*var-cmd.c\",fullname=\".*var-cmd.c\",line=\
"$line_dst_a_1\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to do_special_tests"
      }
      timeout {
*************** mi_gdb_test "200-break-insert incr_a" \
*** 592,601 ****
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",line=\"$line
_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",line=\"([expr
$line_incr_a_b_a - 2]|[expr $line_incr_a_b_a -
1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
--- 592,601 ----
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".
*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".*
var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a -
1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
Index: gdb/testsuite/gdb.mi/mi-watch.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-watch.exp,v
retrieving revision 1.11
diff -c -p -b -r1.11 mi-watch.exp
*** gdb/testsuite/gdb.mi/mi-watch.exp	15 Aug 2004 10:15:58 -0000
1.11
--- gdb/testsuite/gdb.mi/mi-watch.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_watchpoint_triggering {} {
*** 139,145 ****
      gdb_expect {
        -re "222\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re
"222\\*stopped,reason=\"watchpoint-trigger\",wpt=\{number=\"2\",exp=\"C\
"\},value=\{old=\".*\",new=\"3\"\},thread-id=\"\[01\]\",frame=\{addr=\"$
hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",line=\"$line_ca
llee4_return_0\"\}\r\n$mi_gdb_prompt$" {
              pass "watchpoint trigger"
            }
            -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (2)"}
--- 139,145 ----
      gdb_expect {
        -re "222\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re
"222\\*stopped,reason=\"watchpoint-trigger\",wpt=\{number=\"2\",exp=\"C\
"\},value=\{old=\".*\",new=\"3\"\},thread-id=\"\[01\]\",frame=\{addr=\"$
hex\",func=\"callee4\",args=\\\[\\\],file=\".*basics.c\",fullname=\".*ba
sics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_prompt$" {
              pass "watchpoint trigger"
            }
            -re ".*$mi_gdb_prompt$" {fail "watchpoint trigger (2)"}
*************** proc test_watchpoint_triggering {} {
*** 154,160 ****
      gdb_expect {
        -re "223\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re
"\[\r\n\]*223\\*stopped,reason=\"watchpoint-scope\",wpnum=\"2\",thread-i
d=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file
=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\r\n$mi_gdb_prompt$"
{
              pass "wp out of scope"
            }
            -re ".*$mi_gdb_prompt$" {fail "wp out of scope (2)"}
--- 154,160 ----
      gdb_expect {
        -re "223\\^running\r\n$mi_gdb_prompt" {
          gdb_expect {
! 	    -re
"\[\r\n\]*223\\*stopped,reason=\"watchpoint-scope\",wpnum=\"2\",thread-i
d=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file
=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee3_close_brace
\"\}\r\n$mi_gdb_prompt$" {
              pass "wp out of scope"
            }
            -re ".*$mi_gdb_prompt$" {fail "wp out of scope (2)"}
Index: gdb/testsuite/gdb.mi/mi2-cli.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-cli.exp,v
retrieving revision 1.2
diff -c -p -b -r1.2 mi2-cli.exp
*** gdb/testsuite/gdb.mi/mi2-cli.exp	15 Aug 2004 10:15:58 -0000
1.2
--- gdb/testsuite/gdb.mi/mi2-cli.exp	24 Mar 2005 18:34:14 -0000
*************** mi_gdb_test "600-break-insert -t basics.
*** 161,171 ****
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #   {.*\*stopped.*,file=".*basics.c",line="$line_main_hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re
"700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,lin
e=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
--- 161,171 ----
  	"-break-insert -t basics.c:\$line_main_hello"
  
  # mi_gdb_test "-exec-continue" \
! #
{.*\*stopped.*,file=".*basics.c",fullname=".*basics.c",line="$line_main_
hello"\}} \
  #   "-exec-continue to line \$line_main_hello"
  send_gdb "700-exec-continue\n"
  gdb_expect {
!     -re
"700\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped.*,file=.*basics.c.,ful
lname=.*basics.c.,line=.$line_main_hello.*$mi_gdb_prompt$" {
  	pass "-exec-continue to line \$line_main_hello"
      }
      timeout {
*************** gdb_expect {
*** 175,185 ****
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #
{.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="$lin
e_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re
"800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-r
ange.*,file=.*basics.c.,line=.$line_main_return.*$mi_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
--- 175,185 ----
  
  # NOTE: cagney/2003-02-03: Not yet.
  # mi_gdb_test "-exec-next" \
! #
{.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",fullname="
.*basics.c",line="$line_main_return"\}} \
  #   "-exec-next to line \$line_main_return"
  send_gdb "800-exec-next\n"
  gdb_expect {
!     -re
"800\\^running\[\r\n\]+$mi_gdb_prompt.*\\*stopped,reason=.end-stepping-r
ange.*,file=.*basics.c.,fullname=.*basics.c.,line=.$line_main_return.*$m
i_gdb_prompt$" {
  	pass "-exec-next to line \$line_main_return"
      }
      timeout {
Index: gdb/testsuite/gdb.mi/mi2-return.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-return.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-return.exp
*** gdb/testsuite/gdb.mi/mi2-return.exp	15 Aug 2004 10:15:58 -0000
1.3
--- gdb/testsuite/gdb.mi/mi2-return.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_return_simple {} {
*** 53,59 ****
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re
"111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[
.*\\\],file=\".*basics.c\",line=\"$line_callee3_close_brace\"\}\r\n$mi_g
db_prompt$" {pass "return from callee4 now"}
  	-re ".*\r\n$mi_gdb_prompt$" { fail "return from callee4 now" }
  	timeout { fail "return from callee4 now (timeout)"
  	}
--- 53,59 ----
  
      send_gdb "111-exec-return\n"
      gdb_expect {
! 	-re
"111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[
.*\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee3_
close_brace\"\}\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: gdb/testsuite/gdb.mi/mi2-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-stack.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-stack.exp
*** gdb/testsuite/gdb.mi/mi2-stack.exp	15 Aug 2004 10:15:58 -0000
1.3
--- gdb/testsuite/gdb.mi/mi2-stack.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_stack_frame_listing {} {
*** 57,63 ****
      # -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=\"$line_callee4_body\"\},frame=\{level=\"1\",a
ddr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",fun
c=\"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\"
,.*\}\\\]" \
--- 57,63 ----
      # -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\",fullname=\".*basics.c\",line=\"$line_callee4_body\"
\},frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level
=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$h
ex\",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\"
,.*\}\\\]" \
*************** set line_callee4_return_0 [gdb_get_line_
*** 160,166 ****
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",
thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\
],file=\".*basics.c\",line=\"$line_callee4_return_0\"\}\r\n$mi_gdb_promp
t$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
--- 160,166 ----
  # step until A, B, C, have some reasonable values.
  send_gdb "-exec-next 3\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"end-stepping-range\",
thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"callee4\",args=\\\[\\\
],file=\".*basics.c\",fullname=\".*basics.c\",line=\"$line_callee4_retur
n_0\"\}\r\n$mi_gdb_prompt$" {
  	pass "next's in callee4"
      }
      timeout { fail "next in callee4 (timeout)" }
Index: gdb/testsuite/gdb.mi/mi2-stepi.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-stepi.exp,v
retrieving revision 1.3
diff -c -p -b -r1.3 mi2-stepi.exp
*** gdb/testsuite/gdb.mi/mi2-stepi.exp	15 Aug 2004 10:15:58 -0000
1.3
--- gdb/testsuite/gdb.mi/mi2-stepi.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_stepi_nexti {} {
*** 53,59 ****
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "step-instruction at main"
--- 53,59 ----
  
      send_gdb "111-exec-step-instruction\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r
\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "step-instruction at main"
*************** proc test_stepi_nexti {} {
*** 67,73 ****
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
--- 67,73 ----
      }
      send_gdb "222-exec-next-instruction\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r
\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
*************** proc test_stepi_nexti {} {
*** 81,87 ****
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
--- 81,87 ----
      }
      send_gdb "333-exec-next-instruction\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[
\\\],file=\".*basics.c\",fullname=\".*basics.c\",line=\"(\[0-9\]+)\"\}\r
\n$mi_gdb_prompt$" {
  	    set line $expect_out(1,string)
  	    if { $line >= $line_main_body && $line <= $line_main_hello }
{
  		pass "next-instruction at main"
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.1
diff -c -p -b -r1.1 mi2-syn-frame.exp
*** gdb/testsuite/gdb.mi/mi2-syn-frame.exp	7 Aug 2003 17:47:42
-0000	1.1
--- gdb/testsuite/gdb.mi/mi2-syn-frame.exp	24 Mar 2005 18:34:14
-0000
*************** gdb_expect {
*** 69,75 ****
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0"
"404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  
  #
--- 69,75 ----
    }
  }
  
! mi_gdb_test "404-stack-list-frames 0 0"
"404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\
}.*\\\]"
  
  
  #
*************** gdb_expect {
*** 96,102 ****
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0"
"409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
--- 96,102 ----
    }
  }
  
! mi_gdb_test "409-stack-list-frames 0 0"
"409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",fi
le=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"\
}.*\\\]"
  
  #
  # Call bar() by hand, which should get an exception while running.
*************** mi_gdb_test "409-stack-list-frames 0 0" 
*** 104,110 ****
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in
bar\[\r\n\]+\\&\"The program being debugged was signaled while in a
function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame
where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this
behavior use \\\\\"set unwindonsignal
on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the
function \\(bar\\) will be
abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged
was signaled while in a function called from GDB.\\\\nGDB remains in the
frame where the signal was received.\\\\nTo change this behavior use
\\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression
containing the function \\(bar\\) will be abandoned.\"" "call inferior
function which raises exception"
  
! mi_gdb_test "411-stack-list-frames"
"411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning
=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\
\\[\\\],file=\".*mi-syn-frame.c\",line=\"$decimal\"\},stack=\\\[frame=\{
level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",line=\"
$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called
from
gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn
-frame.c\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function
at exception"
  
  mi_gdb_exit
  
--- 104,110 ----
  
  mi_gdb_test "410-data-evaluate-expression bar()" "hi in
bar\[\r\n\]+\\&\"The program being debugged was signaled while in a
function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame
where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this
behavior use \\\\\"set unwindonsignal
on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the
function \\(bar\\) will be
abandoned.\\\\n\"\[\r\n\]+410\\^error,msg=\"The program being debugged
was signaled while in a function called from GDB.\\\\nGDB remains in the
frame where the signal was received.\\\\nTo change this behavior use
\\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression
containing the function \\(bar\\) will be abandoned.\"" "call inferior
function which raises exception"
  
! mi_gdb_test "411-stack-list-frames"
"411\\^done,reason=\"signal-received\",signal-name=\".*\",signal-meaning
=\".*\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"bar\",args=\
\\[\\\],file=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$
decimal\"\},stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",fil
e=\".*mi-syn-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"},
frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from
gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn
-frame.c\",fullname=\".*mi-syn-frame.c\",line=\"$decimal\"}.*\\\]"
"backtrace from inferior function at exception"
  
  mi_gdb_exit
  
Index: gdb/testsuite/gdb.mi/mi2-until.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-until.exp,v
retrieving revision 1.2
diff -c -p -b -r1.2 mi2-until.exp
*** gdb/testsuite/gdb.mi/mi2-until.exp	9 Aug 2004 22:21:54 -0000
1.2
--- gdb/testsuite/gdb.mi/mi2-until.exp	24 Mar 2005 18:34:14 -0000
*************** proc test_until {} {
*** 78,84 ****
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\
\\],file=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
--- 78,84 ----
  
      send_gdb "111-exec-until\n"
      gdb_expect {
! 	-re
"111\\^running\r\n${mi_gdb_prompt}111\\*stopped,reason=\"end-stepping-ra
nge\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\
\\],file=\".*until.c\",fullname=\".*until.c\",line=\"12\"\}\r\n$mi_gdb_p
rompt$" {
  	    pass "until after while loop"
  	}
  	timeout {
*************** proc test_until {} {
*** 88,94 ****
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number"
  	}
  	timeout {
--- 88,94 ----
  
      send_gdb "222-exec-until 15\n"
      gdb_expect {
! 	-re
"222\\^running\r\n${mi_gdb_prompt}222\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",fullname=\".*until.c\",line=\"15\"\}\r\n$mi_gdb_pro
mpt$" {
  	    pass "until line number"
  	}
  	timeout {
*************** proc test_until {} {
*** 98,104 ****
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until line number:file"
  	}
  	timeout {
--- 98,104 ----
  
      send_gdb "333-exec-until until.c:17\n"
      gdb_expect {
! 	-re
"333\\^running\r\n${mi_gdb_prompt}333\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"foo\",args=\\\[\\\
],file=\".*until.c\",fullname=\".*until.c\",line=\"17\"\}\r\n$mi_gdb_pro
mpt$" {
  	    pass "until line number:file"
  	}
  	timeout {
*************** proc test_until {} {
*** 110,116 ****
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re
"444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\
\],file=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
  	    pass "until after current function"
  	}
  	timeout {
--- 110,116 ----
  
      send_gdb "444-exec-until until.c:25\n"
      gdb_expect {
! 	-re
"444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reache
d\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\
\],file=\".*until.c\",fullname=\".*until.c\",line=\"24\"\}\r\n$mi_gdb_pr
ompt$" {
  	    pass "until after current function"
  	}
  	timeout {
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.4
diff -c -p -b -r1.4 mi2-var-display.exp
*** gdb/testsuite/gdb.mi/mi2-var-display.exp	17 Aug 2004 09:38:29
-0000	1.4
--- gdb/testsuite/gdb.mi/mi2-var-display.exp	24 Mar 2005 18:34:15
-0000
*************** mi_gdb_test "200-break-insert incr_a" \
*** 592,601 ****
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",line=\"$line
_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",line=\"([expr
$line_incr_a_b_a - 2]|[expr $line_incr_a_b_a -
1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
--- 592,601 ----
  	"break-insert operation"
  send_gdb "-exec-continue\n"
  gdb_expect {
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"2\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".
*var-cmd.c\",line=\"$line_incr_a_b_a\"\}\r\n$mi_gdb_prompt$" {
  	pass "continue to incr_a"
      }
!     -re
"\\^running\r\n${mi_gdb_prompt}\\*stopped,reason=\"breakpoint-hit\",bkpt
no=\"3\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"incr_a\",args
=\\\[\{name=\"a\",value=\"\.*\"\}\\\],file=\".*var-cmd.c\",fullname=\".*
var-cmd.c\",line=\"([expr $line_incr_a_b_a - 2]|[expr $line_incr_a_b_a -
1]|$line_incr_a_b_a)\"\}\r\n$mi_gdb_prompt$" {
  	fail "continue to incr_a (compiler debug info incorrect)"
      }
      -re "\\^running\r\n${mi_gdb_prompt}.*\r\n$mi_gdb_prompt$" {
Index: gdb/testsuite/lib/mi-support.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/mi-support.exp,v
retrieving revision 1.25
diff -c -p -b -r1.25 mi-support.exp
*** gdb/testsuite/lib/mi-support.exp	14 Mar 2005 15:42:52 -0000
1.25
--- gdb/testsuite/lib/mi-support.exp	24 Mar 2005 18:34:15 -0000
*************** proc mi_runto {func} {
*** 813,819 ****
  
    mi_run_cmd
    gdb_expect {
!     -re
".*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"$bkptno\",thread-id=
\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.
*\}\),file=\".*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$" {
        pass "$test"
        return 0
      }
--- 813,819 ----
  
    mi_run_cmd
    gdb_expect {
!     -re
".*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"$bkptno\",thread-id=
\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.
*\}\),file=\".*\",fullname=\".*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$
" {
        pass "$test"
        return 0
      }
*************** proc mi_execute_to_helper { cmd reason f
*** 859,869 ****
      global decimal
      send_gdb "220-$cmd\n"
      gdb_expect {
! 	-re
".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",t
hread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,fi
le=\".*$file\",line=\"$line\"\}$extra\r\n$mi_gdb_prompt$" {
  	    pass "$test"
  	    return 0
  	}
! 	-re
".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",t
hread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].
*\[\\\]\}\],file=\".*\",line=\"\[0-9\]*\"\}.*\r\n$mi_gdb_prompt$" {
  	    fail "$test (stopped at wrong place)"
  	    return -1
  	}
--- 859,869 ----
      global decimal
      send_gdb "220-$cmd\n"
      gdb_expect {
! 	-re
".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",t
hread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,fi
le=\".*$file\",fullname=\".*$file\",line=\"$line\"\}$extra\r\n$mi_gdb_pr
ompt$" {
  	    pass "$test"
  	    return 0
  	}
! 	-re
".*220\\^running\r\n${mi_gdb_prompt}.*220\\*stopped,reason=\"$reason\",t
hread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].
*\[\\\]\}\],file=\".*\",fullname=\".*\",line=\"\[0-9\]*\"\}.*\r\n$mi_gdb
_prompt$" {
  	    fail "$test (stopped at wrong place)"
  	    return -1
  	}


^ permalink raw reply	[flat|nested] 103+ messages in thread
* [RFC] fullname attribute for GDB/MI stack frames
@ 2005-03-23 22:22 Dennis Brueni
  2005-03-23 22:34 ` Bob Rossi
  0 siblings, 1 reply; 103+ messages in thread
From: Dennis Brueni @ 2005-03-23 22:22 UTC (permalink / raw)
  To: gdb-patches; +Cc: Dennis Brueni


Using the GDB/MI interface, there is no direct way to get the
absolute path name of a source file referenced in a stack frame.
All that is reported is the relative path of the source file.
This makes it tedious to locate the correct source file and
and especially difficult in the case where source files in
different directories share the same file name.

The following patch fixes the code that reports stack frames
to append a "fullname" attribute to each stack frame, reporting
the absolute path name of the source file.  This effects MI output
mode only and does not hurt performance.

--Dennis Brueni
  dennis@slickedit.com


Index: gdb/stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v

$ diff -c -p -b stack.c-6.3 stack.c
*** stack.c-6.3 Wed Mar 23 17:03:57 2005
--- stack.c     Wed Mar 23 15:40:11 2005
*************** print_frame (struct frame_info *fi,
*** 666,671 ****
--- 666,679 ----
        ui_out_text (uiout, " at ");
        annotate_frame_source_file ();
        ui_out_field_string (uiout, "file", sal.symtab->filename);
+       if (ui_out_is_mi_like_p(uiout)) {
+          if (!sal.symtab->fullname) {
+             source_full_path_of(sal.symtab->filename,
&sal.symtab->fullname);
+          }
+          if (sal.symtab->fullname) {
+             ui_out_field_string (uiout, "fullname",
sal.symtab->fullname);
+          }
+       }
        annotate_frame_source_file_end ();
        ui_out_text (uiout, ":");
        annotate_frame_source_line ();


------------------------
Dennis Brueni
Software Engineer
SlickEdit Inc.
3000 Aerial Center Pkwy, Suite 120
Morrisville, NC  27560
919.473.0132
Fax:  919.473.0080
http://www.slickedit.com
------------------------    	


^ permalink raw reply	[flat|nested] 103+ messages in thread

end of thread, other threads:[~2005-05-18  3:43 UTC | newest]

Thread overview: 103+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-01 19:13 [RFC] fullname attribute for GDB/MI stack frames Dennis Brueni
2005-04-02  9:22 ` Eli Zaretskii
2005-04-30 19:18 ` Daniel Jacobowitz
2005-05-01  2:19   ` Bob Rossi
2005-05-01 18:24     ` Eli Zaretskii
2005-05-01 18:34       ` Bob Rossi
2005-05-01 19:02         ` Daniel Jacobowitz
2005-05-02  0:55           ` Bob Rossi
2005-05-02  0:54       ` Bob Rossi
2005-05-02  0:58         ` Daniel Jacobowitz
2005-05-02 19:30         ` Eli Zaretskii
2005-05-02 19:36           ` Bob Rossi
2005-05-02 19:52             ` Eli Zaretskii
2005-05-02 19:55               ` Daniel Jacobowitz
2005-05-02 20:42                 ` Eli Zaretskii
2005-05-02 20:49                   ` Daniel Jacobowitz
2005-05-02 21:20                     ` Bob Rossi
2005-05-03  3:49                       ` Eli Zaretskii
2005-05-03  3:42                     ` Eli Zaretskii
2005-05-03  3:46                       ` Daniel Jacobowitz
2005-05-03 19:36                         ` Eli Zaretskii
2005-05-03 19:49                           ` Daniel Jacobowitz
2005-05-03 20:05                             ` Bob Rossi
2005-05-03 20:49                             ` Eli Zaretskii
2005-05-04 13:34                               ` Daniel Jacobowitz
2005-05-04 13:51                                 ` Bob Rossi
2005-05-04 13:52                                   ` Daniel Jacobowitz
2005-05-04 17:51                                   ` Eli Zaretskii
2005-05-04 18:06                                     ` Bob Rossi
2005-05-04 20:32                                       ` Eli Zaretskii
2005-05-04 18:05                                 ` Eli Zaretskii
2005-05-04 18:32                                   ` Daniel Jacobowitz
2005-05-04 20:53                                     ` Eli Zaretskii
2005-05-04 21:07                                       ` Daniel Jacobowitz
2005-05-04 21:42                                         ` Eli Zaretskii
2005-05-04 22:01                                           ` Daniel Jacobowitz
2005-05-04 23:42                                             ` Christopher Faylor
2005-05-05  4:15                                             ` Eli Zaretskii
2005-05-04 23:40                                         ` Christopher Faylor
2005-05-05  0:05                                           ` Bob Rossi
2005-05-05  4:02                                           ` Eli Zaretskii
2005-05-04 23:37                                       ` Christopher Faylor
2005-05-05  4:05                                         ` Eli Zaretskii
2005-05-03 19:57                           ` Bob Rossi
2005-05-03 21:15                             ` Eli Zaretskii
2005-05-03 21:39                               ` Christopher Faylor
2005-05-03 22:24                                 ` Daniel Jacobowitz
2005-05-03 22:27                                   ` Christopher Faylor
2005-05-04  2:32                                     ` Bob Rossi
2005-05-04  3:05                                       ` Christopher Faylor
2005-05-04 17:42                                       ` Eli Zaretskii
2005-05-04  4:12                                   ` Eli Zaretskii
2005-05-04 13:00                                     ` Daniel Jacobowitz
2005-05-04  4:27                                 ` Eli Zaretskii
2005-05-04 11:48                                   ` Bob Rossi
2005-05-04 14:55                                     ` Christopher Faylor
2005-05-04 15:02                                       ` Bob Rossi
2005-05-04 17:43                                       ` Eli Zaretskii
2005-05-04 17:58                                         ` Christopher Faylor
2005-05-04 18:29                                           ` Eli Zaretskii
2005-05-04 20:39                                           ` Eli Zaretskii
2005-05-04 23:34                                             ` Christopher Faylor
2005-05-05  4:08                                               ` Eli Zaretskii
2005-05-04 13:45                                   ` Daniel Jacobowitz
2005-05-04 20:20                                     ` Eli Zaretskii
2005-05-04 20:30                                       ` Daniel Jacobowitz
2005-05-04 21:24                                         ` Eli Zaretskii
2005-05-04 14:52                                   ` Christopher Faylor
2005-05-04 17:48                                     ` Eli Zaretskii
2005-05-04 18:03                                       ` Christopher Faylor
2005-05-04 18:26                                         ` Eli Zaretskii
2005-05-03 21:39                               ` Bob Rossi
2005-05-03 22:14                                 ` Christopher Faylor
2005-05-04  4:08                                   ` Eli Zaretskii
2005-05-04 13:39                                     ` Daniel Jacobowitz
2005-05-04 17:49                                       ` Eli Zaretskii
2005-05-04  4:18                                 ` Eli Zaretskii
2005-05-03 22:50                           ` Bob Rossi
2005-05-04  4:04                             ` Eli Zaretskii
2005-05-05 17:20       ` Bob Rossi
2005-05-05 18:04         ` Eli Zaretskii
2005-05-05 19:18         ` Christopher Faylor
2005-05-05 23:53           ` Bob Rossi
2005-05-05 16:22     ` Bob Rossi
2005-05-05 16:26       ` Daniel Jacobowitz
2005-05-05 16:46         ` Bob Rossi
2005-05-05 17:17           ` Daniel Jacobowitz
2005-05-18  4:44   ` Daniel Jacobowitz
  -- strict thread matches above, loose matches on Subject: below --
2005-05-05 15:15 Dennis Brueni
2005-05-05 15:25 ` Bob Rossi
2005-05-05 15:28   ` Daniel Jacobowitz
2005-05-05 15:32     ` Bob Rossi
2005-05-02 14:22 Dennis Brueni
2005-05-02 19:38 ` Eli Zaretskii
2005-04-01 15:09 Dennis Brueni
2005-03-29 20:43 Dennis Brueni
2005-03-30  4:46 ` Eli Zaretskii
2005-04-01  1:41 ` Bob Rossi
2005-03-26 13:43 Eli Zaretskii
2005-03-26 13:50 ` Bob Rossi
2005-03-24 20:49 Dennis Brueni
2005-03-23 22:22 Dennis Brueni
2005-03-23 22:34 ` Bob Rossi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox