Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Apr 2018 20:18:34 -0700
From:      Mark Millard <marklmi26-fbsd@yahoo.com>
To:        freebsd-toolchain@freebsd.org, freebsd-arm@freebsd.org
Subject:   Attempt to xtoolchain-gcc buildworld for head with -mcpu=cortex-a53: arm64cpuid.S:23: Error: selected processor does not support . . .
Message-ID:  <27FB6AC2-1E38-4974-A72F-AAE4B72070AB@yahoo.com>

next in thread | raw e-mail | index | archive | help
It appears that the devel/aarch64-gcc toolchain refuses to
assemble instructions that are not available to what was
listed for -mcpu, even when a -march was also listed that
allows such. For -mcpu=3Dcortex-a53 and a -march=3Darmv8-a+crypto :


--- secure/lib/libcrypto__L ---
/usr/src/crypto/openssl/crypto/arm64cpuid.S: Assembler messages:
/usr/src/crypto/openssl/crypto/arm64cpuid.S:23: Error: selected =
processor does not support `aese v0.16b,v0.16b'
/usr/src/crypto/openssl/crypto/arm64cpuid.S:30: Error: selected =
processor does not support `sha1h s0,s0'
/usr/src/crypto/openssl/crypto/arm64cpuid.S:37: Error: selected =
processor does not support `sha256su0 v0.4s,v0.4s'
/usr/src/crypto/openssl/crypto/arm64cpuid.S:43: Error: selected =
processor does not support `pmull v0.1q,v0.1d,v0.1d'

See later for the command details and such for the error.

This makes _armv8_aese_probe and the like unable to be assembled
for -mcpu=3Dcortex-a53 . (There are 2 more source files with such
potential issues.)

Encoding the instructions as byte sequence values would be more
likely to survive various tool chains and specifications but is
likely otherwise messy.

Another option might be to strip -mcpu=3D<?> from CFLAGS, but only for
processing the specific source involved. Adding "+crypto" to form
-mcpu=3D<?>+crypto might be an option (for gcc anyway).

My hack to get past this was to add the +'s to form the +=3D's in:

ACFLAGS.arm64cpuid.S+=3D  -march=3Darmv8-a+crypto
. . .
ACFLAGS.aesv8-armx.S+=3D  -march=3Darmv8-a+crypto
. . .
ACFLAGS.ghashv8-armx.S+=3D        -march=3Darmv8-a+crypto

for the Makefile and then to in my src.conf files
also add:

ACFLAGS.arm64cpuid.S+=3D  -mcpu=3Dcortex-a53+crypto
ACFLAGS.aesv8-armx.S+=3D  -mcpu=3Dcortex-a53+crypto
ACFLAGS.ghashv8-armx.S+=3D        -mcpu=3Dcortex-a53+crypto

(This avoided +crypto being involved elsewhere.)



Supporting error details:

--- secure/lib/libcrypto__L ---
*** [arm64cpuid.o] Error code 1

