* gdb.asm/asm-source.exp: Use gdb_get_line_number, instead of
authorJim Blandy <jimb@codesourcery.com>
Sat, 22 Dec 2007 06:44:28 +0000 (06:44 +0000)
committerJim Blandy <jimb@codesourcery.com>
Sat, 22 Dec 2007 06:44:28 +0000 (06:44 +0000)
hard-coding source line numbers into the test.
* gdb.asm/asmsrc1.s, gdb.asm/asmsrc2.s: Add comments for
gdb_get_line_number to find.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.asm/asm-source.exp
gdb/testsuite/gdb.asm/asmsrc1.s
gdb/testsuite/gdb.asm/asmsrc2.s

index a340fff42855407031d00198c5e4625f307df5ab..38252d7bf26fab8751ff6919b1e531a749793e41 100644 (file)
@@ -1,3 +1,10 @@
+2007-12-22  Jim Blandy  <jimb@codesourcery.com>
+
+       * gdb.asm/asm-source.exp: Use gdb_get_line_number, instead of
+       hard-coding source line numbers into the test.
+       * gdb.asm/asmsrc1.s, gdb.asm/asmsrc2.s: Add comments for
+       gdb_get_line_number to find.
+
 2007-12-22  Joel Brobecker  <brobecker@adacore.com>
 
        * gdb.base/ptype.c (highest): New struct type.
index ba91afd102cf56fa146d7b3184cb1439485a67a4..1da7ea03cfb6506cf21263d5bc5ddcc7484b3cb1 100644 (file)
@@ -265,6 +265,16 @@ if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
 
 remote_exec build "mv asmsrc1.o asmsrc2.o ${objdir}/${subdir}"
 
+# Collect some line numbers.
+set line_main       [expr [gdb_get_line_number "main start" "asmsrc1.s"] + 1]
+set line_call_foo2  [expr [gdb_get_line_number "call foo2"  "asmsrc1.s"] + 1]
+set line_search_comment [expr [gdb_get_line_number "search" "asmsrc1.s"] + 1]
+set line_foo3       [expr [gdb_get_line_number "foo3 start" "asmsrc1.s"] + 1]
+set line_main_exit  [expr [gdb_get_line_number "main exit"  "asmsrc1.s"] + 1]
+set line_foo2       [expr [gdb_get_line_number "foo2 start" "asmsrc2.s"] + 1]
+set line_call_foo3  [expr [gdb_get_line_number "call foo3"  "asmsrc2.s"] + 1]
+set line_call_foo3_again [expr $line_call_foo3 + 1]
+set line_foo2_leave [expr [gdb_get_line_number "foo2 leave" "asmsrc2.s"] + 1]
 
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
@@ -279,13 +289,13 @@ if ![runto_main] then {
 }
 
 # Execute the `f' command and see if the result includes source info.
-gdb_test "f" "asmsrc1\[.\]s:29.*several_nops" "f at main"
+gdb_test "f" "asmsrc1\[.\]s:$line_main.*several_nops" "f at main"
 
 # See if we properly `next' over a macro with several insns.
-gdb_test "n" "33\[     \]*.*foo2" "next over macro"
+gdb_test "n" "$line_call_foo2\[        \]*.*foo2" "next over macro"
 
 # See if we can properly `step' into a subroutine call.
-gdb_test "s" "8\[      \]*.*" "step into foo2"
+gdb_test "s" "$line_foo2\[     \]*.*" "step into foo2"
 
 # Test 'info target', and incidentally capture the entry point address.
 set entry_point 0
@@ -335,23 +345,23 @@ gdb_test "list $entry_symbol" ".*gdbasm_startup.*" "list"
 
 # Now try a source file search
 gdb_test "search A routine for foo2 to call" \
-       "40\[ \t\]+comment \"A routine for foo2 to call.\"" "search"
+       "$line_search_comment\[ \t\]+comment \"A routine for foo2 to call.\"" "search"
 
 # See if `f' prints the right source file.
-gdb_test "f" ".*asmsrc2\[.\]s:8.*" "f in foo2"
+gdb_test "f" ".*asmsrc2\[.\]s:$line_foo2.*" "f in foo2"
 
 # `next' one insn (or macro) to set up our stackframe (for the following bt).
-gdb_test "n" "12\[     \]*.*foo3" "n in foo2"
+gdb_test "n" "$line_call_foo3\[        \]*.*foo3" "n in foo2"
 
 # See if a simple `bt' prints the right source files and 
 # doesn't fall off the stack.
 
 gdb_test "bt 10" \
