System.map文件简介

来源:互联网 发布:网店美工培训班 编辑:程序博客网 时间:2024/04/27 14:35

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)

?

未知符号