Add more detection of 64-bit DWARF sections

This commit is contained in:
Nick Clifton 2001-10-02 09:08:44 +00:00
parent d32820f2fa
commit 428409d521
2 changed files with 37 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2001-10-02 Nick Clifton <nickc@cambridge.redhat.com>
* readelf.c (display_debug_line, display_debug_pubnames,
display_debug_info, display_debug_frames): Detect and warn
about 64-bit format entries.
(display_debug_aranges): Reword 64-bit warning.
(debug_displays): Add .debug_pubtypes as a known, but not yet
supported, debug section.
2001-10-02 Alan Modra <amodra@bigpond.net.au>
* coffdump.c (PROGRAM_VERSION): Delete.

View File

@ -5761,6 +5761,13 @@ display_debug_lines (section, start, file)
/* Check the length of the block. */
info.li_length = BYTE_GET (external->li_length);
if (info.li_length == 0xffffffff)
{
warn (_("64-bit DWARF line info is not supported yet.\n"));
break;
}
if (info.li_length + sizeof (external->li_length) > section->sh_size)
{
warn
@ -5989,6 +5996,12 @@ display_debug_pubnames (section, start, file)
data = start + sizeof (* external);
start += pubnames.pn_length + sizeof (external->pn_length);
if (pubnames.pn_length == 0xffffffff)
{
warn (_("64-bit DWARF pubnames are not supported yet.\n"));
break;
}
if (pubnames.pn_version != 2)
{
static int warned = 0;
@ -7183,6 +7196,12 @@ display_debug_info (section, start, file)
compunit.cu_abbrev_offset = BYTE_GET (external->cu_abbrev_offset);
compunit.cu_pointer_size = BYTE_GET (external->cu_pointer_size);
if (compunit.cu_length == 0xffffffff)
{
warn (_("64-bit DWARF debug info is not supported yet.\n"));
break;
}
/* Check for RELA relocations in the abbrev_offset address, and
apply them. */
for (relsec = section_headers;
@ -7378,7 +7397,7 @@ display_debug_aranges (section, start, file)
if (arange.ar_length == 0xffffffff)
{
warn (_("DWARF64 aranges not currently supported.\n"));
warn (_("64-bit DWARF aranges are not supported yet.\n"));
break;
}
@ -7597,6 +7616,12 @@ display_debug_frames (section, start, file)
if (length == 0)
return 1;
if (length == 0xffffffff)
{
warn (_("64-bit DWARF format frames are not supported yet.\n"));
break;
}
block_end = saved_start + length + 4;
cie_id = byte_get (start, 4); start += 4;
@ -7705,7 +7730,7 @@ display_debug_frames (section, start, file)
look_for = is_eh ? start - 4 - cie_id : section_start + cie_id;
for (cie=chunks; cie ; cie = cie->next)
for (cie = chunks; cie ; cie = cie->next)
if (cie->chunk_start == look_for)
break;
@ -8147,6 +8172,7 @@ debug_displays[] =
{ ".debug_frame", display_debug_frames, NULL },
{ ".eh_frame", display_debug_frames, NULL },
{ ".debug_macinfo", display_debug_macinfo, NULL },
{ ".debug_pubtypes", display_debug_not_supported, NULL },
{ ".debug_str", display_debug_not_supported, NULL },
{ ".debug_static_func", display_debug_not_supported, NULL },
{ ".debug_static_vars", display_debug_not_supported, NULL },