From c36b47b5bf81488ef413711f70f684b883a9045d Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Sun, 17 Sep 2023 16:03:34 -0400 Subject: [PATCH] Handle DW_AT_abstract_origin --- src/symbols/symbols_with_libdwarf.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/symbols/symbols_with_libdwarf.cpp b/src/symbols/symbols_with_libdwarf.cpp index a6e1c4e..8ee580c 100644 --- a/src/symbols/symbols_with_libdwarf.cpp +++ b/src/symbols/symbols_with_libdwarf.cpp @@ -537,7 +537,7 @@ namespace libdwarf { Dwarf_Half dwversion, stacktrace_frame& frame ) { - CPPTRACE_VERIFY(die.get_tag() == DW_TAG_subprogram); + CPPTRACE_ASSERT(die.get_tag() == DW_TAG_subprogram); optional name; if(auto linkage_name = die.get_string_attribute(DW_AT_linkage_name)) { name = std::move(linkage_name); @@ -553,6 +553,10 @@ namespace libdwarf { die_object spec = die.resolve_reference_attribute(DW_AT_specification); // TODO: Passing pc here is misleading return retrieve_symbol_for_subprogram(spec, pc, dwversion, frame); + } else if(die.has_attr(DW_AT_abstract_origin)) { + die_object spec = die.resolve_reference_attribute(DW_AT_abstract_origin); + // TODO: Passing pc here is misleading + return retrieve_symbol_for_subprogram(spec, pc, dwversion, frame); } } // TODO: Disabled for now