summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2007-07-10 07:42:30 +0000
committerNathan Sidwell <nathan@codesourcery.com>2007-07-10 07:42:30 +0000
commit80be57221a7c48ad5a5a48abecb9c9730cdf6cb2 (patch)
treeb24452bdfcd9134cde909097da99806577a9912e
parente6cbc3c031226a81ee15304362542906ea717d61 (diff)
downloadgdb-80be57221a7c48ad5a5a48abecb9c9730cdf6cb2.tar.gz
* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't eliminate
copy relocs on vxworks.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-ppc.c12
2 files changed, 13 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 78bcb26a49f..104e4255888 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index f2f053b2ee1..f876897aa88 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -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)