From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 19480 invoked from network); 13 Oct 2021 02:34:40 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 13 Oct 2021 02:34:40 -0000 Received: (qmail 20162 invoked by uid 550); 13 Oct 2021 02:34:38 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 20125 invoked from network); 13 Oct 2021 02:34:37 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=z6EftJeEClWtP6j4iu6S7CDXcD3602zzzpL9BQV2zzQ=; b=jygLHHSmtp8k0thBqcnPbeTU41Pz8Oloy6pEyVjYwrChzaKHbyBm8yQtYDMCv1hNdd 6SLBA0Ik4zFLv1QMioi3cOJYrQXx19ZDDry/WDQl3cOrZd6Ka0Qd9Ma1uvF6CzSlV8UI yZcrRKaxPbtkjr4KiBpAHF5kpJ4DeUHCUIgcT/fnq99YesivG5CYQHDztiXJ3eu0NoK0 6ibj1HXnP9DUemxpgaaOXiCnKoYdG4AShoV7uXM40btbkmMf2kX8E/uDXRMSCVmy9Rm9 5b79WaOaySq7Ci2JbF1jOstAZYlI//1jRgC8kIGXbJrq/M5t2br0w05rQpCh50/6reQQ YA9Q== 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; bh=z6EftJeEClWtP6j4iu6S7CDXcD3602zzzpL9BQV2zzQ=; b=gfhwRoBOK2pLUONFgwPAIQzK89nrXFQOihZ/lmMIbbsbjk0wW/scpBkWgTaQ26b7y+ puU6SkqlpiNFJaZNiomP3WLqLsyUerI7Df9CfWdRC6ZmiUVWLVEyj1YDhK6AcY4xzx32 oM72iTnoIQNv3lojlh17XBFL42vpp8xg3cTbLxMzbsnBcrqL0fpQCYKTa+bk0JA5sQeO Z+zOFgJQWkiF6gQfRQbUUU8alQsF1EaWSahgAbUmlo0W85q2iaGvv/1uBFVzwbNO+R4x dc9LLDLi6iSmR5KAg1WoIB2Vj0xlCM7OyNtY+79OhvLctEi0E9vwLtR09BsqFLOmOCCz qHMw== X-Gm-Message-State: AOAM533ExENXN9/sljbLO5HGPCwHgBNnSdIprjydHRXxweBcH6iML+Q+ vLMW6JFvoOZ9559v9ZT9XuN+R8dOsJQKcY/UIDIhHY+h9FU= X-Google-Smtp-Source: ABdhPJzcbIf1dxRzVejByMEvjun4h+MKYp3+KuUXRaOyNRyMtSkiWe9JrDmVfom6YoTzaX7LBJXai0zpcwHfOb0PvvM= X-Received: by 2002:a05:6402:2682:: with SMTP id w2mr5470064edd.185.1634092465844; Tue, 12 Oct 2021 19:34:25 -0700 (PDT) MIME-Version: 1.0 References: <20211011004346.13768de6@tpx.quinq.eu.org> In-Reply-To: From: Matt Andrews Date: Wed, 13 Oct 2021 13:34:14 +1100 Message-ID: To: musl@lists.openwall.com Content-Type: multipart/alternative; boundary="000000000000f4f49b05ce32cc06" Subject: Re: [musl] Newbie cross compiling with LLVM --000000000000f4f49b05ce32cc06 Content-Type: text/plain; charset="UTF-8" I'm currently using this to compile with LLVM AR=/usr/lib/llvm-13/bin/llvm-ar \ RANLIB=/usr/lib/llvm-13/bin/llvm-ranlib \ CC=/usr/lib/llvm-13/bin/clang \ CFLAGS="-fuse-ld=/usr/lib/llvm-13/bin/ld.lld --rtlib=compiler-rt --target=armv7a-linux-eabihf -mcpu=cortex-a8" \ LIBCC=-lcompiler_rt \ ./configure \ --prefix=$PREFIX/usr \ --syslibdir=$PREFIX/lib \ --target=armv7a-linux-eabihf \ && make \ && make install This is the output from ./configure checking for C compiler... /usr/lib/llvm-13/bin/clang checking whether C compiler works... yes checking whether compiler accepts -Werror=unknown-warning-option... yes checking whether compiler accepts -Werror=unused-command-line-argument... yes checking whether compiler accepts -Werror=ignored-optimization-argument... yes checking whether linker accepts -Werror=unknown-warning-option... yes checking whether linker accepts -Werror=unused-command-line-argument... yes checking for C compiler family... clang checking for toolchain wrapper to build... clang checking target system type... armv7a-linux-eabihf checking whether compiler accepts -std=c99... yes checking whether compiler accepts -nostdinc... yes checking whether compiler accepts -ffreestanding... yes checking whether compiler accepts -fexcess-precision=standard... no checking whether compiler accepts -frounding-math... yes checking whether compiler needs attribute((may_alias)) suppression... no checking whether compiler accepts -Wa,--noexecstack... yes checking whether compiler accepts -fno-stack-protector... yes checking whether compiler accepts -fno-tree-loop-distribute-patterns... no checking whether we should preprocess assembly to add debugging information... no checking for optimization settings... using defaults checking whether compiler accepts -Os... yes components to be optimized for speed: internal malloc string checking whether compiler accepts -pipe... yes checking whether compiler accepts -fomit-frame-pointer... yes checking whether compiler accepts -fno-unwind-tables... yes checking whether compiler accepts -fno-asynchronous-unwind-tables... yes checking whether compiler accepts -ffunction-sections... yes checking whether compiler accepts -fdata-sections... yes checking whether compiler accepts -w... yes checking whether compiler accepts -Wno-pointer-to-int-cast... yes checking whether compiler accepts -Werror=implicit-function-declaration... yes checking whether compiler accepts -Werror=implicit-int... yes checking whether compiler accepts -Werror=pointer-sign... yes checking whether compiler accepts -Werror=pointer-arith... yes checking whether compiler accepts -Werror=int-conversion... yes checking whether compiler accepts -Werror=incompatible-pointer-types... yes checking whether compiler accepts -Werror=discarded-qualifiers... no checking whether compiler accepts -Werror=discarded-array-qualifiers... no checking whether compiler accepts -Qunused-arguments... yes checking whether compiler accepts -Waddress... yes checking whether compiler accepts -Warray-bounds... yes checking whether compiler accepts -Wchar-subscripts... yes checking whether compiler accepts -Wduplicate-decl-specifier... yes checking whether compiler accepts -Winit-self... yes checking whether compiler accepts -Wreturn-type... yes checking whether compiler accepts -Wsequence-point... yes checking whether compiler accepts -Wstrict-aliasing... yes checking whether compiler accepts -Wunused-function... yes checking whether compiler accepts -Wunused-label... yes checking whether compiler accepts -Wunused-variable... yes checking preprocessor condition __PIC__... false checking whether linker accepts -Wl,--sort-section,alignment... yes checking whether linker accepts -Wl,--sort-common... yes checking whether linker accepts -Wl,--gc-sections... yes checking whether linker accepts -Wl,--hash-style=both... yes checking whether linker accepts -Wl,--no-undefined... yes checking whether linker accepts -Wl,--exclude-libs=ALL... yes checking whether linker accepts -Wl,--dynamic-list=./dynamic.list... yes using compiler runtime libraries: -lcompiler_rt checking preprocessor condition __thumb2__... false checking preprocessor condition __ARMEB__... false checking preprocessor condition __ARM_PCS_VFP... true checking whether clang's vfp asm constraints work... yes configured for arm variant: armhf checking whether compiler's long double definition matches float.h... yes checking preprocessor condition __FAST_MATH__... false creating config.mak... done but now I get this error when compiling ld.lld: error: unable to find library -lcompiler_rt Have I made an error in the way I'm calling ./configure? Just to reiterate, I'm trying to use LLVM to cross compile from x86_64 Linux to armv7a-linux-eabihf. On Tue, Oct 12, 2021 at 5:09 PM Nagakamira wrote: > You can pass --unwindlib=libunwind and rtlib, they are both link options > > On Tue, Oct 12, 2021, 8:55 AM Matt Andrews wrote: > >> > --rtlib=compiler-rt >> >> Is that a compiler option or a linker option? I used it in both places, >> but still get the same error. >> >> On Tue, Oct 12, 2021 at 4:00 PM Nagakamira wrote: >> >>> --rtlib=compiler-rt >>> >>> On Tue, Oct 12, 2021, 7:58 AM Matt Andrews >>> wrote: >>> >>>> > -fuse-ld=lld >>>> >>>> I actually used >>>> >>>> -fuse-ld=ld.lld >>>> >>>> That did the trick, but has unlocked another error >>>> >>>> ld.lld: error: unable to find library -lgcc >>>> ld.lld: error: unable to find library -lgcc_eh >>>> >>>> I thought musl compiles with it's own headers? >>>> >>>> On Tue, Oct 12, 2021 at 3:54 PM Nagakamira >>>> wrote: >>>> >>>>> -fuse-ld=lld >>>>> >>>>> On Tue, Oct 12, 2021, 3:26 AM Jeffrey Walton >>>>> wrote: >>>>> >>>>>> On Mon, Oct 11, 2021 at 7:55 PM Matt Andrews >>>>>> wrote: >>>>>> > >>>>>> > >> How do I specify which linker to use? >>>>>> > > >>>>>> > >LD. Also see >>>>>> https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html >>>>>> . >>>>>> > >>>>>> > Looking at the ./configure for musl (which is not based on autoconf >>>>>> according to the docs), there is no mention of LD. Setting LD for >>>>>> ./configure and/or the call to make still results in the error. >>>>>> > >>>>>> > Who calls the linker? The compiler or make? Shouldn't clang know >>>>>> where it's linker is? How to tell clang which linker to use? >>>>>> >>>>>> You can have the compiler driver call the linker for you by specifying >>>>>> -o with an output file name. In that case, $CC or $CXX will drive the >>>>>> link. And in this case, your LDFLAGS should prefix options with -Wl to >>>>>> tell the compiler driver the option is for the linker. >>>>>> >>>>>> Jeff >>>>>> >>>>> --000000000000f4f49b05ce32cc06 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I'm currently using this to compile with LLVM

