Module: wine Branch: master Commit: e6e50f6c474e5b20c44e20c8105f02ff5ecfc2f0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e6e50f6c474e5b20c44e20c810...
Author: David Heidelberg david@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;