[PATCH] D25467: [ELF] - Alternative fix to prevent possible crash on large output.

Ed Maste via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 25 06:50:49 PDT 2016

On 17 October 2016 at 17:26, Rui Ueyama via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>  - FreeBSD: what is the status of building the entire FreeBSD system with
> LLD? Can it build everything including the kernel?

Outstanding FreeBSD/lld issues are tracked in http://llvm.org/pr23214 .

I have booted a lld-linked FreeBSD x86-64 kernel in the past, maybe
two months or so ago, but it has since regressed. It still builds but
the kernel crashes early on, and I haven't yet bisected to find out
when this started happening. I've been testing ToT FreeBSD built with
ToT LLD, so it's possible it's a FreeBSD change that's responsible.

There are two additional issues with lld on FreeBSD x86-64:

1. Boot loaders. We used to use -omagic to produce small boot binaries
with combined .text and .data. FreeBSD has since switched to using a
linker script for the boot binaries, although it seems there's
something amiss with that change (it does not work correctly with GNU
ld either).


The EFI loader also fails to build with lld: http://llvm.org/pr30406
I see there's a followup question from Petr Hosek in the PR that needs
a response.

2. Rescue binaries

FreeBSD's /rescue directory contains a statically-linked binary that's
built as a combination of multiple utilities, and it selects the
utility to invoke based on argv[0]. (Similar to BusyBox or toybox.)
The build uses the -dc option, currently not supported by lld. I
haven't looked at this in detail yet as it's been a lower priority.

In FreeBSD the next priority for us is linking the arm64 userland and
kernel with lld. I think the userland is in good shape although I
haven't done comprehensive testing. The kernel currently fails to link
due to http://llvm.org/pr30267. Andrew Turner applied a workaround to
the FreeBSD source, and has booted an lld-linked FreeBSD/arm64 kernel.

Bringing lld 3.9 into FreeBSD is in progress, along with the update to
Clang 3.9. It will be installed as /usr/bin/ld.lld to facilitate
-fuse-ld=lld. Once this is complete I am going to request an
experimental build (known as an exp-run in FreeBSD) of the 26,000
packages in the ports tree using lld 3.9.

> - Ports: how much mature is PowerPC port? We want to support both BE and LE
> PowerPCs. It's also interesting to work on an open-source ISA, RISC-V,
> because the patches to support the RISC-V architecture are being merged now.

We're interested in arm, i386, mips (64/32), powerpc (64/32), and
RISC-V in FreeBSD.

More information about the llvm-commits mailing list