AR=3D/usr/lib/llvm-13/bin/llvm-ar \=
RANLIB=3D/usr/lib/llvm-13/bin/llvm-ranlib \
CC=3D/usr/lib/llvm-13/bin/clang \
CFLAGS=3D"-fuse-ld=3D/usr/lib/llvm-13/bin/ld.lld= --rtlib=3Dcompiler-rt --target=3Darmv7a-linux-eabihf -mcpu=3Dcortex-a8&quo= t; \
LIBCC=3D-lcompiler_rt \
<= font size=3D"2"> ./configure \
=
= --prefix=3D$PREFIX/usr \
--syslibd= ir=3D$PREFIX/lib \
--target=3Darmv7a-l= inux-eabihf \
&& make \=
&& make install=

This is the output fro= m ./configure

checking for C compiler... /usr/lib/llvm-13/bin/clang = =
check= ing whether C compiler works... yes = =
checking whether compil= er accepts -Werror=3Dunknown-warning-option... yes
checking whether compiler accepts -Werror=3Dunused-command-lin= e-argument... yes
checking whether co= mpiler accepts -Werror=3Dignored-optimization-argument... yes=
= checking whether linker accepts -Werror=3Dunknown-w= arning-option... yes
checking whether = linker accepts -Werror=3Dunused-command-line-argument... yes<= /span>
<= span style=3D"color:rgb(0,0,0)"> checking for C compiler family... clang
checking for toolchain wrapper to build... clang
checking target system type... armv7a= -linux-eabihf
checking whether compile= r accepts -std=3Dc99... yes
<= font size=3D"2"> checking w= hether compiler accepts -nostdinc... yes
<= div> = checking whether compiler accepts -ffreestanding... yes
checking whether compiler accepts -fexcess-precision= =3Dstandard... no
checking whether co= mpiler accepts -frounding-math... yes
= checking whether compiler needs attribute((may_alias)) suppression... no
checking whether compiler accepts -Wa,--= noexecstack... yes
checking whether co= mpiler accepts -fno-stack-protector... yes
checking whether compiler accepts -fno-tree-loop-distribute-patterns..= . no
checking whether we should prepro= cess assembly to add debugging information... no
checking for optimization settings... using defaults
checking whether compiler accepts -Os... yes
components to be optimized for speed: in= ternal malloc string
checking whether = compiler accepts -pipe... yes
checking= whether compiler accepts -fomit-frame-pointer... yes<= /span>
checking whether compiler accepts -fno-unwind-tables... yes=
checking whether compiler accepts -fn= o-asynchronous-unwind-tables... yes
<= span style=3D"background-color:rgb(255,255,255)"> ch= ecking whether compiler accepts -ffunction-sections... yes
checking whether compiler accepts -fdata-sections... y= es
checking whether compiler accepts -= w... yes
checking whether compiler acc= epts -Wno-pointer-to-int-cast... yes
= c= hecking whether compiler accepts -Werror=3Dimplicit-function-declaration...= yes
checking whether compiler accepts= -Werror=3Dimplicit-int... yes
checkin= g whether compiler accepts -Werror=3Dpointer-sign... yes
checking whether compiler accepts -Werror=3Dpointer-arit= h... yes
checking whether compiler acc= epts -Werror=3Dint-conversion... yes
= c= hecking whether compiler accepts -Werror=3Dincompatible-pointer-types... ye= s
checking whether compiler accepts -W= error=3Ddiscarded-qualifiers... no
che= cking whether compiler accepts -Werror=3Ddiscarded-array-qualifiers... no
checking whether compiler accepts -Qu= nused-arguments... yes
checking whethe= r compiler accepts -Waddress... yes
<= span style=3D"background-color:rgb(255,255,255)"> ch= ecking whether compiler accepts -Warray-bounds... yes<= /span>
checking whether compiler accepts -Wchar-subscripts... yes<= /span>
checking whether compiler accepts -Wd= uplicate-decl-specifier... yes
checkin= g whether compiler accepts -Winit-self... yes
checking whether compiler accepts -Wreturn-type... yes
checking whether compiler accepts -Wsequence-point= ... yes
checking whether compiler acce= pts -Wstrict-aliasing... yes
= checking = whether compiler accepts -Wunused-function... yes
checking whether compiler accepts -Wunused-label... yes=
checking whether compiler accepts -Wunused-v= ariable... yes
checking preprocessor c= ondition __PIC__... false
checking whe= ther linker accepts -Wl,--sort-section,alignment... yes
checking whether linker accepts -Wl,--sort-common... yes<= /span>
checking whether linker accepts -Wl,-= -gc-sections... yes
checking whether l= inker accepts -Wl,--hash-style=3Dboth... yes
checking whether linker accepts -Wl,--no-undefined... yes
checking whether linker accepts -Wl,--exclude-li= bs=3DALL... yes
checking whether linke= r accepts -Wl,--dynamic-list=3D./dynamic.list... yes
using compiler runtime libraries: -lcompiler_rt
checking preprocessor condition __thumb2__... fals= e
checking preprocessor condition __AR= MEB__... false
checking preprocessor c= ondition __ARM_PCS_VFP... true
checkin= g whether clang's vfp asm constraints work... yes<= /span>
configured for arm variant: armhf
checking whether compiler's long double definition matches= float.h... yes
checking preprocessor = condition __FAST_MATH__... false
creat= ing config.mak... done

