linux系统怎么运行文件格式,UNIX与Linux操作系统下可执行文件格式解析

本文详细介绍了COFF文件格式,包括文件头部、可选头部、节头部及数据部分,强调了其相对于a.out格式的复杂性和灵活性。COFF支持多种节段,并允许操作系统定制可选头部。它在I386平台上的魔数为0x014c,且原始格式不支持动态连接。微软的PE格式和UNIX的XCOFF是COFF的扩展,分别用于解决动态连接和支持更多特性。
摘要由CSDN通过智能技术生成

COFF 文件格式分析  COFF 格式比 a.out 格式要复杂一些,最重要的是包含一个节段表(section table),因此除了 .text,.data,和 .bss 区段以外,还可以包含其它的区段。另外也多了一个可选的头部,不同的操作系统可一对此头部做特定的定义。

COFF 文件格式如下:File Header(文件头部)

Optional Header(可选文件头部)

Section 1 Header(节头部)

………

Section n Header(节头部)

Raw Data for Section 1(节数据)

Raw Data for Section n(节数据)

Relocation Info for Sect. 1(节重定位数据)

Relocation Info for Sect. n(节重定位数据)

Line Numbers for Sect. 1(节行号数据)

Line Numbers for Sect. n(节行号数据)

Symbol table(符号表)

String table(字符串表)

文件头部的数据结构:struct filehdr

{

unsigned short f_magic; /* 魔数 */

unsigned short f_nscns; /* 节个数 */

long f_timdat; /* 文件建立时间 */

long f_symptr; /* 符号表相对文件的偏移量 */

long f_nsyms; /* 符号表条目个数 */

unsigned short f_opthdr; /* 可选头部长度 */

unsigned short f_flags; /* 标志 */

};

COFF 文件头部中魔数与其它两种格式的意义不太一样,它是表示针对的机器类型,例如 0x014c 相对于 I386 平台,而 0x268 相对于 Motorola 68000系列等。当 COFF 文件为可执行文件时,字段 f_flags 的值为 F_EXEC(0X00002),同时也表示此文件没有未解析的符号,换句话说,也就是重定位在连接时就已经完成。由此也可以看出,原始的 COFF 格式不支持动态连接。为了解决这个问题以及增加一些新的特性,一些操作系统对 COFF 格式进行了扩展。Microsoft 设计了名为 PE(Portable Executable)的文件格式,主要扩展是在 COFF 文件头部之上增加了一些专用头部,具体细节请参阅参考资料 18,某些 UNIX 系统也对 COFF 格式进行了扩展,如 XCOFF(extended common object file format)格式,支持动态连接,请参阅参考资料 5。0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值