instruction and a floating point branch. SPARCv8 requires a nop only
immediately after FPop2 (fcmp*) instructions. Adjust the logic to
properly implement the v8 rules when targetting a less ancient
architecture.
Because it is intended to be persistent, /var/tmp is about the worst possible
choice for temporary files for most users of libiberty. /tmp works better,
because the the defined semantics of /tmp allow for a non-persistent tmpfs
to be used. This should improve performance when /tmp is a tmpfs and it is
difficult or impossible to have an environment variable or command line -pipe
flag passed to every piece of the toolchain.
aarch64elf.em. Original commit message:
Recursively add DT_NEEDED entries from shared libraries if symbols are
used indirectly. This is more in line with the old GNU ld behavior, but
not exactly the desired semantic.
Patch from Martin Husemann.
From Alan Modra: Wed, 3 Jul 2013 11:51:56 +0930: powerpc64 call stubs:
This brings powerpc64 ld in line with gold regarding calls allowed to
go via a plt call stub or toc-adjusting stub without a following nop.
A long time ago ld allowed tail calls, but this is wrong because we'll
return to the caller's caller with the wrong toc pointer. I fixed
that for shared libraries but allowed tail calls in an executable for
some reason. Probably just muddy thinking on my part, because there's
no difference between an executable and a shared library regarding the
need to restore the toc pointer. Perhaps it was because some testcase
failed, most likely due to the g++ issue I comment on in the patch.
From Alan Modra: 29 Aug 2014 01:22:29 +0000: PowerPC64 call lacks nop error:
Enough people accidentally or otherwise use -mcmodel=small then wonder
why a call that is local is behaving as if it is going via the PLT.
* elf64-ppc.c (ppc64_elf_relocate_section): Report a different
error for calls via a toc adjusting stub without a nop.
threaded programs crash.
With this fix the new weak symbol's st_other is not merged in, i.e. NOPV
is not copied from the libc __libc_thr_init.
* elflink.c (_bfd_elf_merge_symbol): If merging a new weak
symbol that will be skipped, we don't have a new definition.