Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Jul 2017 10:23:34 -0400
From:      Ed Maste <emaste@freebsd.org>
To:        "freebsd-toolchain@freebsd.org" <freebsd-toolchain@freebsd.org>
Subject:   Re: June 2017 update on using LLVM's lld linker in the FreeBSD base system
Message-ID:  <CAPyFy2C3i=4i5JYVsFNrXqxwe9brAkog8yh1nfOKP6WePfp8wA@mail.gmail.com>
In-Reply-To: <CAPyFy2Cr7c2hHhdkb0KjNBF9coKzMhS5iX9dm8jptVY-bpArfw@mail.gmail.com>
References:  <CAPyFy2Cr7c2hHhdkb0KjNBF9coKzMhS5iX9dm8jptVY-bpArfw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 12 June 2017 at 17:21, Ed Maste <emaste@freebsd.org> wrote:
> Another update on using LLD as the FreeBSD base system linker:

Since "amd64" and "arm64" look similar, let me clarify one point:

arm64 -- 64-bit ARM -- is built with, and has as /usr/bin/ld, LLD
4.0.0. This is true in HEAD and in stable/11 (and hence the upcoming
11.1)

amd64 -- 64-bit x86 -- is built with, and has as /usr/bin/ld, GNU BFD
ld 2.17.50. LLD is installed as ld.lld; adding -fuse-ld=lld to CFLAGS
can be used to test linking various software with LLD. Also, the amd64
linker will not change in stable/11.

> Then the ports infrastructure
> can automatically use ld.bfd, until the issue is addressed in the
> individual port or in LLD. It will be something like
> "USES=linker:not_lld" or "LLD_UNSAFE=yes" or so.

Still waiting on this; once it is ready I expect to switch amd64 to LLD.

> Outstanding issues with i386 and 32-bit arm prevent us from turning it
> on for those architectures right now. The LLVM tracking bug in
> http://llvm.org/pr23214 depends on those individual issues; i386
> should be relatively straightforward, while arm needs more work.

i386 still needs investigation, but progress has been made on 32-bit
arm. andrew@ booted an lld-linked arm kernel/userland to the login
prompt, with a few workarounds. Note that this is specifically for
armv7. LLD does not currently support earlier ARM architectures.
TARGET_ARCH=armv7 support is in discussion/planning, and for now I
assume that we'd initially switch only it to LLD. TARGET_ARCH=arm and
TARGET_ARCH=armv6 will continue to use ld.bfd.

It appears we are on a credible path to enable LLD by default in 12.0
for the tier-1 and almost tier-1 architectures of i386, amd64, armv7,
arm64.



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