This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]