This is the mail archive of the
elfutils-devel@sourceware.org
mailing list for the elfutils project.
[PATCH 06/10] Add DW_OP_GNU_parameter_ref to dwarf.h and handle it in readelf.
- From: Mark Wielaard <mjw at redhat dot com>
- To: elfutils-devel at lists dot fedorahosted dot org
- Date: Thu, 26 Jul 2012 00:49:55 +0200
- Subject: [PATCH 06/10] Add DW_OP_GNU_parameter_ref to dwarf.h and handle it in readelf.
DW_OP_GNU_parameter_ref takes as operand a 4 byte CU relative reference
to the abstract optimized away DW_TAG_formal_parameter.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
libdw/ChangeLog | 4 ++++
libdw/dwarf.h | 1 +
src/ChangeLog | 4 ++++
src/readelf.c | 12 ++++++++++++
4 files changed, 21 insertions(+)
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index bda66d2..ec50d41 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,7 @@
+2012-07-19 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf.h: Add DW_OP_GNU_parameter_ref.
+
2012-07-25 Mark Wielaard <mjw@redhat.com>
* libdw.h: Declare dwarf_tag_string, dwarf_attr_string,
diff --git a/libdw/dwarf.h b/libdw/dwarf.h
index 880d62c..641ed73 100644
--- a/libdw/dwarf.h
+++ b/libdw/dwarf.h
@@ -472,6 +472,7 @@ enum
DW_OP_GNU_deref_type = 0xf6,
DW_OP_GNU_convert = 0xf7,
DW_OP_GNU_reinterpret = 0xf9,
+ DW_OP_GNU_parameter_ref = 0xfa,
DW_OP_lo_user = 0xe0, /* Implementation-defined range start. */
DW_OP_hi_user = 0xff /* Implementation-defined range end. */
diff --git a/src/ChangeLog b/src/ChangeLog
index 7c6ed6d..3560245 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2012-07-19 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_ops): Handle DW_OP_GNU_parameter_ref.
+
2012-07-25 Mark Wielaard <mjw@redhat.com>
* readelf.c: Remove dwarfstrings.c include.
diff --git a/src/readelf.c b/src/readelf.c
index 947c7be..01cf149 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -3720,6 +3720,18 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
offset += 1 + (data - start);
break;
+ case DW_OP_GNU_parameter_ref:
+ /* 4 byte CU relative reference to the abstract optimized away
+ DW_TAG_formal_parameter. */
+ NEED (4);
+ printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "]\n",
+ indent, "", (uintmax_t) offset, op_name,
+ (uintmax_t) read_4ubyte_unaligned (dbg, data));
+ CONSUME (4);
+ data += 4;
+ offset += 5;
+ break;
+
default:
/* No Operand. */
printf ("%*s[%4" PRIuMAX "] %s\n",
--
1.7.11.2