xref: /linux-6.15/scripts/mksysmap (revision e9f76363)
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# The following refers to the symbol type as per nm(1).
13
14# For System.map filter away:
15#   a - local absolute symbols
16#   U - undefined global symbols
17#   N - debugging symbols
18#   w - local weak symbols
19
20# readprofile starts reading symbols when _stext is found, and
21# continue until it finds a symbol which is not either of 'T', 't',
22# 'W' or 'w'.
23#
24# Ignored prefixes:
25#  $                    - local symbols for ARM, MIPS, etc.
26#  .L                   - local labels, .LBB,.Ltmpxxx,.L__unnamed_xx,.LASANPC, etc.
27#  __crc_               - modversions
28#  __kstrtab_           - EXPORT_SYMBOL (symbol name)
29#  __kstrtabns_         - EXPORT_SYMBOL (namespace)
30#
31# Ignored symbols:
32#  L0                   - for LoongArch?
33
34$NM -n $1 | grep -v		\
35	-e ' [aNUw] '		\
36	-e ' \$'		\
37	-e ' \.L'		\
38	-e ' __crc_'		\
39	-e ' __kstrtab_'	\
40	-e ' __kstrtabns_'	\
41	-e ' L0$'		\
42> $2
43