git: 021385aba562 - main - Add WITH_LLVM_BINUTILS to install LLVM binutils instead of Elftoolchain
Jessica Clarke
jrtc27 at freebsd.org
Sat Sep 11 14:55:08 UTC 2021
On 11 Sep 2021, at 15:43, Shawn Webb <shawn.webb at hardenedbsd.org> wrote:
>
> On Mon, Sep 06, 2021 at 09:24:02AM +0000, Alex Richardson wrote:
>> The branch main has been updated by arichardson:
>>
>> URL: https://cgit.FreeBSD.org/src/commit/?id=021385aba56279febcfdcc64d23673a0106ae45d
>>
>> commit 021385aba56279febcfdcc64d23673a0106ae45d
>> Author: Alex Richardson <arichardson at FreeBSD.org>
>> AuthorDate: 2021-09-06 08:49:49 +0000
>> Commit: Alex Richardson <arichardson at FreeBSD.org>
>> CommitDate: 2021-09-06 08:49:49 +0000
>>
>> Add WITH_LLVM_BINUTILS to install LLVM binutils instead of Elftoolchain
>>
>> When WITH_LLVM_BINUTILS is set, we will install the LLVM binutils as
>> ar/ranlib/nm/objcopy/etc. instead of the elftoolchain ones.
>> Having the LLVM binutils instead of the elftoolchain ones allows us to use
>> features such as LTO that depend on binutils that understand LLVM IR.
>> Another benefit will be an improved user-experience when compiling with
>> AddressSanitizer, since ASAN does not symbolize backtraces correctly if
>> addr2line is elftoolchain addr2line instead of llvm-symbolizer.
>> See https://lists.freebsd.org/archives/freebsd-toolchain/2021-July/000062.html
>> for more details.
>>
>> This is currently off by default but will be turned on by default at some
>> point in the near future.
>
> Hey Alex,
>
> It appears when MK_LLVM_BINUTILS is set, a strip binary/link doesn't
> get installed. So /usr/bin/strip doesn't exist. This causes a problem
> when building packages since even ports-mgmt/pkg relies on strip.
>
> I'm working on a candidate patch to fix this right now. But if you
> beat me to the punch, all the better. ;-)
I guess this:
diff --git a/usr.bin/clang/llvm-objcopy/Makefile b/usr.bin/clang/llvm-objcopy/Makefile
index 2e6fc8aba356..afd03b848b19 100644
--- a/usr.bin/clang/llvm-objcopy/Makefile
+++ b/usr.bin/clang/llvm-objcopy/Makefile
@@ -44,8 +44,11 @@ CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/}
LIBADD+= z
+LINKS= ${BINDIR}/llvm-objcopy ${BINDIR}/llvm-strip
+
.if ${MK_LLVM_BINUTILS} != "no"
-LINKS= ${BINDIR}/llvm-objcopy ${BINDIR}/objcopy
+LINKS+= ${BINDIR}/llvm-objcopy ${BINDIR}/objcopy \
+ ${BINDIR}/llvm-strip ${BINDIR}/strip
MLINKS= llvm-objcopy.1 objcopy.1
.endif
Can’t do MLINKS yet as there’s no generated manpage for llvm-strip; not
sure what the process is to generate them from the upstream .rst files
other than “ask dim@ nicely”.
Jess
More information about the dev-commits-src-all
mailing list