On Fri, Nov 3, 2023 at 9:02 AM Yuan Tan <tanyuan@xxxxxxxxxxx> 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@xxxxxxxxxxx> > Signed-off-by: Zhangjin Wu <falcon@xxxxxxxxxxx> > --- > 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 >