head -r309179 clang 3.9.0 for TARGET_ARCH=powerpc64 with devel/powerpc64-binutils used: WITH_LIB32= related assembler source rejected. . .

Mark Millard markmi at dsl-only.net
Mon Nov 28 03:01:41 UTC 2016


[Note: ld from WITH_BINTOOLS_BOOTSTRAP= for buildworld fails and stops
buildworld. This explains the use of devel/powerpc64-binutils below.]

Using clang 3.9.0 for TARGET_ARCH=powerpc64 with
devel/powerpc64-binutils (of an appropriate vintage) apparently
requires r1 instead of 1 for a register name --and so on.

It turns out that trying to use WITH_LIB32= for TARGET_ARCH=powerpc64
with devel/powerpc64-binutils runs into assembler source files that
are rejected for this reason.

There are also complaints about invalid mnemonics (mflr and mr).

The error reports:
(Other files may well have the same sorts of problems.)

> --- lib/csu__L ---
> Building /usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src/lib/csu/powerpc/crti.o
> . . .
> --- crti.o ---
> /usr/src/lib/csu/powerpc/crti.S:34:13: error: unexpected token in memory operand
>  stwu 1,-16(1)
>             ^
> /usr/src/lib/csu/powerpc/crti.S:35:2: error: invalid instruction mnemonic 'mflr'
>  mflr 0
>  ^
> /usr/src/lib/csu/powerpc/crti.S:36:12: error: unexpected token in memory operand
>  stw 31,12(1)
>            ^
> /usr/src/lib/csu/powerpc/crti.S:37:11: error: unexpected token in memory operand
>  stw 0,20(1)
>           ^
> /usr/src/lib/csu/powerpc/crti.S:38:2: error: invalid instruction mnemonic 'mr'
>  mr 31,1
>  ^
> /usr/src/lib/csu/powerpc/crti.S:45:13: error: unexpected token in memory operand
>  stwu 1,-16(1)
>             ^
> /usr/src/lib/csu/powerpc/crti.S:46:2: error: invalid instruction mnemonic 'mflr'
>  mflr 0
>  ^
> /usr/src/lib/csu/powerpc/crti.S:47:12: error: unexpected token in memory operand
>  stw 31,12(1)
>            ^
> /usr/src/lib/csu/powerpc/crti.S:48:11: error: unexpected token in memory operand
>  stw 0,20(1)
>           ^
> /usr/src/lib/csu/powerpc/crti.S:49:2: error: invalid instruction mnemonic 'mr'
>  mr 31,1
>  ^
> *** [crti.o] Error code 1
> 
> make[5]: stopped in /usr/src/lib/csu/powerpc
> .ERROR_TARGET='crti.o'
> .ERROR_META_FILE='/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src/lib/csu/powerpc/crti.o.meta'
> .MAKE.LEVEL='5'
> MAKEFILE=''
> .MAKE.MODE='meta missing-filemon=yes missing-meta=yes silent=yes verbose'
> .CURDIR='/usr/src/lib/csu/powerpc'
> .MAKE='make'
> .OBJDIR='/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src/lib/csu/powerpc'
> .TARGETS='all'
> DESTDIR='/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/lib32'
> LD_LIBRARY_PATH=''
> MACHINE='powerpc'
> MACHINE_ARCH='powerpc'
> MAKEOBJDIRPREFIX='/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32'
> MAKESYSPATH='/usr/src/share/mk'
> MAKE_VERSION='20160818'
> PATH='/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/tmp/legacy/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/tmp/legacy/usr/bin:/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/tmp/legacy/bin:/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/tmp/usr/sbin:/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/tmp/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin'
> SRCTOP='/usr/src'
> OBJTOP='/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src'
> .MAKE.MAKEFILES='/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.powerpc64-clang_altbinutils-bootstrap.amd64-host /usr/src/share/mk/bsd.mkopt.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/lib/csu/powerpc/Makefile /usr/src/share/mk/bsd.lib.mk /usr/src/share/mk/bsd.init.mk /usr/src/share/mk/bsd.opts.mk /usr/src/share/mk/bsd.cpu.mk /usr/src/share/mk/local.init.mk /usr/src/share/mk/src.init.mk /usr/src/lib/csu/powerpc/../Makefile.inc /usr/src/lib/csu/powerpc/../../Makefile.inc /usr/src/share/mk/bsd.own.mk /usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.libnames.mk /usr/src/share/mk/src.libnames.mk /usr/src/share/mk/src.opts.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='. /usr/src/lib/csu/powerpc /usr/src/lib/csu/powerpc/../common'
> --- lib/libc_nonshared__L ---
> Building /usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src/lib/libc_nonshared/iconv.o
> --- lib/csu__L ---
> 1 error


The .meta report:

