Date: Thu, 16 Aug 2018 07:49:04 -0700 From: Mark Millard <marklmi@yahoo.com> To: Warner Losh <imp@bsdimp.com> Cc: Ed Maste <emaste@freebsd.org>, "freebsd-toolchain@FreeBSD.org" <freebsd-toolchain@freebsd.org>, Dimitry Andric <dim@freebsd.org> Subject: Re: Broken arm support in clang now? Message-ID: <FE00838E-6EC8-4923-A068-0C9566A22F97@yahoo.com> In-Reply-To: <CANCZdfpFr3vZYt9SS46wtutEdXR7e3QqS2WiFA2usrkrqAY%2B3w@mail.gmail.com> References: <CANCZdfpmDN-nAkViuEx-tKpPhOdRYX=xNu6s8E2o6F4xC2WPnA@mail.gmail.com> <1880880F-9D9D-47E0-A7A4-5369A3770F89@FreeBSD.org> <CANCZdfpF9ND_k2xvZrsDebsZ07p2RU0Lebp5GDtmxnjdXc=N-A@mail.gmail.com> <A5B46840-B508-4F40-9EFD-50D0439EBAC7@FreeBSD.org> <8B467E75-A6D3-41A5-8EA1-4DDFE0E14CC5@nexustechnology.com> <CANCZdfq4NmT6_W9MwSMC8r4fQfxW8fWyh1pOX5snnVLNEvew9A@mail.gmail.com> <230C1E7D-04DB-4E45-8A40-F6B2F5E557E9@yahoo.com> <CAPyFy2DW86vT2bJBpoznCkB6U8HTYFyYH29Sb=-aCBPd65a=Qg@mail.gmail.com> <86844298-1268-4F5E-A6CD-64CADC022FB9@yahoo.com> <CANCZdfpFr3vZYt9SS46wtutEdXR7e3QqS2WiFA2usrkrqAY%2B3w@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> On 2018-Aug-16, at 7:16 AM, Warner Losh <imp at bsdimp.com> wrote: >=20 > On Thu, Aug 16, 2018 at 8:14 AM, Mark Millard <marklmiat yahoo.com> = wrote: >> On 2018-Aug-16, at 6:38 AM, Ed Maste <emaste at freebsd.org> wrote: >>=20 >> > On 11 August 2018 at 20:45, Mark Millard via freebsd-toolchain >> > <freebsd-toolchain at freebsd.org> wrote: >> >>=20 >> >> Is the link command itself available? (The = .../sys/*/kernel.full.meta >> >> likely has it if it is still around.) >> >=20 >> > I tried a tinderbox build right now and saw the lld warnings from >> > linking zfs.ko. It appears to be fallout from the change to build >> > clang and lld only once for tinderbox, because we're invoking ld = from >> > the ${HOST_TARGET} path: >> >=20 >> > = /scratch/tmp/emaste/obj/scratch/tmp/emaste/freebsd/freebsd11-amd64/tmp/usr= /bin/ld >> > -m armelf_fbsd -Bshareable -znotext -d -warn-common --build-id=3Dsha1= >> > -o zfs.ko.full zfs.kld >> > = /scratch/tmp/emaste/obj/scratch/tmp/emaste/freebsd/freebsd11-amd64/tmp/usr= /bin/ld: >> > warning: lld uses extended branch encoding, no object with >> > architecture supporting feature detected. >> > = /scratch/tmp/emaste/obj/scratch/tmp/emaste/freebsd/freebsd11-amd64/tmp/usr= /bin/ld: >> > warning: lld may use movt/movw, no object with architecture = supporting >> > feature detected. >>=20 >> So ld.lld is not a valid cross linker for some arm variants? A >> architecture specific bootstrap one is needed? >>=20 >> Is this because armelf_fbsd is not specific enough to >> identify the accurate target emulation? Is it because >> the .o's are not sufficient for that identification? >>=20 >> Note: I got the questions from reading the output in: >>=20 >> # ld.lld=20 >> ld.lld: error: no input files >> ld.lld: error: target emulation unknown: -m or at least one .o file = required >>=20 >> So it appears that -m and/or .o's are used to identify targets. >> I'm not clear on the criteria when both are present. >>=20 >> (ld.lld does not take -target as an argument.) >>=20 > lld uses instructions and features introduced in armv7 unconditionally = to do its linking. The bug appears to be that clang invokes it = unconditionally in some cases. Ahh. Okay. 32-bit non-armv7+ cannot be fully llvm based. Intersting. But I took Ed M.'s text to be based on the .meta file where he listed: = /scratch/tmp/emaste/obj/scratch/tmp/emaste/freebsd/freebsd11-amd64/tmp/usr= /bin/ld -m armelf_fbsd -Bshareable -znotext -d -warn-common = --build-id=3Dsha1 -o zfs.ko.full zfs.kld The implication would be that ld was then directly invoked instead of via cc (clang). Looking at a armv7 build I happen to have around: # more = /usr/obj/cortexA53_clang/arm64.aarch64/usr/src/arm64.aarch64/sys/GENERIC-N= ODBG/modules/usr/src/sys/modules/zfs/zfs.ko.full.meta # Meta data file = /usr/obj/cortexA53_clang/arm64.aarch64/usr/src/arm64.aarch64/sys/GENERIC-N= ODBG/modules/usr/src/sys/modules/zfs/zfs.ko.full.meta CMD ld -m aarch64elf -Bshareable -znotext -d -warn-common = --build-id=3Dsha1 -o zfs.ko.full zfs.kld CWD = /usr/obj/cortexA53_clang/arm64.aarch64/usr/src/arm64.aarch64/sys/GENERIC-N= ODBG/modules/usr/src/sys/modules/zfs TARGET zfs.ko.full -- command output -- It looks like ld was directly invoked instead of being done via a cc command for my amd64 -> armv7 cross build example. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FE00838E-6EC8-4923-A068-0C9566A22F97>