[binutils-gdb] Accept the DW_FORM_ref8 type when parsing DWARF types.

Nick Clifton nickc@sourceware.org
Tue Nov 10 11:55:44 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1f57314183549008c065ad2240598d2b0f0ff56b

commit 1f57314183549008c065ad2240598d2b0f0ff56b
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue Nov 10 11:55:18 2020 +0000

    Accept the DW_FORM_ref8 type when parsing DWARF types.
    
            * dwarf.c (skip_attr_bytes): Correctly handle DW_FORM_ref8.
            (get_type_abbrev_from_form): Accept DW_FORM_ref8.

Diff:
---
 binutils/dwarf.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 58077447293..cf68ebaff7d 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -2025,6 +2025,21 @@ skip_attr_bytes (unsigned long          form,
       break;
 
     case DW_FORM_ref8:
+      {
+	dwarf_vma high_bits;
+
+	SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
+	data += 8;
+	if (sizeof (uvalue) > 4)
+	  uvalue += high_bits << 32;
+	else if (high_bits != 0)
+	  {
+	    /* FIXME: What to do ?  */
+	    return NULL;
+	  }
+	break;
+      }
+
     case DW_FORM_data8:
     case DW_FORM_ref_sig8:
       data += 8;
@@ -2115,6 +2130,7 @@ get_type_abbrev_from_form (unsigned long                 form,
     case DW_FORM_ref1:
     case DW_FORM_ref2:
     case DW_FORM_ref4:
+    case DW_FORM_ref8:
     case DW_FORM_ref_udata:
       if (uvalue + cu_offset > section->size)
 	{


More information about the Binutils-cvs mailing list