-       "\#0.*foo2.*asmsrc2\[.\]s:12.*\#1.*main.*asmsrc1\[.\]s:33" \
+       "\#0.*foo2.*asmsrc2\[.\]s:$line_call_foo3.*\#1.*main.*asmsrc1\[.\]s:$line_call_foo2" \
        "bt ALL in foo2"
 
 # See if a capped `bt' prints the right source files.
-gdb_test "bt 2" "\#0.*foo2.*asmsrc2\[.\]s:12.*\#1.*main.*asmsrc1\[.\]s:33.*" "bt 2 in foo2"
+gdb_test "bt 2" "\#0.*foo2.*asmsrc2\[.\]s:$line_call_foo3.*\#1.*main.*asmsrc1\[.\]s:$line_call_foo2.*" "bt 2 in foo2"
 
 # Step into another subroutine which lives back in the first source file.
 gdb_test "s" "" "s 2"
@@ -360,7 +370,7 @@ gdb_test "s" "" "s 2"
 gdb_test "n" "" "n 2"
 
 # Now see if a capped `bt' is correct.
-gdb_test "bt 3" "\#0.*foo3.*asmsrc1\[.\]s:45.*\#1.*foo2.*asmsrc2\[.\]s:12.*\#2.*main.*asmsrc1\[.\]s:33.*" "bt 3 in foo3"
+gdb_test "bt 3" "\#0.*foo3.*asmsrc1\[.\]s:$line_foo3.*\#1.*foo2.*asmsrc2\[.\]s:$line_call_foo3.*\#2.*main.*asmsrc1\[.\]s:$line_call_foo2.*" "bt 3 in foo3"
 
 # Try 'info source' from asmsrc1.s
 gdb_test "info source" \
@@ -368,7 +378,7 @@ gdb_test "info source" \
        "info source asmsrc1.s"
 
 # Try 'finishing' from foo3
-gdb_test "finish" "Run till exit from.*\[\r\n\]13\[ \t\]+gdbasm_call foo3" \
+gdb_test "finish" "Run till exit from.*\[\r\n\]$line_call_foo3_again\[ \t\]+gdbasm_call foo3" \
        "finish from foo3"
 
 # Try 'info source' from asmsrc2.s
@@ -410,14 +420,14 @@ gdb_expect {
 
 # Try 'info line'
 gdb_test "info line" \
-       "Line 13 of.*asmsrc2.s.*starts at.*<foo2+.*> and ends at.*<foo2+.*>." \
+       "Line $line_call_foo3_again of.*asmsrc2.s.*starts at.*<foo2+.*> and ends at.*<foo2+.*>." \
        "info line"
 
 # Try 'nexting' over next call to foo3
-gdb_test "next" "17\[ \t\]+gdbasm_leave" "next over foo3"
+gdb_test "next" "$line_foo2_leave\[ \t\]+gdbasm_leave" "next over foo3"
 
 # Try 'return' from foo2
-gdb_test "return" "\#0  main .*37\[ \t\]+gdbasm_exit0" "return from foo2" \
+gdb_test "return" "\#0  main .*$line_main_exit\[ \t\]+gdbasm_exit0" "return from foo2" \
        "Make (foo2|selected stack frame) return now\?.*" "y"
 
 # Disassemble something, check the output
index 6e06b840110410350ec2f3c3aafa16b85a5dd17b..c2c01f7d2cc338a450b85010082d5f60ab5d9bb1 100644 (file)
 
        comment "Call a macro that consists of several lines of assembler code."
 
+       comment "mark: main start"
        gdbasm_several_nops
 
        comment "Call a subroutine in another file."
 
+       comment "mark: call foo2"
        gdbasm_call foo2
 
        comment "All done."
 
+       comment "mark: main exit"
        gdbasm_exit0
        gdbasm_end main
 
+       comment "mark: search"
        comment "A routine for foo2 to call."
 
        .global foo3
        gdbasm_declare foo3
        gdbasm_enter
+       comment "mark: foo3 start"
        gdbasm_leave
        gdbasm_end foo3
 
index fbe7c696861a056ac71e3619ff8a181ad1a479d8..e585ee22c3aa6e630e17626a23caf5cf1382d192 100644 (file)
@@ -5,14 +5,17 @@
 
        .global foo2
        gdbasm_declare foo2
+       comment "mark: foo2 start"
        gdbasm_enter
 
        comment "Call someplace else (several times)."
 
+       comment "mark: call foo3"
        gdbasm_call foo3
        gdbasm_call foo3
 
        comment "All done, return."
 
+       comment "mark: foo2 leave"
        gdbasm_leave
        gdbasm_end foo2