]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
Handle DW_OP_implicit_value in readelf.
authorMark Wielaard <mjw@redhat.com>
Fri, 24 Jul 2009 22:49:51 +0000 (15:49 -0700)
committerUlrich Drepper <drepper@redhat.com>
Fri, 24 Jul 2009 22:49:51 +0000 (15:49 -0700)
src/ChangeLog
src/readelf.c

index 69f9a655f9f16664b31dec02d63d3aeb5762010c..84e4f548184936c776a40eb93d7d8abc19f01134 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-20  Mark Wielaard  <mjw@redhat.com>
+
+       * readelf.c (print_ops): Add handling of DW_OP_implicit_value
+       and DW_OP_stack_value.
+
 2009-07-14  Ulrich Drepper  <drepper@redhat.com>
 
        * elflint.c (check_elf_header): Allow Linux ABI.
index 2e8257fa85456546da1ee6f4b3e961ea1e5b978a..69d9aa5202d1124af5ddf542967a97bdb41f9700 100644 (file)
@@ -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)