David Heidelberg : dbghelp: Implement DW_TAG_unspecified_type.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Feb 12 10:13:41 CST 2015
Module: wine
Branch: master
Commit: e6e50f6c474e5b20c44e20c8105f02ff5ecfc2f0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e6e50f6c474e5b20c44e20c8105f02ff5ecfc2f0
Author: David Heidelberg <david at ixit.cz>
Date: Tue Feb 10 23:15:56 2015 +0100
dbghelp: Implement DW_TAG_unspecified_type.
---
dlls/dbghelp/dwarf.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index f1bd6cb..c54bfd3 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -1337,6 +1337,31 @@ static struct symt* dwarf2_parse_volatile_type(dwarf2_parse_context_t* ctx,
return ref_type;
}
+static struct symt* dwarf2_parse_unspecified_type(dwarf2_parse_context_t* ctx,
+ dwarf2_debug_info_t* di)
+{
+ struct attribute name;
+ struct attribute size;
+ struct symt_basic *basic;
+
+ TRACE("%s, for %s\n", dwarf2_debug_ctx(ctx), dwarf2_debug_di(di));
+
+ if (di->symt) return di->symt;
+
+ if (!dwarf2_find_attribute(ctx, di, DW_AT_name, &name))
+ name.u.string = "void";
+ size.u.uvalue = sizeof(void *);
+
+ basic = symt_new_basic(ctx->module, btVoid, name.u.string, size.u.uvalue);
+ di->symt = &basic->symt;
+
+ if (!ctx->symt_cache[sc_void])
+ ctx->symt_cache[sc_void] = di->symt;
+
+ if (dwarf2_get_di_children(ctx, di)) FIXME("Unsupported children\n");
+ return di->symt;
+}
+
static struct symt* dwarf2_parse_reference_type(dwarf2_parse_context_t* ctx,
dwarf2_debug_info_t* di)
{
@@ -2084,6 +2109,9 @@ static void dwarf2_load_one_entry(dwarf2_parse_context_t* ctx,
case DW_TAG_volatile_type:
dwarf2_parse_volatile_type(ctx, di);
break;
+ case DW_TAG_unspecified_type:
+ dwarf2_parse_unspecified_type(ctx, di);
+ break;
case DW_TAG_reference_type:
dwarf2_parse_reference_type(ctx, di);
break;
More information about the wine-cvs
mailing list