dbghelp/dwarf: Add definitions of some GNU extensions for FORMs.

And return failure when encoutering them, as they are not supported yet.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Eric Pouech 2021-09-11 10:59:24 +02:00 committed by Alexandre Julliard
parent 12a778426d
commit 23f0ebbca6
2 changed files with 14 additions and 0 deletions

View file

@ -501,6 +501,8 @@ static void dwarf2_swallow_attribute(dwarf2_traverse_context_t* ctx,
case DW_FORM_block2: step = dwarf2_parse_u2(ctx); break;
case DW_FORM_block4: step = dwarf2_parse_u4(ctx); break;
case DW_FORM_sec_offset:
case DW_FORM_GNU_ref_alt:
case DW_FORM_GNU_strp_alt:
case DW_FORM_strp: step = head->offset_size; break;
default:
FIXME("Unhandled attribute form %lx\n", abbrev_attr->form);
@ -633,6 +635,14 @@ static BOOL dwarf2_fill_attr(const dwarf2_parse_context_t* ctx,
TRACE("sec_offset<%s>\n", wine_dbgstr_longlong(attr->u.lluvalue));
break;
case DW_FORM_GNU_ref_alt:
FIXME("Unhandled FORM_GNU_ref_alt\n");
attr->u.uvalue = 0;
return FALSE;
case DW_FORM_GNU_strp_alt:
FIXME("Unhandled FORM_GNU_strp_alt\n");
attr->u.string = NULL;
return FALSE;
default:
FIXME("Unhandled attribute form %lx\n", abbrev_attr->form);
break;

View file

@ -266,6 +266,10 @@ typedef enum dwarf_form_e
DW_FORM_exprloc = 0x18,
DW_FORM_flag_present = 0x19,
DW_FORM_ref_sig8 = 0x20,
/** GNU extensions */
DW_FORM_GNU_ref_alt = 0x1f20,
DW_FORM_GNU_strp_alt = 0x1f21,
} dwarf_form_t;
/** type encoding */