readelf工具深入剖析(入门概念请参考其他文章)
2017-05-05 18:52
337 查看
编写程序:
int main()
{
printf("hello");
}
readelf -h main.o,显示elf文件头
strip main.o,用strip去掉hello.o中的符号信息,再次查看头部信息。
节头被删掉了两个
read -S main.o 查看节头信息,可知被删掉了.symtab(符号表) 和.strtab(字符串表)
修改程序为:
int a;
int b =1;
const char c[] = “hello”;
int main()
{
printf("hello");
}
.data 大小增加4(对应已经声明的全局变量,已经声明的静态变量),再调整为8字节的倍数
.bss增加4(对应未始化全局变量,静态变量或者初始化为0的全局变量),再调整为8字节对齐。.bss段是8字节对齐的,这在节信息里有说明。.text是16字节对齐的,而.rodata是4字节对齐的,.data是8字节对齐的。
.rodata大小先增加6(对应全局常量数据),再调整为8的倍数
顺序:
。bss
。data
。rodata
。text
readelf -s main.o查看符号表
type字段有OBJECT变量,FUNC函数,SECTION节
readelf -r main.o查看可重定位符号
int main()
{
printf("hello");
}
readelf -h main.o,显示elf文件头
strip main.o,用strip去掉hello.o中的符号信息,再次查看头部信息。
节头被删掉了两个
read -S main.o 查看节头信息,可知被删掉了.symtab(符号表) 和.strtab(字符串表)
修改程序为:
int a;
int b =1;
const char c[] = “hello”;
int main()
{
printf("hello");
}
.data 大小增加4(对应已经声明的全局变量,已经声明的静态变量),再调整为8字节的倍数
.bss增加4(对应未始化全局变量,静态变量或者初始化为0的全局变量),再调整为8字节对齐。.bss段是8字节对齐的,这在节信息里有说明。.text是16字节对齐的,而.rodata是4字节对齐的,.data是8字节对齐的。
.rodata大小先增加6(对应全局常量数据),再调整为8的倍数
顺序:
。bss
。data
。rodata
。text
readelf -s main.o查看符号表
type字段有OBJECT变量,FUNC函数,SECTION节
readelf -r main.o查看可重定位符号
相关文章推荐
- JAVA入门基础文章2-类的概念(继续深入点)
- 深入解析Windows操作系统(Windows Internals) 4th Edition 读书笔记 - 第一章 概念和工具(一)
- 深入剖析Spring Web源码(七) - DispatcherServlet的实现 - 根共享环境的加载/其他Servlet
- WPF入门系列教程(二) 深入剖析WPF Binding的使用方法(上)
- WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
- Oracle数据块原理深入剖析-入门基础
- flex系列文章:第一章. Flex概念和工具初步
- Java剖析工具JProfiler入门使用教程:离线剖析和触发器
- 入门 编程 内核 工具 其他[转]
- 自动构建工具Ant深入剖析(四) 使用CVS及自定义任务
- Java剖析工具JProfiler入门使用教程:与Eclipse 3.2 集成
- C语言自增自减运算符深入剖析(zz这文章太顶了)
- 【转】WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
- WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
- 我的Linux书架:入门 编程 内核 工具 其他
- WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
- [翻译]libevent参考手册第六章:bufferevent:概念和入门 (2011-04-30 19:26:17)
- 读书笔记 - 深入解析Windows操作系统 - C1. 概念和工具
- WPF入门系列教程(二) 深入剖析WPF Binding的使用方法
- Java剖析工具JProfiler入门使用教程:剖析模式