On 07/14/16 09:52, Paolo Bonzini wrote:
diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
index 2cdda87..d88ce11 100644
--- a/pc-bios/optionrom/Makefile
+++ b/pc-bios/optionrom/Makefile
@@ -9,22 +9,46 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/optionrom)
.PHONY : all clean build-all
-CFLAGS := -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer -fno-builtin
-CFLAGS += -I$(SRC_PATH)
-CFLAGS += $(call cc-option, $(CFLAGS), -fno-stack-protector)
-CFLAGS += $(CFLAGS_NOPIE)
-QEMU_CFLAGS = $(CFLAGS)
-
-build-all: multiboot.bin linuxboot.bin kvmvapic.bin
+# Drop -fstack-protector and the like
+QEMU_CFLAGS := $(filter -W%, $(QEMU_CFLAGS)) $(CFLAGS_NOPIE) -ffreestanding
+QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -m16)
This change in CFLAGS handling broke the build on OpenBSD. Filtering
-fstack-protector is not enough and is why the Makefile had an explicit
-fno-stack-protector provided.
Adding this back in fixes the issue..
QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector)
ld -nopie -m elf_i386 -Ttext 0 -e _start -s -o linuxboot_dma.img
linuxboot_dma.o
linuxboot_dma.o: In function `bios_cfg_read_entry':
linuxboot_dma.c:(.text+0x90): undefined reference to `__guard_local'
linuxboot_dma.c:(.text+0x12d): undefined reference to `__guard_local'
linuxboot_dma.c:(.text+0x149): undefined reference to
`__stack_smash_handler'
linuxboot_dma.o: In function `load_kernel':
linuxboot_dma.c:(.text+0x168): undefined reference to `__guard_local'
linuxboot_dma.c:(.text+0x381): undefined reference to `__guard_local'
linuxboot_dma.c:(.text+0x3b6): undefined reference to
`__stack_smash_handler'
gmake[1]: *** [Makefile:52: linuxboot_dma.img] Error 1