From: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tom@tromey.com>
Subject: [PATCH v2] gdb/configure.ac: Add option --with-additional-debug-dirs
Date: Wed, 4 Oct 2023 15:31:02 -0300 [thread overview]
Message-ID: <20231004183102.61669-1-thiago.bauermann@linaro.org> (raw)
If you want to install GDB in a custom prefix, have it look for debug info
in that prefix but also in the distro's default location (typically,
/usr/lib/debug) and run the GDB testsuite before doing "make install", you
have a bit of a problem:
Configuring GDB with '--prefix=$PREFIX' sets the GDB 'debug-file-directory'
parameter to $PREFIX/lib/debug. Unfortunately this precludes GDB from
looking for distro-installed debug info in /usr/lib/debug. For regular GDB
use you could set debug-file-directory to $PREFIX:/usr/lib/debug in
$PREFIX/etc/gdbinit so that GDB will look in both places, but if you want
to run the testsuite then that doesn't help because in that case GDB runs
with the '-nx' option.
There's the configure option '--with-separate-debug-dir' to set the default
value for 'debug-file-directory', but it accepts only one directory and not
a list. I considered modifying it to accept a list, but it's not obvious
how to do that because its value is also used by BFD, as well as processed
for "relocatability".
I thought it was simpler to add a new option to specify a list of
additional directories that will be appended to the debug-file-directory
setting.
---
gdb/NEWS | 8 ++++++++
gdb/config.in | 3 +++
gdb/configure | 19 +++++++++++++++++--
gdb/configure.ac | 8 ++++++++
gdb/doc/gdb.texinfo | 6 ++++--
gdb/main.c | 5 +++++
gdb/top.c | 6 ++++++
7 files changed, 51 insertions(+), 4 deletions(-)
Changed since v1:
Addressed Tom Tromey's review comments:
- Added NEWS entry for the new configure option.
- Documented the new configure option in the GDB manual.
- Properly indented the body of AC_ARG_WITH.
- Added parentheses around RHS side of the assignment in gdb/main.c.
diff --git a/gdb/NEWS b/gdb/NEWS
index 20f53a0d542d..9fe46b5b2e32 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -110,6 +110,14 @@
'inferior' keyword with either the 'thread' or 'task' keywords when
creating a breakpoint.
+* Configure changes
+
+--additional-debug-dirs=PATHs
+
+ Provide a colon-separated list of additional directories to search for
+ separate debug info. These directories are added to the default value of
+ the 'debug-file-directory' GDB parameter.
+
* New commands
set debug breakpoint on|off
diff --git a/gdb/config.in b/gdb/config.in
index f67d3029d829..e17245156d8d 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -3,6 +3,9 @@
/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD
+/* Additional directories to look for separate debug info. */
+#undef ADDITIONAL_DEBUG_DIRS
+
/* Directories from which to load auto-loaded scripts. */
#undef AUTO_LOAD_DIR
diff --git a/gdb/configure b/gdb/configure
index 2d07e0cb596e..1cbc356cb967 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -906,6 +906,7 @@ enable_fast_install
with_gnu_ld
enable_libtool_lock
with_separate_debug_dir
+with_additional_debug_dirs
with_gdb_datadir
with_relocated_sources
with_auto_load_dir
@@ -1660,6 +1661,9 @@ Optional Packages:
--with-separate-debug-dir=PATH
look for global separate debug info in this path
[LIBDIR/debug]
+ --with-additional-debug-dirs=PATHs
+ colon-separated list of additional directories to
+ search for separate debug info
--with-gdb-datadir=PATH look for global separate data files in this path
[DATADIR/gdb]
--with-relocated-sources=PATH
@@ -11479,7 +11483,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11482 "configure"
+#line 11486 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11585,7 +11589,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11588 "configure"
+#line 11592 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -17886,6 +17890,17 @@ _ACEOF
+
+# Check whether --with-additional-debug-dirs was given.
+if test "${with_additional_debug_dirs+set}" = set; then :
+ withval=$with_additional_debug_dirs;
+cat >>confdefs.h <<_ACEOF
+#define ADDITIONAL_DEBUG_DIRS "${withval}"
+_ACEOF
+
+fi
+
+
# We can't pass paths as command line arguments.
# Mingw32 tries to be clever and will convert the paths for us.
# For example -DBINDIR="/usr/local/bin" passed on the command line may get
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 97c6bf0ed5f9..0264199b9481 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -119,6 +119,14 @@ GDB_AC_WITH_DIR(DEBUGDIR, separate-debug-dir,
[look for global separate debug info in this path @<:@LIBDIR/debug@:>@],
[${libdir}/debug])
+AC_ARG_WITH(additional-debug-dirs,
+ AS_HELP_STRING([--with-additional-debug-dirs=PATHs],
+ [colon-separated list of additional directories to
+ search for separate debug info]),
+ [AC_DEFINE_UNQUOTED(ADDITIONAL_DEBUG_DIRS, "${withval}",
+ Additional directories to look for separate
+ debug info.)])
+
# We can't pass paths as command line arguments.
# Mingw32 tries to be clever and will convert the paths for us.
# For example -DBINDIR="/usr/local/bin" passed on the command line may get
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index e1385cfb5192..168c4f7cc016 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -22275,8 +22275,10 @@ file from @code{debuginfod} servers.
@anchor{debug-file-directory}
Global debugging info directories default to what is set by @value{GDBN}
-configure option @option{--with-separate-debug-dir}. During @value{GDBN} run
-you can also set the global debugging info directories, and view the list
+configure option @option{--with-separate-debug-dir} and augmented by the
+colon-separated list of directories provided via @value{GDBN} configure
+option @option{--additional-debug-dirs}. During @value{GDBN} run you can
+also set the global debugging info directories, and view the list
@value{GDBN} is currently using.
@table @code
diff --git a/gdb/main.c b/gdb/main.c
index 97e04f5b5d8e..99468e0853ed 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -723,6 +723,11 @@ captured_main_1 (struct captured_main_args *context)
debug_file_directory
= relocate_gdb_directory (DEBUGDIR, DEBUGDIR_RELOCATABLE);
+#ifdef ADDITIONAL_DEBUG_DIRS
+ debug_file_directory = (debug_file_directory + DIRNAME_SEPARATOR
+ + ADDITIONAL_DEBUG_DIRS);
+#endif
+
gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
GDB_DATADIR_RELOCATABLE);
diff --git a/gdb/top.c b/gdb/top.c
index cbe14b010466..5028440b6711 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1587,6 +1587,12 @@ This GDB was configured as follows:\n\
--with-separate-debug-dir=%s%s\n\
"), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
+#ifdef ADDITIONAL_DEBUG_DIRS
+ gdb_printf (stream, _ ("\
+ --with-additional-debug-dirs=%s\n\
+"), ADDITIONAL_DEBUG_DIRS);
+#endif
+
if (TARGET_SYSTEM_ROOT[0])
gdb_printf (stream, _("\
--with-sysroot=%s%s\n\
base-commit: 1181bcd0d2572aee2c0947040e56bc1f9af634e3
next reply other threads:[~2023-10-04 18:31 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-04 18:31 Thiago Jung Bauermann [this message]
2023-10-05 5:05 ` Eli Zaretskii
2023-10-05 23:12 ` Thiago Jung Bauermann
2023-10-07 7:01 ` Eli Zaretskii
2023-10-26 11:58 ` Eli Zaretskii
2023-10-26 23:48 ` Thiago Jung Bauermann
2023-10-27 5:59 ` Eli Zaretskii
2023-10-05 15:16 ` Tom Tromey
2023-10-06 2:03 ` Thiago Jung Bauermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231004183102.61669-1-thiago.bauermann@linaro.org \
--to=thiago.bauermann@linaro.org \
--cc=gdb-patches@sourceware.org \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).