xref: /linux-6.15/scripts/mksysmap (revision c4802044)
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)
12e9f76363SMasahiro Yamada# The following refers to the symbol type as per nm(1).
131da177e4SLinus Torvalds
141da177e4SLinus Torvalds# readprofile starts reading symbols when _stext is found, and
151da177e4SLinus Torvalds# continue until it finds a symbol which is not either of 'T', 't',
16c1346169SMasahiro Yamada# 'W' or 'w'.
17c1346169SMasahiro Yamada#
18a2833d1bSMasahiro Yamada
19*c4802044SMasahiro Yamada${NM} -n ${1} | sed >${2} -e "
20*c4802044SMasahiro Yamada# ---------------------------------------------------------------------------
21*c4802044SMasahiro Yamada# Ignored symbol types
22*c4802044SMasahiro Yamada#
23*c4802044SMasahiro Yamada
24*c4802044SMasahiro Yamada# a: local absolute symbols
25*c4802044SMasahiro Yamada# N: debugging symbols
26*c4802044SMasahiro Yamada# U: undefined global symbols
27*c4802044SMasahiro Yamada# w: local weak symbols
28*c4802044SMasahiro Yamada/ [aNUw] /d
29*c4802044SMasahiro Yamada
30*c4802044SMasahiro Yamada# ---------------------------------------------------------------------------
31*c4802044SMasahiro Yamada# Ignored prefixes
32*c4802044SMasahiro Yamada#  (do not forget a space before each pattern)
33*c4802044SMasahiro Yamada
34*c4802044SMasahiro Yamada# local symbols for ARM, MIPS, etc.
35*c4802044SMasahiro Yamada/ \$/d
36*c4802044SMasahiro Yamada
37*c4802044SMasahiro Yamada# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
38*c4802044SMasahiro Yamada/ \.L/d
39*c4802044SMasahiro Yamada
40*c4802044SMasahiro Yamada# CRC from modversions
41*c4802044SMasahiro Yamada/ __crc_/d
42*c4802044SMasahiro Yamada
43*c4802044SMasahiro Yamada# EXPORT_SYMBOL (symbol name)
44*c4802044SMasahiro Yamada/ __kstrtab_/d
45*c4802044SMasahiro Yamada
46*c4802044SMasahiro Yamada# EXPORT_SYMBOL (namespace)
47*c4802044SMasahiro Yamada/ __kstrtabns_/d
48*c4802044SMasahiro Yamada
49*c4802044SMasahiro Yamada# ---------------------------------------------------------------------------
50*c4802044SMasahiro Yamada# Ignored symbols (exact match)
51*c4802044SMasahiro Yamada#  (do not forget a space before and '$' after each pattern)
52*c4802044SMasahiro Yamada
53*c4802044SMasahiro Yamada# for LoongArch?
54*c4802044SMasahiro Yamada/ L0$/d
55*c4802044SMasahiro Yamada"
56