Eric Pouech : dbghelp/dwarf: Add support for DW_TAG_imported_unit.

Alexandre Julliard julliard at winehq.org
Mon Sep 27 15:21:43 CDT 2021


Module: wine
Branch: master
Commit: c2d1d7653170402f0d2f2e45d875b10113b7c958
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c2d1d7653170402f0d2f2e45d875b10113b7c958

Author: Eric Pouech <eric.pouech at 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 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at 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:




More information about the wine-cvs mailing list