* elf32-i386.c (elf_i386_size_dynamic_sections): Don't create a
authorIan Lance Taylor <ian@airs.com>
Fri, 12 Jan 1996 19:00:18 +0000 (19:00 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 12 Jan 1996 19:00:18 +0000 (19:00 +0000)
DT_TEXTREL entry because of .rel.plt.  From Martin Pirker
<pirker@eiunix.tuwien.ac.at>.

bfd/ChangeLog
bfd/elf32-i386.c

index 4f11b958e57da02bf0be52706e53ab156a53a3d3..25b955900a1befde3d69a0fe42c7f7ccf8108ca5 100644 (file)
@@ -1,3 +1,9 @@
+Fri Jan 12 13:59:16 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * elf32-i386.c (elf_i386_size_dynamic_sections): Don't create a
+       DT_TEXTREL entry because of .rel.plt.  From Martin Pirker
+       <pirker@eiunix.tuwien.ac.at>.
+
 Thu Jan 11 17:06:14 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
 
        * section.c (SEC_{EXCLUDE,SORT_ENTRIES}): New section flags for
index 3dc2970ef10efd86c1981d759efa6ca48d829e2e..82f0ccded01dca3a86c74d2df0c0d342b34d344c 100644 (file)
@@ -363,10 +363,7 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
                  size = symtab_hdr->sh_info * sizeof (bfd_vma);
                  local_got_offsets = (bfd_vma *) bfd_alloc (abfd, size);
                  if (local_got_offsets == NULL)
-                   {
-                     bfd_set_error (bfd_error_no_memory);
-                     return false;
-                   }
+                   return false;
                  elf_local_got_offsets (abfd) = local_got_offsets;
                  for (i = 0; i < symtab_hdr->sh_info; i++)
                    local_got_offsets[i] = (bfd_vma) -1;
@@ -725,14 +722,19 @@ elf_i386_size_dynamic_sections (output_bfd, info)
              /* Remember whether there are any reloc sections other
                  than .rel.plt.  */
              if (strcmp (name, ".rel.plt") != 0)
-               relocs = true;
-
-             /* If this relocation section applies to a read only
-                 section, then we probably need a DT_TEXTREL entry.  */
-             target = bfd_get_section_by_name (output_bfd, name + 4);
-             if (target != NULL
-                 && (target->flags & SEC_READONLY) != 0)
-               reltext = true;
+               {
+                 relocs = true;
+
+                 /* If this relocation section applies to a read only
+                    section, then we probably need a DT_TEXTREL
+                    entry.  The entries in the .rel.plt section
+                    really apply to the .got section, which we
+                    created ourselves and so know is not readonly.  */
+                 target = bfd_get_section_by_name (output_bfd, name + 4);
+                 if (target != NULL
+                     && (target->flags & SEC_READONLY) != 0)
+                   reltext = true;
+               }
 
              /* We use the reloc_count field as a counter if we need
                 to copy relocs into the output file.  */
@@ -762,10 +764,7 @@ elf_i386_size_dynamic_sections (output_bfd, info)
       /* Allocate memory for the section contents.  */
       s->contents = (bfd_byte *) bfd_alloc (dynobj, s->_raw_size);
       if (s->contents == NULL && s->_raw_size != 0)
-       {
-         bfd_set_error (bfd_error_no_memory);
-         return false;
-       }
+       return false;
     }
          
   if (elf_hash_table (info)->dynamic_sections_created)