aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2002-01-30 03:47:37 +0000
committerAlan Modra <amodra@gmail.com>2002-01-30 03:47:37 +0000
commitd926e03d6d51eec333130eceb88730075cc48d5d (patch)
tree94af952c24b27a2f969a1d19c0699f1666802846
parentf744d540a5f4ba232111ec84ed81fe98ab504b35 (diff)
downloadgdb-d926e03d6d51eec333130eceb88730075cc48d5d.zip
gdb-d926e03d6d51eec333130eceb88730075cc48d5d.tar.gz
gdb-d926e03d6d51eec333130eceb88730075cc48d5d.tar.bz2
* elf64-ppc.c (func_desc_adjust): Only provide missing function
descriptor symbols for undefined function code syms. Clear ELF_LINK_NON_ELF so that they can stay weak.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf64-ppc.c16
2 files changed, 12 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c9f4121..3525801 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2002-01-30 Alan Modra <amodra@bigpond.net.au>
+
+ * elf64-ppc.c (func_desc_adjust): Only provide missing function
+ descriptor symbols for undefined function code syms. Clear
+ ELF_LINK_NON_ELF so that they can stay weak.
+
2002-01-29 Chris Demetriou <cgd@broadcom.com>
Mitch Lichtenberg <mpl@broadcom.com>
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index da339bb..70407e2 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -2500,20 +2500,15 @@ func_desc_adjust (h, inf)
fdh = elf_link_hash_lookup (&htab->elf, h->root.root.string + 1,
false, false, true);
- if (fdh == NULL && info->shared)
+ if (fdh == NULL
+ && info->shared
+ && (h->root.type == bfd_link_hash_undefined
+ || h->root.type == bfd_link_hash_undefweak))
{
bfd *abfd;
asymbol *newsym;
- /* Create it as undefined. */
- if (h->root.type == bfd_link_hash_undefined
- || h->root.type == bfd_link_hash_undefweak)
- abfd = h->root.u.undef.abfd;
- else if (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- abfd = h->root.u.def.section->owner;
- else
- abort ();
+ abfd = h->root.u.undef.abfd;
newsym = bfd_make_empty_symbol (abfd);
newsym->name = h->root.root.string + 1;
newsym->section = bfd_und_section_ptr;
@@ -2529,6 +2524,7 @@ func_desc_adjust (h, inf)
{
return false;
}
+ fdh->elf_link_hash_flags &= ~ELF_LINK_NON_ELF;
}
if (fdh != NULL