* RFA: Use gdb_get_line_number in asm-source.exp
@ 2007-12-22 6:23 Jim Blandy
2007-12-22 6:39 ` Joel Brobecker
0 siblings, 1 reply; 3+ messages in thread
From: Jim Blandy @ 2007-12-22 6:23 UTC (permalink / raw)
To: gdb-patches
gdb/testsuite/ChangeLog:
2007-12-21 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.
diff -r d3ba4f627ef4 gdb/testsuite/gdb.asm/asm-source.exp
--- a/gdb/testsuite/gdb.asm/asm-source.exp Fri Dec 21 11:12:25 2007 -0800
+++ b/gdb/testsuite/gdb.asm/asm-source.exp Fri Dec 21 21:58:23 2007 -0800
@@ -265,6 +265,16 @@ if { [istarget "m6811-*-*"] || [istarget
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 $line_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_
# 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 "n" "" "n 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
diff -r d3ba4f627ef4 gdb/testsuite/gdb.asm/asmsrc1.s
--- a/gdb/testsuite/gdb.asm/asmsrc1.s Fri Dec 21 11:12:25 2007 -0800
+++ b/gdb/testsuite/gdb.asm/asmsrc1.s Fri Dec 21 22:01:23 2007 -0800
@@ -26,22 +26,27 @@
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
diff -r d3ba4f627ef4 gdb/testsuite/gdb.asm/asmsrc2.s
--- a/gdb/testsuite/gdb.asm/asmsrc2.s Fri Dec 21 11:12:25 2007 -0800
+++ b/gdb/testsuite/gdb.asm/asmsrc2.s Fri Dec 21 22:00:59 2007 -0800
@@ -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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RFA: Use gdb_get_line_number in asm-source.exp
2007-12-22 6:23 RFA: Use gdb_get_line_number in asm-source.exp Jim Blandy
@ 2007-12-22 6:39 ` Joel Brobecker
2007-12-22 9:59 ` Jim Blandy
0 siblings, 1 reply; 3+ messages in thread
From: Joel Brobecker @ 2007-12-22 6:39 UTC (permalink / raw)
To: Jim Blandy; +Cc: gdb-patches
Hi Jim,
> 2007-12-21 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.
FWIW, this looks good to me. There is just ...
> comment "Call a subroutine in another file."
>
> + comment "mark: call foo2"
> gdbasm_call foo2
The indenting here that looks a bit strange.
--
Joel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RFA: Use gdb_get_line_number in asm-source.exp
2007-12-22 6:39 ` Joel Brobecker
@ 2007-12-22 9:59 ` Jim Blandy
0 siblings, 0 replies; 3+ messages in thread
From: Jim Blandy @ 2007-12-22 9:59 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
Joel Brobecker <brobecker at adacore.com> writes:
>> 2007-12-21 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.
>
> FWIW, this looks good to me. There is just ...
>
>> comment "Call a subroutine in another file."
>>
>> + comment "mark: call foo2"
>> gdbasm_call foo2
>
> The indenting here that looks a bit strange.
Thanks for the review. I found a stray bit of debugging code I'd left
in there as well. I've committed the below:
gdb/testsuite/ChangeLog:
2007-12-21 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.
diff -r d3ba4f627ef4 -r a145c8c140db gdb/testsuite/gdb.asm/asm-source.exp
--- a/gdb/testsuite/gdb.asm/asm-source.exp Fri Dec 21 11:12:25 2007 -0800
+++ b/gdb/testsuite/gdb.asm/asm-source.exp Fri Dec 21 22:37:29 2007 -0800
@@ -265,6 +265,16 @@ if { [istarget "m6811-*-*"] || [istarget
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_
# 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 "n" "" "n 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
diff -r d3ba4f627ef4 -r a145c8c140db gdb/testsuite/gdb.asm/asmsrc1.s
--- a/gdb/testsuite/gdb.asm/asmsrc1.s Fri Dec 21 11:12:25 2007 -0800
+++ b/gdb/testsuite/gdb.asm/asmsrc1.s Fri Dec 21 22:37:29 2007 -0800
@@ -26,22 +26,27 @@
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
diff -r d3ba4f627ef4 -r a145c8c140db gdb/testsuite/gdb.asm/asmsrc2.s
--- a/gdb/testsuite/gdb.asm/asmsrc2.s Fri Dec 21 11:12:25 2007 -0800
+++ b/gdb/testsuite/gdb.asm/asmsrc2.s Fri Dec 21 22:37:29 2007 -0800
@@ -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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-12-22 6:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-22 6:23 RFA: Use gdb_get_line_number in asm-source.exp Jim Blandy
2007-12-22 6:39 ` Joel Brobecker
2007-12-22 9:59 ` Jim Blandy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox