[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <8138c729-8a30-454d-8422-234cead415ab@ghiti.fr>
Date: Mon, 14 Oct 2024 13:12:52 +0200
From: Alexandre Ghiti <alex@...ti.fr>
To: Palmer Dabbelt <palmer@...belt.com>, alexghiti@...osinc.com
Cc: vladimir.isaev@...tacore.com, roman.artemev@...tacore.com,
guoren@...nel.org, Paul Walmsley <paul.walmsley@...ive.com>,
aou@...s.berkeley.edu, linux-riscv@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/2] riscv: vdso: Prevent gcc from inserting calls to
memset()
Hi Palmer,
On 17/09/2024 17:41, Palmer Dabbelt wrote:
> On Thu, 04 Jul 2024 23:09:01 PDT (-0700), alexghiti@...osinc.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.
>
When compiling a rv32_defconfig (still on 6.12), I get:
~/linux$ riscv64-unknown-elf-readelf -r
build_defconfig_rv32/arch/riscv/kernel/vdso/vdso.so
Relocation section '.rela.dyn' at offset 0x5a0 contains 1 entry:
Offset Info Type Sym.Value Sym. Name + Addend
00000314 00000205 R_RISCV_JUMP_SLOT 00000000 memset + 0
> 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...
I gave a try at -fno-tree-ccp, but it did not remove this relocation.
I now see this relocation in llvm too, so it would be nice to find a
common option or another way to do it, any idea is welcome!
Thanks,
Alex
>
>> Signed-off-by: Alexandre Ghiti <alexghiti@...osinc.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)
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@...ts.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
Powered by blists - more mailing lists