Re: compiling error

From: Mark Millard via freebsd-ppc <>
Date: Mon, 14 Jun 2021 16:26:51 -0700
On 2021-Jun-14, at 15:05, al at wrote:

> I hope that someone can help me. I broke my install of FreeBSD and I went back to my G3 and tried to compile a new kernel so that I would not need the serial console anymore, but even if I try to compile the old kernel it still stops with:
> --------------------------------------------------------------
> >>> stage 3.1: building everything
> --------------------------------------------------------------
> cd /usr/obj/usr/src/powerpc.powerpc64/sys/AMIGAX5000; MACHINE_ARCH=powerpc64 MACHINE=powerpc CPUTYPE= CC="cc --sysroot=/usr/obj/usr/src/powerpc.powerpc64/tmp -B/usr/obj/usr/src/powerpc.powerpc64/tmp/usr/bin" CXX="c++ --sysroot=/usr/obj/usr/src/powerpc.powerpc64/tmp -B/usr/obj/usr/src/powerpc.powerpc64/tmp/usr/bin" CPP="cpp --sysroot=/usr/obj/usr/src/powerpc.powerpc64/tmp -B/usr/obj/usr/src/powerpc.powerpc64/tmp/usr/bin" AS="as" AR="ar" LD="ld" LLVM_LINK="" NM=nm OBJCOPY="objcopy" RANLIB=ranlib STRINGS= SIZE="size" INSTALL="sh /usr/src/tools/" PATH=/usr/obj/usr/src/powerpc.powerpc64/tmp/usr/sbin:/usr/obj/usr/src/powerpc.powerpc64/tmp/usr/bin:/usr/obj/usr/src/powerpc.powerpc64/tmp/legacy/usr/sbin:/usr/obj/usr/src/powerpc.powerpc64/tmp/legacy/usr/bin:/usr/obj/usr/src/powerpc.powerpc64/tmp/legacy/bin::/sbin:/bin:/usr/sbin:/usr/bin make  -m /usr/src/share/mk  KERNEL=kernel all -DNO_MODULES_OBJ
> machine -> /usr/src/sys/powerpc/include
> cc --sysroot=/usr/obj/usr/src/powerpc.powerpc64/tmp -B/usr/obj/usr/src/powerpc.powerpc64/tmp/usr/bin -c -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/ck/include -I/usr/src/sys/contrib/libfdt -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -msoft-float -fPIC -fno-omit-frame-pointer -MD -MF.depend.genoffset.o -MTgenoffset.o -mno-altivec -msoft-float -ffreestanding -fwrapv -fstack-protector -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-uninitialized -Wno-format-zero-length -fms-extensions -finline-limit=15000 --param inline-unit-growth=100 --param large-function-growth=1000 -fms-extensions -Wa,-many -mcall-aixdesc -std=iso9899:1999 /usr/src/sys/kern/genoffset.c
> /usr/src/sys/kern/genoffset.c:1: error: -fPIC and -mcall-aixdesc are incompatible
> *** Error code 1
> Stop.
> make[2]: stopped in /usr/obj/usr/src/powerpc.powerpc64/sys/AMIGAX5000
> *** Error code 1
> Stop.
> make[1]: stopped in /usr/src
> *** Error code 1
> Stop.
> make: stopped in /usr/src
> I am using source from before we switched to clang.
> The issue is with the offset, but I don't know why it is suddenly a problem, because it compiled before. Any thoughts?

You make no mention of what svn or git branch and version of the
FreeBSD source is being compiled, no output from svnlite or git
indicating such.

You do not show anything like the "uname -apKU" output for the
context doing the build.

Looks to me like ${MACHINE_CPUARCH} == "powerpc" got -fPIC
in sys/conf/ in svn path=/head/; revision=356114 
at 2019-12-27 04:07:51 +0000.

-mcall-aixdesc is older then that if I understand right.

But a G3 means 32-bit powerpc is doing the build while you
are targeting something under:


So it is a form of cross-build (not even a self-hosted limiting
condition one: one that produces incompatible code). You give
no details of how you set up the cross-build.

My guess is the cross-build attempt is using compiler option
combinations that would work in a native powerpc64 environment
but not with the 32-bit powerpc toolchain that is in use. Or:
the build might have mixed the 32-bit context options and the
powerpc64 context options by having some tests that incorrectly
tests host context vs. target context for choosing options.

Mark Millard
marklmi at
( went
away in early 2018-Mar)
Received on Mon Jun 14 2021 - 23:26:51 UTC

Original text of this message