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>
This commit is contained in:
Eric Pouech 2021-09-26 14:46:43 +02:00 committed by Alexandre Julliard
parent e5a1b8b334
commit c2d1d76531
1 changed files with 21 additions and 0 deletions

View File

@ -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: