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 [exclude] >> 8 >> 9 >> 10 ##### >> 11 # Generate System.map (actual filename passed as second argument) >> 12 # The following refers to the symbol type as per nm(1). >> 13 10 # readprofile starts reading symbols when _ste 14 # readprofile starts reading symbols when _stext is found, and 11 # continue until it finds a symbol which is no 15 # continue until it finds a symbol which is not either of 'T', 't', 12 # 'W' or 'w'. 16 # 'W' or 'w'. 13 # 17 # >> 18 >> 19 ${NM} -n ${1} | sed >${2} -e " 14 # -------------------------------------------- 20 # --------------------------------------------------------------------------- 15 # Ignored symbol types 21 # Ignored symbol types 16 # 22 # 17 23 18 # a: local absolute symbols 24 # a: local absolute symbols 19 # N: debugging symbols 25 # N: debugging symbols 20 # U: undefined global symbols 26 # U: undefined global symbols 21 # w: local weak symbols 27 # w: local weak symbols 22 / [aNUw] /d 28 / [aNUw] /d 23 29 24 # -------------------------------------------- 30 # --------------------------------------------------------------------------- 25 # Ignored prefixes 31 # Ignored prefixes 26 # (do not forget a space before each pattern) 32 # (do not forget a space before each pattern) 27 33 28 # local symbols for ARM, MIPS, etc. 34 # local symbols for ARM, MIPS, etc. 29 / \\$/d 35 / \\$/d 30 36 31 # local labels, .LBB, .Ltmpxxx, .L__unnamed_xx 37 # local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc. 32 / \.L/d 38 / \.L/d 33 39 34 # arm64 EFI stub namespace 40 # arm64 EFI stub namespace 35 / __efistub_/d 41 / __efistub_/d 36 42 37 # arm64 local symbols in PIE namespace << 38 / __pi_\\$/d << 39 / __pi_\.L/d << 40 << 41 # arm64 local symbols in non-VHE KVM namespace 43 # arm64 local symbols in non-VHE KVM namespace 42 / __kvm_nvhe_\\$/d 44 / __kvm_nvhe_\\$/d 43 / __kvm_nvhe_\.L/d 45 / __kvm_nvhe_\.L/d 44 46 45 # lld arm/aarch64/mips thunks !! 47 # arm64 lld 46 / __[[:alnum:]]*Thunk_/d !! 48 / __AArch64ADRPThunk_/d >> 49 >> 50 # arm lld >> 51 / __ARMV5PILongThunk_/d >> 52 / __ARMV7PILongThunk_/d >> 53 / __ThumbV7PILongThunk_/d >> 54 >> 55 # mips lld >> 56 / __LA25Thunk_/d >> 57 / __microLA25Thunk_/d 47 58 48 # CFI type identifiers 59 # CFI type identifiers 49 / __kcfi_typeid_/d 60 / __kcfi_typeid_/d 50 / __kvm_nvhe___kcfi_typeid_/d << 51 / __pi___kcfi_typeid_/d << 52 61 53 # CRC from modversions 62 # CRC from modversions 54 / __crc_/d 63 / __crc_/d 55 64 56 # EXPORT_SYMBOL (symbol name) 65 # EXPORT_SYMBOL (symbol name) 57 / __kstrtab_/d 66 / __kstrtab_/d 58 67 59 # EXPORT_SYMBOL (namespace) 68 # EXPORT_SYMBOL (namespace) 60 / __kstrtabns_/d 69 / __kstrtabns_/d 61 70 62 # -------------------------------------------- 71 # --------------------------------------------------------------------------- 63 # Ignored suffixes 72 # Ignored suffixes 64 # (do not forget '$' after each pattern) 73 # (do not forget '$' after each pattern) 65 74 66 # arm 75 # arm 67 /_from_arm$/d 76 /_from_arm$/d 68 /_from_thumb$/d 77 /_from_thumb$/d 69 /_veneer$/d 78 /_veneer$/d 70 79 71 # -------------------------------------------- 80 # --------------------------------------------------------------------------- 72 # Ignored symbols (exact match) 81 # Ignored symbols (exact match) 73 # (do not forget a space before and '$' after 82 # (do not forget a space before and '$' after each pattern) 74 83 75 # for LoongArch? 84 # for LoongArch? 76 / L0$/d 85 / L0$/d 77 86 78 # ppc 87 # ppc 79 / _SDA_BASE_$/d 88 / _SDA_BASE_$/d 80 / _SDA2_BASE_$/d 89 / _SDA2_BASE_$/d 81 90 82 # -------------------------------------------- 91 # --------------------------------------------------------------------------- 83 # Ignored patterns 92 # Ignored patterns 84 # (symbols that contain the pattern are ignor 93 # (symbols that contain the pattern are ignored) 85 94 86 # ppc stub 95 # ppc stub 87 /\.long_branch\./d 96 /\.long_branch\./d 88 /\.plt_branch\./d 97 /\.plt_branch\./d >> 98 >> 99 # --------------------------------------------------------------------------- >> 100 # Ignored kallsyms symbols >> 101 # >> 102 # If the 3rd parameter exists, symbols from it will be omitted from the output. >> 103 # This makes kallsyms have the identical symbol lists in the step 1 and 2. >> 104 # Without this, the step2 would get new symbols generated by scripts/kallsyms.c >> 105 # when CONFIG_KALLSYMS_ALL is enabled. That might require one more pass. >> 106 $(if [ $# -ge 3 ]; then ${NM} ${3} | sed -n '/ U /!s:.* \([^ ]*\)$:/ \1$/d:p'; fi) >> 107 "
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.