This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Stop readelf from complaining about relocation sections with an sh_info field of 0 in dynamic execut
- From: Nick Clifton <nickc at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 19 Dec 2017 09:49:33 -0000
- Subject: [binutils-gdb] Stop readelf from complaining about relocation sections with an sh_info field of 0 in dynamic execut
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bef7475fbda88374ca488b0acbbfe1d3d4ab3e5f
commit bef7475fbda88374ca488b0acbbfe1d3d4ab3e5f
Author: Nick Clifton <nickc@redhat.com>
Date: Tue Dec 19 09:48:40 2017 +0000
Stop readelf from complaining about relocation sections with an sh_info field of 0 in dynamic executables.
PR 22587
* readelf.c (process_section_headers): Do not complain about an
sh_info field of 0 in relocation sections of ET_EXEC or ET_DYN
type executables.
Diff:
---
binutils/ChangeLog | 7 +++++++
binutils/readelf.c | 13 ++++++++-----
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index f83aa5c..714b20d 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,10 @@
+2017-12-19 Nick Clifton <nickc@redhat.com>
+
+ PR 22587
+ * readelf.c (process_section_headers): Do not complain about an
+ sh_info field of 0 in relocation sections of ET_EXEC or ET_DYN
+ type executables.
+
2017-12-19 Alan Modra <amodra@gmail.com>
* testsuite/binutils-all/ar.exp (unique_symbol): Don't run AR
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 8a31ebb..c6070f2 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -6268,12 +6268,15 @@ process_section_headers (Filedata * filedata)
&& filedata->section_headers[section->sh_info].sh_type < SHT_LOOS))
{
if (section->sh_info == 0
- && (streq (SECTION_NAME (section), ".rel.dyn")
+ && (filedata->file_header.e_type == ET_EXEC
+ || filedata->file_header.e_type == ET_DYN
+ /* These next two tests may be redundant, but
+ they have been left in for paranoia's sake. */
+ || streq (SECTION_NAME (section), ".rel.dyn")
|| streq (SECTION_NAME (section), ".rela.dyn")))
- /* The .rel.dyn and .rela.dyn sections have an sh_info field
- of zero. The relocations in these sections may apply
- to many different sections. */
- ;
+ /* Dynamic relocations apply to segments, not sections, so
+ they do not need an sh_info value. */
+ ;
else
warn (_("[%2u]: Info field (%u) should index a relocatable section.\n"),
i, section->sh_info);