1 #!/bin/sed -f !! 1 #!/bin/sh -x 2 # SPDX-License-Identifier: GPL-2.0-only !! 2 # Based on the vmlinux file create the System.map file 3 # << 4 # sed script to filter out symbols that are no << 5 # or not suitable for kallsyms. The input shou << 6 # << 7 # System.map is used by module-init tools and 3 # System.map is used by module-init tools and some debugging 8 # tools to retrieve the actual addresses of sy 4 # tools to retrieve the actual addresses of symbols in the kernel. 9 # 5 # >> 6 # Usage >> 7 # mksysmap vmlinux System.map >> 8 >> 9 >> 10 ##### >> 11 # Generate System.map (actual filename passed as second argument) >> 12 >> 13 # $NM produces the following output: >> 14 # f0081e80 T alloc_vfsmnt >> 15 >> 16 # The second row specify the type of the symbol: >> 17 # A = Absolute >> 18 # B = Uninitialised data (.bss) >> 19 # C = Common symbol >> 20 # D = Initialised data >> 21 # G = Initialised data for small objects >> 22 # I = Indirect reference to another symbol >> 23 # N = Debugging symbol >> 24 # R = Read only >> 25 # S = Uninitialised data for small objects >> 26 # T = Text code symbol >> 27 # U = Undefined symbol >> 28 # V = Weak symbol >> 29 # W = Weak symbol >> 30 # Corresponding small letters are local symbols >> 31 >> 32 # For System.map filter away: >> 33 # a - local absolute symbols >> 34 # U - undefined global symbols >> 35 # N - debugging symbols >> 36 # w - local weak symbols >> 37 10 # readprofile starts reading symbols when _ste 38 # readprofile starts reading symbols when _stext is found, and 11 # continue until it finds a symbol which is no 39 # continue until it finds a symbol which is not either of 'T', 't', 12 # 'W' or 'w'. 40 # 'W' or 'w'. 13 # 41 # 14 # -------------------------------------------- !! 42 # Ignored prefixes: 15 # Ignored symbol types !! 43 # $ - local symbols for ARM, MIPS, etc. >> 44 # .L - local labels, .LBB,.Ltmpxxx,.L__unnamed_xx,.LASANPC, etc. >> 45 # __crc_ - modversions >> 46 # __kstrtab_ - EXPORT_SYMBOL (symbol name) >> 47 # __kstrtabns_ - EXPORT_SYMBOL (namespace) 16 # 48 # >> 49 # Ignored symbols: >> 50 # L0 - for LoongArch? 17 51 18 # a: local absolute symbols !! 52 $NM -n $1 | grep -v \ 19 # N: debugging symbols !! 53 -e ' [aNUw] ' \ 20 # U: undefined global symbols !! 54 -e ' \$' \ 21 # w: local weak symbols !! 55 -e ' \.L' \ 22 / [aNUw] /d !! 56 -e ' __crc_' \ 23 !! 57 -e ' __kstrtab_' \ 24 # -------------------------------------------- !! 58 -e ' __kstrtabns_' \ 25 # Ignored prefixes !! 59 -e ' L0$' \ 26 # (do not forget a space before each pattern) !! 60 > $2 27 << 28 # local symbols for ARM, MIPS, etc. << 29 / \\$/d << 30 << 31 # local labels, .LBB, .Ltmpxxx, .L__unnamed_xx << 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 << 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 ignor << 85 << 86 # ppc stub << 87 /\.long_branch\./d << 88 /\.plt_branch\./d <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.