Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Apr 2017 15:17:13 -0400
From:      Ed Maste <emaste@freebsd.org>
To:        "freebsd-toolchain@freebsd.org" <freebsd-toolchain@freebsd.org>
Subject:   Re: svn commit: r317159 - head/contrib/libstdc++/config/abi/pre
Message-ID:  <CAPyFy2DPq4Li3yRjwYbzfAnrvyBVjRSFii33EykPEUgdrG=ipg@mail.gmail.com>
In-Reply-To: <201704191906.v3JJ6lcl053049@repo.freebsd.org>
References:  <201704191906.v3JJ6lcl053049@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 19 April 2017 at 15:06, Ed Maste <emaste@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPyFy2DPq4Li3yRjwYbzfAnrvyBVjRSFii33EykPEUgdrG=ipg>