From 6498c837f5db0cf0179b0847ae539031cc7ccae8 Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Sun, 17 Sep 2023 15:19:24 -0400 Subject: [PATCH] Forgot to check CU dwarf version --- src/symbols/symbols_with_libdwarf.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/symbols/symbols_with_libdwarf.cpp b/src/symbols/symbols_with_libdwarf.cpp index 27218fc..a6e1c4e 100644 --- a/src/symbols/symbols_with_libdwarf.cpp +++ b/src/symbols/symbols_with_libdwarf.cpp @@ -834,13 +834,16 @@ namespace libdwarf { Dwarf_Die raw_die; // Setting is_info = true for now, assuming in .debug_info rather than .debug_types CPPTRACE_VERIFY(dwarf_offdie_b(dbg, cu_die_offset, true, &raw_die, nullptr) == DW_DLV_OK); - die_object die(dbg, raw_die); + die_object cu_die(dbg, raw_die); + Dwarf_Half offset_size = 0; + Dwarf_Half dwversion = 0; + dwarf_get_version_of_die(cu_die.get(), &dwversion, &offset_size); if(trace_dwarf) { fprintf(stderr, "Found CU in aranges\n"); - die.print(); + cu_die.print(); } - retrieve_line_info(die, pc, 5, frame); // no offset for line info - retrieve_symbol(die, pc, 5, frame); + retrieve_line_info(cu_die, pc, dwversion, frame); // no offset for line info + retrieve_symbol(cu_die, pc, dwversion, frame); dwarf_dealloc(dbg, arange, DW_DLA_ARANGE); } dwarf_dealloc(dbg, aranges, DW_DLA_LIST);