This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[rfc/testsuite/mi] use gdb_get_line_number
- From: Michael Chastain <mec dot gnu at mindspring dot com>
- To: cagney at redhat dot com, ezannoni at redhat dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: Tue, 10 Aug 2004 04:45:30 -0400
- Subject: [rfc/testsuite/mi] use gdb_get_line_number
Here is a draft patch for gdb.mi/mi-break.exp to use
gdb_get_line_number.
It works, but that's beside the point. I'm looking for the right style.
So this is RFC, not RFA.
Some questions:
. there are a lot of line_* variables. how would you like me to name
them and manage them?
. some of the test names have line numbers embedded in them:
"insert temp breakpoint at basics.c:15 (callee3)"
this is now
"insert temp breakpoint at basics.c:$line_callee3 (callee3)"
so the name floats around as basics.c changes. That is, I just
did the simple stupid substitution. What would you really like for
test names like this?
. what units of patch submission would you like: one file at a time,
or pairs of files at a time, or all the files related to basics.c
at a time?
. anything else?
I can just do whatever I think best for some of these things, but I
thought it would be good to get style clues before I go write patches
for 20 or 30 files.
Tested on native i686-pc-linux-gnu, gcc 2.95.3 3.3.4 3.4.1, dwarf-2 and
stabs+. Also I threw a copyright header into basics.c and ran it again,
and the test script followed the line numbers like it should.
What do you think?
Michael C
2004-08-10 Michael Chastain <mec.gnu@mindspring.com>
* gdb.mi/mi-break.exp: Use gdb_get_line_number.
Index: mi-break.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-break.exp,v
retrieving revision 1.6
diff -c -3 -p -r1.6 mi-break.exp
*** mi-break.exp 9 Aug 2004 16:32:44 -0000 1.6
--- mi-break.exp 10 Aug 2004 08:26:31 -0000
***************
*** 1,4 ****
! # Copyright 1999, 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
--- 1,4 ----
! # Copyright 1999, 2001, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
***************
*** 14,22 ****
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- # Please email any bugs, comments, and/or additions to this file to:
- # bug-gdb@prep.ai.mit.edu
-
#
# Test essential Machine interface (MI) operations
#
--- 14,19 ----
*************** mi_delete_breakpoints
*** 47,85 ****
mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_load ${binfile}
proc test_tbreak_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
global hex
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
# Tests:
# -break-insert -t main
# -break-insert -t basics.c:callee2
! # -break-insert -t basics.c:15
! # -break-insert -t srcfile:6
# -break-list
mi_gdb_test "222-break-insert -t main" \
! "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\}" \
"break-insert -t operation"
mi_gdb_test "333-break-insert -t basics.c:callee2" \
! "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"22\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:callee2"
! mi_gdb_test "444-break-insert -t basics.c:15" \
! "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"15\",times=\"0\"\}" \
! "insert temp breakpoint at basics.c:15 (callee3)"
!
! # Getting the quoting right is tricky. That is "\"<file>\":6"
! mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":6\"" \
! "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"6\",times=\"0\"\}" \
! "insert temp breakpoint at \"<fullfilename>\":6 (callee4)"
mi_gdb_test "666-break-list" \
! "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\}.*\\\]\}" \
"list of breakpoints"
mi_gdb_test "777-break-delete" \
--- 44,99 ----
mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_load ${binfile}
+ # Locate line numbers in basics.c.
+ set line_callee4 [expr [gdb_get_line_number "callee4 ("]]
+ set line_callee4_plus_2 [expr [gdb_get_line_number "callee4 ("] + 2]
+ set line_callee3 [expr [gdb_get_line_number "callee3 ("]]
+ set line_callee3_plus_2 [expr [gdb_get_line_number "callee3 ("] + 2]
+ set line_callee2 [expr [gdb_get_line_number "callee2 ("]]
+ set line_callee2_plus_2 [expr [gdb_get_line_number "callee2 ("] + 2]
+ set line_callee1 [expr [gdb_get_line_number "callee1 ("]]
+ set line_callee1_plus_2 [expr [gdb_get_line_number "callee1 ("] + 2]
+ set line_main [expr [gdb_get_line_number "main ("]]
+ set line_main_plus_2 [expr [gdb_get_line_number "main ("] + 2]
+
proc test_tbreak_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
global hex
+ global line_callee4 line_callee4_plus_2
+ global line_callee3 line_callee3_plus_2
+ global line_callee2 line_callee2_plus_2
+ global line_callee1 line_callee1_plus_2
+ global line_main line_main_plus_2
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
# Tests:
# -break-insert -t main
# -break-insert -t basics.c:callee2
! # -break-insert -t basics.c:$line_callee3
! # -break-insert -t srcfile:$line_callee4
# -break-list
mi_gdb_test "222-break-insert -t main" \
! "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_plus_2\",times=\"0\"\}" \
"break-insert -t operation"
mi_gdb_test "333-break-insert -t basics.c:callee2" \
! "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"$line_callee2_plus_2\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:callee2"
! mi_gdb_test "444-break-insert -t basics.c:$line_callee3" \
! "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"$line_callee3\",times=\"0\"\}" \
! "insert temp breakpoint at basics.c:$line_callee3 (callee3)"
!
! # Getting the quoting right is tricky. That is "\"<file>\":$line_callee4"
! mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4\"" \
! "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4\",times=\"0\"\}" \
! "insert temp breakpoint at \"<fullfilename>\":$line_callee4 (callee4)"
mi_gdb_test "666-break-list" \
! "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_plus_2\",times=\"0\"\}.*\\\]\}" \
"list of breakpoints"
mi_gdb_test "777-break-delete" \
*************** proc test_rbreak_creation_and_listing {}
*** 91,96 ****
--- 105,115 ----
global mi_gdb_prompt
global srcfile
global hex
+ global line_callee4 line_callee4_plus_2
+ global line_callee3 line_callee3_plus_2
+ global line_callee2 line_callee2_plus_2
+ global line_callee1 line_callee1_plus_2
+ global line_main line_main_plus_2
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
*************** proc test_rbreak_creation_and_listing {}
*** 103,129 ****
setup_xfail "*-*-*"
mi_gdb_test "122-break-insert -r main" \
! "122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",line=\"32\"\}" \
"break-insert -r operation"
setup_xfail "*-*-*"
mi_gdb_test "133-break-insert -r callee2" \
! "133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",line=\"22\"\}" \
"insert breakpoint with regexp callee2"
setup_xfail "*-*-*"
mi_gdb_test "144-break-insert -r callee" \
! "144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",line=\"27\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",line=\"22\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",line=\"17\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",line=\"8\"\}" \
"insert breakpoint with regexp callee"
setup_xfail "*-*-*"
mi_gdb_test "155-break-insert -r \.\*llee" \
! "155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",line=\"27\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",line=\"22\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",line=\"17\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",line=\"8\"\}" \
"insert breakpoint with regexp .*llee"
setup_xfail "*-*-*"
mi_gdb_test "166-break-list" \
! "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"32\",times=\"0\"\},.*\}\\\]\}" \
"list of breakpoints"
mi_gdb_test "177-break-delete" \
--- 122,148 ----
setup_xfail "*-*-*"
mi_gdb_test "122-break-insert -r main" \
! "122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_main_plus_2\"\}" \
"break-insert -r operation"
setup_xfail "*-*-*"
mi_gdb_test "133-break-insert -r callee2" \
! "133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_plus_2\"\}" \
"insert breakpoint with regexp callee2"
setup_xfail "*-*-*"
mi_gdb_test "144-break-insert -r callee" \
! "144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee1_plus_2\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_plus_2\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee3_plus_2\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee4_plus_2\"\}" \
"insert breakpoint with regexp callee"
setup_xfail "*-*-*"
mi_gdb_test "155-break-insert -r \.\*llee" \
! "155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee1_plus_2\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_plus_2\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee3_plus_2\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee4_plus_2\"\}" \
"insert breakpoint with regexp .*llee"
setup_xfail "*-*-*"
mi_gdb_test "166-break-list" \
! "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_plus_2\",times=\"0\"\},.*\}\\\]\}" \
"list of breakpoints"
mi_gdb_test "177-break-delete" \