mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
PR 21847, PowerPC64 --plt-localentry again
This makes ld warn about --plt-localentry if a version of glibc without the necessary ld.so checks is detected, and revises the documentation. bfd/ * elf64-ppc.c (ppc64_elf_tls_setup): Warn on --plt-localentry without ld.so checks. gold/ * powerpc.cc (Target_powerpc::scan_relocs): Warn on --plt-localentry without ld.so checks. ld/ * ld.texinfo (plt-localentry): Revise.
This commit is contained in:
parent
93e0a1eab1
commit
d44c746aed
@ -1,3 +1,8 @@
|
||||
2017-07-31 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_tls_setup): Warn on --plt-localentry
|
||||
without ld.so checks.
|
||||
|
||||
2017-07-29 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 21847
|
||||
|
@ -8372,6 +8372,12 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
|
||||
--plt-localentry can cause trouble. */
|
||||
if (htab->params->plt_localentry0 < 0)
|
||||
htab->params->plt_localentry0 = 0;
|
||||
if (htab->params->plt_localentry0
|
||||
&& elf_link_hash_lookup (&htab->elf, "GLIBC_2.26",
|
||||
FALSE, FALSE, FALSE) == NULL)
|
||||
info->callbacks->einfo
|
||||
(_("%P: warning: --plt-localentry is especially dangerous without "
|
||||
"ld.so support to detect ABI violations.\n"));
|
||||
|
||||
htab->tls_get_addr = ((struct ppc_link_hash_entry *)
|
||||
elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
|
||||
|
@ -1,3 +1,8 @@
|
||||
2017-07-31 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* powerpc.cc (Target_powerpc::scan_relocs): Warn on --plt-localentry
|
||||
without ld.so checks.
|
||||
|
||||
2017-07-29 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 21847
|
||||
|
@ -7660,6 +7660,10 @@ Target_powerpc<size, big_endian>::scan_relocs(
|
||||
{
|
||||
if (parameters->options().user_set_plt_localentry())
|
||||
plt_localentry0 = parameters->options().plt_localentry();
|
||||
if (plt_localentry0
|
||||
&& symtab->lookup("GLIBC_2.26", NULL) == NULL)
|
||||
gold_warning(_("--plt-localentry is especially dangerous without "
|
||||
"ld.so support to detect ABI violations"));
|
||||
}
|
||||
this->plt_localentry0_ = plt_localentry0;
|
||||
this->plt_localentry0_init_ = true;
|
||||
|
@ -1,3 +1,7 @@
|
||||
2017-07-31 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ld.texinfo (plt-localentry): Revise.
|
||||
|
||||
2017-07-29 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ld.texinfo (plt-localentry): Document.
|
||||
|
@ -7613,8 +7613,11 @@ Such an external function can be called via the PLT without saving r2
|
||||
or restoring it on return, avoiding a common load-hit-store for small
|
||||
functions. The optimization is attractive, with up to 40% reduction
|
||||
in execution time for a small function, but can result in symbol
|
||||
interposition failures. Use with care. @option{--no-plt-localentry}
|
||||
is the default.
|
||||
interposition failures. Also, minor changes in a shared library,
|
||||
including system libraries, can cause a function that was localentry:0
|
||||
to become localentry:8. This will result in a dynamic loader
|
||||
complaint and failure to run. The option is experimental, use with
|
||||
care. @option{--no-plt-localentry} is the default.
|
||||
@end table
|
||||
|
||||
@ifclear GENERIC
|
||||
|
Loading…
Reference in New Issue
Block a user