x86/boot: fix build with certain older gcc versions Despite all attempts so far (ending in commit fecf584294 ["Config.mk: fix comment for debug option"] adjusting the respective comment), Config.mk's debug= setting still affects the hypervisor build: CFLAGS gets -g added there. xen/arch/x86/boot/build32.mk includes that file, and hence inherits the setting too. Some gcc versions take -g to create an .eh_frame section despite -fno-asynchronous-unwind-tables (which instead one would expect to produce .debug_frame). In turn, commit 93c0c0287a ("x86/boot: create *.lnk files with linker script") was - in my understanding - supposed to make sure .text is first, but apparently it did also not really achieve that effect: Both reloc.lnk and reloc.bin in the case here ended up with .eh_frame first, which obviously rendered the whole final binary unusable. Explicitly suppress generation of any kind of debug info when building reloc.o. Signed-off-by: Jan Beulich --- a/xen/arch/x86/boot/build32.mk +++ b/xen/arch/x86/boot/build32.mk @@ -4,7 +4,7 @@ include $(XEN_ROOT)/Config.mk $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) -CFLAGS += -Werror -fno-asynchronous-unwind-tables -fno-builtin -msoft-float +CFLAGS += -Werror -fno-asynchronous-unwind-tables -fno-builtin -g0 -msoft-float CFLAGS := $(filter-out -flto,$(CFLAGS)) # NB. awk invocation is a portable alternative to 'head -n -1'