OSDN Git Service

* gdb.base/break.exp ("breakpoint line number"): Make sure the
authorjimb <jimb>
Wed, 16 Feb 2000 00:11:07 +0000 (00:11 +0000)
committerjimb <jimb>
Wed, 16 Feb 2000 00:11:07 +0000 (00:11 +0000)
default source file is set properly before running this test.

gdb/testsuite/gdb.base/break.exp

index b8f1d7f..ab050b3 100644 (file)
@@ -39,6 +39,10 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
 }
 
+if [get_compiler_info ${binfile}] {
+    return -1
+}
+
 gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
@@ -88,22 +92,31 @@ gdb_test "break $srcfile:factorial" \
 #
 # test break at line number
 #
-gdb_test "break 64" \
-    "Breakpoint.*at.* file .*$srcfile, line 64\\." \
+# Note that the default source file is the last one whose source text
+# was printed.  For native debugging, before we've executed the
+# program, this is the file containing main, but for remote debugging,
+# it's wherever the processor was stopped when we connected to the
+# board.  So, to be sure, we do a list command.
+#
+gdb_test "list main" \
+    ".*main \\(argc, argv, envp\\).*" \
+    "use `list' to establish default source file"
+gdb_test "break 79" \
+    "Breakpoint.*at.* file .*$srcfile, line 79\\." \
     "breakpoint line number"
 
 #
 # test duplicate breakpoint
 #
-gdb_test "break 64" \
-    "Note: breakpoint \[0-9\]+ also set at pc.*Breakpoint \[0-9\]+ at.* file .*$srcfile, line 64\\." \
+gdb_test "break 79" \
+    "Note: breakpoint \[0-9\]+ also set at pc.*Breakpoint \[0-9\]+ at.* file .*$srcfile, line 79\\." \
     "breakpoint duplicate"
 
 #
 # test break at line number in file
 #
-gdb_test "break $srcfile:70" \
-    "Breakpoint.*at.* file .*$srcfile, line 70\\." \
+gdb_test "break $srcfile:85" \
+    "Breakpoint.*at.* file .*$srcfile, line 85\\." \
     "breakpoint line number in file"
 
 
@@ -111,18 +124,23 @@ gdb_test "break $srcfile:70" \
 # check to see what breakpoints are set
 #
 if [target_info exists gdb_stub] {
-    set main_line 57
+    set main_line 72
 } else {
-    set main_line 60
+    set main_line 75
 }
 
