分类: C/C++
2010-02-15 19:11:06
| ELF 头 |
| .text |
| .rodata |
| .data |
| .bss |
| .symtab |
| .rel.text |
| .rel.data |
| .debug |
| .line |
| .strtab |
| 节头表 |
| 节 | 含义 |
| .text | 已编译程序的机器代码,函数等被编译之后所对应的机器代码存放在此处 |
| .rodata | 只读数据段,程序中的常量,及printf语句中的格式串和switch中的跳转表等只读数据 |
| .data | 已经初始化的全局变量,注意c中的局部变量只有在运行是才会在栈上分配空间,它既不在.data段,也不在.bss 段 |
| .bss | 未初始化的全局变量,他仅仅只是一个占位符,不占据实际的空间 |
| .symtab | 符号表,存放在程序中被定义和引用的函数和全局变量的信息 |
| .rel.text | .text节中需要进行重定位的单元的位置列表,当链接器把目标文件和其他文件相结合时,.text 节中的信息需要修改,这里包含了需要修改的信息 |
| .rel.data | .data 节中需要进行重定位的单元的位置列表,一般而言, 被模块定义和引用的全局变量和外部定义函数可能需要重定位 |
| .debug | 用于调试的调试符号表, gcc -g 才可能得到这张表 |
| .line | 原始的c程序的行号和.text机器指令之间的映射,gcc -g 才可能得到这张表 |
| .strtab | 一个字符串表,其中包括.systab和.debug 节中的符号表 |