[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
>
> make[4]: stopped in /usr/src/lib/libc
> 1 error
>
> 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’s 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=/usr/obj/clang/powerpc.powerpc/usr/src/tmp
> -B/usr/obj/clang/powerpc.powerpc/usr/src/tmp/usr/bin -nodefaultlibs
> -Wl,--version-script=Version.map -shared -Wl,-x -Wl,--fatal-warnings
> -Wl,--warn-shared-textrel -o libc.so.7.full -Wl,-soname,libc.so.7 `NM='nm'
> NMFLAGS='' 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’s have similar problems or not (even if they
have a binutils port).
This was not a WITH_META_MODE=yes context.
make.conf was empty and src.conf was:
TO_TYPE=powerpc
#
KERNCONF=GENERICvtsc-NODEBUG
TARGET=${TO_TYPE}
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITHOUT_CROSS_COMPILER=
WITH_SYSTEM_COMPILER=
#
WITH_LIBCPLUSPLUS=
WITH_BINUTILS_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
# lldb requires missing atomic 8-byte operations for powerpc (non-64)
WITHOUT_LLDB=
#
WITH_BOOT=
WITHOUT_LIB32=
#
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
#WERROR=
MALLOC_PRODUCTION=
#
WITH_DEBUG_FILES=
===
Mark Millard
markmi at dsl-only.net
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "[email protected]"