devel/freebsd-gcc12 based aarch64 buildkernel: rejection of sys/arm64/arm64/locore.S assembler notation

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sat, 11 Feb 2023 21:55:18 UTC
[For the buildworld notice that I reported elsewhere, the
debug build got the same type of notices/stopping issue.]

After the buildworld notices that I reported I tried
buildkernel by itself. Again the non-debug and debug
builds basically matched.

An early message (that did not stop the build) was:

make[2]: "/usr/obj/BUILDs/main-CA72-nodbg-gccxtc/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG/Makefile" line 47: warning: "Compiler is too old to support PERTHREAD_SSP"

The logic structure in the Makefile only considers clang
as capable:

PERTHREAD_SSP_ENABLED!= grep PERTHREAD_SSP opt_global.h || true ; echo
.if !empty(PERTHREAD_SSP_ENABLED)
. if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 130000
ARM64_SSP_CFLAGS = -mstack-protector-guard=sysreg
ARM64_SSP_CFLAGS += -mstack-protector-guard-reg=sp_el0
ARM64_SSP_CFLAGS += -mstack-protector-guard-offset=0
. else
ARM64_SSP_CFLAGS += -DPERTHREAD_SSP_WARNING
.  warning "Compiler is too old to support PERTHREAD_SSP"
. endif
CFLAGS += ${ARM64_SSP_CFLAGS}
ARCH_FLAGS += ${ARM64_SSP_CFLAGS}
.endif

I've not checked if devel/freebsd-gcc12 has alternatives that
would give support for PERTHREAD_SSP_ENABLED vs. not.

As for the first notices tied to stopping the build:

--- locore.o ---
/usr/main-src/sys/arm64/arm64/locore.S: Assembler messages:
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: found 'U', expected: ')'
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: found 'U', expected: ')'
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: found 'U', expected: ')'
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: junk at end of line, first unrecognized character is `U'
*** [locore.o] Error code 1

make[2]: stopped in /usr/obj/BUILDs/main-CA72-nodbg-gccxtc/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG
.ERROR_TARGET='locore.o'
.ERROR_META_FILE='/usr/obj/BUILDs/main-CA72-nodbg-gccxtc/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG/locore.o.meta'

Or, as shown in the .meta file:

. . . |
 /usr/local/bin/aarch64-unknown-freebsd14.0-as --debug-prefix-map ./machine=/usr/main-src/sys/arm64/include -v -I . -I /usr/main-src/sys -I /usr/main-src/sys/contrib/ck/include -I /usr/main-src/sys/co
ntrib/libfdt -I /usr/main-src/sys/contrib/device-tree/include --gdwarf-5 -EL -march=armv8-a+crc -mabi=lp64 -o locore.o
GNU assembler version 2.39 (aarch64-unknown-freebsd14.0) using BFD version (GNU Binutils) 2.39
#include "..." search starts here:
#include <...> search starts here:
 .
 /usr/main-src/sys
 /usr/main-src/sys/contrib/ck/include
 /usr/main-src/sys/contrib/libfdt
 /usr/main-src/sys/contrib/device-tree/include
End of search list.
/usr/main-src/sys/arm64/arm64/locore.S: Assembler messages:
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: found 'U', expected: ')'
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: found 'U', expected: ')'
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: found 'U', expected: ')'
/usr/main-src/sys/arm64/arm64/locore.S:839: Error: junk at end of line, first unrecognized character is `U'

*** Error code 1


With that, I've provided debug & non-debug tier 1 notes
(amd64 and aarch64).( http://ci.freebsd.org/ only has
amd64 debug.) But mostly I've commented on notices
associated with stopping the build in an incomplete
state --not the many other warnings/notes produced.

While I also have access to armv7 (and armv7 chroot/jail
on aarch64), I do not expect to be experimenting with armv7
and devel/freebsd-gcc12@armv7 for such just for my own
curiosity.

Note:
My builds were not a detailed replication of the FreeBSD
ci server's type of build context, even ignoring the
debug vs. non-debug coverage and the aarch64 testing.
The results are based on my normal, personal buildworld
buildkernel context.

===
Mark Millard
marklmi at yahoo.com