From 428409d521dfe477cb0a8da96e1e36452b7ab1c2 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 2 Oct 2001 09:08:44 +0000 Subject: [PATCH] Add more detection of 64-bit DWARF sections --- binutils/ChangeLog | 9 +++++++++ binutils/readelf.c | 30 ++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 910c258e76c..bd873196207 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,12 @@ +2001-10-02 Nick Clifton + + * 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 * coffdump.c (PROGRAM_VERSION): Delete. diff --git a/binutils/readelf.c b/binutils/readelf.c index 009f112b897..351fb3618e6 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 }, -- 2.30.2