1
1
Fork 1
mirror of https://github.com/oddlama/nix-config.git synced 2025-10-11 07:10:39 +02:00

feat: write small gdb patch to show libraries in unknown coredump backtraces

This commit is contained in:
oddlama 2023-09-15 22:18:55 +02:00
parent 451b562fd4
commit 154a2518e0
No known key found for this signature in database
GPG key ID: 14EFE510775FE39A
2 changed files with 44 additions and 3 deletions

View file

@ -0,0 +1,33 @@
diff --git a/gdb/stack.c b/gdb/stack.c
index 7e45d59..cf38ff8 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -1376,7 +1376,27 @@ print_frame (const frame_print_options &fp_opts,
annotate_frame_function_name ();
string_file stb;
- gdb_puts (funname ? funname.get () : "??", &stb);
+
+ const char* from_where = "??";
+ if (funname) {
+ from_where = funname.get();
+ } else {
+ if (core_bfd) {
+ gdbarch_read_core_file_mappings(gdbarch, core_bfd,
+ [=] (ULONGEST count) { },
+ [&] (int num, ULONGEST start, ULONGEST end, ULONGEST file_ofs,
+ const char *filename, const bfd_build_id *build_id)
+ {
+ if (start <= pc && pc < end) {
+ from_where = filename;
+ }
+ });
+ } else {
+ // too much work for this small patch. Would need to inspect /proc/<pid>/maps
+ }
+ }
+
+ gdb_puts (from_where, &stb);
uiout->field_stream ("func", stb, function_name_style.style ());
uiout->wrap_hint (3);
annotate_frame_args ();

View file

@ -3,9 +3,17 @@
# Also make it the default gdb.
pwndbgWithDebuginfod =
(pkgs.pwndbg.override {
gdb = pkgs.gdb.override {
enableDebuginfod = true;
};
gdb =
(pkgs.gdb.override {
enableDebuginfod = true;
})
.overrideAttrs (_finalAttrs: previousAttrs: {
patches =
previousAttrs.patches
++ [
./0001-gdb-show-libraries-in-coredump-backtrace.patch
];
});
})
.overrideAttrs (_finalAttrs: previousAttrs: {
installPhase =