aboutsummaryrefslogtreecommitdiff
path: root/binutils/dwarf.c
diff options
context:
space:
mode:
authorNatarajan, Kavitha <Kavitha.Natarajan@amd.com>2022-05-25 16:10:38 +0100
committerNick Clifton <nickc@redhat.com>2022-05-25 16:10:38 +0100
commit3ac9da49378ccb061e3e33e4342c35949bf368a9 (patch)
tree173d88e8e612392b746047d59ac8797f170a2b13 /binutils/dwarf.c
parentcce0ae568c7e30e0a7b8d1bd77f8c4b7d7b8ce7b (diff)
downloadfsf-binutils-gdb-3ac9da49378ccb061e3e33e4342c35949bf368a9.zip
fsf-binutils-gdb-3ac9da49378ccb061e3e33e4342c35949bf368a9.tar.gz
fsf-binutils-gdb-3ac9da49378ccb061e3e33e4342c35949bf368a9.tar.bz2
Add bionutils support for DWARF v5's DW_OP_addrx.
Diffstat (limited to 'binutils/dwarf.c')
-rw-r--r--binutils/dwarf.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index a0dfd4d..caa3ce4 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -1721,6 +1721,10 @@ decode_location_expression (unsigned char * data,
printf ("DW_OP_GNU_parameter_ref: <0x%s>",
dwarf_vmatoa ("x", cu_offset + uvalue));
break;
+ case DW_OP_addrx:
+ READ_ULEB (uvalue, data, end);
+ printf ("DW_OP_addrx <0x%s>", dwarf_vmatoa ("x", uvalue));
+ break;
case DW_OP_GNU_addr_index:
READ_ULEB (uvalue, data, end);
printf ("DW_OP_GNU_addr_index <0x%s>", dwarf_vmatoa ("x", uvalue));
@@ -2661,10 +2665,15 @@ read_and_display_attr_value (unsigned long attribute,
uvalue = check_uvalue (block_start, uvalue, end);
- if (do_loc)
- data = block_start + uvalue;
- else
- data = display_block (block_start, uvalue, end, delimiter);
+ data = block_start + uvalue;
+ if (!do_loc)
+ {
+ unsigned char op;
+
+ SAFE_BYTE_GET (op, block_start, sizeof (op), end);
+ if (op != DW_OP_addrx)
+ data = display_block (block_start, uvalue, end, delimiter);
+ }
break;
case DW_FORM_block1: