From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23440 invoked by alias); 22 Dec 2007 06:03:21 -0000 Received: (qmail 23424 invoked by uid 22791); 22 Dec 2007 06:03:20 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 22 Dec 2007 06:03:13 +0000 Received: (qmail 22004 invoked from network); 22 Dec 2007 06:03:11 -0000 Received: from unknown (HELO localhost) (jimb@127.0.0.2) by mail.codesourcery.com with ESMTPA; 22 Dec 2007 06:03:11 -0000 To: gdb-patches@sourceware.org Subject: RFA: Use gdb_get_line_number in asm-source.exp From: Jim Blandy Date: Sat, 22 Dec 2007 06:23:00 -0000 Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-12/txt/msg00390.txt.bz2 gdb/testsuite/ChangeLog: 2007-12-21 Jim Blandy * 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.* and ends at.*." \ + "Line $line_call_foo3_again of.*asmsrc2.s.*starts at.* and ends at.*." \ "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