Don't edit bogus sh_link on reading relocatable objects (Oracle fix)
authorAlan Modra <amodra@gmail.com>
Thu, 9 Dec 2021 09:14:07 +0000 (19:44 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 11 Dec 2021 00:39:47 +0000 (11:09 +1030)
This reverts a 1995 fix to handle bogus object files.  Presumably such
object files have long gone.

* elf.c (bfd_section_from_shdr): Remove old hack for Oracle
libraries.

bfd/elf.c

index 98f47da0797489689d2a0346d4b1cdcc1e72e71a..e6c6a8a6c052f9b31493d86f42750135e779522b 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2389,40 +2389,6 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
            goto success;
          }
 
-       /* For some incomprehensible reason Oracle distributes
-          libraries for Solaris in which some of the objects have
-          bogus sh_link fields.  It would be nice if we could just
-          reject them, but, unfortunately, some people need to use
-          them.  We scan through the section headers; if we find only
-          one suitable symbol table, we clobber the sh_link to point
-          to it.  I hope this doesn't break anything.
-
-          Don't do it on executable nor shared library.  */
-       if ((abfd->flags & (DYNAMIC | EXEC_P)) == 0
-           && elf_elfsections (abfd)[hdr->sh_link]->sh_type != SHT_SYMTAB
-           && elf_elfsections (abfd)[hdr->sh_link]->sh_type != SHT_DYNSYM)
-         {
-           unsigned int scan;
-           int found;
-
-           found = 0;
-           for (scan = 1; scan < num_sec; scan++)
-             {
-               if (elf_elfsections (abfd)[scan]->sh_type == SHT_SYMTAB
-                   || elf_elfsections (abfd)[scan]->sh_type == SHT_DYNSYM)
-                 {
-                   if (found != 0)
-                     {
-                       found = 0;
-                       break;
-                     }
-                   found = scan;
-                 }
-             }
-           if (found != 0)
-             hdr->sh_link = found;
-         }
-
        /* Get the symbol table.  */
        if ((elf_elfsections (abfd)[hdr->sh_link]->sh_type == SHT_SYMTAB
             || elf_elfsections (abfd)[hdr->sh_link]->sh_type == SHT_DYNSYM)