[LTP] [PATCH 2/2] kvm: Fix undefined reference to __stack_chk_fail()

Cyril Hrubis chrubis@suse.cz
Wed Jun 8 16:36:17 CEST 2022


Hi!
> Some x86_64 buildroot toolchains (bootlin-x86-64-glibc,
> bootlin-x86-64-musl) try to link to __stack_chk_fail().
> -nostdlib is not enough, it requires also -fstack-protector.
>
> x86_64-buildroot-linux-gnu/bin/ld: /tmp/ccgBXEoR.o: in function `handle_page_fault':
> kvm_pagefault01.c:(.text+0x5d): undefined reference to `__stack_chk_fail'
> collect2: error: ld returned 1 exit status

I'm still puzzled on why does it try to link it. Why is stack protection
turned on for the code. Does buildroot pass -fstack-protector to the
CFLAGS?

I guess that -nostdlib causes the libssp (which implements
__stack_chk_fail() not to be linked by default, but the
__stack_chk_fail() shouldn't be called unless unless the feature is
enabled in the first place.

Also does -fno-stack-protector passed in GUEST_CFLAGS make it disappear?

> Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
> ---
>  testcases/kernel/kvm/Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/testcases/kernel/kvm/Makefile b/testcases/kernel/kvm/Makefile
> index 8d5193d8e..bce1a4eb5 100644
> --- a/testcases/kernel/kvm/Makefile
> +++ b/testcases/kernel/kvm/Makefile
> @@ -9,7 +9,7 @@ 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
> +GUEST_LDFLAGS = -nostdlib -Wl,--build-id=none -fstack-protector
>  GUEST_LDLIBS =
>  
>  FILTER_OUT_MAKE_TARGETS := lib_guest lib_host lib_x86
> -- 
> 2.36.1
> 

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list