For now, it can remove -fno-jump-tables and then enable jump table for objtool if the compiler has option -mannotate-tablejump. Signed-off-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> --- arch/loongarch/Kconfig | 8 +++++++- arch/loongarch/Makefile | 5 +---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig index bb35c34f86d2..49ed776cb253 100644 --- a/arch/loongarch/Kconfig +++ b/arch/loongarch/Kconfig @@ -150,7 +150,7 @@ config LOONGARCH select HAVE_LIVEPATCH select HAVE_MOD_ARCH_SPECIFIC select HAVE_NMI - select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB + select HAVE_OBJTOOL if TOOLCHAIN_SUPPORTS_OBJTOOL select HAVE_PCI select HAVE_PERF_EVENTS select HAVE_PERF_REGS @@ -284,6 +284,12 @@ config AS_HAS_LBT_EXTENSION config AS_HAS_LVZ_EXTENSION def_bool $(as-instr,hvcl 0) +config CC_HAS_ANNOTATE_TABLEJUMP + def_bool $(cc-option,-mannotate-tablejump) + +config TOOLCHAIN_SUPPORTS_OBJTOOL + def_bool AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB && CC_HAS_ANNOTATE_TABLEJUMP + menu "Kernel type and options" source "kernel/Kconfig.hz" diff --git a/arch/loongarch/Makefile b/arch/loongarch/Makefile index ae3f80622f4c..69a3b4ae6c60 100644 --- a/arch/loongarch/Makefile +++ b/arch/loongarch/Makefile @@ -99,10 +99,7 @@ KBUILD_AFLAGS += $(call cc-option,-mno-relax) $(call cc-option,-Wa$(comma)-mno KBUILD_CFLAGS += $(call cc-option,-mno-relax) $(call cc-option,-Wa$(comma)-mno-relax) KBUILD_AFLAGS += $(call cc-option,-mthin-add-sub) $(call cc-option,-Wa$(comma)-mthin-add-sub) KBUILD_CFLAGS += $(call cc-option,-mthin-add-sub) $(call cc-option,-Wa$(comma)-mthin-add-sub) - -ifdef CONFIG_OBJTOOL -KBUILD_CFLAGS += -fno-jump-tables -endif +KBUILD_CFLAGS += $(call cc-option,-mannotate-tablejump) KBUILD_RUSTFLAGS += --target=loongarch64-unknown-none-softfloat KBUILD_RUSTFLAGS_KERNEL += -Zdirect-access-external-data=yes -- 2.42.0