[PATCH 04/10] dbghelp/dwarf: added support for DW_TAG_imported_unit

Eric Pouech eric.pouech at gmail.com
Fri Sep 24 10:32:33 CDT 2021


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




More information about the wine-devel mailing list