码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下利用objdump查看文件空间地址分布

时间:2017-06-05 00:32:43      阅读:897      评论:0      收藏:0      [点我收藏+]

标签:链接   idt   技术分享   orm   利用   变量   img   bss   修改   

在linux中新建test.c文件,源代码如下:

1 #include<stdio.h>
2 int a=1;
3 int main()
4 {
5     printf("a is %d.",a);
6     return 0;
7 }

然后分别生成test.o和test文件

$ gcc -c test.c
$ gcc -o test test.c

 利用objdump命令分别查看test.o和test

技术分享

首先看test.o

file format elf64-x86-64:文件所在平台属性,这里是64位x86处理器平台

Sections:

Size: 段的大小,字节为单位

VMA: 段在虚拟地址中的位置

LMA:段在加载地址中的位置

File off: File offset,段的起始位置

Algn:字节对齐方式,2**2表示2的平方即为4,2**3表示2的3次方即为8

这里面重要的有

.text(代码段)

.data(数据段)

.bss

 

查看test文件的空间位置:

技术分享

技术分享

段的数量明显多于未链接文件test.o

 

 我们将test.c代码复制到test1.c文件,并稍加修改

 技术分享

可以看到,.text代码段和.data数据段大小都增加了,

.text代码段增大了9字节(22变为31)

.data数据段增加了一个int型4字节变量大小(源代码中int b=2,多了一个变量b)

注意.data的File off起始位置为00000074,而不是00000071,这是字节对齐而导致的

 

有个待解答问题:

为什么.text代码段和.data数据段以及其他段的字节对齐方式可以不一样呢?

 

Linux下利用objdump查看文件空间地址分布

标签:链接   idt   技术分享   orm   利用   变量   img   bss   修改   

原文地址:http://www.cnblogs.com/jrglinux/p/6942476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!