static const char debuginfod_on[] = "on";
static const char debuginfod_off[] = "off";
static const char debuginfod_ask[] = "ask";
+static const char debuginfod_lazy[] = "lazy";
static const char *debuginfod_enabled_enum[] =
{
debuginfod_on,
debuginfod_off,
debuginfod_ask,
+ debuginfod_lazy,
nullptr
};
return scoped_fd (-ENOSYS);
#else
- if (!debuginfod_is_enabled ())
+ if (debuginfod_enabled != debuginfod_lazy || !debuginfod_is_enabled ())
return scoped_fd (-ENOSYS);
debuginfod_client *c = get_debuginfod_client ();
set_debuginfod_enabled (const char *value)
{
#if defined(HAVE_LIBDEBUGINFOD)
+#if !defined(HAVE_DEBUGINFOD_FIND_SECTION)
+ if (value == debuginfod_lazy)
+ {
+ debuginfod_enabled = debuginfod_on;
+ error (_("Support for lazy downloading is not compiled into GDB. " \
+"Defaulting to \"on\"."));
+ }
+#endif
debuginfod_enabled = value;
#else
/* Disabling debuginfod when gdb is not built with it is a no-op. */
_("Set whether to use debuginfod."),
_("Show whether to use debuginfod."),
_("\
-When on, enable the use of debuginfod to download missing debug info and\n\
-source files."),
+When set to \"on\", enable the use of debuginfod to download missing\n\
+debug info and source files. \"off\" disables the use of debuginfod.\n\
+When set to \"ask\", a prompt may ask whether to enable or disable\n\
+debuginfod. When set to \"lazy\", debug info downloading will be\n\
+deferred until it is required. GDB may also download components of\n\
+debug info instead of entire files." ),
set_debuginfod_enabled,
get_debuginfod_enabled,
show_debuginfod_enabled,
attempting to perform the next query. By default, @code{debuginfod enabled}
is set to @code{ask} for interactive sessions.
+@item set debuginfod enabled lazy
+@value{GDBN} will attempt to defer downloading entire debug info files until
+necessary. @value{GDBN} may instead download individual components of the
+debug info files such as @code{.gdb_index}.
+
@kindex show debuginfod enabled
@item show debuginfod enabled
-Display whether @code{debuginfod enabled} is set to @code{on}, @code{off} or
-@code{ask}.
+Display whether @code{debuginfod enabled} is set to @code{on}, @code{off},
+@code{ask} or @code{lazy}.
@kindex set debuginfod urls
@cindex configure debuginfod URLs