* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't eliminate
authorNathan Sidwell <nathan@codesourcery.com>
Tue, 10 Jul 2007 07:42:30 +0000 (07:42 +0000)
committerNathan Sidwell <nathan@codesourcery.com>
Tue, 10 Jul 2007 07:42:30 +0000 (07:42 +0000)
copy relocs on vxworks.

bfd/ChangeLog
bfd/elf32-ppc.c

index 78bcb26..104e425 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-10  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't eliminate
+       copy relocs on vxworks.
+
 2007-07-10  Alan Modra  <amodra@bigpond.net.au>
 
        * elf32-arm.c (elf32_arm_size_info): Init checksum_contents field.
index f2f053b..f876897 100644 (file)
@@ -4284,11 +4284,15 @@ ppc_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
   if (!h->non_got_ref)
     return TRUE;
 
-   /* If we didn't find any dynamic relocs in read-only sections, then we'll
-      be keeping the dynamic relocs and avoiding the copy reloc.  We can't
-      do this if there are any small data relocations.  */
+   /* If we didn't find any dynamic relocs in read-only sections, then
+      we'll be keeping the dynamic relocs and avoiding the copy reloc.
+      We can't do this if there are any small data relocations.  This
+      doesn't work on VxWorks, where we can not have dynamic
+      relocations (other than copy and jump slot relocations) in an
+      executable.  */
   if (ELIMINATE_COPY_RELOCS
-      && !ppc_elf_hash_entry (h)->has_sda_refs)
+      && !ppc_elf_hash_entry (h)->has_sda_refs
+      && !htab->is_vxworks)
     {
       struct ppc_elf_dyn_relocs *p;
       for (p = ppc_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)