免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1990 | 回复: 0
打印 上一主题 下一主题

system.map分析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-22 15:36 |只看该作者 |倒序浏览
System.map是一个特定内核的内核符号表。
内核符号映射表,顾名思义就是将内核中的符号(也就是内核中的函数)和它的地址能联系起来的一个列表。是所有符号及其对应地址的一个列表。之所以这样就使为了用户编程方便,直接使用函数符号就可以了,而不用去记要使用函数的地址。
它是你当前运行的内核的System.map的链接。
  内核符号表是怎么创建的呢? System.map是由“nm vmlinux”产生并且不相关的符号被滤出。
system.map的格式如下:
c001b5c8 t meminfo
c001b62c t cachepolicy
c001b630 t ecc_mask
c001b634 t cache_policies

其中每行说明一个符号,第1栏指明符号值(地址);第2栏是符号类型,指明符号位于目标文件的哪个区(sections)或其属性;第3栏是对应的符号名称。
第2栏中的符号类型指示符通常有表1-1所示的几种,另外还有一些与采用的目标文件格式相关。如果符号类型是小写字符,则说明符号是局部的;如果是大写字符,则说明符号是全局的(外部的)。参见文件include/a.out.h中nlist{}结构n_type字段的定义(第110~185行)。
表1-1  目标文件符号列表文件中的符号类型
符号类型
名称
说明
A
Absolute
符号的值是绝对值,并且在进一步链接过程中不会被改变
B
BSS
符号在未初始化数据区或区(section)中,即在BSS段中
C
Common
符号是公共的。公共符号是未初始化的数据。在链接时,多个公共符号可能具有同一名称。如果该符号定义在其他地方,则公共符号被看作是未定义的引用
D
Data
符号在已初始化数据区中
G
Global
符号是在小对象已初始化数据区中的符号。某些目标文件的格式允许对小数据对象(例如一个全局整型变量)可进行更有效的访问
I
Inderect
符号是对另一个符号的间接引用
N
Debugging
符号是一个调试符号
R
Read only
符号在一个只读数据区中
S
Small
符号是小对象未初始化数据区中的符号
T
Text
符号是代码区中的符号
U
Undefined
符号是外部的,并且其值为0(未定义)
-
Stabs
符号是a.out目标文件中的一个stab符号,用于保存调试信息
?
Unknown
符号的类型未知,或者与具体文件格式有关
system.map的作用可以参考
http://www.maycode.com/index.php/linux/34-linuxbase/1269-kernerl.html
  (
System.map文件的作用


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104304/showart_2183909.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP