warn if "source" fails to open the file when from_tty == 0
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / valgrind-db-attach.exp
index 8382a66cadfffaba359f24663e312fcd36de2a36..56c6914f2df18db38c2c2575e3753e9cef42afbe 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2009 Free Software Foundation, Inc.
+# Copyright 2009-2013 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-set test valgrind-db-attach
-set srcfile $test.c
-set executable $test
-set binfile ${objdir}/${subdir}/${executable}
-if {[build_executable $test.exp $executable $srcfile {debug}] == -1} {
+if [is_remote target] {
+    # The test always runs locally.
+    return 0
+}
+
+standard_testfile .c
+if {[build_executable $testfile.exp $testfile $srcfile {debug}] == -1} {
     return -1
 }
 
@@ -31,7 +33,7 @@ regsub -all " " $db_command "\\ " db_command
 
 set test "spawn valgrind"
 set cmd "valgrind --db-attach=yes $db_command $binfile"
-set res [remote_spawn host $cmd];
+set res [remote_spawn host $cmd]
 if { $res < 0 || $res == "" } {
     verbose -log "Spawning $cmd failed."
     unsupported $test
@@ -41,6 +43,11 @@ pass $test
 # Declare GDB now as running.
 set gdb_spawn_id -1
 
+# GDB spawned by `valgrind --db-attach=yes' stops already after the startup is
+# executed, like with non-extended gdbserver.  It is also not correct to
+# run/attach the inferior.
+set use_gdb_stub 1
+
 set test "valgrind started"
 # The trailing '.' differs for different memcheck versions.
 gdb_test_multiple "" $test {
@@ -51,6 +58,10 @@ gdb_test_multiple "" $test {
        unsupported $test
        return -1
     }
+    -re "valgrind: wrong ELF executable class" {
+       unsupported $test
+       return -1
+    }
     -re "command not found" {
        # The spawn succeeded, but then valgrind was not found - e.g. if
        # we spawned SSH to a remote system.
@@ -61,8 +72,9 @@ gdb_test_multiple "" $test {
 
 set double_free [gdb_get_line_number "double-free"]
 
+set test "attach to debugger"
 gdb_test_multiple "" $test {
-    -re "Invalid free\\(\\) / delete / delete\\\[\\\]\r\n.*: main \\(${srcfile}:$double_free\\)\r\n.*---- Attach to debugger \\? --- \[^\r\n\]* ---- " {
+    -re "Invalid free\\(\\).*: main \\(${srcfile}:$double_free\\)\r\n.*---- Attach to debugger \\? --- \[^\r\n\]* ---- " {
        send_gdb "y\r"
     }
     -re "---- Attach to debugger \\? --- \[^\r\n\]* ---- " {
@@ -71,10 +83,13 @@ gdb_test_multiple "" $test {
     }
 }
 
-gdb_test "" "" "eat first prompt"
+gdb_test "" ".*" "eat first prompt"
 
 # Initialization from default_gdb_start.
-gdb_test "set height 0"
-gdb_test "set width 0"
+gdb_test_no_output "set height 0"
+gdb_test_no_output "set width 0"
 
 gdb_test "bt" "in main \\(.*\\) at .*${srcfile}:$double_free"
+
+# Explicitly kill the program so it doesn't dump core when we quit->detach.
+gdb_test "kill" "" "kill program" "Kill the program being debugged.*y or n. $" "y"
This page took 0.025975 seconds and 4 git commands to generate.