head -r 323246 /usr/src/sys/arm64/arm64/pmap.c:. . . error: no previous prototype for function 'pmap_invalidate_page' (also pmap_invalidate_range and pmap_invalidate_all)

Mark Millard markmi at dsl-only.net
Sat Sep 9 03:34:57 UTC 2017


This was from an amd64 -> arm64.aarch64 cross build context and was an
attempt to build a debug kernel.

# uname -apKU
FreeBSD FreeBSDx64OPC 12.0-CURRENT FreeBSD 12.0-CURRENT  r323246M  amd64 amd64 1200043 1200043

# svnlite info /usr/src/ | grep "Re[plv]"
Relative URL: ^/head
Repository Root: svn://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 323246
Last Changed Rev: 323246

--- pmap.o ---
/usr/src/sys/arm64/arm64/pmap.c:903:1: error: no previous prototype for function 'pmap_invalidate_page' [-Werror,-Wmissing-prototypes]
pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
^
/usr/src/sys/arm64/arm64/pmap.c:917:1: error: no previous prototype for function 'pmap_invalidate_range' [-Werror,-Wmissing-prototypes]
pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
^
/usr/src/sys/arm64/arm64/pmap.c:934:1: error: no previous prototype for function 'pmap_invalidate_all' [-Werror,-Wmissing-prototypes]
pmap_invalidate_all(pmap_t pmap)
^
. . .
3 errors generated.
*** [pmap.o] Error code 1

make[2]: stopped in /usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/sys/GENERIC-DBG
.ERROR_TARGET='pmap.o'
.ERROR_META_FILE='/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/sys/GENERIC-DBG/pmap.o.meta'
.MAKE.LEVEL='2'
MAKEFILE=''
.MAKE.MODE='meta missing-filemon=yes missing-meta=yes silent=yes verbose curdirOk=yes'
_ERROR_CMD='cc -mcpu=cortex-a53 -target aarch64-unknown-freebsd12.0 --sysroot=/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp -B/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/usr/bin -c -O -pipe  -g -nostdinc  -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h  -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mgeneral-regs-only -ffixed-x18 -ffreestanding -fwrapv -fstack-protector -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -Wno-error-address-of-packed-member    -std=iso9899:1999 -Werror  /usr/src/sys/arm64/arm64/pmap.c; ctfconvert -L VERSION -g pmap.o;'
.CURDIR='/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/sys/GENERIC-DBG'
.MAKE='make'
.OBJDIR='/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/sys/GENERIC-DBG'
.TARGETS='all'
DESTDIR=''
LD_LIBRARY_PATH=''
MACHINE='arm64'
MACHINE_ARCH='aarch64'
MAKEOBJDIRPREFIX='/usr/obj/cortexA53dbg_clang/arm64.aarch64'
MAKESYSPATH='/usr/src/share/mk'
MAKE_VERSION='20170720'
PATH='/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/legacy/usr/sbin:/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/legacy/usr/bin:/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/legacy/bin:/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/usr/sbin:/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin'
SRCTOP='/usr/src'
OBJTOP='/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.cortexA53dbg-clang-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 Makefile /usr/src/sys/conf/kern.pre.mk /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/sys/conf/kern.opts.mk /usr/src/sys/conf/kern.post.mk /usr/src/sys/conf/kern.mk'
.PATH='. /usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/sys/GENERIC-DBG'
1 error


# grep -r pmap_invalidate_page /usr/src/sys/arm64/ | more
/usr/src/sys/arm64/arm64/pmap.c:pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
/usr/src/sys/arm64/arm64/pmap.c:        pmap_invalidate_page(kernel_pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:        pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:                pmap_invalidate_page(kernel_pmap, kernel_vm_end);
/usr/src/sys/arm64/arm64/pmap.c:                                pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:        pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:                pmap_invalidate_page(pmap, pv->pv_va);
/usr/src/sys/arm64/arm64/pmap.c:                        pmap_invalidate_page(pmap, sva);
/usr/src/sys/arm64/arm64/pmap.c:                pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:                        pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:        pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:                                pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:        pmap_invalidate_page(pmap, va);
/usr/src/sys/arm64/arm64/pmap.c:                        pmap_invalidate_page(pmap, pv->pv_va);
/usr/src/sys/arm64/arm64/pmap.c:                                pmap_invalidate_page(pmap, pv->pv_va);

I will note that WERROR= was not in use:

# more ~/src.configs/src.conf.cortexA53dbg-clang-bootstrap.amd64-host 
TO_TYPE=aarch64
TOOLS_TO_TYPE=${TO_TYPE}
#
KERNCONF=GENERIC-DBG
TARGET=arm64
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITH_CROSS_COMPILER=
WITHOUT_SYSTEM_COMPILER=
#
WITH_LIBCPLUSPLUS=
WITHOUT_BINUTILS_BOOTSTRAP=
WITH_ELFTOOLCHAIN_BOOTSTRAP=
WITH_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
WITH_LLD_BOOTSTRAP=
WITH_LLD=
WITH_LLD_IS_LD=
WITH_LLDB=
#
WITH_BOOT=
WITHOUT_LIB32=
#
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
#WERROR=
#MALLOC_PRODUCTION=
#
WITH_REPRODUCIBLE_BUILD=
WITH_DEBUG_FILES=
#
#CROSS_BINUTILS_PREFIX=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
XCFLAGS+= -mcpu=cortex-a53
XCXXFLAGS+= -mcpu=cortex-a53
# There is no XCPPFLAGS but XCPP gets XCFLAGS content.


I will note that there are other architectures with the
likes of:

/usr/src/sys/i386/include/pmap.h:void   pmap_invalidate_page(pmap_t, vm_offset_t);
/usr/src/sys/mips/mips/pmap.c:static void pmap_invalidate_page(pmap_t pmap, vm_offset_t va);
/usr/src/sys/amd64/include/pmap.h:void  pmap_invalidate_page(pmap_t, vm_offset_t);




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



More information about the freebsd-current mailing list