免费注册 查看新帖 |

Chinaunix

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

求 X86 Linux gcc ABI 的详细文档 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-06 20:57 |只看该作者 |倒序浏览
我需要看懂 X86 Linux 可执行文件(ELF文件)的二进制内容。
请问需要寻找什么资料?**?
是不是需要 X86 Linux gcc ABI 的详细文档?怎么得到?
还需要别的什么资料?
跪求。
谢谢。

论坛徽章:
0
2 [报告]
发表于 2012-05-06 22:07 |只看该作者
贴子中忘了说了,我的 X86 Linux 是 Redhat Enterprise, 并且有两个不同的version的server。
具体说,就是通过以下指令看的version,
cat  /etc/redhat-release
有的server是4.6,有的server是5.3。

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
3 [报告]
发表于 2012-05-07 11:12 |只看该作者
google一下 x86 ABI

论坛徽章:
0
4 [报告]
发表于 2012-05-07 22:10 |只看该作者
我们的serever有些是这个版本:
        Red Hat Enterprise Linux AS release 4 (Nahant Update 6)
        gcc version 3.4.6 20060404 (Red Hat 3.4.6-9)
另一些是这个版本:
        Red Hat Enterprise Linux Server release 5.3 (Tikanga)
        gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)

我有一个C程序。如果我在4.6版server上编译,它可以在5.3版server上正确运行。
但是如果我在5.3版server上编译,它在4.6版server上就无法运行,只给出一下提示:
        Floating exception
我查看了两个可执行文件,发现里面都包含GLIBC_2.2.5。

我需要在二进制的级别理解为什么在高版本Linux编译出的程序在低版本Linux中不能运行。于是我从gnu.org下载了以下文件:
        System V Application Binary Interface
        AMD64 Architecture Processor Supplement
        Draft Version   0.99.5
        Edited by       Michael Matz, Jan Hubiˇcka, Andreas Jaeger, Mark Mitchell
        September 3, 2010

但是这是个很大的文件,有128页,而且我没有理解ELF文件二进制码的经验。我不知道这是不是我所需要的正确的文件。

大家可以不可以给我建议?
1. 短期内,请问,尽管它们都拥有GLIBC_2.2.5,为什么在Linux5.3编译出的程序在Linux4.6中不能运行?
2. 从长远看,我学习并掌握ELF文件二进制格式的正确途径是什么?我需要那些资料来学习这个领域?

谢谢。

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
5 [报告]
发表于 2012-05-08 14:52 |只看该作者
浮点异常错误,先查查出错的位置,看看是不是应用程序本身的错误。

可以通过readelf和objdump命令帮助了解ELF文件格式。

论坛徽章:
0
6 [报告]
发表于 2012-05-08 20:59 |只看该作者
谢谢。我用readelf开始研究了一下ELF文件的格式,但是还没开始用objdump,接下来会用。

论坛徽章:
0
7 [报告]
发表于 2012-05-11 10:52 |只看该作者
gcc 每个版本都比上一个版本对语法的要求更严格。Linux 每个版本都是向下兼容的。硬件架构可能有32位到64位的跨越,尤其是浮点计算,64位体系结构的指令集和32位有较大不同,有了很多扩展。二进制接口中涉及到指令集的部分可能因为指令集的升级出现冲突。建议仔细阅读相关文档。

论坛徽章:
0
8 [报告]
发表于 2012-12-17 10:59 |只看该作者
很遗憾地告诉你,Linux的二进制兼容性很差。

所以,你就用老版本的编译器去编译吧。。。。。。。。。。


论坛徽章:
0
9 [报告]
发表于 2012-12-17 12:52 |只看该作者
看看ELF File Format Specification吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP