svn commit: r317159 - head/contrib/libstdc++/config/abi/pre
Ed Maste
emaste at freebsd.org
Wed Apr 19 19:17:37 UTC 2017
On 19 April 2017 at 15:06, Ed Maste <emaste at freebsd.org> wrote:
> Author: emaste
> Date: Wed Apr 19 19:06:47 2017
> New Revision: 317159
> URL: https://svnweb.freebsd.org/changeset/base/317159
>
> Log:
> libstdc++: fix symbol version script for LLD
>
> LLD is less tolerant of inconsistencies in the symbol version script.
>
> - Add a ; on the last entry in a version block
> - Remove duplicated symbols, retaining those in the earliest block
For reference, with this change and two others I was able to link
FreeBSD/mips64 world and kernel using the in-tree LLD 4.0.0, although
I haven't yet tested the result. Everything was compiled with the
in-tree GCC 4.2.1.
The other changes I used:
1) applying -mxgot globally, by adding it to CFLAGS in bsd.cpu.mk
2) disabling static_libpam in lib/libpam/Makefile
There is a patch in LLVM's Phabricator to add multi-GOT support to
LLD[1], although it's meeting some resistance: LLD's main authors
don't want the additional complexity in LLD to support ABI oddities
that only apply to MIPS.
The static libpam failed because it needs to output a relocatable
object (ld -r) from multiple input object objects with
different/non-zero ri_gp_value, and LLD is not capable of this.
[1] https://reviews.llvm.org/D31528
More information about the freebsd-toolchain
mailing list