[原]elf可执行连接文件格式

execuable and linking format
头文件定义了可执行二进制文件格式.在这些文件是正常执行文件, 重定向目标文件, 内核文件, 和共享库.

一个可执行文件使用elf格式,包括elf头, 接着是程序头表, 或者区域头表, 或者两者都有. elf头总是偏移为0. 程序头表和区域头表偏移定义在头中. 两个表描述了余下文件的特征.

头文件描述了以上提到的头以c结构的形式, 同时包括了动态区域的结构, 重定向区域的结构, 和符号表.

一下类型用于n位的机器:
ElfN_Addr  无符号程序地址
ElfN_Off 无符号文件偏移
ElfN_Section  无符号区域索引
ElfN_Versym  无符号版本符号信息
ElfN_byte  无符号字符
ElfN_Half  16无符号整数
ElfN_Sword  32为有符号整数
ElfN_Word   32为无符号整数
ElfN_Sxword 64位有符号整数
ElfN_Xword 64为无符号整数

文件格式定义的所有的数据结构都接着natural大小, 和对齐指导对相关的类. 如果有必要, 数据结构包含显式的填充, 以满足4字节对齐, 强制结构的大小为4倍数.

elf头描述被类型Elf32_Ehdr 和 Elf64_Ehdr
#define EI_NIDENT 16
typedef struct {
 unsigned char e_idnet[EI_NIDENT];
 uint16_t  e_type;
uint16_t e_machine;
uint32_t e_version;
ElfN_addr  e_entry ;
elfN_Off  e_phoff;
ElfN_off  e_shoff;

}


作者:liyonghelpme 发表于2010/6/10 15:35:00 原文链接
阅读:280 评论:0 查看评论
posted @ 2010-06-10 15:35  liyonghelpme  阅读(163)  评论(0编辑  收藏  举报