[PATCH] kallsyms: ignore ARMv4 thunks along with others

Arnd Bergmann posted 1 patch 1 year, 11 months ago
There is a newer version of this series
scripts/mksysmap | 2 ++
1 file changed, 2 insertions(+)
[PATCH] kallsyms: ignore ARMv4 thunks along with others
Posted by Arnd Bergmann 1 year, 11 months ago
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
Re: [PATCH] kallsyms: ignore ARMv4 thunks along with others
Posted by Masahiro Yamada 1 year, 11 months ago
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