From c54207d32681bb205c28facba73b6173ef15eabf Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 18 Dec 2017 17:57:18 +0000 Subject: [PATCH] Decode expression lists used with DW_AT_byte_size and other DWARF attributes. PR 22532 * dwarf.c (read_and_display_attr_value): Add attributes that might use the DW_FORM_exprloc form, and if so, display the decoded location expression list. --- binutils/ChangeLog | 7 +++++++ binutils/dwarf.c | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index eb596d10a9f..ee53c3a8773 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,10 @@ +2017-12-18 Nick Clifton + + PR 22532 + * dwarf.c (read_and_display_attr_value): Add attributes that might + use the DW_FORM_exprloc form, and if so, display the decoded + location expression list. + 2017-12-14 Alan Modra * testsuite/lib/utils-lib.exp (default_binutils_assemble_flags): diff --git a/binutils/dwarf.c b/binutils/dwarf.c index a92e7b1fc65..dec4c2ff878 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -2588,6 +2588,22 @@ read_and_display_attr_value (unsigned long attribute, } break; + case DW_AT_data_bit_offset: + case DW_AT_byte_size: + case DW_AT_bit_size: + case DW_AT_string_length_byte_size: + case DW_AT_string_length_bit_size: + case DW_AT_bit_stride: + if (form == DW_FORM_exprloc) + { + printf ("\t("); + (void) decode_location_expression (block_start, pointer_size, + offset_size, dwarf_version, + uvalue, cu_offset, section); + printf (")"); + } + break; + case DW_AT_import: { if (form == DW_FORM_ref_sig8