aboutsummaryrefslogtreecommitdiff
path: root/binutils/readelf.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2001-10-02 09:08:44 +0000
committerNick Clifton <nickc@redhat.com>2001-10-02 09:08:44 +0000
commit428409d521dfe477cb0a8da96e1e36452b7ab1c2 (patch)
treec42892840c97953bbec107389798348e99cbf856 /binutils/readelf.c
parentd32820f2fa29322c86fa03a662b114ecdfd0e28e (diff)
downloadgdb-428409d521dfe477cb0a8da96e1e36452b7ab1c2.zip
gdb-428409d521dfe477cb0a8da96e1e36452b7ab1c2.tar.gz
gdb-428409d521dfe477cb0a8da96e1e36452b7ab1c2.tar.bz2
Add more detection of 64-bit DWARF sections
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r--binutils/readelf.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 009f112..351fb36 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -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 },