+if {$hp_aCC_compiler} {
+    set proto "\\(int\\)"
+} else {
+    set proto ""
+}
 gdb_test "info break" \
     "Num Type\[ \]+Disp Enb Address\[ \]+What.*
 \[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$main_line.*
-\[0-9\]+\[\t \]+breakpoint     keep y.* in factorial at .*$srcfile:76.*
-\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:64.*
-\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:64.*
-\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:70" \
+\[0-9\]+\[\t \]+breakpoint     keep y.* in factorial$proto at .*$srcfile:96.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:79.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:79.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:85" \
     "breakpoint info"
 
 
@@ -150,37 +168,49 @@ if ![target_info exists use_gdb_stub] {
        send_gdb "y\n"
        exp_continue
     }
-    -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:60.*60\[\t \]+if .argc.* \{.*$gdb_prompt $"\
+    -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:75.*75\[\t \]+if .argc.* \{.*$gdb_prompt $"\
                            { pass "run until function breakpoint" }
     -re ".*$gdb_prompt $"       { fail "run until function breakpoint" }
     timeout                { fail "run until function breakpoint (timeout)" }
   }
 } else {
     if ![target_info exists gdb_stub] {
-       gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:60.*60\[\t \]+if .argc.*\{" "stub continue"
+       gdb_test continue ".*Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:75.*75\[\t \]+if .argc.*\{.*" "stub continue"
     }
 }
 
 #
 # run until the breakpoint at a line number
 #
-gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:64.*64\[\t \]+printf.*factorial.*" \
+gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:79.*79\[\t \]+printf.*factorial.*" \
                        "run until breakpoint set at a line number"
 
 #
 # Run until the breakpoint set in a function in a file
 #
 for {set i 6} {$i >= 1} {incr i -1} {
-       gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, factorial \\(value=$i\\) at .*$srcfile:76.*76\[\t \]+if .value > 1. \{" \
+       gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, factorial \\(value=$i\\) at .*$srcfile:96.*96\[\t \]+.*if .value > 1. \{.*" \
                        "run until file:function($i) breakpoint"
 }
 
 #
 # run until the file:function breakpoint at a line number in a file
 #
-gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:70.*70\[\t \]+return 0;" \
+gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:85.*85\[\t \]+argc = \\(argc == 12345\\);.*" \
                "run until file:linenum breakpoint"
 
+# Test break at offset +1
+
+gdb_test "break +1" \
+    "Breakpoint.*at.* file .*$srcfile, line 86\\." \
+    "breakpoint offset +1"
+
+# Check to see if breakpoint is hit when stepped onto
+
+gdb_test "step" \
+    ".*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:86.*86\[\t \]+return argc;" \
+    "step onto breakpoint"
+
 #
 # delete all breakpoints so we can start over, course this can be a test too
 #
@@ -202,31 +232,38 @@ gdb_test "tbreak $srcfile:factorial" "Breakpoint.*at.* file .*$srcfile, line.*"
 #
 # test break at line number
 #
-send_gdb "tbreak 64\n"
+send_gdb "tbreak 79\n"
 gdb_expect {
-    -re "Breakpoint.*at.* file .*$srcfile, line 64.*$gdb_prompt $" { pass "Temporary breakpoint line number #1" }
+    -re "Breakpoint.*at.* file .*$srcfile, line 79.*$gdb_prompt $" { pass "Temporary breakpoint line number #1" }
        -re ".*$gdb_prompt $"   { pass "Temporary breakpoint line number #1" }
        timeout     { fail "breakpoint line number #1 (timeout)" }
 }
 
-gdb_test "tbreak 60" "Breakpoint.*at.* file .*$srcfile, line 60.*" "Temporary breakpoint line number #2"
+gdb_test "tbreak 75" "Breakpoint.*at.* file .*$srcfile, line 75.*" "Temporary breakpoint line number #2"
 
 #
 # test break at line number in file
 #
-send_gdb "tbreak $srcfile:70\n"
+send_gdb "tbreak $srcfile:85\n"
 gdb_expect {
-    -re "Breakpoint.*at.* file .*$srcfile, line 70.*$gdb_prompt $" { pass "Temporary breakpoint line number in file #1" }
+    -re "Breakpoint.*at.* file .*$srcfile, line 85.*$gdb_prompt $" { pass "Temporary breakpoint line number in file #1" }
        -re ".*$gdb_prompt $"   { pass "Temporary breakpoint line number in file #1" }
        timeout     { fail "Temporary breakpoint line number in file #1 (timeout)" }
 }
 
-gdb_test  "tbreak $srcfile:66" "Breakpoint.*at.* file .*$srcfile, line 66.*" "Temporary breakpoint line number in file #2"
+gdb_test  "tbreak $srcfile:81" "Breakpoint.*at.* file .*$srcfile, line 81.*" "Temporary breakpoint line number in file #2"
 
 #
 # check to see what breakpoints are set (temporary this time)
 #
-gdb_test "info break" "Num Type.*Disp Enb Address.*What.*\[\r\n\]\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:$main_line.*\[\r\n\]\[0-9\]+\[\t \]+breakpoint     del.*y.*in factorial at .*$srcfile:76.*\[\r\n\]\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:64.*\[\r\n\]\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:70.*" "Temporary breakpoint info"
+gdb_test "info break" "Num Type.*Disp Enb Address.*What.*\[\r\n\]
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:$main_line.*\[\r\n\]
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in factorial$proto at .*$srcfile:96.*\[\r\n\]
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:79.*\[\r\n\]
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:75.*\[\r\n\]
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:85.*\[\r\n\]
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:81.*" \
+    "Temporary breakpoint info"
 
 
 #***********
@@ -301,18 +338,18 @@ gdb_expect {
 # Verify that "until <location>" works.  (This is really just syntactic
 # sugar for "tbreak <location>; continue".)
 #
-send_gdb "until 64\n"
+send_gdb "until 79\n"
 gdb_expect {
-  -re "main .* at .*:64.*$gdb_prompt $"\
-          {pass "until 64"}
+  -re "main .* at .*:79.*$gdb_prompt $"\
+          {pass "until 79"}
   -re "$gdb_prompt $"\
-          {fail "until 64"}
-  timeout {fail "(timeout) until 64"}
+          {fail "until 79"}
+  timeout {fail "(timeout) until 79"}
 }
 
 # Verify that a malformed "until" is gracefully caught.
 #
-send_gdb "until 65 then stop\n"
+send_gdb "until 80 then stop\n"
 gdb_expect {
   -re "Junk at end of arguments..*$gdb_prompt $"\
           {pass "malformed until"}
@@ -379,13 +416,13 @@ gdb_expect {
 #
 if ![runto_main] then { fail "break tests suppressed" }
 
-send_gdb "break 64\n"
+send_gdb "break 79\n"
 gdb_expect {
-  -re "Breakpoint (\[0-9\]*) at .*, line 64.*$gdb_prompt $"\
-          {pass "set to-be-silent break 64"}
+  -re "Breakpoint (\[0-9\]*) at .*, line 79.*$gdb_prompt $"\
+          {pass "set to-be-silent break 79"}
   -re "$gdb_prompt $"\
-          {fail "set to-be-silent break 64"}
-  timeout {fail "(timeout) set to-be-silent break 64"}
+          {fail "set to-be-silent break 79"}
+  timeout {fail "(timeout) set to-be-silent break 79"}
 }
 
 send_gdb "commands $expect_out(1,string)\n"
@@ -393,33 +430,33 @@ send_gdb "silent\n"
 send_gdb "end\n"
 gdb_expect {
   -re ".*$gdb_prompt $"\
-          {pass "set silent break 64"}
-  timeout {fail "(timeout) set silent break 64"}
+          {pass "set silent break 79"}
+  timeout {fail "(timeout) set silent break 79"}
 }
 
 send_gdb "info break $expect_out(1,string)\n"
 gdb_expect {
-  -re "\[0-9\]*\[ \t\]*breakpoint.*:64\r\n\[ \t\]*silent.*$gdb_prompt $"\
-          {pass "info silent break 64"}
+  -re "\[0-9\]*\[ \t\]*breakpoint.*:79\r\n\[ \t\]*silent.*$gdb_prompt $"\
+          {pass "info silent break 79"}
   -re "$gdb_prompt $"\
-          {fail "info silent break 64"}
-  timeout {fail "(timeout) info silent break 64"}
+          {fail "info silent break 79"}
+  timeout {fail "(timeout) info silent break 79"}
 }
 send_gdb "continue\n"
 gdb_expect {
   -re "Continuing.\r\n$gdb_prompt $"\
-          {pass "hit silent break 64"}
+          {pass "hit silent break 79"}
   -re "$gdb_prompt $"\
-          {fail "hit silent break 64"}
-  timeout {fail "(timeout) hit silent break 64"}
+          {fail "hit silent break 79"}
+  timeout {fail "(timeout) hit silent break 79"}
 }
 send_gdb "bt\n"
 gdb_expect {
-  -re "#0  main .* at .*:64.*$gdb_prompt $"\
-          {pass "stopped for silent break 64"}
+  -re "#0  main .* at .*:79.*$gdb_prompt $"\
+          {pass "stopped for silent break 79"}
   -re "$gdb_prompt $"\
-          {fail "stopped for silent break 64"}
-  timeout {fail "(timeout) stopped for silent break 64"}
+          {fail "stopped for silent break 79"}
+  timeout {fail "(timeout) stopped for silent break 79"}
 }
 
 # Verify that GDB can at least parse a breakpoint with the
@@ -427,7 +464,7 @@ gdb_expect {
 # thread-specific breakpoint really triggers appropriately.
 # The gdb.threads subdirectory contains tests for that.)
 #
-send_gdb "break 65 thread 999\n"
+send_gdb "break 80 thread 999\n"
 gdb_expect {
   -re "Unknown thread 999.*$gdb_prompt $"\
           {pass "thread-specific breakpoint on non-existent thread disallowed"}
@@ -435,7 +472,7 @@ gdb_expect {
           {fail "thread-specific breakpoint on non-existent thread disallowed"}
   timeout {fail "(timeout) thread-specific breakpoint on non-existent thread disallowed"}
 }
-send_gdb "break 65 thread foo\n"
+send_gdb "break 80 thread foo\n"
 gdb_expect {
   -re "Junk after thread keyword..*$gdb_prompt $"\
           {pass "thread-specific breakpoint on bogus thread ID disallowed"}
@@ -447,7 +484,7 @@ gdb_expect {
 # Verify that GDB responds gracefully to a breakpoint command with
 # trailing garbage.
 #
-send_gdb "break 65 foo\n"
+send_gdb "break 80 foo\n"
 gdb_expect {
   -re "Junk at end of arguments..*$gdb_prompt $"\
           {pass "breakpoint with trailing garbage disallowed"}
@@ -466,9 +503,9 @@ gdb_expect {
           {pass "step over breakpoint"}
   timeout {fail "(timeout) step over breakpoint"}
 }
-send_gdb "clear 66\n"
+send_gdb "clear 81\n"
 gdb_expect {
-  -re "No breakpoint at 66..*$gdb_prompt $"\
+  -re "No breakpoint at 81..*$gdb_prompt $"\
           {pass "clear line has no breakpoint disallowed"}
   -re "$gdb_prompt $"\
           {fail "clear line has no breakpoint disallowed"}
@@ -485,15 +522,15 @@ gdb_expect {
 
 # Verify that a breakpoint can be set via a convenience variable.
 #
-send_gdb "set \$foo=66\n"
+send_gdb "set \$foo=81\n"
 gdb_expect {
   -re "$gdb_prompt $"\
-          {pass "set convenience variable \$foo to 66"}
-  timeout {fail "(timeout) set convenience variable \$foo to 66"}
+          {pass "set convenience variable \$foo to 81"}
+  timeout {fail "(timeout) set convenience variable \$foo to 81"}
 }
 send_gdb "break \$foo\n"
 gdb_expect {
-  -re "Breakpoint (\[0-9\]*) at .*, line 66.*$gdb_prompt $"\
+  -re "Breakpoint (\[0-9\]*) at .*, line 81.*$gdb_prompt $"\
           {pass "set breakpoint via convenience variable"}
   -re "$gdb_prompt $"\
           {fail "set breakpoint via convenience variable"}
@@ -503,11 +540,11 @@ gdb_expect {
 # Verify that GDB responds gracefully to an attempt to set a
 # breakpoint via a convenience variable whose type is not integer.
 #
-send_gdb "set \$foo=66.5\n"
+send_gdb "set \$foo=81.5\n"
 gdb_expect {
   -re "$gdb_prompt $"\
-          {pass "set convenience variable \$foo to 66.5"}
-  timeout {fail "(timeout) set convenience variable \$foo to 66.5"}
+          {pass "set convenience variable \$foo to 81.5"}
+  timeout {fail "(timeout) set convenience variable \$foo to 81.5"}
 }
 send_gdb "break \$foo\n"
 gdb_expect {
@@ -522,7 +559,7 @@ gdb_expect {
 #
 send_gdb "break marker2\n"
 gdb_expect {
-  -re "Breakpoint (\[0-9\]*) at .*, line 42.*$gdb_prompt $"\
+    -re "Breakpoint (\[0-9\]*) at .*, line 4\[49\].*$gdb_prompt $"\
           {pass "set breakpoint on to-be-called function"}
   -re "$gdb_prompt $"\
           {fail "set breakpoint on to-be-called function"}
@@ -530,7 +567,7 @@ gdb_expect {
 }
 send_gdb "print marker2(99)\n"
 gdb_expect {
-  -re "The program being debugged stopped while in a function called from GDB.\r\nWhen the function .marker2. is done executing, GDB will silently\r\nstop .instead of continuing to evaluate the expression containing\r\nthe function call...*$gdb_prompt $"\
+  -re "The program being debugged stopped while in a function called from GDB.\r\nWhen the function .marker2$proto. is done executing, GDB will silently\r\nstop .instead of continuing to evaluate the expression containing\r\nthe function call...*$gdb_prompt $"\
           {pass "hit breakpoint on called function"}
   -re "$gdb_prompt $"\
           {fail "hit breakpoint on called function"}
@@ -540,10 +577,14 @@ gdb_expect {
 # As long as we're stopped (breakpointed) in a called function,
 # verify that we can successfully backtrace & such from here.
 #
+
 if [istarget "hppa*-*-hpux*"] then {
   send_gdb "bt\n"
   gdb_expect {
-    -re "#0\[ \t\]*marker2.*:42\r\n#1.*_sr4export.*$gdb_prompt $"\
+      -re "#0\[ \t\]*$hex in marker2.*:4\[49\]\r\n#1.*_sr4export.*$gdb_prompt $"\
+            {pass "backtrace while in called function"}
+      -re "#0\[ \t\]*$hex in marker2.*:4\[49\]\r\n#1.*function called from gdb.*$gdb_prompt $"\
+
             {pass "backtrace while in called function"}
     -re "$gdb_prompt $"\
             {fail "backtrace while in called function"}
@@ -551,7 +592,11 @@ if [istarget "hppa*-*-hpux*"] then {
   }
   send_gdb "finish\n"
   gdb_expect {
-    -re "Run till exit from .*marker2.* at .*42\r\n.* in _sr4export.*$gdb_prompt $"\
+      -re "Run till exit from .*marker2.* at .*4\[49\]\r\n.* in _sr4export.*$gdb_prompt $"\
+            {pass "finish from called function"}
+      -re "Run till exit from .*marker2.* at .*4\[49\]\r\n.*function called from gdb.*$gdb_prompt $"\
+            {pass "finish from called function"}
+      -re "Run till exit from .*marker2.* at .*4\[49\]\r\n.*Value returned.*$gdb_prompt $"\
             {pass "finish from called function"}
     -re "$gdb_prompt $"\
             {fail "finish from called function"}
@@ -574,12 +619,18 @@ gdb_expect {
 }
 
 # Verify that GDB responds gracefully to a request to "finish" from
-# the outermost frame.
+# the outermost frame.  On a stub that never exits, this will just
+# run to the stubs routine, so we don't get this error...  Thus the 
+# second condition.
 #
+
 send_gdb "finish\n"
 gdb_expect {
   -re "\"finish\" not meaningful in the outermost frame.\r\n$gdb_prompt $"\
           {pass "finish from outermost frame disallowed"}
+  -re "Run till exit from.*\r\n$gdb_prompt $" {
+     pass "finish from outermost frame disallowed"
+  }
   -re "$gdb_prompt $"\
           {fail "finish from outermost frame disallowed"}
   timeout {fail "(timeout) finish from outermost frame disallowed"}
@@ -743,18 +794,8 @@ proc test_next_with_recursion {} {
     if { $result != 0 } { gdb_suppress_tests }
 
     if [target_info exists gdb,noresults] { gdb_suppress_tests }
-    if [target_info exists use_gdb_stub] {
-       gdb_breakpoint "exit"
-       gdb_test "continue" "Continuing..*Breakpoint .*exit \[(\].*=0\[)\].*" "continue until exit in recursive next test"
-    } else {
-    # Continue until we exit.  Should not stop again.
-    # Don't bother to check the output of the program, that may be
-    # extremely tough for some remote systems.
-       gdb_test "continue"\
-               "Continuing.\[\r\n0-9\]+Program exited normally\\..*"\
-               "continue until exit in recursive next test"
-    }
-    gdb_stop_suppressing_tests;
+  gdb_continue_to_end "recursive next test"
+   gdb_stop_suppressing_tests;
 }
 
 test_clear_command