System.map文件简介

本文详细介绍了内核使用的符号表System.map的功能、组成部分及其类型定义,帮助开发者在调试过程中有效利用System.map文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

System.map文件简介

秦白衣

Arethe Qin

arethe.kernel@gmail.com

 

         System.map是内核使用的符号表,关联了符号的名称以及它们在内存中的地址。符号名称是指内核中变量或函数的名字。当我们需要根据符号名称查找其地址,或者查找某个地址上的符号名称时,就需要用到System.map了。特别是在调试kernel panics与kernel oopses时,System.map非常有用。

下面是System.map文件中的部分内容:

0000040c AVDSO32_rt_sigreturn

00000414 AVDSO32_vsyscall

00000424 AVDSO32_SYSENTER_RETURN

00400000 A phys_startup_32

c0400000 T _text

c0400000 T startup_32

c0400054 tdefault_entry

c0401000 T _stext

c040100a Tdo_one_initcall

c0401160 trun_init_process

c040117e t init_post

c0401258 Tname_to_dev_t

c0401428 t create_dev

c040146b ttrace_kmalloc.clone.0

c04014b8 tcreate_dev.clone.0

c04014e0 t create_dev

         每次编译内核时符号的地址均不同,因而编译内核的同时都会生成一个相应的System.map文件。在System.map文件中,地址与符号之间的字母代表符号的类型。这里的类型定义与nm中类型的定义是一样的。下面我们便罗列出这些类型。

A

绝对

B或b

未初始化的数据段(BSS)

D或d

初始化的数据段

G或g

小对象的初始化数据段(全局的)

i

DLL相关的段

N

调试用符号

p

堆栈的展开段(stack unwind section)

R或r

只读数据段

S或s

小对象的未初始化数据段

T或t

代码段

U

未定义

V或v

弱对象(weak object)

W或w

没有标签的弱对象(weak object)

-

a.out目标文件中的桩符号(stabs symbol)

?

未知符号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值