diff options
author | Mark Wielaard <[email protected]> | 2009-07-24 15:49:51 -0700 |
---|---|---|
committer | Ulrich Drepper <[email protected]> | 2009-07-24 15:49:51 -0700 |
commit | daf85b25f2a7fa9fde54f1104761209381959160 (patch) | |
tree | c5fbc7e889c00846dc6ebc1195e66f9102261828 | |
parent | fa1d4447b16f16ff9056a24163b175fcbc3a57cf (diff) |
Handle DW_OP_implicit_value in readelf.
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/readelf.c | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 69f9a655..84e4f548 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2009-07-20 Mark Wielaard <[email protected]> + + * readelf.c (print_ops): Add handling of DW_OP_implicit_value + and DW_OP_stack_value. + 2009-07-14 Ulrich Drepper <[email protected]> * elflint.c (check_elf_header): Allow Linux ABI. diff --git a/src/readelf.c b/src/readelf.c index 2e8257fa..69d9aa52 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -3880,6 +3880,8 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest, [DW_OP_form_tls_address] = "form_tls_address", [DW_OP_call_frame_cfa] = "call_frame_cfa", [DW_OP_bit_piece] = "bit_piece", + [DW_OP_implicit_value] = "implicit_value", + [DW_OP_stack_value] = "stack_value", }; if (len == 0) @@ -4092,6 +4094,19 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest, offset += 3; break; + case DW_OP_implicit_value: + start = data; + get_uleb128 (uleb, data); /* XXX check overrun */ + printf ("%*s[%4" PRIuMAX "] %s %u (", + indent, "", (uintmax_t) offset, known[op], uleb); + NEED (uleb); + while (uleb-- > 0) + printf ("%02x ", *data++); + fputs (")\n", stdout); + len -= data - start; + offset += 1 + (data - start); + break; + default: /* No Operand. */ if (op < sizeof known / sizeof known[0] && known[op] != NULL) |