diff options
Diffstat (limited to 'libdw/dwarf_formblock.c')
-rw-r--r-- | libdw/dwarf_formblock.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libdw/dwarf_formblock.c b/libdw/dwarf_formblock.c index 13f9e72a..924baf45 100644 --- a/libdw/dwarf_formblock.c +++ b/libdw/dwarf_formblock.c @@ -1,5 +1,5 @@ /* Return block represented by attribute. - Copyright (C) 2004-2010, 2014 Red Hat, Inc. + Copyright (C) 2004-2010, 2014, 2018 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper <drepper@redhat.com>, 2004. @@ -75,6 +75,16 @@ dwarf_formblock (Dwarf_Attribute *attr, Dwarf_Block *return_block) return_block->data = (unsigned char *) datap; break; + case DW_FORM_data16: + /* The DWARFv5 spec calls this constant class, but we interpret + it as a block that the user will need to interpret when + converting to a value. */ + if (unlikely (endp - datap < 16)) + goto invalid; + return_block->length = 16; + return_block->data = (unsigned char *) datap; + break; + default: __libdw_seterrno (DWARF_E_NO_BLOCK); return -1; |