gdb: Fix abort w/NIX_DEBUG_INFO_DIRS patch (#80929)

The current gdb patch to support NIX_DEBUG_INFO_DIRS fails if
the user attempts to change the debug file directory to a
value other than the default. For instance:

(gdb) set debug-file-directory /run/booted-system/sw/lib/debug

results in:

munmap_chunk(): invalid pointer
Aborted (core dumped)

To fix this issue, the debug_file_directory is allocated
with xstrdup so that a subsequent call to xfree will succeed.
This commit is contained in:
tollb 2020-02-24 20:18:09 -05:00 committed by GitHub
parent 2cb48bb1c6
commit ad337f7f3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,11 +3,13 @@ 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)
@@ -556,3 +556,8 @@ captured_main_1 (struct captured_main_args *context)
- debug_file_directory = relocate_gdb_directory (DEBUGDIR,
+ debug_file_directory = getenv("NIX_DEBUG_INFO_DIRS");
+
+ if (debug_file_directory == NULL)
+ if (debug_file_directory != NULL)
+ debug_file_directory = xstrdup(debug_file_directory);
+ else
+ debug_file_directory = relocate_gdb_directory (DEBUGDIR,
DEBUGDIR_RELOCATABLE);