+2005-02-12 Alan Modra <amodra@bigpond.net.au>
+
+ * elf64-ppc.c (toc_adjusting_stub_needed): Return true for
+ old-style branches to undefined dot-symbols which will be
+ satisfied by a plt call.
+
2005-02-11 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (move_plt_plist): New function, extracted from..
break;
}
- /* Ignore branches to undefined syms. */
+ /* Calls to dynamic lib functions go through a plt call stub
+ that uses r2. Branches to undefined symbols might be a call
+ using old-style dot symbols that can be satisfied by a plt
+ call into a new-style dynamic library. */
if (sym_sec == NULL)
- continue;
+ {
+ struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) h;
+ if (eh != NULL
+ && eh->oh != NULL
+ && eh->oh->elf.plt.plist != NULL)
+ {
+ ret = 1;
+ break;
+ }
- /* Calls to dynamic lib functions go through a plt call stub
- that uses r2. Assume branches to other sections not included
- in the link need stubs too, to cover -R and absolute syms. */
+ /* Ignore other undefined symbols. */
+ continue;
+ }
+
+ /* Assume branches to other sections not included in the link need
+ stubs too, to cover -R and absolute syms. */
if (sym_sec->output_section == NULL)
{
ret = 1;
opd_adjust = get_opd_info (sym_sec);
if (opd_adjust != NULL)
{
-
if (h == NULL)
{
long adjust;