免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1560 | 回复: 5
打印 上一主题 下一主题

[实践] x86的应用程序在linux下编译出来的地址问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-27 18:38 |只看该作者 |倒序浏览
[liud@fedora14 bin]$ objdump -h bash

bash:     file format elf32-i386

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .interp       00000013  08047134  08047134  00000134  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA

为什么这个vma addr是0x08047134呢?而不是0x00000000。linux user space地址不是从0x00000000开始的吗?

论坛徽章:
0
2 [报告]
发表于 2012-11-27 18:39 |只看该作者
然后回到arm,arm上的地址是另外一个,这是为什么?
[liud@fedora14 Study]$ armv7-linux-objdump -h hello.out

hello.out:     file format elf32-littlearm

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .interp       00000013  00008134  00008134  00000134  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
...

论坛徽章:
0
3 [报告]
发表于 2012-11-28 00:01 |只看该作者
  看一下连接器,应该是这个的原因

论坛徽章:
0
4 [报告]
发表于 2012-11-28 09:21 |只看该作者
不一样因为编译器、以及平台相关。
至于不同平台ELF地址为什么不一样,以及不一样有什么好处,没研究过。
那个不从0地址开始放code,0地址刚好可以用来当NULL判断,比如malloc之类;类似于内核空间最高的1页不用一样,可以用来表示-1 至 -4095错误码。

论坛徽章:
0
5 [报告]
发表于 2012-11-28 09:51 |只看该作者
看一下ld配置文件,地址是由这个文件决定的

论坛徽章:
0
6 [报告]
发表于 2012-11-28 10:11 |只看该作者
如楼上各位所说,这个东西,链接器的脚本里面指定的。你不指定,应该就是用默认的。
起始地址,应该还要考虑栈的地址,堆的起始地址之类的,协调一下吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP