Matej Habrnal 345ed6
From 98e5d89b5238eac954d1947de52c6b3fcf3ae987 Mon Sep 17 00:00:00 2001
Matej Habrnal 345ed6
From: Jakub Filak <jfilak@redhat.com>
Matej Habrnal 345ed6
Date: Tue, 29 Nov 2016 11:24:49 +0100
Matej Habrnal 345ed6
Subject: [PATCH] ccpp: tell gdb to analyze saved binary image
Matej Habrnal 345ed6
Matej Habrnal 345ed6
This is particularly useful when dealing with crashes in containers and
Matej Habrnal 345ed6
changed root environments. GDB reads the debug information from the
Matej Habrnal 345ed6
source elf and if the source elf is not available GDB generates useless
Matej Habrnal 345ed6
backtraces.
Matej Habrnal 345ed6
Matej Habrnal 345ed6
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Matej Habrnal 345ed6
---
Matej Habrnal 345ed6
 src/lib/hooklib.c | 8 +++++++-
Matej Habrnal 345ed6
 1 file changed, 7 insertions(+), 1 deletion(-)
Matej Habrnal 345ed6
Matej Habrnal 345ed6
diff --git a/src/lib/hooklib.c b/src/lib/hooklib.c
Matej Habrnal 345ed6
index cb5c4cb..ccb1936 100644
Matej Habrnal 345ed6
--- a/src/lib/hooklib.c
Matej Habrnal 345ed6
+++ b/src/lib/hooklib.c
Matej Habrnal 345ed6
@@ -246,7 +246,13 @@ char *get_backtrace(const char *dump_dir_name, unsigned timeout_sec, const char
Matej Habrnal 345ed6
     struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
Matej Habrnal 345ed6
     if (!dd)
Matej Habrnal 345ed6
         return NULL;
Matej Habrnal 345ed6
-    char *executable = dd_load_text(dd, FILENAME_EXECUTABLE);
Matej Habrnal 345ed6
+
Matej Habrnal 345ed6
+    char *executable = NULL;
Matej Habrnal 345ed6
+    if (dd_exist(dd, FILENAME_BINARY))
Matej Habrnal 345ed6
+        executable = concat_path_file(dd->dd_dirname, FILENAME_BINARY);
Matej Habrnal 345ed6
+    else
Matej Habrnal 345ed6
+        executable = dd_load_text(dd, FILENAME_EXECUTABLE);
Matej Habrnal 345ed6
+
Matej Habrnal 345ed6
     dd_close(dd);
Matej Habrnal 345ed6
 
Matej Habrnal 345ed6
     /* Let user know what's going on */
Matej Habrnal 345ed6
-- 
Matej Habrnal 345ed6
2.9.3
Matej Habrnal 345ed6