* lib/gdb.exp: add proc runto_main, for targets that use stubs, this
authorKung Hsu <kung@cygnus>
Wed, 22 Mar 1995 01:11:34 +0000 (01:11 +0000)
committerKung Hsu <kung@cygnus>
Wed, 22 Mar 1995 01:11:34 +0000 (01:11 +0000)
        will not runto main but do a 'step' to step out of breakpoint().

gdb/testsuite/lib/gdb.exp

index b010303194bff3638a374874dff04719d34801dd..2ea53e7ec4b5548da60fa110cbb710a43d3380f4 100644 (file)
@@ -43,6 +43,17 @@ if ![info exists prompt] then {
     set prompt "\[(\]gdb\[)\]"
 }
 
+global usestubs
+if [istarget "sparclite-*-*"] then {
+    set usestubs 1
+} else {
+    set usestubs 0
+}
+
+if ![info exists noargs] then {
+    set noargs 0
+}
+
 #
 # gdb_version -- extract and print the version number of GDB
 #
@@ -190,6 +201,42 @@ proc runto { function } {
     }
 }
 
+#
+# runto_main -- ask gdb to run and untill hit break point at main.
+#              if it uses stubs, assuming we hit breakpoint() and just
+#              step out of the function.
+#
+proc runto_main {} {
+    global prompt
+    global decimal
+    global usestubs
+
+    if $usestubs==0 {
+       runto main
+       return 1
+    }                  
+
+    send "delete\n"
+    expect {
+       -re "delete.*Delete all breakpoints.*y or n. $" {
+           send "y\n"
+           expect {
+               -re "$prompt $" {}
+               timeout { fail "deleting breakpoints (timeout)" ; return 0 }
+           }
+       }
+       -re ".*$prompt $" {}
+       timeout { fail "deleting breakpoints (timeout)" ; return 0 }
+    }
+
+    send "step\n"
+    # if use stubs step out of the breakpoint() function.
+    expect {
+       -re "* at .*$prompt $" {}
+       timeout { fail "single step at breakpoint() (timeout)" ; return 0 }
+    }
+}
+
 #
 # gdb_test -- send a command to gdb and test the result.
 #             Takes three parameters.