From a518cd8874333470b0c71916a5d282b2c5bd9e20 Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:30:11 -0500 Subject: [PATCH] Walk subprogram children to handle lambdas better and also cast better --- src/symbols/symbols_with_libdwarf.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/symbols/symbols_with_libdwarf.cpp b/src/symbols/symbols_with_libdwarf.cpp index d63ed58..d58158c 100644 --- a/src/symbols/symbols_with_libdwarf.cpp +++ b/src/symbols/symbols_with_libdwarf.cpp @@ -357,8 +357,8 @@ namespace libdwarf { const auto col = die.get_unsigned_attribute(DW_AT_call_column); inlines.push_back(stacktrace_frame{ 0, - (unsigned int)line.value_or(0), - (unsigned int)col.value_or(0), + {static_cast(line.value_or(0))}, + {static_cast(col.value_or(0))}, file, name, true @@ -464,6 +464,13 @@ namespace libdwarf { for(auto range : ranges_vec) { vec.push_back({ die.clone(), range.first, range.second }); } + // Walk children to get things like lambdas + // TODO: Somehow find a way to get better names here? For gcc it's just "operator()" + // On clang it's better + auto child = die.get_child(); + if(child) { + preprocess_subprograms(child, dwversion, vec); + } } break; case DW_TAG_namespace: