[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/boot: Reinstate -nostdinc for CFLAGS_x86_32
On Tue, Sep 03, 2024 at 12:16:33PM +0100, Andrew Cooper wrote: > 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). There's a comment next to where this is added: # Set up the assembler include path properly for older toolchains. But won't we also need extra -Wa,-I for the other include paths that are passed on the command line? (./arch/x86/include for example) > * -include ./include/xen/config.h Hm, we could manually add that include option. > > The former can be added to the filter reasonably easily, but the latter > cannot. I guess we've gone this long without it... I've been also thinking, another approach we could take is filtering out what we don't want, but I think that might end up being more fragile. Thanks, Roger.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |