summaryrefslogtreecommitdiff
path: root/libdw/libdw_form.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2009-10-15 12:26:49 -0700
committerRoland McGrath <roland@redhat.com>2009-10-15 12:26:49 -0700
commit9ca7bc4cb83845372375398006ec04e3f7df1235 (patch)
treeef35e356ba2c00ac133a65bafb1bc17bf13bd31b /libdw/libdw_form.c
parentf80c90785db8af356791a3d88436a33b292ae6a4 (diff)
downloadelfutils-9ca7bc4cb83845372375398006ec04e3f7df1235.tar.gz
More grokage of DWARF4 forms.
Diffstat (limited to 'libdw/libdw_form.c')
-rw-r--r--libdw/libdw_form.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libdw/libdw_form.c b/libdw/libdw_form.c
index ad78f4b4..219dd793 100644
--- a/libdw/libdw_form.c
+++ b/libdw/libdw_form.c
@@ -1,5 +1,5 @@
/* Helper functions for form handling.
- Copyright (C) 2003, 2004, 2006, 2007 Red Hat, Inc.
+ Copyright (C) 2003-2009 Red Hat, Inc.
This file is part of Red Hat elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2003.
@@ -78,6 +78,7 @@ __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, unsigned int form,
break;
case DW_FORM_strp:
+ case DW_FORM_sec_offset:
result = cu->offset_size;
break;
@@ -94,11 +95,16 @@ __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, unsigned int form,
break;
case DW_FORM_block:
+ case DW_FORM_exprloc:
saved = valp;
get_uleb128 (u128, valp);
result = u128 + (valp - saved);
break;
+ case DW_FORM_flag_present:
+ result = 0;
+ break;
+
case DW_FORM_ref1:
case DW_FORM_data1:
case DW_FORM_flag:
@@ -117,6 +123,7 @@ __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, unsigned int form,
case DW_FORM_data8:
case DW_FORM_ref8:
+ case DW_FORM_ref_sig8:
result = 8;
break;