Re: compiling error

From: <>
Date: Tue, 15 Jun 2021 14:18:16 -0400
On 14/06/21 19:26, Mark Millard wrote:
> 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?
Hi, I am sorry about the lack of information in this email, I was in a 
hurry and wasn't thinking.

> 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.

root_at_host:/usr/src # svnlite info --show-item revision

> You do not show anything like the "uname -apKU" output for the
> context doing the build.
FreeBSD 13.0-CURRENT FreeBSD 13.0-CURRENT r351067 
GENERIC  powerpc powerpc 1300039 1300039

> 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:
> /usr/obj/usr/src/powerpc.powerpc64/

I want to compile a kernel a new kernel with a frame buffer for a X5000, 
because I was going to reinstall it anyway. Less that I have to do on 
the X5000 with a serial console.

# Custom kernel for Freescale MPC85XX development boards like the CDS etc.
# $FreeBSD: head/sys/powerpc/conf/MPC85XX 277254 2015-01-16 17:41:21Z 
nwhitehorn $

ident           AMIGAX5000

include         QORIQ64

#options        BUS_DEBUG
#options        DEBUG
#options        EARLY_PRINTF
#options        MPC85XX_UART_PA=0xffe11c000ull
#options        KTR
#options        KTR_COMPILE=(KTR_PMAP)
#options        KTR_MASK=(KTR_PMAP)
#options        KTR_ENTRIES=8192
#options        KTR_VERBOSE

options         PREEMPTION              # Enable kernel thread preemption
options         GEOM_PART_EBR           # Extended Boot Records
options         GEOM_PART_EBR_COMPAT    # Backward compatible partition 
options         GEOM_PART_APM           # Apple Partition Maps.
options         ZFS

device          ukbd
device          ums

#device          pci
#device          aacraid

# For Video
device          vt
device          fbd
device          kbdmux
options         KBD_INSTALL_CDEV

# No Netboot
nooptions       BOOTP
nooptions       BOOTP_NFSROOT

# For Alex
#device         nvme
nooptions       INVARIANTS
nooptions       INVARIANT_SUPPORT
nooptions       WITNESS
nooptions       WITNESS_SKIPSPIN

> 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.

To cross compile I used:
make buildkernel TARGET_ARCH=powerpc64 KERNCONF=AMIGAX5000

Is there something else that is needed to make this compile?

> 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.

I was able to build a working kernel and userland before on the G3 and 
then recompile everything on the X5000. It maybe that my hard drive has 

Please let me know if you need other information.

Received on Tue Jun 15 2021 - 18:18:16 UTC

Original text of this message