File gdb-add-debuginfod_enabled_ask_p.patch of Package gdb

From 9988e69be7216b688ca3963515e0829803ab6fdf Mon Sep 17 00:00:00 2001
From: Tom de Vries <tdevries@suse.de>
Date: Sat, 14 Mar 2026 15:26:42 +0100
Subject: [PATCH 3/8] [gdb] Add debuginfod_enabled_ask_p

Factor out debuginfod_is_enabled_1 out of debuginfod_is_enabled, and use it to
implement debuginfod_enabled_ask_p.
---
 gdb/debuginfod-support.c | 40 +++++++++++++++++++++++++++++++---------
 gdb/debuginfod-support.h |  5 +++++
 2 files changed, 36 insertions(+), 9 deletions(-)

diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c
index f97c1f921ab..5ced58b410e 100644
--- a/gdb/debuginfod-support.c
+++ b/gdb/debuginfod-support.c
@@ -222,20 +222,20 @@ get_debuginfod_client ()
   return global_client;
 }
 
-/* Check if debuginfod is enabled.  If configured to do so, ask the user
-   whether to enable debuginfod.  */
+/* Check if debuginfod is enabled.  If configured to do so and ALLOW_ASK, ask
+   the user whether to enable debuginfod.  */
 
-static bool
-debuginfod_is_enabled ()
+static const char *
+debuginfod_is_enabled_1 (bool allow_ask)
 {
   const char *urls = skip_spaces (getenv (DEBUGINFOD_URLS_ENV_VAR));
 
   if (urls == nullptr
       || *urls == '\0')
-    return false;
+    return debuginfod_off;
 
-  if (debuginfod_enabled != debuginfod_ask)
-    return debuginfod_enabled == debuginfod_on;
+  if (debuginfod_enabled != debuginfod_ask || !allow_ask)
+    return debuginfod_enabled;
 
   gdb_printf (_("\nThis GDB supports auto-downloading debuginfo " \
 		"from the following URLs:\n"));
@@ -280,8 +280,18 @@ debuginfod_is_enabled ()
       debuginfod_enabled = debuginfod_on;
     }
 
-  gdb_assert (debuginfod_enabled != debuginfod_ask);
-  return debuginfod_enabled == debuginfod_on;
+  return debuginfod_enabled;
+}
+
+/* Check if debuginfod is enabled.  If configured to do so, ask the user
+   whether to enable debuginfod.  */
+
+static bool
+debuginfod_is_enabled ()
+{
+  const char *res = debuginfod_is_enabled_1 (true);
+  gdb_assert (res != debuginfod_ask);
+  return res == debuginfod_on;
 }
 
 /* Print the result of the most recent attempted download.  */
@@ -484,6 +494,18 @@ debuginfod_section_query (const unsigned char *build_id,
 
 #endif
 
+/* See debuginfod-support.h.  */
+
+bool
+debuginfod_enabled_ask_p ()
+{
+#if defined(HAVE_LIBDEBUGINFOD)
+  return debuginfod_is_enabled_1 (false) == debuginfod_ask;
+#else
+  return false;
+#endif
+}
+
 /* Set callback for "set debuginfod enabled".  */
 
 static void
diff --git a/gdb/debuginfod-support.h b/gdb/debuginfod-support.h
index 2b396dc13c1..1db2f511925 100644
--- a/gdb/debuginfod-support.h
+++ b/gdb/debuginfod-support.h
@@ -105,4 +105,9 @@ extern scoped_fd debuginfod_section_query (const unsigned char *build_id,
 					   const char *section_name,
 					   gdb::unique_xmalloc_ptr<char>
 					     *destname);
+
+/* Check if debuginfod enabled is set to ask.  */
+
+extern bool debuginfod_enabled_ask_p ();
+
 #endif /* GDB_DEBUGINFOD_SUPPORT_H */
-- 
2.51.0

openSUSE Build Service is sponsored by