This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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" \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]