Linux Audio

Check our new training course

Loading...
v6.9.4
  1#!/bin/sh -x
  2# Based on the vmlinux file create the System.map file
  3# System.map is used by module-init tools and some debugging
  4# tools to retrieve the actual addresses of symbols in the kernel.
  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
 14# readprofile starts reading symbols when _stext is found, and
 15# continue until it finds a symbol which is not either of 'T', 't',
 16# 'W' or 'w'.
 17#
 
 18
 19${NM} -n ${1} | sed >${2} -e "
 20# ---------------------------------------------------------------------------
 21# Ignored symbol types
 22#
 23
 24# a: local absolute symbols
 25# N: debugging symbols
 26# U: undefined global symbols
 27# w: local weak symbols
 28/ [aNUw] /d
 29
 30# ---------------------------------------------------------------------------
 31# Ignored prefixes
 32#  (do not forget a space before each pattern)
 33
 34# local symbols for ARM, MIPS, etc.
 35/ \\$/d
 36
 37# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
 38/ \.L/d
 39
 40# arm64 EFI stub namespace
 41/ __efistub_/d
 42
 43# arm64 local symbols in PIE namespace
 44/ __pi_\\$/d
 45/ __pi_\.L/d
 46
 47# arm64 local symbols in non-VHE KVM namespace
 48/ __kvm_nvhe_\\$/d
 49/ __kvm_nvhe_\.L/d
 50
 51# lld arm/aarch64/mips thunks
 52/ __[[:alnum:]]*Thunk_/d
 53
 54# CFI type identifiers
 55/ __kcfi_typeid_/d
 56/ __kvm_nvhe___kcfi_typeid_/d
 57/ __pi___kcfi_typeid_/d
 58
 59# CRC from modversions
 60/ __crc_/d
 61
 62# EXPORT_SYMBOL (symbol name)
 63/ __kstrtab_/d
 64
 65# EXPORT_SYMBOL (namespace)
 66/ __kstrtabns_/d
 67
 68# ---------------------------------------------------------------------------
 69# Ignored suffixes
 70#  (do not forget '$' after each pattern)
 71
 72# arm
 73/_from_arm$/d
 74/_from_thumb$/d
 75/_veneer$/d
 76
 77# ---------------------------------------------------------------------------
 78# Ignored symbols (exact match)
 79#  (do not forget a space before and '$' after each pattern)
 80
 81# for LoongArch?
 82/ L0$/d
 83
 84# ppc
 85/ _SDA_BASE_$/d
 86/ _SDA2_BASE_$/d
 87
 88# ---------------------------------------------------------------------------
 89# Ignored patterns
 90#  (symbols that contain the pattern are ignored)
 91
 92# ppc stub
 93/\.long_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"
v5.9
 1#!/bin/sh -x
 2# Based on the vmlinux file create the System.map file
 3# System.map is used by module-init tools and some debugging
 4# tools to retrieve the actual addresses of symbols in the kernel.
 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
38# readprofile starts reading symbols when _stext is found, and
39# continue until it finds a symbol which is not either of 'T', 't',
40# 'W' or 'w'. __crc_ are 'A' and placed in the middle
41# so we just ignore them to let readprofile continue to work.
42# (At least sparc64 has __crc_ in the middle).
43
44$NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)\|\( \.L\)' > $2