xref: /linux-6.15/scripts/mksysmap (revision e9f76363)
11da177e4SLinus Torvalds#!/bin/sh -x
21da177e4SLinus Torvalds# Based on the vmlinux file create the System.map file
31da177e4SLinus Torvalds# System.map is used by module-init tools and some debugging
4943ffb58SAdrian Bunk# tools to retrieve the actual addresses of symbols in the kernel.
51da177e4SLinus Torvalds#
61da177e4SLinus Torvalds# Usage
71da177e4SLinus Torvalds# mksysmap vmlinux System.map
81da177e4SLinus Torvalds
91da177e4SLinus Torvalds
101da177e4SLinus Torvalds#####
111da177e4SLinus Torvalds# Generate System.map (actual filename passed as second argument)
12*e9f76363SMasahiro Yamada# The following refers to the symbol type as per nm(1).
131da177e4SLinus Torvalds
141da177e4SLinus Torvalds# For System.map filter away:
151da177e4SLinus Torvalds#   a - local absolute symbols
161da177e4SLinus Torvalds#   U - undefined global symbols
17aab34ac8SSam Ravnborg#   N - debugging symbols
181da177e4SLinus Torvalds#   w - local weak symbols
191da177e4SLinus Torvalds
201da177e4SLinus Torvalds# readprofile starts reading symbols when _stext is found, and
211da177e4SLinus Torvalds# continue until it finds a symbol which is not either of 'T', 't',
22c1346169SMasahiro Yamada# 'W' or 'w'.
23c1346169SMasahiro Yamada#
24c1346169SMasahiro Yamada# Ignored prefixes:
25a2833d1bSMasahiro Yamada#  $                    - local symbols for ARM, MIPS, etc.
26a2833d1bSMasahiro Yamada#  .L                   - local labels, .LBB,.Ltmpxxx,.L__unnamed_xx,.LASANPC, etc.
27c1346169SMasahiro Yamada#  __crc_               - modversions
28d32b55f4SMasahiro Yamada#  __kstrtab_           - EXPORT_SYMBOL (symbol name)
29d32b55f4SMasahiro Yamada#  __kstrtabns_         - EXPORT_SYMBOL (namespace)
30a2833d1bSMasahiro Yamada#
31a2833d1bSMasahiro Yamada# Ignored symbols:
32a2833d1bSMasahiro Yamada#  L0                   - for LoongArch?
33a2833d1bSMasahiro Yamada
34a2833d1bSMasahiro Yamada$NM -n $1 | grep -v		\
35a2833d1bSMasahiro Yamada	-e ' [aNUw] '		\
36a2833d1bSMasahiro Yamada	-e ' \$'		\
37a2833d1bSMasahiro Yamada	-e ' \.L'		\
38a2833d1bSMasahiro Yamada	-e ' __crc_'		\
39d32b55f4SMasahiro Yamada	-e ' __kstrtab_'	\
40d32b55f4SMasahiro Yamada	-e ' __kstrtabns_'	\
41a2833d1bSMasahiro Yamada	-e ' L0$'		\
42a2833d1bSMasahiro Yamada> $2
43