scripts/mksysmap | 2 ++ 1 file changed, 2 insertions(+)
From: Arnd Bergmann <arnd@arndb.de>
lld is now able to build ARMv4 and ARMv4T kernels, which means it can generate
thunks for those that can interfere with kallsyms table generation since
they do not get ignore like the corresponding ARMv5+ ones are:
Inconsistent kallsyms data
Try "make KALLSYMS_EXTRA_PASS=1" as a workaround
Add the missing symbols to the list of ignored symbol prefixes.
Fixes: 5eb6e280432d ("ARM: 9289/1: Allow pre-ARMv5 builds with ld.lld 16.0.0 and newer")
Fixes: efe6e3068067 ("kallsyms: fix nonconverging kallsyms table with lld")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
scripts/mksysmap | 2 ++
1 file changed, 2 insertions(+)
diff --git a/scripts/mksysmap b/scripts/mksysmap
index 9ba1c9da0a40..c809bf592790 100755
--- a/scripts/mksysmap
+++ b/scripts/mksysmap
@@ -52,6 +52,8 @@ ${NM} -n ${1} | sed >${2} -e "
/ __AArch64ADRPThunk_/d
# arm lld
+/ __ARMv4PILongThunk_/d
+/ __ARMv4PILongBXThunk_/d
/ __ARMV5PILongThunk_/d
/ __ARMV7PILongThunk_/d
/ __ThumbV7PILongThunk_/d
--
2.39.2
On Thu, Feb 15, 2024 at 3:19 AM Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> lld is now able to build ARMv4 and ARMv4T kernels, which means it can generate
> thunks for those that can interfere with kallsyms table generation since
> they do not get ignore like the corresponding ARMv5+ ones are:
>
> Inconsistent kallsyms data
> Try "make KALLSYMS_EXTRA_PASS=1" as a workaround
>
> Add the missing symbols to the list of ignored symbol prefixes.
>
> Fixes: 5eb6e280432d ("ARM: 9289/1: Allow pre-ARMv5 builds with ld.lld 16.0.0 and newer")
> Fixes: efe6e3068067 ("kallsyms: fix nonconverging kallsyms table with lld")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> scripts/mksysmap | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/scripts/mksysmap b/scripts/mksysmap
> index 9ba1c9da0a40..c809bf592790 100755
> --- a/scripts/mksysmap
> +++ b/scripts/mksysmap
> @@ -52,6 +52,8 @@ ${NM} -n ${1} | sed >${2} -e "
> / __AArch64ADRPThunk_/d
>
> # arm lld
> +/ __ARMv4PILongThunk_/d
> +/ __ARMv4PILongBXThunk_/d
> / __ARMV5PILongThunk_/d
> / __ARMV7PILongThunk_/d
> / __ThumbV7PILongThunk_/d
> --
> 2.39.2
>
If this is a recurring problem,
maybe is it better to use a regular expression?
Remove these lines:
# arm64 lld
/ __AArch64ADRPThunk_/d
# arm lld
/ __ARMV5PILongThunk_/d
/ __ARMV7PILongThunk_/d
/ __ThumbV7PILongThunk_/d
# mips lld
/ __LA25Thunk_/d
/ __microLA25Thunk_/d
Add this:
# lld
/ __[^[:space:]]*Thunk_/d
This pattern is only used in tooling,
but never in the kernel space.
$ git grep '__[^[:space:]]*Thunk_'
scripts/mksysmap:/ __AArch64ADRPThunk_/d
scripts/mksysmap:/ __ARMV5PILongThunk_/d
scripts/mksysmap:/ __ARMV7PILongThunk_/d
scripts/mksysmap:/ __ThumbV7PILongThunk_/d
scripts/mksysmap:/ __LA25Thunk_/d
scripts/mksysmap:/ __microLA25Thunk_/d
tools/perf/tests/vmlinux-kallsyms.c: "__AArch64ADRPThunk_",
/* arm64 lld */
tools/perf/tests/vmlinux-kallsyms.c: "__ARMV5PILongThunk_",
/* arm lld */
tools/perf/tests/vmlinux-kallsyms.c: "__ARMV7PILongThunk_",
tools/perf/tests/vmlinux-kallsyms.c: "__ThumbV7PILongThunk_",
tools/perf/tests/vmlinux-kallsyms.c: "__LA25Thunk_",
/* mips lld */
tools/perf/tests/vmlinux-kallsyms.c: "__microLA25Thunk_",
--
Best Regards
Masahiro Yamada
© 2016 - 2026 Red Hat, Inc.