Avoid having to unload file in gdb.server/connect-with-no-symbol-file.exp
authorPedro Alves <pedro@palves.net>
Wed, 30 Mar 2022 13:31:56 +0000 (14:31 +0100)
committerPedro Alves <pedro@palves.net>
Tue, 17 May 2022 09:31:36 +0000 (10:31 +0100)
gdb.server/connect-with-no-symbol-file.exp's connect_no_symbol_file
does:

gdb_test "file" ".*" "discard symbol table" \
    {Discard symbol table from `.*'\? \(y or n\) } "y"

A following patch will make gdb_test expect the question out of GDB if
one is passed down as argument to gdb_test.  With that, this test
starts failing.  This is because connect_no_symbol_file is called in a
loop, and the first time around, there's a loaded file, so "file" asks
the "Discard symbol table ... ?" question, while in the following
iterations there's no file, so there's no question.

Fix this by not loading a file into GDB in the first place.

Change-Id: I810c036b57842c4c5b47faf340466b0d446d1abc

gdb/testsuite/gdb.server/connect-with-no-symbol-file.exp

index af5917d901864141edf64f43f26e83f8c76701eb..6c480c8c0cfd2e59eb781511fe32f805a3a7b5ca 100644 (file)
@@ -29,7 +29,7 @@ if { [skip_gdbserver_tests] } {
     return 0
 }
 
-if { [prepare_for_testing "failed to prepare" $testfile $srcfile debug] } {
+if { [build_executable "failed to prepare" $testfile $srcfile debug] } {
     return -1
 }
 
@@ -46,22 +46,16 @@ proc connect_no_symbol_file { sysroot action } {
 
     with_test_prefix "setup" {
        # Copy the symbol file to the target.
-       gdb_remote_download target $binfile.bak $binfile 
+       set target_exec [gdb_remote_download target $binfile.bak $binfile]
 
        # Make sure we're disconnected, in case we're testing with an
        # extended-remote board, therefore already connected.
        gdb_test "disconnect" ".*"
 
-       # Discard any symbol files that we have opened.
-       gdb_test "file" ".*" "discard symbol table" \
-           {Discard symbol table from `.*'\? \(y or n\) } "y"
-
        # Set sysroot to something non-target and possibly also invalid so that
        # GDB is unable to open the symbol file.
        gdb_test_no_output "set sysroot $sysroot" "adjust sysroot"
 
-       set target_exec [gdbserver_download_current_prog]
-
        # Start GDBserver.
        set res [gdbserver_start "" $target_exec]
 
@@ -70,9 +64,9 @@ proc connect_no_symbol_file { sysroot action } {
 
        # Perform test actions to the symbol file on the target.
        if { $action == "delete" } then {
-         remote_file target delete $binfile
+         remote_file target delete $target_exec
        } elseif { $action == "permission" } {
-         remote_spawn target "chmod 000 $binfile"
+         remote_spawn target "chmod 000 $target_exec"
        }
        
        # Connect to GDBserver.
@@ -89,6 +83,9 @@ proc connect_no_symbol_file { sysroot action } {
 # Make sure we have the original symbol file in a safe place to copy from.
 gdb_remote_download host $binfile $binfile.bak
 
+# Start with no executable loaded.
+clean_restart
+
 # Run the test with different permutations.
 foreach_with_prefix sysroot {"" "target:"} {
     foreach_with_prefix action {"permission" "delete"} {