diff options
author | Alan Modra <amodra@gmail.com> | 2002-01-30 03:47:37 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2002-01-30 03:47:37 +0000 |
commit | d926e03d6d51eec333130eceb88730075cc48d5d (patch) | |
tree | 94af952c24b27a2f969a1d19c0699f1666802846 /bfd | |
parent | f744d540a5f4ba232111ec84ed81fe98ab504b35 (diff) | |
download | gdb-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.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf64-ppc.c | 16 |
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 |