[LTP] [PATCH] kvm: Fix Nix build failure by moving -fno-stack-protector to CFLAGS

Martin Doucha mdoucha@suse.cz
Tue Sep 19 14:51:51 CEST 2023


Hi,
pvorel should have a look whether it doesn't break the other systems 
where -fno-stack-protector is needed, but otherwise:

Reviewed-by: Martin Doucha <mdoucha@suse.cz>

On 19. 09. 23 10:38, Richard Palethorpe wrote:
> Nix (and by extension NixOS) uses a binutils wrapper of some sort to
> allow switching between toolchains. This seems to be causing a problem
> for the KVM tests although it may not be unique to Nix.
> 
> 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 <rpalethorpe@suse.com>
> ---
>   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 d9eb10728..ce4a5ede2 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)
>   

-- 
Martin Doucha   mdoucha@suse.cz
SW Quality Engineer
SUSE LINUX, s.r.o.
CORSO IIa
Krizikova 148/34
186 00 Prague 8
Czech Republic



More information about the ltp mailing list