Re: New /head/sys/amd64/amd64/genassym.c breaks buildkernel amd64 current

From: Andriy Gapon <avg_at_FreeBSD.org>
Date: Mon, 27 Mar 2017 14:07:52 +0300
On 03/27/2017 14:35, Rainer Hurling wrote:
> Am 27.03.2017 um 10:31 schrieb Andriy Gapon:
>> On 03/26/2017 00:21, Manfred Antar wrote:
>>> Recent change to genassym.c breaks building a current kernel:
>>>
>>> --------------------------------------------------------------
>>>>>> stage 3.1: building everything
>>> --------------------------------------------------------------
>>> cd /usr/obj/usr/src/sys/pozo; COMPILER_VERSION=40000  COMPILER_TYPE=clang 
>>> COMPILER_FREEBSD_VERSION=1200006 MAKEOBJDIRPREFIX=/usr/obj 
>>> MACHINE_ARCH=amd64  MACHINE=amd64  CPUTYPE=
>>> GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin 
>>> GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font 
>>> GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac
>>> CC="/usr/local/bin/ccache cc -target x86_64-unknown-freebsd12.0
>>> --sysroot=/usr/obj/usr/src/tmp -B/usr/obj/usr/src/tmp/usr/bin"
>>> CXX="/usr/local/bin/ccache c++  -target x86_64-unknown-freebsd12.0
>>> --sysroot=/usr/obj/usr/src/tmp -B/usr/obj/usr/src/tmp/usr/bin"  CPP="cpp
>>> -target x86_64-unknown-freebsd12.0 --sysroot=/usr/obj/usr/src/tmp
>>> -B/usr/obj/usr/src/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/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/bin:/usr/obj/usr/src/tmp/usr
>>>
>>   /sbin:/usr/obj/usr/src/tmp/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin make  -m
>> /usr/src/share/mk  KERNEL=kernel all -DNO_MODULES_OBJ
>>> machine -> /usr/src/sys/amd64/include
>>> x86 -> /usr/src/sys/x86/include
>>> /usr/local/bin/ccache cc -target x86_64-unknown-freebsd12.0
>>> --sysroot=/usr/obj/usr/src/tmp -B/usr/obj/usr/src/tmp/usr/bin -c -O2 -pipe
>>> -fno-strict-aliasing -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 -MD
>>> -MF.depend.genassym.o -MTgenassym.o -mcmodel=kernel -mno-red-zone -mno-mmx
>>> -mno-sse -msoft-float -fno-asynchronous-unwind-tables -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 -mno-aes -mno-avx -std=iso9
>>   899:1999 /usr/src/sys/amd64/amd64/genassym.c
>>> In file included from /usr/src/sys/amd64/amd64/genassym.c:47:
>>> /usr/src/sys/sys/bus.h:730:10: fatal error: 'device_if.h' file not found
>>> #include "device_if.h"
>>>           ^~~~~~~~~~~~~
>>> 1 error generated.
>>> *** Error code 1
>>>
>>> Stop.
>>> make[2]: stopped in /usr/obj/usr/src/sys/pozo
>>> *** Error code 1
>>>
>>> Stop.
>>> make[1]: stopped in /usr/src
>>> *** Error code 1
>>>
>>> Stop.
>>> make: stopped in /usr/src
>>>
>>>
>>> cd /usr/obj/usr/src/sys/pozo ; make device_if.h
>>> awk -f /usr/src/sys/tools/makeobjops.awk /usr/src/sys/kern/device_if.m -h
>>>
>>> also bus_if.h is missing:
>>> (pozo)5023}make
>>> /usr/local/bin/ccache cc -c -O2 -pipe -fno-strict-aliasing -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 -MD -MF.depend.genassym.o -MTgenassym.o
>>> -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float
>>> -fno-asynchronous-unwind-tables -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 -mno-aes -mno-avx -std=iso9899:1999
>>> /usr/src/sys/amd64/amd64/genassym.c
>>> In file included from /usr/src/sys/amd64/amd64/genassym.c:47:
>>> /usr/src/sys/sys/bus.h:731:10: fatal error: 'bus_if.h' file not found
>>>
>>> so:
>>> make bus_if.h
>>> awk -f /usr/src/sys/tools/makeobjops.awk /usr/src/sys/kern/bus_if.m -h
>>> then the build works:
>>>
>>> MAKE=make sh /usr/src/sys/conf/newvers.sh  pozo
>>> --- vers.o ---
>>> /usr/local/bin/ccache cc -c -O2 -pipe -fno-strict-aliasing  -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  -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse
>>> -msoft-float  -fno-asynchronous-unwind-tables -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  -mno-aes -mno-avx  -std=iso9899:1999  
>>> vers.c
>>> ctfconvert -L VERSION -g vers.o
>>> --- kernel.full ---
>>> linking kernel.full
>>> ctfmerge -L VERSION -g -o kernel.full ...
>>>       text     data       bss        dec        hex   filename
>>>    8657083   805570   3350664   12813317   0xc38405   kernel.full
>>> --- kernel.debug ---
>>> objcopy --only-keep-debug kernel.full kernel.debug
>>> --- kernel ---
>>> objcopy --strip-debug --add-gnu-debuglink=kernel.debug  kernel.full kernel
>>>
>>> somehow this needs to happen before genassym.c is compiled
>>> this is a kernel without any modules
>> I've got another report about this problem, but I can not reproduce it here with
>> a clean kernel build of GENERIC.
>> I am not sure what the problem is.
>> Do you have anything unusual in make.conf, src.conf or your kernel configuration?
>>
> I get the same failures on 12.0-CURRENT amd64 r315794, even if build with
> generic kernel and without make.conf and src.conf.

Looks like it could be a timing issue because of a new dependency that is not
declared in the make files.
I am going to revert the commit while I am figuring out the details.

-- 
Andriy Gapon
Received on Mon Mar 27 2017 - 09:08:52 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:10 UTC