dbghelp/dwarf: Add support for FORM_exprloc.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6bd22a2f50
commit
40877456ea
|
@ -495,6 +495,7 @@ static void dwarf2_swallow_attribute(dwarf2_traverse_context_t* ctx,
|
||||||
case DW_FORM_ref_udata:
|
case DW_FORM_ref_udata:
|
||||||
case DW_FORM_udata: step = dwarf2_leb128_length(ctx); break;
|
case DW_FORM_udata: step = dwarf2_leb128_length(ctx); break;
|
||||||
case DW_FORM_string: step = strlen((const char*)ctx->data) + 1; break;
|
case DW_FORM_string: step = strlen((const char*)ctx->data) + 1; break;
|
||||||
|
case DW_FORM_exprloc:
|
||||||
case DW_FORM_block: step = dwarf2_leb128_as_unsigned(ctx); break;
|
case DW_FORM_block: step = dwarf2_leb128_as_unsigned(ctx); break;
|
||||||
case DW_FORM_block1: step = dwarf2_parse_byte(ctx); break;
|
case DW_FORM_block1: step = dwarf2_parse_byte(ctx); break;
|
||||||
case DW_FORM_block2: step = dwarf2_parse_u2(ctx); break;
|
case DW_FORM_block2: step = dwarf2_parse_u2(ctx); break;
|
||||||
|
@ -604,6 +605,7 @@ static void dwarf2_fill_attr(const dwarf2_parse_context_t* ctx,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_FORM_block:
|
case DW_FORM_block:
|
||||||
|
case DW_FORM_exprloc:
|
||||||
attr->u.block.size = dwarf2_get_leb128_as_unsigned(data, &attr->u.block.ptr);
|
attr->u.block.size = dwarf2_get_leb128_as_unsigned(data, &attr->u.block.ptr);
|
||||||
TRACE("block<%p,%u>\n", attr->u.block.ptr, attr->u.block.size);
|
TRACE("block<%p,%u>\n", attr->u.block.ptr, attr->u.block.size);
|
||||||
break;
|
break;
|
||||||
|
@ -955,6 +957,7 @@ static BOOL dwarf2_compute_location_attr(dwarf2_parse_context_t* ctx,
|
||||||
case DW_FORM_block1:
|
case DW_FORM_block1:
|
||||||
case DW_FORM_block2:
|
case DW_FORM_block2:
|
||||||
case DW_FORM_block4:
|
case DW_FORM_block4:
|
||||||
|
case DW_FORM_exprloc:
|
||||||
break;
|
break;
|
||||||
default: FIXME("Unsupported yet form %lx\n", xloc.form);
|
default: FIXME("Unsupported yet form %lx\n", xloc.form);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1696,6 +1699,7 @@ static void dwarf2_parse_variable(dwarf2_subprogram_t* subpgm,
|
||||||
case DW_FORM_block1:
|
case DW_FORM_block1:
|
||||||
case DW_FORM_block2:
|
case DW_FORM_block2:
|
||||||
case DW_FORM_block4:
|
case DW_FORM_block4:
|
||||||
|
case DW_FORM_exprloc:
|
||||||
v.n1.n2.vt = VT_I4;
|
v.n1.n2.vt = VT_I4;
|
||||||
switch (value.u.block.size)
|
switch (value.u.block.size)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue