aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/debuginfod-support.c7
-rw-r--r--gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp62
2 files changed, 66 insertions, 3 deletions
diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c
index 6c2d3fb..4ce2e78 100644
--- a/gdb/debuginfod-support.c
+++ b/gdb/debuginfod-support.c
@@ -187,10 +187,11 @@ debuginfod_is_enabled ()
gdb::string_view url_view (urls);
while (true)
{
- url_view = url_view.substr (url_view.find_first_not_of (' '));
- if (url_view.empty ())
+ size_t off = url_view.find_first_not_of (' ');
+ if (off == gdb::string_view::npos)
break;
- size_t off = url_view.find_first_of (' ');
+ url_view = url_view.substr (off);
+ off = url_view.find_first_of (' ');
gdb_printf
(_(" <%ps>\n"),
styled_string (file_name_style.style (),
diff --git a/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp b/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
index f12ed7d..6da9a86 100644
--- a/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
+++ b/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
@@ -186,6 +186,28 @@ proc no_url { } {
gdb_test "core $::corefile" ".*in ?? ().*" "file [file tail $::corefile]"
}
+# Test that GDB prints the debuginfod URLs when loading files. URLS
+# is the string set in the DEBUGINFOD_URLS environment variable.
+# PATTERN_RE is the URLs pattern we expect to see out of GDB. TEST is
+# the test name.
+
+proc test_urls {urls pattern_re test} {
+ setenv DEBUGINFOD_URLS $urls
+ clean_restart
+
+ if {$pattern_re != ""} {
+ set urls_re " +${pattern_re}\r\n"
+ } else {
+ set urls_re ""
+ }
+
+ # Use "with confirm off" to avoid having to deal with the
+ # "Enable debuginfod for this session? (y or [n])" question.
+ gdb_test "with confirm off -- file $::binfile" \
+ "following URLs:\r\n${urls_re}Debuginfod .*" \
+ $test
+}
+
proc local_url { } {
global binfile outputdir db debugdir
@@ -279,6 +301,46 @@ proc local_url { } {
gdb_test_no_output "set debuginfod enabled on"
gdb_test "file $binfile" ".*Reading symbols from.*debuginfo.*" \
"file [file tail $binfile] cmd on"
+
+ # Test that URLs are printed correctly for the first-use notice.
+
+ # Empty URLS disables Debuginfod.
+ setenv DEBUGINFOD_URLS ""
+ clean_restart
+ # Disable confirmation to avoid having to deal with a query. See
+ # test_urls.
+ gdb_test_multiple "with confirm off -- file $binfile" "notice empty URL" {
+ -re ".*Enable debuginfod.*" {
+ fail $gdb_test_name
+ }
+ -re -wrap "" {
+ pass $gdb_test_name
+ }
+ }
+
+ test_urls " " \
+ "" \
+ "notice whitespace URL"
+
+ set url "http://127.0.0.1:$port"
+
+ test_urls $url \
+ "<$url>" \
+ "notice 1 URL"
+
+ test_urls " $url " \
+ "<$url>" \
+ "notice 1 URL with whitespace"
+
+ set url2 "127.0.0.1:$port"
+
+ test_urls "$url $url2" \
+ "<$url>\r\n +<$url2>" \
+ "notice 2 URLs"
+
+ test_urls " $url $url2 " \
+ "<$url>\r\n +<$url2>" \
+ "notice 2 URLs with whitespace"
}
set envlist \