summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2012-11-16 12:25:04 +0100
committerMark Wielaard <[email protected]>2012-11-16 12:25:04 +0100
commit7e3bd4f5ee255c494853abe9e015d01b0c3baf63 (patch)
tree79f98097670ef210d54e610dc03135d51f242178 /src
parentd7ed0254bcdeeed0ed2b69d864afcd9d5492d0a0 (diff)
readelf.c (print_ops): Ajust DW_OP_skip and DW_OP_bra targets calculation.
The 2-byte constant is the number of bytes of the DWARF expression to skip forward or backward from the current operation, beginning after the 2-byte constant. Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/readelf.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 9d6fbe3c..9f0c525a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2012-10-16 Mark Wielaard <[email protected]>
+
+ * readelf.c (print_ops): DW_OP_skip and DW_OP_bra targets are
+ calculated beginning after the operand and 2-byte constant.
+
2012-10-12 Jan Kratochvil <[email protected]>
* readelf.c (ITEM_WRAP_COLUMN, REGISTER_WRAP_COLUMN): Merge to ...
diff --git a/src/readelf.c b/src/readelf.c
index 1801c1c5..7f6f31c6 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -3802,7 +3802,7 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
NEED (2);
printf ("%*s[%4" PRIuMAX "] %s %" PRIuMAX "\n",
indent, "", (uintmax_t) offset, op_name,
- (uintmax_t) (offset + read_2sbyte_unaligned (dbg, data)));
+ (uintmax_t) (offset + read_2sbyte_unaligned (dbg, data) + 3));
CONSUME (2);
data += 2;
offset += 3;