1#!/bin/sed -f 2# SPDX-License-Identifier: GPL-2.0-only 3# 4# sed script to filter out symbols that are not needed for System.map, 5# or not suitable for kallsyms. The input should be 'nm -n <file>'. 6# 7# System.map is used by module-init tools and some debugging 8# tools to retrieve the actual addresses of symbols in the kernel. 9# 10# readprofile starts reading symbols when _stext is found, and 11# continue until it finds a symbol which is not either of 'T', 't', 12# 'W' or 'w'. 13# 14# --------------------------------------------------------------------------- 15# Ignored symbol types 16# 17 18# a: local absolute symbols 19# N: debugging symbols 20# U: undefined global symbols 21# w: local weak symbols 22/ [aNUw] /d 23 24# --------------------------------------------------------------------------- 25# Ignored prefixes 26# (do not forget a space before each pattern) 27 28# local symbols for ARM, MIPS, etc. 29/ \\$/d 30 31# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc. 32/ \.L/d 33 34# arm64 EFI stub namespace 35/ __efistub_/d 36 37# arm64 local symbols in PIE namespace 38/ __pi_\\$/d 39/ __pi_\.L/d 40 41# arm64 local symbols in non-VHE KVM namespace 42/ __kvm_nvhe_\\$/d 43/ __kvm_nvhe_\.L/d 44 45# lld arm/aarch64/mips thunks 46/ __[[:alnum:]]*Thunk_/d 47 48# CFI type identifiers 49/ __kcfi_typeid_/d 50/ __kvm_nvhe___kcfi_typeid_/d 51/ __pi___kcfi_typeid_/d 52 53# CRC from modversions 54/ __crc_/d 55 56# EXPORT_SYMBOL (symbol name) 57/ __kstrtab_/d 58 59# EXPORT_SYMBOL (namespace) 60/ __kstrtabns_/d 61 62# --------------------------------------------------------------------------- 63# Ignored suffixes 64# (do not forget '$' after each pattern) 65 66# arm 67/_from_arm$/d 68/_from_thumb$/d 69/_veneer$/d 70 71# --------------------------------------------------------------------------- 72# Ignored symbols (exact match) 73# (do not forget a space before and '$' after each pattern) 74 75# for LoongArch? 76/ L0$/d 77 78# ppc 79/ _SDA_BASE_$/d 80/ _SDA2_BASE_$/d 81 82# --------------------------------------------------------------------------- 83# Ignored patterns 84# (symbols that contain the pattern are ignored) 85 86# ppc stub 87/\.long_branch\./d 88/\.plt_branch\./d 89