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 43 # arm64 local symbols in PIE namespace 38 / __pi_\\$/d 44 / __pi_\\$/d 39 / __pi_\.L/d 45 / __pi_\.L/d 40 46 41 # arm64 local symbols in non-VHE KVM namespace 47 # arm64 local symbols in non-VHE KVM namespace 42 / __kvm_nvhe_\\$/d 48 / __kvm_nvhe_\\$/d 43 / __kvm_nvhe_\.L/d 49 / __kvm_nvhe_\.L/d 44 50 45 # lld arm/aarch64/mips thunks 51 # lld arm/aarch64/mips thunks 46 / __[[:alnum:]]*Thunk_/d 52 / __[[:alnum:]]*Thunk_/d 47 53 48 # CFI type identifiers 54 # CFI type identifiers 49 / __kcfi_typeid_/d 55 / __kcfi_typeid_/d 50 / __kvm_nvhe___kcfi_typeid_/d 56 / __kvm_nvhe___kcfi_typeid_/d 51 / __pi___kcfi_typeid_/d 57 / __pi___kcfi_typeid_/d 52 58 53 # CRC from modversions 59 # CRC from modversions 54 / __crc_/d 60 / __crc_/d 55 61 56 # EXPORT_SYMBOL (symbol name) 62 # EXPORT_SYMBOL (symbol name) 57 / __kstrtab_/d 63 / __kstrtab_/d 58 64 59 # EXPORT_SYMBOL (namespace) 65 # EXPORT_SYMBOL (namespace) 60 / __kstrtabns_/d 66 / __kstrtabns_/d 61 67 62 # -------------------------------------------- 68 # --------------------------------------------------------------------------- 63 # Ignored suffixes 69 # Ignored suffixes 64 # (do not forget '$' after each pattern) 70 # (do not forget '$' after each pattern) 65 71 66 # arm 72 # arm 67 /_from_arm$/d 73 /_from_arm$/d 68 /_from_thumb$/d 74 /_from_thumb$/d 69 /_veneer$/d 75 /_veneer$/d 70 76 71 # -------------------------------------------- 77 # --------------------------------------------------------------------------- 72 # Ignored symbols (exact match) 78 # Ignored symbols (exact match) 73 # (do not forget a space before and '$' after 79 # (do not forget a space before and '$' after each pattern) 74 80 75 # for LoongArch? 81 # for LoongArch? 76 / L0$/d 82 / L0$/d 77 83 78 # ppc 84 # ppc 79 / _SDA_BASE_$/d 85 / _SDA_BASE_$/d 80 / _SDA2_BASE_$/d 86 / _SDA2_BASE_$/d 81 87 82 # -------------------------------------------- 88 # --------------------------------------------------------------------------- 83 # Ignored patterns 89 # Ignored patterns 84 # (symbols that contain the pattern are ignor 90 # (symbols that contain the pattern are ignored) 85 91 86 # ppc stub 92 # ppc stub 87 /\.long_branch\./d 93 /\.long_branch\./d 88 /\.plt_branch\./d 94 /\.plt_branch\./d >> 95 >> 96 # --------------------------------------------------------------------------- >> 97 # Ignored kallsyms symbols >> 98 # >> 99 # If the 3rd parameter exists, symbols from it will be omitted from the output. >> 100 # This makes kallsyms have the identical symbol lists in the step 1 and 2. >> 101 # Without this, the step2 would get new symbols generated by scripts/kallsyms.c >> 102 # when CONFIG_KALLSYMS_ALL is enabled. That might require one more pass. >> 103 $(if [ $# -ge 3 ]; then ${NM} ${3} | sed -n '/ U /!s:.* \([^ ]*\)$:/ \1$/d:p'; fi) >> 104 "
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.