| #!/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 <file>'. | |
| # | |
| # 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 | |
| # MODULE_DEVICE_TABLE (symbol name) | |
| / __mod_device_table__/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 | |
| # MODULE_INFO() | |
| / __UNIQUE_ID_modinfo_[0-9]*$/d | |
| # --------------------------------------------------------------------------- | |
| # Ignored patterns | |
| # (symbols that contain the pattern are ignored) | |
| # ppc stub | |
| /\.long_branch\./d | |
| /\.plt_branch\./d |