Date: Sun, 29 May 2016 23:32:50 -0700 From: Mark Millard <markmi@dsl-only.net> To: FreeBSD Current <freebsd-current@freebsd.org>, Bryan Drewery <bdrewery@FreeBSD.org> Cc: FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org> Subject: 11.0 -r300944 buildworld attempt failed [amd64 targeting powerpc via system clang use] Message-ID: <C0ABC879-468D-4C78-8DEC-3A6F41D7ECB4@dsl-only.net> In-Reply-To: <8A197698-51C7-43F9-9927-465602E19AAE@dsl-only.net> References: <8A197698-51C7-43F9-9927-465602E19AAE@dsl-only.net>
next in thread | previous in thread | raw e-mail | index | archive | help
[It may well be that powerpc is not an intended cross compile target via = clang since clang is insufficient for an FreeBSD/powerpc ABI compliant = buildworld as stands. Still I use this to illustrate the more general = points for clang use in cross builds.] The failure: > --- libc.so.7.full --- > /usr/bin/ld: unrecognised emulation mode: elf32ppc_fbsd > Supported emulations: elf_x86_64_fbsd elf_i386_fbsd > clang: error: linker command failed with exit code 1 (use -v to see = invocation) > *** [libc.so.7.full] Error code 1 >=20 > make[4]: stopped in /usr/src/lib/libc > 1 error >=20 > make[4]: stopped in /usr/src/lib/libc > *** [lib/libc__L] Error code 2 Note the /usr/bin/ld use: the host (amd64) linker for a powerpc link = operation. The log shows the ld command was via clang=E2=80=99s front end as far as = what the build did directly (just a prefix shown): > --- libc.so.7.full --- > /usr/bin/clang -target powerpc-unknown-freebsd11.0 = --sysroot=3D/usr/obj/clang/powerpc.powerpc/usr/src/tmp = -B/usr/obj/clang/powerpc.powerpc/usr/src/tmp/usr/bin -nodefaultlibs = -Wl,--version-script=3DVersion.map -shared -Wl,-x -Wl,--fatal-warnings = -Wl,--warn-shared-textrel -o libc.so.7.full -Wl,-soname,libc.so.7 = `NM=3D'nm' NMFLAGS=3D'' lorder trivial-vdso_tc.So bt_close.So bt_conv.So = bt_debug.So bt_delete.So bt_get.So bt_open.So bt_overflow.So bt_page.So . . . The -B does not point to a place with a powerpc specific ld command: > # ls -lt /usr/obj/clang/powerpc.powerpc/usr/src/tmp/usr/bin > total 1395 > -rwxr-xr-x 1 root wheel 827248 May 29 22:20 ctfmerge > -rwxr-xr-x 1 root wheel 534712 May 29 22:20 sysinit > -rwxr-xr-x 1 root wheel 960784 May 29 22:20 ctfconvert As far as I can tell a potentially proper path would have been: /usr/local/powerpc-freebsd/bin/ld if a devel/powerpc-binutils port existed and was installed. (No such = port exists.) I do not know if other TARGET_ARCH=E2=80=99s have similar problems or = not (even if they have a binutils port). This was not a WITH_META_MODE=3Dyes context. make.conf was empty and src.conf was: TO_TYPE=3Dpowerpc # KERNCONF=3DGENERICvtsc-NODEBUG TARGET=3D${TO_TYPE} .if ${.MAKE.LEVEL} =3D=3D 0 TARGET_ARCH=3D${TO_TYPE} .export TARGET_ARCH .endif # WITHOUT_CROSS_COMPILER=3D WITH_SYSTEM_COMPILER=3D # WITH_LIBCPLUSPLUS=3D WITH_BINUTILS_BOOTSTRAP=3D WITH_CLANG=3D WITH_CLANG_IS_CC=3D WITH_CLANG_FULL=3D WITH_CLANG_EXTRAS=3D # lldb requires missing atomic 8-byte operations for powerpc (non-64) WITHOUT_LLDB=3D # WITH_BOOT=3D WITHOUT_LIB32=3D # WITHOUT_GCC_BOOTSTRAP=3D WITHOUT_GCC=3D WITHOUT_GCC_IS_CC=3D WITHOUT_GNUCXX=3D # NO_WERROR=3D #WERROR=3D MALLOC_PRODUCTION=3D # WITH_DEBUG_FILES=3D =3D=3D=3D Mark Millard markmi at dsl-only.net
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C0ABC879-468D-4C78-8DEC-3A6F41D7ECB4>