mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 06:17:47 +08:00
* 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.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
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>
|
2005-02-11 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* elf64-ppc.c (move_plt_plist): New function, extracted from..
|
* elf64-ppc.c (move_plt_plist): New function, extracted from..
|
||||||
|
@ -8361,13 +8361,27 @@ toc_adjusting_stub_needed (struct bfd_link_info *info, asection *isec)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ignore branches to undefined syms. */
|
|
||||||
if (sym_sec == NULL)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Calls to dynamic lib functions go through a plt call stub
|
/* Calls to dynamic lib functions go through a plt call stub
|
||||||
that uses r2. Assume branches to other sections not included
|
that uses r2. Branches to undefined symbols might be a call
|
||||||
in the link need stubs too, to cover -R and absolute syms. */
|
using old-style dot symbols that can be satisfied by a plt
|
||||||
|
call into a new-style dynamic library. */
|
||||||
|
if (sym_sec == NULL)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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)
|
if (sym_sec->output_section == NULL)
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
@ -8389,7 +8403,6 @@ toc_adjusting_stub_needed (struct bfd_link_info *info, asection *isec)
|
|||||||
opd_adjust = get_opd_info (sym_sec);
|
opd_adjust = get_opd_info (sym_sec);
|
||||||
if (opd_adjust != NULL)
|
if (opd_adjust != NULL)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (h == NULL)
|
if (h == NULL)
|
||||||
{
|
{
|
||||||
long adjust;
|
long adjust;
|
||||||
|
Reference in New Issue
Block a user