mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
bfd: Handle DW_FORM_data16 for .debug_line tables containing MD5
* dwarf2.c (read_attribute_value): Handle DW_FORM_data16. (read_formatted_entries): Likewise. And skip zero entry.
This commit is contained in:
parent
531c73a37b
commit
19d80e5fec
@ -1,3 +1,8 @@
|
||||
2020-08-24 Mark Wielaard <mark@klomp.org>
|
||||
|
||||
* dwarf2.c (read_attribute_value): Handle DW_FORM_data16.
|
||||
(read_formatted_entries): Likewise. And skip zero entry.
|
||||
|
||||
2020-08-24 Cooper Qu <cooper.qu@linux.alibaba.com>
|
||||
|
||||
* bfd-in2.h (bfd_mach_ck860): New.
|
||||
|
21
bfd/dwarf2.c
21
bfd/dwarf2.c
@ -1329,6 +1329,17 @@ read_attribute_value (struct attribute * attr,
|
||||
attr->form = DW_FORM_sdata;
|
||||
attr->u.sval = implicit_const;
|
||||
break;
|
||||
case DW_FORM_data16:
|
||||
/* This is really a "constant", but there is no way to store that
|
||||
so pretend it is a 16 byte block instead. */
|
||||
amt = sizeof (struct dwarf_block);
|
||||
blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
|
||||
if (blk == NULL)
|
||||
return NULL;
|
||||
blk->size = 16;
|
||||
info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
|
||||
attr->u.blk = blk;
|
||||
break;
|
||||
default:
|
||||
_bfd_error_handler (_("DWARF error: invalid or unhandled FORM value: %#x"),
|
||||
form);
|
||||
@ -2069,11 +2080,17 @@ read_formatted_entries (struct comp_unit *unit, bfd_byte **bufp,
|
||||
case DW_FORM_udata:
|
||||
*uintp = attr.u.val;
|
||||
break;
|
||||
|
||||
case DW_FORM_data16:
|
||||
/* MD5 data is in the attr.blk, but we are ignoring those. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!callback (table, fe.name, fe.dir, fe.time, fe.size))
|
||||
return FALSE;
|
||||
/* Skip the first "zero entry", which is the compilation dir/file. */
|
||||
if (datai != 0)
|
||||
if (!callback (table, fe.name, fe.dir, fe.time, fe.size))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*bufp = buf;
|
||||
|
Loading…
Reference in New Issue
Block a user