[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <DS7PR12MB57652C7C17103B3FF729BD79CBABA@DS7PR12MB5765.namprd12.prod.outlook.com>
Date: Sun, 5 Nov 2023 13:13:47 -0800
From: Fangrui Song <i@...kray.me>
To: Yuan Tan <tanyuan@...ylab.org>
Cc: falcon@...ylab.org, arnd@...db.de, linux-kernel@...r.kernel.org,
linux-mips@...r.kernel.org, linux-riscv@...ts.infradead.org,
luc.vanoostenryck@...il.com, linux-sparse@...r.kernel.org,
linux@...ssschuh.net, palmer@...osinc.com,
paul.walmsley@...ive.com, paulburton@...nel.org,
paulmck@...nel.org, tim.bird@...y.com, tsbogend@...ha.franken.de,
w@....eu
Subject: Re: [PATCH v1 10/14] DCE/DSE: riscv: make every ex_table's name unique
On Fri, Nov 3, 2023 at 9:02 AM Yuan Tan <tanyuan@...ylab.org> wrote:
>
> gc-sections require section names to be unique.
This is not precise, since a monolithic section can be garbage
collected as well.
https://maskray.me/blog/2021-02-28-linker-garbage-collection
"Without the options, the compiler tends to produce monolithic text
and data sections. The large sections make the GC coarse-grained and
they will likely be retained as a whole. ld --gc-sections can still
discard some sections, but the effect is likely very poor."
> Signed-off-by: Yuan Tan <tanyuan@...ylab.org>
> Signed-off-by: Zhangjin Wu <falcon@...ylab.org>
> ---
> arch/riscv/include/asm/asm-extable.h | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/include/asm/asm-extable.h b/arch/riscv/include/asm/asm-extable.h
> index 00a96e7a9664..d0be5a838242 100644
> --- a/arch/riscv/include/asm/asm-extable.h
> +++ b/arch/riscv/include/asm/asm-extable.h
> @@ -9,10 +9,12 @@
>
> #ifdef CONFIG_MMU
>
> +#include <linux/compiler.h>
> +
> #ifdef __ASSEMBLY__
>
> #define __ASM_EXTABLE_RAW(insn, fixup, type, data) \
> - .pushsection __ex_table, "a"; \
> + .pushsection __SECTION_NAME(__ex_table), "a"; \
> .balign 4; \
> .long ((insn) - .); \
> .long ((fixup) - .); \
> @@ -31,7 +33,7 @@
> #include <asm/gpr-num.h>
__SECTION_NAME is probably added by a previous patch.
An alternative is to use the .section directive's `unique` feature
(binutils>=2.35).
> #define __ASM_EXTABLE_RAW(insn, fixup, type, data) \
> - ".pushsection __ex_table, \"a\"\n" \
> + ".pushsection " __SECTION_NAME(__ex_table) ", \"a\"\n" \
> ".balign 4\n" \
> ".long ((" insn ") - .)\n" \
> ".long ((" fixup ") - .)\n" \
> --
> 2.34.1
>
Powered by blists - more mailing lists