aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp209
2 files changed, 125 insertions, 89 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7dca586..a68c272 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-07-21 Tom de Vries <tdevries@suse.de>
+
+ * gdb.debuginfod/fetch_src_and_symbols.exp: Use save_vars for env
+ vars. Fix PATH and DUPLICATE errors. Cleanup whitespace.
+
2020-07-20 Ludovic Courtès <ludo@gnu.org>
* gdb.guile/source2.scm: Add #f first argument to 'format'.
diff --git a/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp b/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
index fbab3b1..c26893d 100644
--- a/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
+++ b/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
@@ -31,7 +31,7 @@ if { [which curl] == 0 } {
# Skip testing if gdb was not configured with debuginfod
if { [string first "with-debuginfod" \
- [eval exec $GDB $INTERNAL_GDBFLAGS --configuration]] == -1 } {
+ [eval exec $GDB $INTERNAL_GDBFLAGS --configuration]] == -1 } {
untested "gdb not configured with debuginfod"
return -1
}
@@ -58,31 +58,6 @@ if { [gdb_compile "$sourcetmp" "$binfile" executable {debug}] != "" } {
return -1
}
-setenv DEBUGINFOD_URLS ""
-setenv DEBUGINFOD_TIMEOUT 30
-setenv DEBUGINFOD_CACHE_PATH $cache
-
-# Test that gdb cannot find source without debuginfod
-clean_restart $binfile
-gdb_test_no_output "set substitute-path $outputdir /dev/null"
-gdb_test "list" ".*No such file or directory.*"
-
-# Strip symbols into separate file and move it so gdb cannot find it without debuginfod
-if { [gdb_gnu_strip_debug $binfile ""] != 0 } {
- fail "strip debuginfo"
- return -1
-}
-
-set debugdir [standard_output_file "debug"]
-set debuginfo [standard_output_file "fetch_src_and_symbols.debug"]
-
-file mkdir $debugdir
-file rename -force $debuginfo $debugdir
-
-# Test that gdb cannot find symbols without debuginfod
-clean_restart $binfile
-gdb_test "file" ".*No symbol file.*"
-
# Write some assembly that just has a .gnu_debugaltlink section.
# Copied from testsuite/gdb.dwarf2/dwzbuildid.exp.
proc write_just_debugaltlink {filename dwzname buildid} {
@@ -118,7 +93,7 @@ proc write_dwarf_file {filename buildid {value 99}} {
cu {} {
compile_unit {{language @DW_LANG_C}} {
- int_label2: base_type {
+ int_label2: base_type {
{name int}
{byte_size 4 sdata}
{encoding @DW_ATE_signed}
@@ -134,82 +109,138 @@ proc write_dwarf_file {filename buildid {value 99}} {
}
}
-set buildid "01234567890abcdef0123456"
+proc no_url { } {
+ global binfile outputdir debugdir
-write_just_debugaltlink ${binfile}_has_altlink.S ${binfile}_dwz.o $buildid
-write_dwarf_file ${binfile}_dwz.S $buildid
+ setenv DEBUGINFOD_URLS ""
-if {[gdb_compile ${binfile}_has_altlink.S ${binfile}_alt.o object nodebug] != ""} {
- fail "compile main with altlink"
- return -1
-}
+ # Test that gdb cannot find source without debuginfod
+ clean_restart $binfile
+ gdb_test_no_output "set substitute-path $outputdir /dev/null" \
+ "set substitute-path"
+ gdb_test "list" ".*No such file or directory.*"
-if {[gdb_compile ${binfile}_dwz.S ${binfile}_dwz.o object nodebug] != ""} {
- fail "compile altlink"
- return -1
-}
+ # Strip symbols into separate file and move it so gdb cannot find it \
+ without debuginfod
+ if { [gdb_gnu_strip_debug $binfile ""] != 0 } {
+ fail "strip debuginfo"
+ return -1
+ }
-file rename -force ${binfile}_dwz.o $debugdir
+ set debugdir [standard_output_file "debug"]
+ set debuginfo [standard_output_file "fetch_src_and_symbols.debug"]
-# Test that gdb cannot find dwz without debuginfod.
-clean_restart
-gdb_test "file ${binfile}_alt.o" ".*could not find '.gnu_debugaltlink'.*"
+ file mkdir $debugdir
+ file rename -force $debuginfo $debugdir
-# Find an unused port
-set port 7999
-set found 0
-while { ! $found } {
- incr port
- if { $port == 65536 } {
- fail "no available ports"
- return -1
- }
-
- spawn debuginfod -vvvv -d $db -p $port -F $debugdir
- expect {
- "started http server on IPv4 IPv6 port=$port" { set found 1 }
- "failed to bind to port" { kill_wait_spawned_process $spawn_id }
- timeout {
- fail "find port timeout"
- return -1
+ # Test that gdb cannot find symbols without debuginfod
+ clean_restart $binfile
+ gdb_test "file" ".*No symbol file.*"
+
+ set buildid "01234567890abcdef0123456"
+
+ write_just_debugaltlink ${binfile}_has_altlink.S ${binfile}_dwz.o \
+ $buildid
+ write_dwarf_file ${binfile}_dwz.S $buildid
+
+ if {[gdb_compile ${binfile}_has_altlink.S ${binfile}_alt.o object \
+ nodebug] != ""} {
+ fail "compile main with altlink"
+ return -1
}
- }
-}
-set metrics [list "ready 1" \
- "thread_work_total{role=\"traverse\"} 1" \
- "thread_work_pending{role=\"scan\"} 0" \
- "thread_busy{role=\"scan\"} 0"]
+ if {[gdb_compile ${binfile}_dwz.S ${binfile}_dwz.o object \
+ nodebug] != ""} {
+ fail "compile altlink"
+ return -1
+ }
+
+ file rename -force ${binfile}_dwz.o $debugdir
-# Check server metrics to confirm init has completed.
-foreach m $metrics {
- set timelim 20
- while { $timelim != 0 } {
- sleep 0.5
- catch {exec curl -s http://127.0.0.1:$port/metrics} got
+ # Test that gdb cannot find dwz without debuginfod.
+ clean_restart
+ gdb_test "file ${binfile}_alt.o" \
+ ".*could not find '.gnu_debugaltlink'.*" \
+ "file [file tail ${binfile}_alt.o]"
+}
+
+proc local_url { } {
+ global binfile outputdir db debugdir
+
+ # Find an unused port
+ set port 7999
+ set found 0
+ while { ! $found } {
+ incr port
+ if { $port == 65536 } {
+ fail "no available ports"
+ return -1
+ }
- if { [regexp $m $got] } {
- break
+ spawn debuginfod -vvvv -d $db -p $port -F $debugdir
+ expect {
+ "started http server on IPv4 IPv6 port=$port" { set found 1 }
+ "failed to bind to port" { kill_wait_spawned_process $spawn_id }
+ timeout {
+ fail "find port timeout"
+ return -1
+ }
+ }
}
- incr timelim -1
- }
+ set metrics [list "ready 1" \
+ "thread_work_total{role=\"traverse\"} 1" \
+ "thread_work_pending{role=\"scan\"} 0" \
+ "thread_busy{role=\"scan\"} 0"]
- if { $timelim == 0 } {
- fail "server init timeout"
- return -1
- }
+ # Check server metrics to confirm init has completed.
+ foreach m $metrics {
+ set timelim 20
+ while { $timelim != 0 } {
+ sleep 0.5
+ catch {exec curl -s http://127.0.0.1:$port/metrics} got
+
+ if { [regexp $m $got] } {
+ break
+ }
+
+ incr timelim -1
+ }
+
+ if { $timelim == 0 } {
+ fail "server init timeout"
+ return -1
+ }
+ }
+
+ # Point the client to the server
+ setenv DEBUGINFOD_URLS http://127.0.0.1:$port
+
+ # gdb should now find the symbol and source files
+ clean_restart $binfile
+ gdb_test_no_output "set substitute-path $outputdir /dev/null" \
+ "set substitute-path"
+ gdb_test "br main" "Breakpoint 1 at.*file.*"
+ gdb_test "l" ".*This program is distributed in the hope.*"
+
+ # gdb should now find the debugaltlink file
+ clean_restart
+ gdb_test "file ${binfile}_alt.o" \
+ ".*Reading symbols from ${binfile}_alt.o\.\.\.*" \
+ "file [file tail ${binfile}_alt.o]"
}
-# Point the client to the server
-setenv DEBUGINFOD_URLS http://127.0.0.1:$port
+set envlist \
+ [list \
+ env(DEBUGINFOD_URLS) \
+ env(DEBUGINFOD_TIMEOUT) \
+ env(DEBUGINFOD_CACHE_PATH)]
-# gdb should now find the symbol and source files
-clean_restart $binfile
-gdb_test_no_output "set substitute-path $outputdir /dev/null"
-gdb_test "br main" "Breakpoint 1 at.*file.*"
-gdb_test "l" ".*This program is distributed in the hope.*"
+save_vars $envlist {
+ setenv DEBUGINFOD_TIMEOUT 30
+ setenv DEBUGINFOD_CACHE_PATH $cache
-# gdb should now find the debugaltlink file
-clean_restart
-gdb_test "file ${binfile}_alt.o" ".*Reading symbols from ${binfile}_alt.o\.\.\.*"
+ with_test_prefix no_url no_url
+
+ with_test_prefix local_url local_url
+}