Stop readelf from complaining about relocation sections with an sh_info field of...
authorNick Clifton <nickc@redhat.com>
Tue, 19 Dec 2017 09:48:40 +0000 (09:48 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 19 Dec 2017 09:48:40 +0000 (09:48 +0000)
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.

binutils/ChangeLog
binutils/readelf.c

index f83aa5ca7936dc889af1bff597477a48330df9a7..714b20d9748d0723a0c4d8a1368a188f0dafb921 100644 (file)
@@ -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
index 8a31ebbd07a4adf85316a326138471e159a763e4..c6070f276ddde7d081348cf71a3584084b063610 100644 (file)
@@ -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);