summaryrefslogtreecommitdiffstats
path: root/libdw/dwarf_getlocation.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2009-07-15 11:14:23 -0700
committerRoland McGrath <roland@redhat.com>2009-07-15 11:15:02 -0700
commit7dd9464d06c7826952be3c4fa7fc963dd563c025 (patch)
tree1c82f4acd565fc1e8a61289caf765e7499c56ce6 /libdw/dwarf_getlocation.c
parent96d950e3e28d89469b62b46d5a014ad1260e6a1a (diff)
dwarf_getlocation.c: Grok DW_OP_form_tls_address, DW_OP_GNU_push_tls_address, and DW_OP_bit_piece.
Diffstat (limited to 'libdw/dwarf_getlocation.c')
-rw-r--r--libdw/dwarf_getlocation.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c
index 7f07e169..c7f7a890 100644
--- a/libdw/dwarf_getlocation.c
+++ b/libdw/dwarf_getlocation.c
@@ -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;
}