]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
More grokage of DWARF4 forms.
authorRoland McGrath <roland@redhat.com>
Thu, 15 Oct 2009 19:26:49 +0000 (12:26 -0700)
committerRoland McGrath <roland@redhat.com>
Thu, 15 Oct 2009 19:26:49 +0000 (12:26 -0700)
libdw/ChangeLog
libdw/libdw_form.c

index 2208f772d537855650527807e16ac250424b476a..33a18baf59a9dd16a1bfb29dae7f453f5b9ead77 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-15  Roland McGrath  <roland@redhat.com>
+
+       * libdw_form.c (__libdw_form_val_len): Grok DW_FORM_sec_offset,
+       DW_FORM_exprloc, DW_FORM_flag_present, and DW_FORM_ref_sig8.
+
 2009-09-17  Roland McGrath  <roland@redhat.com>
 
        * dwarf_getlocation.c (dwarf_getlocation_implicit_value): Make OP
index ad78f4b4fc97295affe43a05698d86c68bd00a7e..219dd7931a1e2ef8d7dc8252cb281e949a43830e 100644 (file)
@@ -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;