make[4]: stopped in /usr/src/secure/lib/libcrypto
.ERROR_TARGET=3D'arm64cpuid.o'
=
.ERROR_META_FILE=3D'/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/sr=
c/arm64.aarch64/secure/lib/libcrypto/arm64cpuid.o.meta'
.MAKE.LEVEL=3D'4'
MAKEFILE=3D''
.MAKE.MODE=3D'meta missing-filemon=3Dyes missing-meta=3Dyes silent=3Dyes =
verbose'
_ERROR_CMD=3D'/usr/local/bin/aarch64-unknown-freebsd12.0-gcc =
-mcpu=3Dcortex-a53 -isystem =
/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.aarch64/tmp/=
usr/include =
-L/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.aarch64/tm=
p/usr/lib =
-B/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.aarch64/tm=
p/usr/lib =
--sysroot=3D/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.=
aarch64/tmp -B/usr/local/aarch64-unknown-freebsd12.0/bin/ -O2 -pipe   =
-I/usr/src/crypto/openssl -DTERMIOS -DANSI_SOURCE -DOPENSSL_THREADS =
-DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DSHA1_ASM -DSHA256_ASM =
-DSHA512_ASM =
-I/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.aarch64/se=
cure/lib/libcrypto -I/usr/src/crypto/openssl/crypto =
-I/usr/src/crypto/openssl/crypto/asn1 =
-I/usr/src/crypto/openssl/crypto/evp =
-I/usr/src/crypto/openssl/crypto/modes -g -std=3Dgnu89 =
-fstack-protector-strong -Wno-pointer-sign -Wno-error=3Daddress =
-Wno-error=3Darray-bounds -Wno-error=3Dattributes =
-Wno-error=3Dbool-compare -Wno-error=3Dcast-align -Wno-error=3Dclobbered =
-Wno-error=3Denum-compare -Wno-error=3Dextra -Wno-error=3Dinline =
-Wno-error=3Dlogical-not-parentheses -Wno-error=3Dstrict-aliasing =
-Wno-error=3Duninitialized -Wno-error=3Dunused-but-set-variable =
-Wno-error=3Dunused-function -Wno-error=3Dunused-value =
-Wno-error=3Dmisleading-indentation -Wno-error=3Dnonnull-compare =
-Wno-error=3Dshift-negative-value -Wno-error=3Dtautological-compare =
-Wno-error=3Dunused-const-variable   -v   -Wa,--noexecstack =
-march=3Darmv8-a+crypto -c /usr/src/crypto/openssl/crypto/arm64cpuid.S =
-o arm64cpuid.o; ;'
.CURDIR=3D'/usr/src/secure/lib/libcrypto'
.MAKE=3D'make'
=
.OBJDIR=3D'/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.a=
arch64/secure/lib/libcrypto'
.TARGETS=3D'all'
=
DESTDIR=3D'/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.a=
arch64/tmp'
LD_LIBRARY_PATH=3D''
MACHINE=3D'arm64'
MACHINE_ARCH=3D'aarch64'
MAKEOBJDIRPREFIX=3D''
MAKESYSPATH=3D'/usr/src/share/mk'
MAKE_VERSION=3D'20180222'
=
PATH=3D'/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.aarc=
h64/tmp/legacy/usr/sbin:/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/us=
r/src/arm64.aarch64/tmp/legacy/usr/bin:/usr/obj/cortexA53_xtoolchain-gcc/a=
rm64.aarch64/usr/src/arm64.aarch64/tmp/legacy/bin:/usr/obj/cortexA53_xtool=
chain-gcc/arm64.aarch64/usr/src/arm64.aarch64/tmp/usr/sbin:/usr/obj/cortex=
A53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.aarch64/tmp/usr/bin:/sbin:/=
bin:/usr/sbin:/usr/bin'
SRCTOP=3D'/usr/src'
=
OBJTOP=3D'/usr/obj/cortexA53_xtoolchain-gcc/arm64.aarch64/usr/src/arm64.aa=
rch64'
.MAKE.MAKEFILES=3D'/usr/src/share/mk/sys.mk =
/usr/src/share/mk/local.sys.env.mk /usr/src/share/mk/src.sys.env.mk =
/root/src.configs/src.conf.cortexA53-xtoolchain-gcc.amd64-host =
/usr/src/share/mk/bsd.mkopt.mk /usr/src/share/mk/src.sys.obj.mk =
/usr/src/share/mk/auto.obj.mk /usr/src/share/mk/bsd.suffixes.mk =
/root/src.configs/make.conf /usr/src/share/mk/local.sys.mk =
/usr/src/share/mk/src.sys.mk /dev/null =
/usr/src/secure/lib/libcrypto/Makefile /usr/src/share/mk/bsd.own.mk =
/usr/src/share/mk/bsd.opts.mk /usr/src/share/mk/bsd.cpu.mk =
/usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.linker.mk =
/usr/src/secure/lib/libcrypto/Makefile.man =
/usr/src/secure/lib/libcrypto/Makefile.inc =
/usr/src/share/mk/bsd.endian.mk /usr/src/share/mk/bsd.lib.mk =
/usr/src/share/mk/bsd.init.mk /usr/src/share/mk/local.init.mk =
/usr/src/share/mk/src.init.mk =
/usr/src/secure/lib/libcrypto/../Makefile.inc =
/usr/src/secure/lib/libcrypto/../../Makefile.inc =
/usr/src/share/mk/src.opts.mk /usr/src/lib/Makefile.inc =
/usr/src/share/mk/bsd.libnames.mk /usr/src/share/mk/src.libnames.mk =
/usr/src/share/mk/bsd.symver.mk /usr/src/share/mk/bsd.nls.mk =
/usr/src/share/mk/bsd.files.mk /usr/src/share/mk/bsd.incs.mk =
/usr/src/share/mk/bsd.confs.mk /usr/src/share/mk/bsd.links.mk =
/usr/src/share/mk/bsd.dep.mk /usr/src/share/mk/bsd.clang-analyze.mk =
/usr/src/share/mk/bsd.obj.mk /usr/src/share/mk/bsd.subdir.mk =
/usr/src/share/mk/bsd.sys.mk'
.PATH=3D'. /usr/src/secure/lib/libcrypto =
/usr/src/secure/lib/libcrypto/aarch64 /usr/src/crypto/openssl/crypto =
/usr/src/crypto/openssl/crypto/aes /usr/src/crypto/openssl/crypto/asn1 =
/usr/src/crypto/openssl/crypto/bf /usr/src/crypto/openssl/crypto/bio =
/usr/src/crypto/openssl/crypto/bn /usr/src/crypto/openssl/crypto/buffer =
/usr/src/crypto/openssl/crypto/camellia =
/usr/src/crypto/openssl/crypto/cast /usr/src/crypto/openssl/crypto/cmac =
/usr/src/crypto/openssl/crypto/cms /usr/src/crypto/openssl/crypto/comp =
/usr/src/crypto/openssl/crypto/conf /usr/src/crypto/openssl/crypto/des =
/usr/src/crypto/openssl/crypto/dh /usr/src/crypto/openssl/crypto/dsa =
/usr/src/crypto/openssl/crypto/dso /usr/src/crypto/openssl/crypto/ec =
/usr/src/crypto/openssl/crypto/ecdh /usr/src/crypto/openssl/crypto/ecdsa =
/usr/src/crypto/openssl/crypto/engine /usr/src/crypto/openssl/crypto/err =
/usr/src/crypto/openssl/crypto/evp /usr/src/crypto/openssl/crypto/hmac =
/usr/src/crypto/openssl/crypto/idea /usr/src/crypto/openssl/crypto/krb5 =
/usr/src/crypto/openssl/crypto/lhash /usr/src/crypto/openssl/crypto/md4 =
/usr/src/crypto/openssl/crypto/md5 /usr/src/crypto/openssl/crypto/mdc2 =
/usr/src/crypto/openssl/crypto/modes =
/usr/src/crypto/openssl/crypto/objects =
/usr/src/crypto/openssl/crypto/ocsp /usr/src/crypto/openssl/crypto/pem =
/usr/src/crypto/openssl/crypto/pkcs12 =
/usr/src/crypto/openssl/crypto/pkcs7 =
/usr/src/crypto/openssl/crypto/pqueue =
/usr/src/crypto/openssl/crypto/rand /usr/src/crypto/openssl/crypto/rc2 =
/usr/src/crypto/openssl/crypto/rc4 /usr/src/crypto/openssl/crypto/rc5 =
/usr/src/crypto/openssl/crypto/ripemd /usr/src/crypto/openssl/crypto/rsa =
/usr/src/crypto/openssl/crypto/seed /usr/src/crypto/openssl/crypto/sha =
/usr/src/crypto/openssl/crypto/srp /usr/src/crypto/openssl/crypto/stack =
/usr/src/crypto/openssl/crypto/ts /usr/src/crypto/openssl/crypto/txt_db =
/usr/src/crypto/openssl/crypto/ui =
/usr/src/crypto/openssl/crypto/whrlpool =
/usr/src/crypto/openssl/crypto/x509 =
/usr/src/crypto/openssl/crypto/x509v3 /usr/src/secure/lib/libcrypto/man'
1 error





=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?27FB6AC2-1E38-4974-A72F-AAE4B72070AB>