Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 08 Mar 2017 21:36:17 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 217648] [lld 4.0.0] WITH_LLD_IS_LD Results
Message-ID:  <bug-217648-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D217648

            Bug ID: 217648
           Summary: [lld 4.0.0] WITH_LLD_IS_LD Results
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: shawn.webb@hardenedbsd.org

Ed Maste asked me to open a bug ticket with results for WITH_LLD_IS_LD test=
ing.
So far, I've found two issues.

1. FreeBSD: Cross building arm64 world on amd64 fails

/usr/obj/arm64.aarch64/scratch/fbsd/tmp/usr/bin/ld: error:
sha512-armv8.pico:(.text+0x10C8): can't create dynamic relocation
R_AARCH64_PREL64 against symbol 'OPENSSL_armcap_P' defined in armcap.pico
/usr/obj/arm64.aarch64/scratch/fbsd/tmp/usr/bin/ld: error:
sha256-armv8.pico:(.text+0xF48): can't create dynamic relocation
R_AARCH64_PREL64 against symbol 'OPENSSL_armcap_P' defined in armcap.pico
/usr/obj/arm64.aarch64/scratch/fbsd/tmp/usr/bin/ld: error:
sha1-armv8.pico:(.text+0x1240): can't create dynamic relocation
R_AARCH64_PREL64 against symbol 'OPENSSL_armcap_P' defined in armcap.pico

2. HardenedBSD: This problem may exist in FreeBSD, but since I can't get pa=
st
the OpenSSL linking error above, I can't confirm. It looks like clang/lld is
trying to link with crt1 when linking the EFI loader. Even if I pass in
-nostdlib and -nostartfiles, lld still tries to link with crt1:

cc -target aarch64-unknown-freebsd12.0
--sysroot=3D/usr/obj/arm64.aarch64/usr/src/tmp -B/usr -O2 -pipe -DHARDENEDB=
SD
-DSKEIN_LOOP=3D111 -I/usr/src/sys/boot/efi/loader/../../arm64/libarm64
-msoft-float -mgeneral-regs-only -I/usr/src/sys/boot/efi/loader
-I/usr/src/sys/boot/efi/loader/arch/arm64
-I/usr/src/sys/boot/efi/loader/../include
-I/usr/src/sys/boot/efi/loader/../include/arm64
-I/usr/src/sys/boot/efi/loader/../../../contrib/dev/acpica/include
-I/usr/src/sys/boot/efi/loader/../../..
-I/usr/src/sys/boot/efi/loader/../../i386/libi386
-I/usr/src/sys/boot/efi/loader/../../zfs
-I/usr/src/sys/boot/efi/loader/../../../cddl/boot/zfs
-I/usr/src/sys/boot/efi/loader/../../../crypto/skein -DEFI_ZFS_BOOT -DNO_PCI
-DEFI -DSMBIOS_SERIAL_NUMBERS -DBOOT_FORTH
-I/usr/src/sys/boot/efi/loader/../../ficl
-I/usr/src/sys/boot/efi/loader/../../ficl/aarch64
-I/usr/src/sys/boot/efi/loader/../../fdt
-I/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../fdt
-DLOADER_FDT_SUPPORT -DLOADER_DISK_SUPPORT -DLOADER_GPT_SUPPORT
-DLOADER_MBR_SUPPORT -I/usr/src/sys/boot/ficl -I/usr/src/sys/boot/ficl/aarc=
h64
-I/usr/src/sys/boot/ficl/../common -I/usr/src/sys/boot/efi/loader/../../com=
mon
-ffreestanding -Wformat -msoft-float -fshort-wchar -fPIC -g -DHAVE_LIBRESSL
-std=3Dgnu99 -Wsystem-headers -Werror -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-ar=
ith
-Wno-uninitialized -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int
-Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value
-Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion
-Wno-unused-local-typedef -Wno-address-of-packed-member -Qunused-arguments =
-v
-o loader.sym.full autoload.o bootinfo.o conf.o copy.o devicename.o main.o
self_reloc.o smbios.o vers.o zfs.o skein.o skein_block.o exec.o start.o cac=
he.o
boot.o commands.o console.o devopen.o interp.o interp_backslash.o
interp_parse.o ls.o misc.o module.o panic.o load_elf64.o reloc_elf64.o disk=
.o
part.o crc32.o bcache.o interp_forth.o=20
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../ficl/libficl.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../libefi/libefi.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../fdt/libfdt.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../efi/fdt/libefi_fdt=
.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../../../lib/libstand=
/libstand.a
FreeBSD clang version 4.0.0 (branches/release_40 296509) (based on LLVM 4.0=
.0)
Target: aarch64-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/obj/arm64.aarch64/usr/src/tmp/usr/bin
 "/usr/obj/arm64.aarch64/usr/src/tmp/usr/bin/ld"
--sysroot=3D/usr/obj/arm64.aarch64/usr/src/tmp --eh-frame-hdr -dynamic-link=
er
/libexec/ld-elf.so.1 --enable-new-dtags -o loader.sym.full
/usr/obj/arm64.aarch64/usr/src/tmp/usr/lib/crt1.o
/usr/obj/arm64.aarch64/usr/src/tmp/usr/lib/crti.o
/usr/obj/arm64.aarch64/usr/src/tmp/usr/lib/crtbegin.o
-L/usr/obj/arm64.aarch64/usr/src/tmp/usr/lib autoload.o bootinfo.o conf.o
copy.o devicename.o main.o self_reloc.o smbios.o vers.o zfs.o skein.o
skein_block.o exec.o start.o cache.o boot.o commands.o console.o devopen.o
interp.o interp_backslash.o interp_parse.o ls.o misc.o module.o panic.o
load_elf64.o reloc_elf64.o disk.o part.o crc32.o bcache.o interp_forth.o
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../ficl/libficl.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../libefi/libefi.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../fdt/libfdt.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../efi/fdt/libefi_fdt=
.a
/usr/obj/arm64.aarch64/usr/src/sys/boot/efi/loader/../../../../lib/libstand=
/libstand.a
-lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s
--no-as-needed /usr/obj/arm64.aarch64/usr/src/tmp/usr/lib/crtend.o
/usr/obj/arm64.aarch64/usr/src/tmp/usr/lib/crtn.o
/usr/obj/arm64.aarch64/usr/src/tmp/usr/bin/ld: error:
/usr/src/sys/boot/efi/loader/arch/arm64/start.S:143: duplicate symbol '_sta=
rt'
/usr/obj/arm64.aarch64/usr/src/tmp/usr/bin/ld: error:
/usr/src/lib/csu/aarch64/crt1.c:(.text+0x0): previous definition was here
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

Stop.
make[2]: stopped in /usr/src/sys/boot/efi/loader

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-217648-8>