kallsyms: ignore ARMv4 thunks along with others

Message ID 20240214181942.3562473-1-arnd@kernel.org
State New
Headers
Series kallsyms: ignore ARMv4 thunks along with others |

Commit Message

Arnd Bergmann Feb. 14, 2024, 6:19 p.m. UTC
  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(+)
  

Comments

Masahiro Yamada Feb. 14, 2024, 8:34 p.m. UTC | #1
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_",
  
Arnd Bergmann Feb. 14, 2024, 8:45 p.m. UTC | #2
On Wed, Feb 14, 2024, at 21:34, Masahiro Yamada wrote:
> On Thu, Feb 15, 2024 at 3:19 AM Arnd Bergmann <arnd@kernel.org> wrote:
> 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.

Right, makes sense. There is always a risk of removing
intential kernel symbols and this is slightly higher
with the regex but still not that bad.

I'll give this a spin and send a v2 tomorrow then.

    Arnd
  
Masahiro Yamada Feb. 14, 2024, 8:56 p.m. UTC | #3
On Thu, Feb 15, 2024 at 5:47 AM Arnd Bergmann <arnd@arndb.de> wrote:
>
> On Wed, Feb 14, 2024, at 21:34, Masahiro Yamada wrote:
> > On Thu, Feb 15, 2024 at 3:19 AM Arnd Bergmann <arnd@kernel.org> wrote:
> > 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.
>
> Right, makes sense. There is always a risk of removing
> intential kernel symbols and this is slightly higher
> with the regex but still not that bad.
>
> I'll give this a spin and send a v2 tomorrow then.
>
>     Arnd



Maybe this is a little more simpler:


/ __[[:alnum:]]*Thunk_/d
  

Patch

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