From owner-dev-commits-src-all@freebsd.org Mon Sep 20 08:50:49 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 30A2A67B2E5; Mon, 20 Sep 2021 08:50:49 +0000 (UTC) (envelope-from arichardson.kde@gmail.com) Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4HCdZ00r9Fz3ndx; Mon, 20 Sep 2021 08:50:48 +0000 (UTC) (envelope-from arichardson.kde@gmail.com) Received: by mail-ed1-f45.google.com with SMTP id c21so58005327edj.0; Mon, 20 Sep 2021 01:50:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+DFwDS4jml9xq16eCBzFV9n/VrCkyr1oass1Wl+BCBs=; b=PFiZt+BN02VTTup7VN5MUr28A0ATUiRCxBucl9Dg3vQFsCU9CAX0K16v31a9O33TYN 26tlGmfxeU2fEQMt6UWbCZZEE7eX7gLzLtJVY7QwzJ7FXR0nEZb2az9IHx+/CLQ1Okf3 rVxFAEnIAjRvc2D/jmq1GkCPaBvO0XOYloyGvOQLtfk+yG5WIwRN+2M30dn9dllJg2th slbJqAWNZaYbAoQSR+Af59l4iRvt2IA23Tzl/72n7Oy7vssnMBktUUcOZabGTFEEHVmo xrixr5VXcBSl/4kWyjaBPqDXetgdAeXmca8ebW7AziBGaRcqA0+6hZXJfudtkYq1DYLg yCvg== X-Gm-Message-State: AOAM5329ClY9LVluyXf1S8AKxMGIRw5tEwlsHPg3iS9KXfThvN5QZrsd HgQ856f2ix9GFDVr0I0L2Jef6aiblA6Ulg== X-Google-Smtp-Source: ABdhPJy9oCSfe6bjQXgS6t0mVSrnFQ1EhdnMI2AB4hNKG5TILNwH74EwoCpOMCJvTWXfQo0GOWMHTg== X-Received: by 2002:a05:6402:3c2:: with SMTP id t2mr27391637edw.261.1632127839177; Mon, 20 Sep 2021 01:50:39 -0700 (PDT) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com. [209.85.221.48]) by smtp.gmail.com with ESMTPSA id n10sm5793315ejk.86.2021.09.20.01.50.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 20 Sep 2021 01:50:38 -0700 (PDT) Received: by mail-wr1-f48.google.com with SMTP id u18so25742608wrg.5; Mon, 20 Sep 2021 01:50:38 -0700 (PDT) X-Received: by 2002:a5d:510b:: with SMTP id s11mr26374585wrt.79.1632127838471; Mon, 20 Sep 2021 01:50:38 -0700 (PDT) MIME-Version: 1.0 References: <202109060924.1869O2Dk045877@gitrepo.freebsd.org> <87sfy1rmj7.wl-herbert@gojira.at> In-Reply-To: <87sfy1rmj7.wl-herbert@gojira.at> From: Alexander Richardson Date: Mon, 20 Sep 2021 09:50:27 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: git: 021385aba562 - main - Add WITH_LLVM_BINUTILS to install LLVM binutils instead of Elftoolchain To: "Herbert J. Skuhra" Cc: src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HCdZ00r9Fz3ndx X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of arichardsonkde@gmail.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=arichardsonkde@gmail.com X-Spamd-Result: default: False [-3.00 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17:c]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; DMARC_NA(0.00)[freebsd.org]; TO_DN_SOME(0.00)[]; RCVD_COUNT_THREE(0.00)[4]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_HAM_SHORT(-1.00)[-1.000]; RCVD_IN_DNSWL_NONE(0.00)[209.85.208.45:from,209.85.221.48:received]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FORGED_SENDER(0.30)[arichardson@freebsd.org,arichardsonkde@gmail.com]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.208.45:from]; R_DKIM_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[arichardson@freebsd.org,arichardsonkde@gmail.com]; TAGGED_FROM(0.00)[]; MAILMAN_DEST(0.00)[dev-commits-src-all,dev-commits-src-main] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Sep 2021 08:50:49 -0000 On Sun, 19 Sept 2021 at 09:37, Herbert J. Skuhra wrote: > > On Mon, 06 Sep 2021 11:24:02 +0200, 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 > > AuthorDate: 2021-09-06 08:49:49 +0000 > > Commit: Alex Richardson > > 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. > > > > Reviewed By: emaste > > > > Differential Revision: https://reviews.freebsd.org/D31060 > > --- > > Makefile.inc1 | 4 +++- > > lib/Makefile | 5 ++++- > > lib/clang/Makefile | 4 +++- > > lib/clang/libllvm/Makefile | 6 +++--- > > share/mk/src.opts.mk | 8 ++++++++ > > tools/build/options/WITH_LLVM_BINUTILS | 2 ++ > > usr.bin/Makefile | 16 +++++++++++----- > > usr.bin/clang/Makefile | 13 +++++++++---- > > usr.bin/clang/llvm-ar/Makefile | 7 +++++++ > > usr.bin/clang/llvm-nm/Makefile | 7 +++++++ > > usr.bin/clang/llvm-objcopy/Makefile | 7 +++++++ > > usr.bin/clang/llvm-objdump/Makefile | 7 +++++++ > > usr.bin/clang/llvm-size/Makefile | 7 +++++++ > > usr.bin/clang/llvm-symbolizer/Makefile | 7 +++++++ > > 14 files changed, 85 insertions(+), 15 deletions(-) > > > > diff --git a/Makefile.inc1 b/Makefile.inc1 > > index b59c1913f8ce..478824675382 100644 > > --- a/Makefile.inc1 > > +++ b/Makefile.inc1 > > @@ -771,6 +771,7 @@ XMAKE= ${BMAKE} \ > > TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ > > MK_CLANG_IS_CC=${MK_CLANG_BOOTSTRAP} \ > > MK_LLDB=no \ > > + MK_LLVM_BINUTILS=no \ > > MK_TESTS=no > > > > # kernel-tools stage > > @@ -2339,9 +2340,10 @@ _gensnmptree= usr.sbin/bsnmpd/gensnmptree > > > > # We need to build tblgen when we're building clang or lld, either as > > # bootstrap tools, or as the part of the normal build. > > +# llvm-tblgen is also needed for various llvm binutils (e.g. objcopy). > > .if ${MK_CLANG_BOOTSTRAP} != "no" || ${MK_CLANG} != "no" || \ > > ${MK_LLD_BOOTSTRAP} != "no" || ${MK_LLD} != "no" || \ > > - ${MK_LLDB} != "no" > > + ${MK_LLDB} != "no" || ${MK_LLVM_BINUTILS} != "no" > > _clang_tblgen= \ > > lib/clang/libllvmminimal \ > > usr.bin/clang/llvm-tblgen > > diff --git a/lib/Makefile b/lib/Makefile > > index 674368a19ffd..1e375bb456e6 100644 > > --- a/lib/Makefile > > +++ b/lib/Makefile > > @@ -157,7 +157,10 @@ SUBDIR.${MK_BLUETOOTH}+=libbluetooth libsdp > > SUBDIR.${MK_BSNMP}+= libbsnmp > > > > .if !defined(COMPAT_32BIT) && !defined(COMPAT_SOFTFP) > > -SUBDIR.${MK_CLANG}+= clang > > +.if ${MK_CLANG} != "no" || ${MK_LLD} != "no" || \ > > + ${MK_LLDB} != "no" || ${MK_LLVM_BINUTILS} != "no" > > +SUBDIR+= clang > > +.endif > > .endif > > > > SUBDIR.${MK_CUSE}+= libcuse > > diff --git a/lib/clang/Makefile b/lib/clang/Makefile > > index bc09ea62dc67..df4aa01a2653 100644 > > --- a/lib/clang/Makefile > > +++ b/lib/clang/Makefile > > @@ -4,10 +4,12 @@ > > > > # These have to be built in order. > > SUBDIR= libllvm > > +.if ${MK_CLANG} != "no" > > SUBDIR+= libclang > > +SUBDIR+= headers > > +.endif > > .if ${MK_LLDB} != "no" > > SUBDIR+= liblldb > > .endif > > -SUBDIR+= headers > > > > .include > > diff --git a/lib/clang/libllvm/Makefile b/lib/clang/libllvm/Makefile > > index 09d6336c01d9..7eaedf65dcb3 100644 > > --- a/lib/clang/libllvm/Makefile > > +++ b/lib/clang/libllvm/Makefile > > @@ -830,7 +830,7 @@ SRCS_MIN+= Object/IRObjectFile.cpp > > SRCS_MIN+= Object/IRSymtab.cpp > > SRCS_MIN+= Object/MachOObjectFile.cpp > > SRCS_MIW+= Object/MachOUniversal.cpp > > -SRCS_EXT+= Object/MachOUniversalWriter.cpp > > +SRCS_MIW+= Object/MachOUniversalWriter.cpp > > SRCS_MIW+= Object/Minidump.cpp > > SRCS_MIN+= Object/ModuleSymbolTable.cpp > > SRCS_EXT+= Object/Object.cpp > > @@ -920,7 +920,7 @@ SRCS_MIN+= Support/Errno.cpp > > SRCS_MIN+= Support/Error.cpp > > SRCS_MIN+= Support/ErrorHandling.cpp > > SRCS_MIN+= Support/FileCollector.cpp > > -SRCS_EXL+= Support/FileOutputBuffer.cpp > > +SRCS_MIW+= Support/FileOutputBuffer.cpp > > SRCS_MIN+= Support/FileUtilities.cpp > > SRCS_MIN+= Support/FoldingSet.cpp > > SRCS_MIN+= Support/FormatVariadic.cpp > > @@ -945,7 +945,7 @@ SRCS_MIN+= Support/MD5.cpp > > SRCS_MIN+= Support/ManagedStatic.cpp > > SRCS_MIN+= Support/MathExtras.cpp > > SRCS_MIN+= Support/MemAlloc.cpp > > -SRCS_XDL+= Support/Memory.cpp > > +SRCS_MIW+= Support/Memory.cpp > > SRCS_MIN+= Support/MemoryBuffer.cpp > > SRCS_MIN+= Support/MemoryBufferRef.cpp > > SRCS_MIN+= Support/NativeFormatting.cpp > > diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk > > index 32346e31a752..5363cb6e78f9 100644 > > --- a/share/mk/src.opts.mk > > +++ b/share/mk/src.opts.mk > > @@ -203,6 +203,7 @@ __DEFAULT_NO_OPTIONS = \ > > LOADER_FIREWIRE \ > > LOADER_VERBOSE \ > > LOADER_VERIEXEC_PASS_MANIFEST \ > > + LLVM_BINUTILS \ > > MALLOC_PRODUCTION \ > > OFED_EXTRA \ > > OPENLDAP \ > > @@ -459,6 +460,7 @@ MK_CLANG:= no > > MK_INCLUDES:= no > > MK_LLD:= no > > MK_LLDB:= no > > +MK_LLVM_BINUTILS:= no > > .endif > > > > .if ${MK_CLANG} == "no" > > @@ -468,6 +470,12 @@ MK_CLANG_FULL:= no > > MK_LLVM_COV:= no > > .endif > > > > +.if ${MK_LLVM_BINUTILS} == "yes" > > +# MK_LLVM_CXXFILT is a subset of MK_LLVM_BINUTILS and should therefore be > > +# enabled if MK_LLVM_BINUTILS is set. > > +MK_LLVM_CXXFILT:= yes > > +.endif > > + > > .if ${MK_LOADER_VERIEXEC} == "no" > > MK_LOADER_VERIEXEC_PASS_MANIFEST := no > > .endif > > diff --git a/tools/build/options/WITH_LLVM_BINUTILS b/tools/build/options/WITH_LLVM_BINUTILS > > new file mode 100644 > > index 000000000000..8fa2c55f31a9 > > --- /dev/null > > +++ b/tools/build/options/WITH_LLVM_BINUTILS > > @@ -0,0 +1,2 @@ > > +.\" $FreeBSD$ > > +Install LLVM's binutils (ar, addr2line, nm, etc.) instead of ELF Tool Chain's. > > diff --git a/usr.bin/Makefile b/usr.bin/Makefile > > index f1b07a7007be..e8be161db01a 100644 > > --- a/usr.bin/Makefile > > +++ b/usr.bin/Makefile > > @@ -195,7 +195,10 @@ SUBDIR.${MK_ATM}+= atm > > SUBDIR.${MK_BLUETOOTH}+= bluetooth > > SUBDIR.${MK_BSD_CPIO}+= cpio > > SUBDIR.${MK_CALENDAR}+= calendar > > -SUBDIR.${MK_CLANG}+= clang > > +.if ${MK_CLANG} != "no" || ${MK_LLVM_BINUTILS} != "no" || \ > > + ${MK_LLD} != "no" || ${MK_LLDB} != "no" > > +SUBDIR+= clang > > +.endif > > SUBDIR.${MK_DIALOG}+= dpv > > SUBDIR.${MK_EE}+= ee > > SUBDIR.${MK_FILE}+= file > > @@ -251,25 +254,28 @@ SUBDIR.${MK_TESTS_SUPPORT}.${MK_CXX}+= kyua > > SUBDIR.${MK_TESTS}+= tests > > SUBDIR.${MK_TEXTPROC}+= ul > > SUBDIR.${MK_TFTP}+= tftp > > +.if ${MK_LLVM_BINUTILS} == "no" > > +# Only build the elftoolchain tools if we aren't using the LLVM ones. > > SUBDIR.${MK_TOOLCHAIN}+= addr2line > > SUBDIR.${MK_TOOLCHAIN}+= ar > > +SUBDIR.${MK_TOOLCHAIN}+= nm > > +SUBDIR.${MK_TOOLCHAIN}+= objcopy > > +SUBDIR.${MK_TOOLCHAIN}+= readelf > > +SUBDIR.${MK_TOOLCHAIN}+= size > > +.endif > > SUBDIR.${MK_TOOLCHAIN}+= c89 > > SUBDIR.${MK_TOOLCHAIN}+= c99 > > SUBDIR.${MK_TOOLCHAIN}+= ctags > > .if ${MK_LLVM_CXXFILT} == "no" > > SUBDIR.${MK_TOOLCHAIN}+= cxxfilt > > .endif > > -SUBDIR.${MK_TOOLCHAIN}+= objcopy > > SUBDIR.${MK_TOOLCHAIN}+= file2c > > SUBDIR.${MK_TOOLCHAIN}+= gprof > > SUBDIR.${MK_TOOLCHAIN}+= indent > > SUBDIR.${MK_TOOLCHAIN}+= lex > > SUBDIR.${MK_TOOLCHAIN}+= mkstr > > -SUBDIR.${MK_TOOLCHAIN}+= nm > > -SUBDIR.${MK_TOOLCHAIN}+= readelf > > SUBDIR.${MK_TOOLCHAIN}+= rpcgen > > SUBDIR.${MK_TOOLCHAIN}+= unifdef > > -SUBDIR.${MK_TOOLCHAIN}+= size > > SUBDIR.${MK_TOOLCHAIN}+= xstr > > SUBDIR.${MK_TOOLCHAIN}+= yacc > > SUBDIR.${MK_VI}+= vi > > diff --git a/usr.bin/clang/Makefile b/usr.bin/clang/Makefile > > index 1c53e94965f7..7fc31e8df194 100644 > > --- a/usr.bin/clang/Makefile > > +++ b/usr.bin/clang/Makefile > > @@ -7,12 +7,20 @@ SUBDIR+= clang > > .endif > > > > .if !defined(TOOLS_PREFIX) > > +# LLVM binutils are needed to support features such as LTO, so we build them > > +# by default if clang is enabled. If MK_LLVM_BINUTILS is set, we also use them > > +# as the default binutils (ar,nm,addr2line, etc.). > > +.if ${MK_CLANG} != "no" || ${MK_LLVM_BINUTILS} != "no" > > SUBDIR+= llvm-ar > > SUBDIR+= llvm-nm > > +SUBDIR+= llvm-objcopy > > SUBDIR+= llvm-objdump > > +SUBDIR+= llvm-size > > +SUBDIR+= llvm-strings > > SUBDIR+= llvm-symbolizer > > +.endif > > Update tools/build/mk/OptionalObsoleteFiles.inc? > > # make delete-old > >>> Removing old files (only deletes safe to delete libs) > remove /usr/bin/llvm-objcopy? n > remove /usr/bin/llvm-size? n > remove /usr/bin/llvm-strings? n > remove /usr/share/man/man1/llvm-objcopy.1.gz? n > remove /usr/share/man/man1/llvm-size.1.gz? n > remove /usr/share/man/man1/llvm-strings.1.gz? n > > -- > Herbert Hi Herbert, Sorry about that, I've posted https://reviews.freebsd.org/D32022 which should hopefully fix the issue? Thanks, Alex