[PATCH v2 1/2] riscv: vdso: Prevent gcc from inserting calls to memset()

Palmer Dabbelt palmer at dabbelt.com
Tue Sep 17 08:41:05 PDT 2024


On Thu, 04 Jul 2024 23:09:01 PDT (-0700), alexghiti at rivosinc.com wrote:
> gcc is smart enough to insert a call to memset() in
> riscv_vdso_get_cpus(), which generates a dynamic relocation.
>
> So prevent gcc from doing that by using the
> -fno-tree-loop-distribute-patterns option.

This option doesn't exist on LLVM (at least on whatever version I'm 
using), and I'm not getting any memset()s generated locally so I'm not 
sure what to look for over there.

>From poking around GCC it looks like we might want -fno-tree-ccp too?  
That seems to be able to convert assignments into builtins as well...

> Signed-off-by: Alexandre Ghiti <alexghiti at rivosinc.com>
> ---
>  arch/riscv/kernel/vdso/Makefile | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile
> index f7ef8ad9b550..c7e40bf36371 100644
> --- a/arch/riscv/kernel/vdso/Makefile
> +++ b/arch/riscv/kernel/vdso/Makefile
> @@ -18,6 +18,7 @@ obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o
>
>  ccflags-y := -fno-stack-protector
>  ccflags-y += -DDISABLE_BRANCH_PROFILING
> +ccflags-y += -fno-tree-loop-distribute-patterns
>
>  ifneq ($(c-gettimeofday-y),)
>    CFLAGS_vgettimeofday.o += -fPIC -include $(c-gettimeofday-y)



More information about the linux-riscv mailing list