system.map symbol
时间: 2023-11-20 12:26:39 浏览: 149
A system.map symbol is a symbol table that provides information about the kernel's symbols and their corresponding memory addresses. It is typically generated during the compilation of the Linux kernel and contains information about the functions, variables, and other symbols that are defined in the kernel code. This symbol table is used by various tools and utilities, such as the kernel debugger, to map the kernel's symbols to their corresponding memory locations. The system.map file is located in the root directory of the kernel source code and is updated each time the kernel is compiled.
相关问题
Linux的system.map的symbol
Linux的system.map文件包含了内核中所有可用符号的地址列表,包括函数、变量和存储区域等等。这个文件通常由内核编译时生成,用于调试和性能分析。以下是一些常见的符号:
- 函数符号:以函数名开头,后跟其地址。例如, "do_fork" : ffffffff8112e500 表示 do_fork 函数的地址为 0xffffffff8112e500。
- 变量符号:以变量名开头,后跟其地址。例如, "sys_call_table" : ffffffff81a002c0 表示 sys_call_table 变量的地址为 0xffffffff81a002c0。
- 存储区域符号:以存储区域名开头,后跟其地址和大小。例如, "__initdata_begin" : ffffffff81100000 __initdata_end - __initdata_begin 表示 __initdata 区域的起始地址为 0xffffffff81100000,大小为 __initdata_end - __initdata_begin。
除了这些常见符号之外,system.map文件还可以包含其他类型的符号,如重定位符号、动态符号等等。
Linux的system.map的symbol类型介绍
Linux的system.map文件记录了系统内核的符号表,其中包含了所有已编译的内核函数、变量和其他符号的地址信息。这些符号被分成不同的类型,每个类型表示它所代表的符号的特定属性。
以下是一些常见的Linux系统内核符号类型:
1. t:文本段符号,表示该符号是一个函数。这些函数可以被调用。
2. d:数据段符号,表示该符号是一个全局变量。
3. r:只读数据段符号,表示该符号是一个只读的全局变量。
4. a:绝对符号,表示该符号的地址不会改变。这些符号通常用于跨模块调用。
5. B:未初始化数据段符号,表示该符号是一个静态未初始化的全局变量。
6. T:文本段符号,表示该符号是一个全局函数。
7. G:全局符号,表示该符号可被其他模块访问。
8. U:未定义符号,表示该符号在当前模块中未定义,但在其他模块中定义。
9. w:弱符号,表示该符号可被覆盖。
10. v:向量符号,表示该符号是一个向量表的入口。
这些符号类型的定义和使用可以帮助开发人员更好地理解内核中的各个部分,从而更好地进行内核调试和开发。
阅读全文