Messages in this thread | | | From | Zong Li <> | Date | Wed, 24 Apr 2024 14:44:35 +0800 | Subject | Re: [PATCH] Revert "riscv: disable generation of unwind tables" |
| |
On Tue, Apr 23, 2024 at 3:14 AM Charlie Jenkins <charlie@rivosinc.com> wrote: > > On Tue, Apr 16, 2024 at 09:31:38AM +0800, Zong Li wrote: > > This reverts commit 2f394c0e7d1129a35156e492bc8f445fb20f43ac. > > > > RISC-V has supported the complete relocation types in module loader by > > '8fd6c5142395 ("riscv: Add remaining module relocations")'. > > Now RISC-V port can enable unwind tables in case eh_frame parsing is > > needed. > > > > Signed-off-by: Zong Li <zong.li@sifive.com> > > --- > > arch/riscv/Makefile | 3 --- > > 1 file changed, 3 deletions(-) > > > > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile > > index 5b3115a19852..9216bf8a2691 100644 > > --- a/arch/riscv/Makefile > > +++ b/arch/riscv/Makefile > > @@ -94,9 +94,6 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y) > > KBUILD_CFLAGS += -mcmodel=medany > > endif > > > > -# Avoid generating .eh_frame sections. > > -KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables > > - > > There are a lot of orphaned sections created by this, which throws a lot > of warnings. These warnings will only be present on GCC-13+ since > -fno-asynchronous-unwind-tables was a default before GCC-13. > > The .eh_frame orphaned sections can be resolved by including > > .eh_frame : {*(.eh_frame)} > > in arch/riscv/kernel/vmlinux.lds.S. arm64 places it in the init section, > but outside init_data and init_text, so right after the .alternative > definition seems like a good place. > > .init.eh_frame sections in drivers/firmware/efi/libstub also complain > about being orphaned, and other architectures have disabled unwind > tables for that compilation unit, so -fno-unwind-tables and > -fno-asynchronous-unwind-tables should be added to > drivers/firmware/efi/libstub/Makefile for riscv. > > This also causes the resulting image (with defconfig) to increase from > 22M to 24M. There are currently no users of unwind tables in riscv so > this should be hidden behind a config. arm64 uses this config as: > > # Avoid generating .eh_frame* sections. > ifneq ($(CONFIG_UNWIND_TABLES),y) > KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables > KBUILD_AFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables > else > KBUILD_CFLAGS += -fasynchronous-unwind-tables > KBUILD_AFLAGS += -fasynchronous-unwind-tables > endif > > Using this same config name for riscv would allow riscv to use the > standard .eh_frame code introduced in > https://lore.kernel.org/linux-arm-kernel/20221027155908.1940624-2-ardb@kernel.org/. > > This config is only enabled if some other config selects it in arm64, > but riscv does not contain any users so maybe this config can be left > unselected until there is a user of unwind tables in riscv. >
Hi Charlie, Thanks a lot for the tips and information, I will use gcc-13+ to verify the next patch.
> - Charlie > > > # The RISC-V attributes frequently cause compatibility issues and provide no > > # information, so just turn them off. > > KBUILD_CFLAGS += $(call cc-option,-mno-riscv-attribute) > > -- > > 2.17.1 > > > > > > _______________________________________________ > > linux-riscv mailing list > > linux-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv
| |