From 72891ca1efb61787cc78a81ef3e379f3fea77ac1 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Mon, 18 Sep 2023 12:14:38 +0100 Subject: [PATCH] kvm: Fix Nix build failure by moving -fno-stack-protector to CFLAGS Nix and some Buildroot configs have the problem shown below. gcc -I/home/rich/kernel/ltp/testcases/kernel/kvm/include -DCOMPILE_PAYLOAD -ffreestanding -O2 -Wall -fno-asynchronous-unwind-tables -mno-mmx\ -mno-sse -fno-pie -c -o lib_guest.o lib_guest.c as -c -o bootstrap_x86_64.o bootstrap_x86_64.S gcc -I/home/rich/kernel/ltp/testcases/kernel/kvm/include -DCOMPILE_PAYLOAD -ffreestanding -O2 -Wall -fno-asynchronous-unwind-tables -mno-mmx\ -mno-sse -fno-pie -c -o lib_x86.o lib_x86.c gcc -I/home/rich/kernel/ltp/testcases/kernel/kvm/include -I../../../include -I../../../include -I../../../include/old/ -DCOMPILE_PAYLOAD -ff\ reestanding -O2 -Wall -fno-asynchronous-unwind-tables -mno-mmx -mno-sse -fno-pie -nostdlib -Wl,--build-id=none -fno-stack-protector -z noexe\ cstack -no-pie -Wl,-T/home/rich/kernel/ltp/testcases/kernel/kvm/linker/x86_64.lds -o kvm_pagefault01-payload.elf kvm_pagefault01.c lib_guest\ .o bootstrap_x86_64.o lib_x86.o /nix/store/inq79dwl8sz1ygmfbgsmg77i5cwmdjpz-binutils-2.40/bin/ld: lib_x86.o: in function `kvm_init_guest_vmcb': lib_x86.c:(.text+0x7b3): undefined reference to `__stack_chk_fail' collect2: error: ld returned 1 exit status make: *** [Makefile:58: kvm_pagefault01-payload.o] Error 1 __stack_chk_fail is added to lib_x86.o which means that -fstack-protector somehow gets added to the compilation of lib_x86.o. Swapping -fno-stack-protector from the LD flags to the C flags ensures it is disabled when compiling lib_x86.o. Signed-off-by: Richard Palethorpe Reviewed-by: Martin Doucha Acked-by: Petr Vorel --- testcases/kernel/kvm/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testcases/kernel/kvm/Makefile b/testcases/kernel/kvm/Makefile index d9eb1072836..ce4a5ede249 100644 --- a/testcases/kernel/kvm/Makefile +++ b/testcases/kernel/kvm/Makefile @@ -8,8 +8,8 @@ include $(top_srcdir)/include/mk/testcases.mk ASFLAGS = CPPFLAGS += -I$(abs_srcdir)/include GUEST_CPPFLAGS = $(CPPFLAGS) -DCOMPILE_PAYLOAD -GUEST_CFLAGS = -ffreestanding -O2 -Wall -fno-asynchronous-unwind-tables -mno-mmx -mno-sse -GUEST_LDFLAGS = -nostdlib -Wl,--build-id=none -fno-stack-protector -z noexecstack +GUEST_CFLAGS = -ffreestanding -O2 -Wall -fno-asynchronous-unwind-tables -fno-stack-protector -mno-mmx -mno-sse +GUEST_LDFLAGS = -nostdlib -Wl,--build-id=none -z noexecstack GUEST_LDLIBS = KVM_LD ?= $(LD)