Decode expression lists used with DW_AT_byte_size and other DWARF attributes.
authorNick Clifton <nickc@redhat.com>
Mon, 18 Dec 2017 17:57:18 +0000 (17:57 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 18 Dec 2017 17:57:18 +0000 (17:57 +0000)
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
binutils/dwarf.c

index eb596d10a9fff84f2249f357cafcd0ee23519100..ee53c3a8773e215ad3c5c7f1cb5f468b0ea933d8 100644 (file)
@@ -1,3 +1,10 @@
+2017-12-18  Nick Clifton  <nickc@redhat.com>
+
+       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  <amodra@gmail.com>
 
        * testsuite/lib/utils-lib.exp (default_binutils_assemble_flags):
index a92e7b1fc65225e3d88d62ac070d8367c2ac5a04..dec4c2ff8782e76287fb6dfe2df5a0edbccb5931 100644 (file)
@@ -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