summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2006-02-17 12:52:58 +0000
committerAlan Modra <amodra@bigpond.net.au>2006-02-17 12:52:58 +0000
commitcc72220986f82896c264d1123ecbda51f5672761 (patch)
treeb306a8b34af7dfc988e3074888e0d068ef9f5893 /bfd
parentc596bd133832341d8c03d0ce0f5b5e1198d164fa (diff)
downloadgdb-cc72220986f82896c264d1123ecbda51f5672761.tar.gz
* elf32-ppc.c (allocate_dynrelocs): Tweak undef weak handling.
* elf64-ppc.c (allocate_dynrelocs): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-ppc.c3
-rw-r--r--bfd/elf64-ppc.c3
3 files changed, 9 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3f4da9cfa86..6162d9cb5f9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
2006-02-17 Alan Modra <amodra@bigpond.net.au>
+ * elf32-ppc.c (allocate_dynrelocs): Tweak undef weak handling.
+ * elf64-ppc.c (allocate_dynrelocs): Likewise.
+
+2006-02-17 Alan Modra <amodra@bigpond.net.au>
+
PR ld/2218
* elf64-ppc.c (allocate_dynrelocs): Ensure undef weak sym is
dynamic.
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index caa5ed44d9c..134b960db96 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -4546,7 +4546,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
/* Also discard relocs on undefined weak syms with non-default
visibility. */
- if (h->root.type == bfd_link_hash_undefweak)
+ if (eh->dyn_relocs != NULL
+ && h->root.type == bfd_link_hash_undefweak)
{
if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
eh->dyn_relocs = NULL;
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 785c859de0d..1cfac82c741 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -7582,7 +7582,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
/* Also discard relocs on undefined weak syms with non-default
visibility. */
- if (h->root.type == bfd_link_hash_undefweak)
+ if (eh->dyn_relocs != NULL
+ && h->root.type == bfd_link_hash_undefweak)
{
if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
eh->dyn_relocs = NULL;