Module: wine Branch: master Commit: c2d1d7653170402f0d2f2e45d875b10113b7c958 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c2d1d7653170402f0d2f2e45d...
Author: Eric Pouech eric.pouech@gmail.com Date: Sun Sep 26 14:46:43 2021 +0200
dbghelp/dwarf: Add support for DW_TAG_imported_unit.
Signed-off-by: Eric Pouech eric.pouech@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dbghelp/dwarf.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 13423c93515..785f6651f11 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -2305,6 +2305,24 @@ static void dwarf2_parse_namespace(dwarf2_debug_info_t* di) } }
+static void dwarf2_parse_imported_unit(dwarf2_debug_info_t* di) +{ + struct attribute imp; + + if (di->symt) return; + + TRACE("%s\n", dwarf2_debug_di(di)); + + if (dwarf2_find_attribute(di, DW_AT_import, &imp)) + { + dwarf2_debug_info_t* jmp = dwarf2_jump_to_debug_info(&imp); + if (jmp) di->symt = jmp->symt; + else FIXME("Couldn't load imported CU\n"); + } + else + FIXME("Couldn't find import attribute\n"); +} + static void dwarf2_load_one_entry(dwarf2_debug_info_t* di) { switch (di->abbrev->tag) @@ -2373,6 +2391,9 @@ static void dwarf2_load_one_entry(dwarf2_debug_info_t* di) case DW_TAG_subrange_type: dwarf2_parse_subrange_type(di); break; + case DW_TAG_imported_unit: + dwarf2_parse_imported_unit(di); + break; /* silence a couple of C++ defines */ case DW_TAG_imported_module: case DW_TAG_imported_declaration: