linux-yocto/scripts/mksysmap
Mostafa Saleh f133ad12fe scripts/mksysmap: Fix escape chars '$'
[ Upstream commit 7a6c355b55 ]

Commit b18b047002 ("kbuild: change scripts/mksysmap into sed script")
changed the invocation of the script, to call sed directly without
shell.

That means, the current extra escape that was added in:
commit ec336aa831 ("scripts/mksysmap: Fix badly escaped '$'")
for the shell is not correct any more, at the moment the stack traces
for nvhe are corrupted:
[   22.840904] kvm [190]:  [<ffff80008116dd54>] __kvm_nvhe_$x.220+0x58/0x9c
[   22.842913] kvm [190]:  [<ffff8000811709bc>] __kvm_nvhe_$x.9+0x44/0x50
[   22.844112] kvm [190]:  [<ffff80008116f8fc>] __kvm_nvhe___skip_pauth_save+0x4/0x4

With this patch:
[   25.793513] kvm [192]: nVHE call trace:
[   25.794141] kvm [192]:  [<ffff80008116dd54>] __kvm_nvhe_hyp_panic+0xb0/0xf4
[   25.796590] kvm [192]:  [<ffff8000811709bc>] __kvm_nvhe_handle_trap+0xe4/0x188
[   25.797553] kvm [192]:  [<ffff80008116f8fc>] __kvm_nvhe___skip_pauth_save+0x4/0x4

Fixes: b18b047002 ("kbuild: change scripts/mksysmap into sed script")
Signed-off-by: Mostafa Saleh <smostafa@google.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-01-09 13:33:47 +01:00

2.0 KiB
Executable File

#!/bin/sed -f

SPDX-License-Identifier: GPL-2.0-only

sed script to filter out symbols that are not needed for System.map,

or not suitable for kallsyms. The input should be 'nm -n '.

System.map is used by module-init tools and some debugging

tools to retrieve the actual addresses of symbols in the kernel.

readprofile starts reading symbols when _stext is found, and

continue until it finds a symbol which is not either of 'T', 't',

'W' or 'w'.

---------------------------------------------------------------------------

Ignored symbol types

a: local absolute symbols

N: debugging symbols

U: undefined global symbols

w: local weak symbols

/ [aNUw] /d

---------------------------------------------------------------------------

Ignored prefixes

(do not forget a space before each pattern)

local symbols for ARM, MIPS, etc.

/ $/d

local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.

/ .L/d

arm64 EFI stub namespace

/ _efistub/d

arm64 local symbols in PIE namespace

/ _pi\$/d / _pi.L/d

arm64 local symbols in non-VHE KVM namespace

/ _kvm_nvhe$/d / _kvm_nvhe.L/d

lld arm/aarch64/mips thunks

/ _:alnum:*Thunk/d

CFI type identifiers

/ _kcfi_typeid/d / _kvm_nvhe___kcfi_typeid/d / _pi___kcfi_typeid/d

CRC from modversions

/ _crc/d

EXPORT_SYMBOL (symbol name)

/ _kstrtab/d

EXPORT_SYMBOL (namespace)

/ _kstrtabns/d

---------------------------------------------------------------------------

Ignored suffixes

(do not forget '$' after each pattern)

arm

/_from_arm$/d /_from_thumb$/d /_veneer$/d

---------------------------------------------------------------------------

Ignored symbols (exact match)

(do not forget a space before and '$' after each pattern)

for LoongArch?

/ L0$/d

ppc

/ SDA_BASE$/d / SDA2_BASE$/d

---------------------------------------------------------------------------

Ignored patterns

(symbols that contain the pattern are ignored)

ppc stub

/.long_branch./d /.plt_branch./d