but now I get this = error when compiling

ld.lld: error: unable to find library -lcompiler_rt

<= span style=3D"font-family:arial,sans-serif">Have I= made an error in the way I'm calling ./configure?=

Just to reiterate, I&#= 39;m trying to use LLVM to cross compile from x86_64 Linux to armv7a-linux-= eabihf.

On Tue, Oct 12, 20= 21 at 5:09 PM Nagakamira <nagaka= mira@gmail.com> wrote:
You can pass --unwindlib=3Dlibunwind and rt= lib, they are both link options

On Tue, Oct 12, 2021, 8:55 AM Matt Andrews &= lt;mattandrews@g= mail.com> wrote:
> --rtlib=3Dcompiler-rt

Is that a compiler option or a linker option? I used it in both plac= es, but still get the same error.

On Tue, Oct 12, 2021 at 4:00 PM = Nagakamira <nagakamira@gmail.com> wrote:
--rtlib=3Dcompiler-r= t




-fuse-ld=3Dlld

On Tue, Oct 12, 2021= , 3:26 AM Jeffrey Walton <noloader@gmail.com> wrote:
On Mon, Oct 11, 2= 021 at 7:55 PM Matt Andrews <mattandrews@gmail.= com> wrote:
>
> >> How do I specify which linker to use?
> >
> >LD. Also see https://www.gnu.org/software/make/manual/html_= node/Implicit-Variables.html.
>
> Looking at the ./configure for musl (which is not based on autoconf ac= cording to the docs), there is no mention of LD. Setting LD for ./configure= and/or the call to make still results in the error.
>
> Who calls the linker? The compiler or make? Shouldn't clang know w= here it's linker is? How to tell clang which linker to use?

You can have the compiler driver call the linker for you by specifying
-o with an output file name. In that case, $CC or $CXX will drive the
link. And in this case, your LDFLAGS should prefix options with -Wl to
tell the compiler driver the option is for the linker.

Jeff
--000000000000f4f49b05ce32cc06--