ELF文件学习 .bss
来源:互联网 发布:windows errorcode 2 编辑:程序博客网 时间:2024/06/07 18:48
参考
ELF格式与bss段
LINUX下目标文件的BSS段、数据段、代码段
ELF
ELF(Executable Linkable Format)是Linux系统下的一种可执行可链接文件的格式,是COFF格式的变种。在Linux系统中包括了可重定位文件(.o文件),可执行文件(/bin/bash文件),共享目标文件(.so)和核心转储文件(core dump)。
ELF文件头(ELF Header):位于ELF文件的头部,包含了描述整个文件的基本属性。
代码段(.text):用于存放程序代码,只读属性
数据段(.data):用于存放程序中经初始化的全局变量和静态局部变量,读写属性
bss段(.bss)(Block Started by Symbol):用于存放程序中未经初始化的全局变量和静态局部变量。在目标文件中,这个段并不占据实际空间,它仅仅只是一个占位符。
实验
// test1.cint a = 1;static int b = 4;int c;static int d;char *s1 = "1234";int main(){ int e = 2; char *s2 = "3456"; return 0;}
编译文件
gcc test1.c -o test1.o
查看编译后文件的信息
objdump -sx test1.o
摘取相关信息如下:
Sections:Idx Name Size VMA LMA File off Algn 14 .rodata 0000000e 0000000000400550 0000000000400550 00000550 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 23 .data 00000020 00000000006008a8 00000000006008a8 000008a8 2**3 CONTENTS, ALLOC, LOAD, DATA 24 .bss 00000010 00000000006008c8 00000000006008c8 000008c8 2**2 ALLOC
Sections展示了不同的段的大小。
SYMBOL TABLE:00000000006008bc l O .data 0000000000000004 b00000000006008cc l O .bss 0000000000000004 d00000000006008c0 g O .data 0000000000000008 s100000000006008d0 g O .bss 0000000000000004 c00000000006008b8 g O .data 0000000000000004 a
SYMBOL TABLE展示了不同的变量是存在哪的。这里就可以看到
data段有:
- 初始化了的全局变量a
- 初始化了的静态变量b
- 常量字符串s1
而bss段有:
- 未初始化的全局变量c
- 未初始化的静态变量d
Contents of section .rodata: 400550 01000200 31323334 00333435 3600 ....1234.3456. Contents of section .data: 6008a8 00000000 00000000 00000000 00000000 ................ 6008b8 01000000 04000000 54054000 00000000 ........T.@.....
可以看到rodata段中有我们定义的1234和3456
而data段里有1和4(小端)分别对应a和b
还可以读取elf文件,命令是readelf
0 0
- ELF文件学习 .bss
- elf中的bss data
- linux ELF文件学习
- Linux ELF文件学习
- ELF头文件学习
- Linux ELF文件学习
- ELF文件学习
- ELF格式与bss段
- ELF格式与bss段
- Linux ELF文件学习(1)
- Linux ELF文件学习(1)
- Linux ELF文件学习(1)
- ELF文件
- ELF文件
- ELF文件
- ELF文件
- ELF文件
- ELF文件
- Poj 2135 Farm Tour【Min_Cost_Max_flow】
- document.write的广告无阻塞的加载
- 使用UniversalImagloader加载和缓存图片
- Infinidb锁表处理
- Presto实现原理和美团的使用实践
- ELF文件学习 .bss
- Dagger2/ButterKnife 冲突
- IMX6的相关音频结构体的定义
- 经纬度距离换算
- Java的动态代理机制和Spring的实现方式
- JsonObject JsonArray
- 七种回归分析
- 二叉树的三种非递归遍历
- 如何确定Linux系统版本