public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
To: gdb-patches@sourceware.org
Cc: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Subject: [PATCH] gdb/configure.ac: Add option --with-additional-debug-dirs
Date: Wed,  7 Jun 2023 01:31:18 +0200	[thread overview]
Message-ID: <20230606233118.146167-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/config.in    |  3 +++
 gdb/configure    | 19 +++++++++++++++++--
 gdb/configure.ac |  6 ++++++
 gdb/main.c       |  5 +++++
 gdb/top.c        |  6 ++++++
 5 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/gdb/config.in b/gdb/config.in
index a7da88b92d77..ec70e17c2c11 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 5bb2a0795e59..9a61bbe857e9 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
+                          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
@@ -11448,7 +11452,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11451 "configure"
+#line 11455 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11554,7 +11558,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11557 "configure"
+#line 11561 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -17830,6 +17834,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 fb43cd10d6c8..715001384177 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -119,6 +119,12 @@ 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],
+  [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/main.c b/gdb/main.c
index 47eec0e50730..788cc3199617 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -719,6 +719,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 90ddc5f5ea73..3528243cc058 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1581,6 +1581,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: d3f340763bab7c74838ebb481fd7ff93acd9f00c

             reply	other threads:[~2023-06-06 23:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-06 23:31 Thiago Jung Bauermann [this message]
2023-06-22 22:53 ` Thiago Jung Bauermann
2023-10-03 18:59 ` Tom Tromey
2023-10-04 18:29   ` 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=20230606233118.146167-1-thiago.bauermann@linaro.org \
    --to=thiago.bauermann@linaro.org \
    --cc=gdb-patches@sourceware.org \
    /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).