|  | #!/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 | 
|  |  | 
|  | # --------------------------------------------------------------------------- | 
|  | # 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 |