dwarf_getlocation.c: Grok DW_OP_form_tls_address, DW_OP_GNU_push_tls_address, and...
authorRoland McGrath <roland@redhat.com>
Wed, 15 Jul 2009 18:14:23 +0000 (11:14 -0700)
committerRoland McGrath <roland@redhat.com>
Wed, 15 Jul 2009 18:15:02 +0000 (11:15 -0700)
libdw/ChangeLog
libdw/dwarf_getlocation.c

index 52e78e9..6c45b9d 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-15  Roland McGrath  <roland@redhat.com>
+
+       * dwarf_getlocation.c: Grok DW_OP_form_tls_address,
+       DW_OP_GNU_push_tls_address, and DW_OP_bit_piece.
+
 2009-07-13  Roland McGrath  <roland@redhat.com>
 
        * dwarf_getlocation.c: Grok DW_OP_call_frame_cfa.
index 7f07e16..c7f7a89 100644 (file)
@@ -244,6 +244,8 @@ __libdw_intern_expression (Dwarf *dbg,
        case DW_OP_push_object_address:
        case DW_OP_call_ref:
        case DW_OP_call_frame_cfa:
+       case DW_OP_form_tls_address:
+       case DW_OP_GNU_push_tls_address:
          /* No operand.  */
          break;
 
@@ -336,6 +338,12 @@ __libdw_intern_expression (Dwarf *dbg,
          get_sleb128 (newloc->number2, data);
          break;
 
+       case DW_OP_bit_piece:
+         /* XXX Check size.  */
+         get_uleb128 (newloc->number, data);
+         get_uleb128 (newloc->number2, data);
+         break;
+
        default:
          goto invalid;
        }