> # more /usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src/lib/csu/powerpc/crti.o.meta
> # Meta data file /usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src/lib/csu/powerpc/crti.o.meta
> CMD /usr/bin/clang -m32 -DCOMPAT_32BIT -mcpu=powerpc -L/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/lib32/usr/lib32 --sysroot=/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/lib32 -B/usr/local/powerpc64-freebsd/bin/ -B/usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/lib32/usr/lib32 -O2 -pipe -I/usr/src/lib/csu/powerpc/../common  -I/usr/src/lib/csu/powerpc/../../libc/include  -std=gnu99  -Wsystem-headers -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls -Wold-style-definition -Wno-pointer-sign -Wthread-safety -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable  -Qunused-arguments    -c /usr/src/lib/csu/powerpc/crti.S -o crti.o
> CMD 
> CWD /usr/obj/powerpc64vtsc_clang_altbinutils_world/powerpc.powerpc64/usr/src/world32/usr/src/lib/csu/powerpc
> TARGET crti.o
> -- command output --
> /usr/src/lib/csu/powerpc/crti.S:34:13: error: unexpected token in memory operand
>  stwu 1,-16(1)
>             ^
> /usr/src/lib/csu/powerpc/crti.S:35:2: error: invalid instruction mnemonic 'mflr'
>  mflr 0
>  ^
> /usr/src/lib/csu/powerpc/crti.S:36:12: error: unexpected token in memory operand
>  stw 31,12(1)
>            ^
> /usr/src/lib/csu/powerpc/crti.S:37:11: error: unexpected token in memory operand
>  stw 0,20(1)
>           ^
> /usr/src/lib/csu/powerpc/crti.S:38:2: error: invalid instruction mnemonic 'mr'
>  mr 31,1
>  ^
> /usr/src/lib/csu/powerpc/crti.S:45:13: error: unexpected token in memory operand
>  stwu 1,-16(1)
>             ^
> /usr/src/lib/csu/powerpc/crti.S:46:2: error: invalid instruction mnemonic 'mflr'
>  mflr 0
>  ^
> /usr/src/lib/csu/powerpc/crti.S:47:12: error: unexpected token in memory operand
>  stw 31,12(1)
>            ^
> /usr/src/lib/csu/powerpc/crti.S:48:11: error: unexpected token in memory operand
>  stw 0,20(1)
>           ^
> /usr/src/lib/csu/powerpc/crti.S:49:2: error: invalid instruction mnemonic 'mr'
>  mr 31,1
>  ^
> *** Error code 1
> 
> -- filemon acquired metadata --
. . .


Supporting details:

> # more ~/src.configs/src.conf.powerpc64-clang_altbinutils-bootstrap.amd64-host 
> TO_TYPE=powerpc64
> TOOLS_TO_TYPE=${TO_TYPE}
> VERSION_CONTEXT=12.0
> #
> KERNCONF=GENERIC64vtsc-NODBG
> TARGET=powerpc
> .if ${.MAKE.LEVEL} == 0
> TARGET_ARCH=${TO_TYPE}
> .export TARGET_ARCH
> .endif
> #
> WITH_CROSS_COMPILER=
> WITHOUT_SYSTEM_COMPILER=
> #
> WITH_LIBCPLUSPLUS=
> WITHOUT_BINUTILS_BOOTSTRAP=
> WITH_CLANG_BOOTSTRAP=
> WITH_CLANG=
> WITH_CLANG_IS_CC=
> WITH_CLANG_FULL=
> WITH_CLANG_EXTRAS=
> WITH_LLDB=
> #
> WITH_BOOT=
> WITH_LIB32=
> #
> WITHOUT_ELFTOOLCHAIN_BOOTSTRAP=
> WITHOUT_GCC_BOOTSTRAP=
> WITHOUT_GCC=
> WITHOUT_GCC_IS_CC=
> WITHOUT_GNUCXX=
> #
> NO_WERROR=
> #WERROR=
> MALLOC_PRODUCTION=
> #
> WITH_DEBUG_FILES=
> #
> #
> # For TO (so-called "cross") stages . . .
> # So-called-cross via ${TO_TYPE}-xtoolchain-gcc/${TO_TYPE}-gcc. . .
> # TOOLS_TO_TYPE based on ${TO_TYPE}-xtoolchain-gcc related binutils. . .
> #
> CROSS_BINUTILS_PREFIX=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
> .if ${.MAKE.LEVEL} == 0
> 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). . .
> #
> .if ${.MAKE.LEVEL} == 0
> CC=/usr/bin/clang
> CXX=/usr/bin/clang++
> CPP=/usr/bin/clang-cpp
> .export CC
> .export CXX
> .export CPP
> .endif

head -r309179 needed a workaround to build:

> # svnlite diff /usr/src/sys/netipsec/keydb.h
> Index: /usr/src/sys/netipsec/keydb.h
> ===================================================================
> --- /usr/src/sys/netipsec/keydb.h       (revision 309179)
> +++ /usr/src/sys/netipsec/keydb.h       (working copy)
> @@ -35,6 +35,7 @@
>  
>  #ifdef _KERNEL
>  
> +#include <sys/lock.h>
>  #include <sys/mutex.h>
>  
>  #include <netipsec/key_var.h>

Such a change was later checked in as -r309201 .

===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-toolchain mailing list