diff options
author | Nick Clifton <nickc@redhat.com> | 2001-10-02 09:08:44 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2001-10-02 09:08:44 +0000 |
commit | 428409d521dfe477cb0a8da96e1e36452b7ab1c2 (patch) | |
tree | c42892840c97953bbec107389798348e99cbf856 /binutils/readelf.c | |
parent | d32820f2fa29322c86fa03a662b114ecdfd0e28e (diff) | |
download | gdb-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.c | 30 |
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 }, |