11.0 -r300944 buildworld amd64 -> armv6/armv7a cross build: Some XCPP and XCC use without -target specified so it rejects -march=armv7a

From: Mark Millard <markmi_at_dsl-only.net>
Date: Mon, 30 May 2016 19:20:54 -0700
[Warning: The following report is already based on trying to work around prior problems already noted elsewhere. That makes these somewhat more suspect. The -march=armv7a that is rejected below is from XCC/XCXX/XCPP content in my src.conf. I later list the src.conf content used.]

[WITH_META_MODE=yes is in use. cleanworld had been done before hand.]

Example failure:

> # more /usr/obj/clang/arm.armv6/usr/src/worldsoft/usr/src/include/rpcsvc/key_prot.h.meta
> # Meta data file /usr/obj/clang/arm.armv6/usr/src/worldsoft/usr/src/include/rpcsvc/key_prot.h.meta
> CMD RPCGEN_CPP=/usr/bin/clang-cpp\ -march=armv7a\ -mcpu=cortex-a7\ -B/usr/local/arm-gnueabi-freebsd/bin\ -DCOMPAT_SOFTFP\ -mfloat-abi=softfp\ \ -L/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/libsoft\ \ --sysroot=/usr/obj/clang/arm.armv6/usr/src/libsoft\ \ -B/usr/obj/clang/arm.armv6/usr/src/tmp/usr/bin\ -B/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/libsoft rpcgen -C -h -DWANT_NFS3 /usr/src/include/rpcsvc/key_prot.x -o key_prot.h
> CWD /usr/obj/clang/arm.armv6/usr/src/worldsoft/usr/src/include/rpcsvc
> TARGET key_prot.h
> -- command output --
> clang-cpp: warning: argument unused during compilation: '-mcpu=cortex-a7'
> clang-cpp: warning: argument unused during compilation: '-mfloat-abi=softfp'
> clang-cpp: warning: argument unused during compilation: '-L/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/libsoft'
> error: unknown target CPU 'armv7a'
> *** Error code 1
. . .

rpcb_prot.h was similar.

These appear to be because -target armv6-???-freebsd11.0 was not supplied to clang-cpp (given that -march=armv7a was supplied to clang-cpp via src.conf material but armv7a is not a variation of the host (amd64) context).

(I try to be sure that clang-cpp is always told the specific -march that I’m targeting in case clang-cpp provides macro definitions on that basis that might be used.)


Adding a -target in XCPP and retrying got farther but failed for XCC not getting a -target and so another rejection of -march=armv7a happened:

> # more /usr/obj/clang/arm.armv6/usr/src/worldsoft/usr/src/gnu/lib/libssp/libssp_nonshared/ssp-local.o*
> # Meta data file /usr/obj/clang/arm.armv6/usr/src/worldsoft/usr/src/gnu/lib/libssp/libssp_nonshared/ssp-local.o.meta
> CMD /usr/bin/clang -march=armv7a -mcpu=cortex-a7 -B/usr/local/arm-gnueabi-freebsd/bin -DCOMPAT_SOFTFP -mfloat-abi=softfp  -L/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/libsoft  --sysroot=/usr/obj/clang/arm.armv6/usr/src/libsoft  -B/usr/obj/clang/arm.armv6/usr/src/tmp/usr/bin -B/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/libsoft  -O -pipe -DHAVE_CONFIG_H -I/usr/src/gnu/lib/libssp/libssp_nonshared/..  -I/usr/src/gnu/lib/libssp/libssp_nonshared/../../../../contrib/gcclibs/libssp  -I/usr/src/gnu/lib/libssp/libssp_nonshared/../../../../contrib/gcclibs/include -fPIC -DPIC -fvisibility=hidden -mfloat-abi=softfp  -std=gnu99    -Qunused-arguments  -c /usr/src/gnu/lib/libssp/libssp_nonshared/../../../../contrib/gcclibs/libssp/ssp-local.c -o ssp-local.o
> CMD 
> CWD /usr/obj/clang/arm.armv6/usr/src/worldsoft/usr/src/gnu/lib/libssp/libssp_nonshared
> TARGET ssp-local.o
> -- command output --
> error: unknown target CPU 'armv7a'
> *** Error code 1
. . .

Some of the other clang command line arguments (-mcpu and -B) are also from my src.conf file. More is missing for a normal compile than just -target material.


[Note that having even just a "redundant" -march=armv6 in XCC/XCXX/XCPP is a good testing technique for proving that all the usage has sufficient context to allow such an explicit specification from the right family.]



Supporting details. . .

make.conf empty.

src.conf (before forcing XCPP to have an armv6 family -target):

TO_TYPE=armv6
TOOLS_TO_TYPE=arm-gnueabi
#
KERNCONF=RPI2-NODBG
TARGET=arm
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITHOUT_CROSS_COMPILER=
WITHOUT_SYSTEM_COMPILER=
#
#CPUTYPE=soft
WITH_LIBSOFT=
WITH_LIBCPLUSPLUS=
WITHOUT_BINUTILS_BOOTSTRAP=
WITHOUT_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
WITH_LLDB=
#
WITH_BOOT=
WITHOUT_LIB32=
#
WITHOUT_ELFTOOLCHAIN_BOOTSTRAP=
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
#WERROR=
MALLOC_PRODUCTION=
#
WITH_DEBUG_FILES=
#
#
# To based on clang (via system)...
# TOOLS_TO_TYPE based on ${TO_TYPE}-xtoolchain-gcc related binutils...
#
.if ${.MAKE.LEVEL} == 0
XCC=/usr/bin/clang -march=armv7a -mcpu=cortex-a7 -B/usr/local/${TOOLS_TO_TYPE}-freebsd/bin
XCXX=/usr/bin/clang++ -march=armv7a -mcpu=cortex-a7 -B/usr/local/${TOOLS_TO_TYPE}-freebsd/bin
XCPP=/usr/bin/clang-cpp -march=armv7a -mcpu=cortex-a7 -B/usr/local/${TOOLS_TO_TYPE}-freebsd/bin
.export XCC
.export XCXX
.export XCPP
XAS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
XAR=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
XLD=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
XNM=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/nm
XOBJCOPY=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objcopy
XOBJDUMP=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objdump
XRANLIB=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ranlib
XSIZE=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/size
#NO-SUCH: XSTRINGS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/strings
XSTRINGS=/usr/local/bin/${TOOLS_TO_TYPE}-freebsd-strings
.export XAS
.export XAR
.export XLD
.export XNM
.export XOBJCOPY
.export XOBJDUMP
.export XRANLIB
.export XSIZE
.export XSTRINGS
.endif
#
#
# From based on clang (via system)...
#
#COMPILER_TYPE=clang
.if ${.MAKE.LEVEL} == 0
CC=/usr/bin/clang
CXX=/usr/bin/clang++
CPP=/usr/bin/clang-cpp
.export CC
.export CXX
.export CPP
.endif


===
Mark Millard
markmi at dsl-only.net
Received on Tue May 31 2016 - 00:21:02 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:05 UTC