From 09a7e2d3d0ed226cf3d4a410112596873770c7e1 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 15 Mar 2010 21:12:22 +0100 Subject: [PATCH] dbghelp: Added full support for DW_FORM_data8 attributes, as well as primary support for DW_FORM_block* attributes. --- dlls/dbghelp/dwarf.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 433dca88ff4..81a1333bee8 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -139,6 +139,7 @@ struct attribute union { unsigned long uvalue; + ULONGLONG lluvalue; long svalue; const char* string; struct dwarf2_block block; @@ -512,9 +513,8 @@ static void dwarf2_fill_attr(const dwarf2_parse_context_t* ctx, break; case DW_FORM_data8: - attr->u.block.size = 8; - attr->u.block.ptr = data; - data += 8; + attr->u.lluvalue = dwarf2_get_u8(data); + TRACE("data8<%s>\n", wine_dbgstr_longlong(attr->u.uvalue)); break; case DW_FORM_ref1: @@ -1480,6 +1480,11 @@ static void dwarf2_parse_variable(dwarf2_subprogram_t* subpgm, v.n1.n2.n3.lVal = value.u.uvalue; break; + case DW_FORM_data8: + v.n1.n2.vt = VT_UI8; + v.n1.n2.n3.llVal = value.u.lluvalue; + break; + case DW_FORM_sdata: v.n1.n2.vt = VT_I4; v.n1.n2.n3.lVal = value.u.svalue; @@ -1511,12 +1516,6 @@ static void dwarf2_parse_variable(dwarf2_subprogram_t* subpgm, } break; - case DW_FORM_data8: - v.n1.n2.vt = VT_I1 | VT_BYREF; - v.n1.n2.n3.byref = pool_alloc(&subpgm->ctx->module->pool, value.u.block.size); - memcpy(v.n1.n2.n3.byref, value.u.block.ptr, value.u.block.size); - break; - default: FIXME("Unsupported form for const value %s (%lx)\n", name.u.string, value.form);