It seems the __lshrdi3 symbol was dropped from libgcc.a from gcc-11 for 64-bit executables. Signed-off-by: Helge Deller <deller@xxxxxx> --- arch/parisc/kernel/parisc_ksyms.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index 00297e8e1c88..f26c51370255 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c @@ -14,6 +14,7 @@ #include <linux/module.h> #include <linux/kernel.h> #include <linux/syscalls.h> +#include <linux/compiler.h> #include <linux/string.h> EXPORT_SYMBOL(memset); @@ -94,16 +95,19 @@ EXPORT_SYMBOL($$divI_15); extern void __ashrdi3(void); extern void __ashldi3(void); -extern void __lshrdi3(void); extern void __muldi3(void); extern void __ucmpdi2(void); EXPORT_SYMBOL(__ashrdi3); EXPORT_SYMBOL(__ashldi3); -EXPORT_SYMBOL(__lshrdi3); EXPORT_SYMBOL(__muldi3); EXPORT_SYMBOL(__ucmpdi2); +#if !(defined(CONFIG_64BIT) && (GCC_VERSION >= 110000)) +extern void __lshrdi3(void); +EXPORT_SYMBOL(__lshrdi3); +#endif + asmlinkage void * __canonicalize_funcptr_for_compare(void *); EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); -- 2.31.1