X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fdebuginfod-support.c;h=5f04a2b38ca25ab3ccb52a1bcdd0a630b7fc9b28;hb=de69cec0c53f1ef5cb242bfc969723b7dba4defb;hp=22944ce50bbe112295ffe98deb21a0a3850b0a4f;hpb=8839e3f3b0d1af5d93ba1d4f667ce33936bb7db2;p=binutils-gdb.git
diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c
index 22944ce50bb..5f04a2b38ca 100644
--- a/gdb/debuginfod-support.c
+++ b/gdb/debuginfod-support.c
@@ -17,6 +17,7 @@
along with this program. If not, see . */
#include "defs.h"
+#include "diagnostics.h"
#include
#include "gdbsupport/scoped_fd.h"
#include "debuginfod-support.h"
@@ -173,10 +174,11 @@ get_debuginfod_client ()
static bool
debuginfod_is_enabled ()
{
- const char *urls = getenv (DEBUGINFOD_URLS_ENV_VAR);
+ const char *urls = skip_spaces (getenv (DEBUGINFOD_URLS_ENV_VAR));
- if (urls == nullptr || urls[0] == '\0'
- || debuginfod_enabled == debuginfod_off)
+ if (debuginfod_enabled == debuginfod_off
+ || urls == nullptr
+ || *urls == '\0')
return false;
if (debuginfod_enabled == debuginfod_ask)
@@ -187,10 +189,18 @@ 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);
+ /* g++ 11.2.1 on s390x, g++ 11.3.1 on ppc64le and g++ 11 on
+ hppa seem convinced url_view might be of SIZE_MAX length.
+ And so complains because the length of an array can only
+ be PTRDIFF_MAX. */
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
+ off = url_view.find_first_of (' ');
+ DIAGNOSTIC_POP
gdb_printf
(_(" <%ps>\n"),
styled_string (file_name_style.style (),
@@ -254,7 +264,7 @@ debuginfod_source_query (const unsigned char *build_id,
&dname));
debuginfod_set_user_data (c, nullptr);
- if (debuginfod_verbose > 0 && fd.get () < 0 && fd.get () != -ENOENT)
+ if (fd.get () < 0 && fd.get () != -ENOENT)
gdb_printf (_("Download failed: %s. Continuing without source file %ps.\n"),
safe_strerror (-fd.get ()),
styled_string (file_name_style.style (), srcpath));
@@ -296,7 +306,7 @@ debuginfod_debuginfo_query (const unsigned char *build_id,
&dname));
debuginfod_set_user_data (c, nullptr);
- if (debuginfod_verbose > 0 && fd.get () < 0 && fd.get () != -ENOENT)
+ if (fd.get () < 0 && fd.get () != -ENOENT)
gdb_printf (_("Download failed: %s. Continuing without debug info for %ps.\n"),
safe_strerror (-fd.get ()),
styled_string (file_name_style.style (), filename));
@@ -337,7 +347,7 @@ debuginfod_exec_query (const unsigned char *build_id,
scoped_fd fd (debuginfod_find_executable (c, build_id, build_id_len, &dname));
debuginfod_set_user_data (c, nullptr);
- if (debuginfod_verbose > 0 && fd.get () < 0 && fd.get () != -ENOENT)
+ if (fd.get () < 0 && fd.get () != -ENOENT)
gdb_printf (_("Download failed: %s. " \
"Continuing without executable for %ps.\n"),
safe_strerror (-fd.get ()),
@@ -358,7 +368,9 @@ set_debuginfod_enabled (const char *value)
#if defined(HAVE_LIBDEBUGINFOD)
debuginfod_enabled = value;
#else
- error (NO_IMPL);
+ /* Disabling debuginfod when gdb is not built with it is a no-op. */
+ if (value != debuginfod_off)
+ error (NO_IMPL);
#endif
}