Re: compiling error

From: <al_at_familysafeinternet.com>
Date: Tue, 15 Jun 2021 20:52:03 UTC

On 15/06/21 16:33, Justin Hibbits wrote:
> On Tue, 15 Jun 2021 14:18:16 -0400
> al@familysafeinternet.com wrote:
>
>> On 14/06/21 19:26, Mark Millard wrote:
>>> On 2021-Jun-14, at 15:05, al at familysafeinternet.com 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/install.sh"
>>>> 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@host:/usr/src # svnlite info --show-item revision
>> 351650
>>
>>
>>> You do not show anything like the "uname -apKU" output for the
>>> context doing the build.
>> FreeBSD host.datazap.net 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/kmod.mk 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 names
>> options         GEOM_PART_APM           # Apple Partition Maps.
>> options         ZFS
>>
>> device          ukbd
>> device          ums
>>
>> # For SAS RAID
>> #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?
> Try first 'make kernel-toolchain TARGET_ARCH=powerpc64' beforehand.
>
> - Justin


Justin, will give it a try. Thank you!
-Al




>>> 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 failed.
>>
>> Please let me know if you need other information.
>>
>> Thanks,
>> Al
>>
>>
>>
>>