[gdb/testsuite] Unset DEBUGINFOD_URLS on remote host
authorTom de Vries <tdevries@suse.de>
Wed, 15 Mar 2023 15:38:03 +0000 (16:38 +0100)
committerTom de Vries <tdevries@suse.de>
Wed, 15 Mar 2023 15:38:03 +0000 (16:38 +0100)
When running test-case gdb.arch/i386-pkru.exp with host board
local-remote-host-notty and target board native-gdbserver on openSUSE
Tumbleweed (with DEBUGINFOD_URLS set), I run into:
...
This GDB supports auto-downloading debuginfo from the following URLs:^M
  <https://debuginfod.opensuse.org/>^M
Enable debuginfod for this session? (y or [n]) ^CQuit^M
(gdb) FAIL: gdb.arch/i386-pkru.exp: runto: run to main
...

The problem is that the unsetenv for DEBUGINFOD_URLS in default_gdb_init:
...
    # If DEBUGINFOD_URLS is set, gdb will try to download sources and
    # debug info for f.i. system libraries.  Prevent this.
    unset -nocomplain ::env(DEBUGINFOD_URLS)
...
doesn't work on remote host.

Fix this by using "set debuginfod enabled off" for remote host.

Tested on x86_64-linux.

gdb/testsuite/lib/gdb.exp

index 23277c4ab7988977cb79911d5a56e81176619951..8b3a594e6a4e22ce40ed80c84f8cfd4ca8369e50 100644 (file)
@@ -219,6 +219,17 @@ if ![info exists INTERNAL_GDBFLAGS] {
                   {-iex "set height 0"} \
                   {-iex "set width 0"}]]
 
+    # If DEBUGINFOD_URLS is set, gdb will try to download sources and
+    # debug info for f.i. system libraries.  Prevent this.
+    if { [is_remote host] } {
+       # Setting environment variables on build has no effect on remote host,
+       # so handle this using "set debuginfod enabled off" instead.
+       set INTERNAL_GDBFLAGS \
+           "$INTERNAL_GDBFLAGS -iex \"set debuginfod enabled off\""
+    } else {
+       # See default_gdb_init.
+    }
+
     set INTERNAL_GDBFLAGS [append_gdb_data_directory_option $INTERNAL_GDBFLAGS]
 }
 
@@ -6173,7 +6184,14 @@ proc default_gdb_init { test_file_name } {
 
     # If DEBUGINFOD_URLS is set, gdb will try to download sources and
     # debug info for f.i. system libraries.  Prevent this.
-    unset -nocomplain ::env(DEBUGINFOD_URLS)
+    if { [is_remote host] } {
+       # See initialization of INTERNAL_GDBFLAGS.
+    } else {
+       # Using "set debuginfod enabled off" in INTERNAL_GDBFLAGS interferes
+       # with the gdb.debuginfod test-cases, so use the unsetenv method for
+       # non-remote host.
+       unset -nocomplain ::env(DEBUGINFOD_URLS)
+    }
 
     # Ensure that GDBHISTFILE and GDBHISTSIZE are removed from the
     # environment, we don't want these modifications to the history