[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/boot: Reinstate -nostdinc for CFLAGS_x86_32
On 03/09/2024 12:08 pm, Andrew Cooper wrote: > On 03/09/2024 11:54 am, Roger Pau Monné wrote: >> On Tue, Sep 03, 2024 at 11:49:40AM +0100, Andrew Cooper wrote: >>> Most of Xen is build using -nostdinc and a fully specified include path. >>> However, the makefile line: >>> >>> $(head-bin-objs): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic >>> >>> discards XEN_CFLAGS and replaces them with CFLAGS_x86_32. >>> >>> Reinstate -nostdinc, and add the arch include path to the command line. >>> This >>> is a latent bug for now, but it breaks properly with subsequent include >>> changes. >>> >>> Fixes: d58a509e01c4 ("build,x86: remove the need for build32.mk") >>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> >>> --- >>> CC: Jan Beulich <JBeulich@xxxxxxxx> >>> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> >>> CC: Anthony PERARD <anthony.perard@xxxxxxxxxx> >>> --- >>> xen/arch/x86/boot/Makefile | 6 +++--- >>> 1 file changed, 3 insertions(+), 3 deletions(-) >>> >>> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile >>> index 03d8ce3a9e48..19eec01e176e 100644 >>> --- a/xen/arch/x86/boot/Makefile >>> +++ b/xen/arch/x86/boot/Makefile >>> @@ -13,11 +13,11 @@ $(obj)/head.o: $(head-bin-objs:.o=.bin) >>> >>> CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS)) >>> $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS)) >>> -CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float >>> +CFLAGS_x86_32 += -Werror -nostdinc -fno-builtin -g0 -msoft-float >>> ifneq ($(abs_objtree),$(abs_srctree)) >>> -CFLAGS_x86_32 += -I$(objtree)/include >>> +CFLAGS_x86_32 += -I$(objtree)/include -I$(objtree)/arch/$(SRCARCH)/include >>> endif >>> -CFLAGS_x86_32 += -I$(srctree)/include >>> +CFLAGS_x86_32 += -I$(srctree)/include -I$(srctree)/arch/$(SRCARCH)/include >> I think it might be best to just filter out the include paths from >> XEN_CFLAGS, iow: >> >> CFLAGS_x86_32 += $(filter -I%,$(XEN_CFLAGS)) >> >> Instead of having to open-code the paths for the include search paths >> here again. Using the filter leads to the following CC command line: >> >> clang -MMD -MP -MF arch/x86/boot/.cmdline.o.d -m32 -march=i686 -DBUILD_ID >> -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes >> -Wno-unused-but-set-variable -Wno-unused-local-typedefs -fno-pie >> -fno-stack-protector -fno-exceptions -fno-asynchronous-unwind-tables -Werror >> -fno-builtin -g0 -msoft-float -mregparm=3 -I./include -I./arch/x86/include >> -I./arch/x86/include/generated -I./arch/x86/include/asm/mach-generic >> -I./arch/x86/include/asm/mach-default -fpic >> '-D__OBJECT_LABEL__=arch/x86/boot/cmdline.o' -c arch/x86/boot/cmdline.c >> -o arch/x86/boot/.cmdline.o.tmp -MQ arch/x86/boot/cmdline.o > FWIW, https://cirrus-ci.com/build/5930269490806784 shows a good build on > FreeBSD with this patch in place. > > I'd be happy with that approach. It's probably less fragile, although > I'll probably go with: > > CFLAGS_x86_32 += -nostdinc $(filter -I%,$(XEN_CFLAGS)) > > to handle all the include changes together. Lemme spin a v2. Actually, it's not quite that easy. From a regular Xen object file, we have: * -Wa,-I,./include (twice, for some reason). * -include ./include/xen/config.h The former can be added to the filter reasonably easily, but the latter cannot. I guess we've gone this long without it... ~Andrew
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |