summary refs log tree commit diff
path: root/pkgs/development/tools/misc/gdb/debug-info-from-env.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/misc/gdb/debug-info-from-env.patch')
-rw-r--r--pkgs/development/tools/misc/gdb/debug-info-from-env.patch35
1 files changed, 23 insertions, 12 deletions
diff --git a/pkgs/development/tools/misc/gdb/debug-info-from-env.patch b/pkgs/development/tools/misc/gdb/debug-info-from-env.patch
index a7eda2c7e17..de59bd2d17b 100644
--- a/pkgs/development/tools/misc/gdb/debug-info-from-env.patch
+++ b/pkgs/development/tools/misc/gdb/debug-info-from-env.patch
@@ -1,13 +1,24 @@
-Initialize debug-file-directory from NIX_DEBUG_INFO_DIRS, a colon-separated list
-of directories with separate debugging information files.
-
---- a/gdb/main.c
-+++ b/gdb/main.c
-@@ -551,3 +551,6 @@ captured_main_1 (struct captured_main_args *context)
+diff -ur a/gdb/main.c b/gdb/main.c
+--- a/gdb/main.c	2020-02-08 13:50:14.000000000 +0100
++++ b/gdb/main.c	2020-02-24 10:02:07.731806739 +0100
+@@ -567,9 +567,17 @@
+       gdb_sysroot = xstrdup (TARGET_SYSROOT_PREFIX);
+     }
  
--  debug_file_directory = relocate_gdb_directory (DEBUGDIR,
-+  debug_file_directory = getenv("NIX_DEBUG_INFO_DIRS");
-+
-+  if (debug_file_directory == NULL)
-+    debug_file_directory = relocate_gdb_directory (DEBUGDIR,
- 						 DEBUGDIR_RELOCATABLE);
+-  debug_file_directory
+-    = xstrdup (relocate_gdb_directory (DEBUGDIR,
+-				     DEBUGDIR_RELOCATABLE).c_str ());
++  debug_file_directory = getenv ("NIX_DEBUG_INFO_DIRS");
++  if (debug_file_directory != NULL)
++    // This might be updated later using
++    // $ set debug-file-directory /to/some/path
++    // which will use xfree. We must then have a xmallocated
++    // copy of the string that can be xfeed later.
++    debug_file_directory = xstrdup (debug_file_directory);
++  else
++    debug_file_directory
++      = xstrdup (relocate_gdb_directory (DEBUGDIR,
++                                         DEBUGDIR_RELOCATABLE).c_str ());
+ 
+   gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
+ 					GDB_DATADIR_RELOCATABLE);