forked from mirrors_public/oddlama_nix-config
feat: write small gdb patch to show libraries in unknown coredump backtraces
This commit is contained in:
parent
451b562fd4
commit
154a2518e0
2 changed files with 44 additions and 3 deletions
|
@ -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 ();
|
|
@ -3,9 +3,17 @@
|
|||
# Also make it the default gdb.
|
||||
pwndbgWithDebuginfod =
|
||||
(pkgs.pwndbg.override {
|
||||
gdb = pkgs.gdb.override {
|
||||
gdb =
|
||||
(pkgs.gdb.override {
|
||||
enableDebuginfod = true;
|
||||
};
|
||||
})
|
||||
.overrideAttrs (_finalAttrs: previousAttrs: {
|
||||
patches =
|
||||
previousAttrs.patches
|
||||
++ [
|
||||
./0001-gdb-show-libraries-in-coredump-backtrace.patch
|
||||
];
|
||||
});
|
||||
})
|
||||
.overrideAttrs (_finalAttrs: previousAttrs: {
|
||||
installPhase =
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue