libdw, readelf: Don't handle DW_FORM_data16 as expression block/location.
authorMark Wielaard <mark@klomp.org>
Fri, 15 Jun 2018 14:25:15 +0000 (16:25 +0200)
committerMark Wielaard <mark@klomp.org>
Sun, 17 Jun 2018 18:32:06 +0000 (20:32 +0200)
commit62aed3f99ce6229a7bf6b1a6e66c49d9e676680f
tree1e3e44993805bf35d44cf79234d0c62b87a4b359
parent58ed0e647f1012f8b75eda47967d849aeb619ec2
libdw, readelf: Don't handle DW_FORM_data16 as expression block/location.

Also found by afl-fuzz on the varlocs testcase.
DW_FORM_data16 is constant form according to the DWARF5 spec.
But since it is 128bits it isn't really representable as Dwarf_Word.
So we treat it as block form. But we cannot treat it as an expression
block. Make sure readelf prints it as a regular block and that
dwarf_getlocation[s|_addr] doesn't treat it as location expression.

Signed-off-by: Mark Wielaard <mark@klomp.org>
libdw/ChangeLog
libdw/dwarf_getlocation.c
src/ChangeLog
src/readelf.c