113 lines · 2.7 KB · Text
RawDownload
#!/bin/sh -x# Based on the vmlinux file create the System.map file# System.map is used by module-init tools and some debugging# tools to retrieve the actual addresses of symbols in the kernel.## Usage# mksysmap vmlinux System.map [exclude]  ###### Generate System.map (actual filename passed as second argument)# The following refers to the symbol type as per nm(1). # 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'.# ${NM} -n ${1} | sed >${2} -e "# ---------------------------------------------------------------------------# 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 # arm64 lld/ __AArch64ADRPThunk_/d # arm lld/ __ARMV5PILongThunk_/d/ __ARMV7PILongThunk_/d/ __ThumbV7PILongThunk_/d # mips lld/ __LA25Thunk_/d/ __microLA25Thunk_/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 # ---------------------------------------------------------------------------# Ignored kallsyms symbols## If the 3rd parameter exists, symbols from it will be omitted from the output.# This makes kallsyms have the identical symbol lists in the step 1 and 2.# Without this, the step2 would get new symbols generated by scripts/kallsyms.c# when CONFIG_KALLSYMS_ALL is enabled. That might require one more pass.$(if [ $# -ge 3 ]; then ${NM} ${3} | sed -n '/ U /!s:.* \([^ ]*\)$:/ \1$/d:p'; fi)"