summaryrefslogtreecommitdiffstats
path: root/lib/Plugins/CCpp.cpp
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2010-02-01 16:06:52 +0100
committerKarel Klic <kklic@redhat.com>2010-02-01 16:06:52 +0100
commite45356512a661c4dd1d4d18bc40c37a3ffb3b989 (patch)
tree9fb3e08e1b5c74e683a91045152b08ca7cab5997 /lib/Plugins/CCpp.cpp
parent19359090b7cfacacb8d1b803211057e16c53becb (diff)
parent280ef1e68789ef7ef82048b8a772a57203750495 (diff)
downloadabrt-e45356512a661c4dd1d4d18bc40c37a3ffb3b989.tar.gz
abrt-e45356512a661c4dd1d4d18bc40c37a3ffb3b989.tar.xz
abrt-e45356512a661c4dd1d4d18bc40c37a3ffb3b989.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'lib/Plugins/CCpp.cpp')
-rw-r--r--lib/Plugins/CCpp.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/Plugins/CCpp.cpp b/lib/Plugins/CCpp.cpp
index 5838bc4..b6305a2 100644
--- a/lib/Plugins/CCpp.cpp
+++ b/lib/Plugins/CCpp.cpp
@@ -287,12 +287,25 @@ static void GetBacktrace(const char *pDebugDumpDir,
}
args[3] = (char*)dfd.c_str();
- /*
+ /* "file BINARY_FILE" is needed, without it gdb cannot properly
+ * unwind the stack. Currently the unwind information is located
+ * in .eh_frame which is stored only in binary, not in coredump
+ * or debuginfo.
+ *
+ * Fedora GDB does not strictly need it, it will find the binary
+ * by its build-id. But for binaries either without build-id
+ * (=built on non-Fedora GCC) or which do not have
+ * their debuginfo rpm installed gdb would not find BINARY_FILE
+ * so it is still makes sense to supply "file BINARY_FILE".
+ *
* Unfortunately, "file BINARY_FILE" doesn't work well if BINARY_FILE
* was deleted (as often happens during system updates):
* gdb uses specified BINARY_FILE
* even if it is completely unrelated to the coredump
* See https://bugzilla.redhat.com/show_bug.cgi?id=525721
+ *
+ * TODO: check mtimes on COREFILE and BINARY_FILE and not supply
+ * BINARY_FILE if it is newer (to at least avoid gdb complaining).
*/
args[4] = (char*)"-ex";
string file = ssprintf("file %s", executable.c_str());