Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- 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: