我的博客:www.saoguang.top
[TOC]
ELF二进制格式
- ELF文件对应windows系统的
PE
文件
ELF头
#define EI_NIDENT 16
typedef struct {
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
详细信息可以查询:http://refspecs.linuxbase.org/elf/elf.pdf
ELF文件类型
- 也就是
ELF头
中定义的e_type字段:
Name | Value | Meaning |
---|---|---|
ET_NONE | 0 | No file type(未知或者还未定义) |
ET_REL | 1 | Relocatable file(重定位文件) |
ET_EXEC | 2 | Executable file(可执行文件) |
ET_DYN | 3 | Shared object file(共享目标文件,即共享库) |
ET_CORE | 4 | Core file(核心文件) |
ET_LOPROC | 0xff00 | Processor-specific |
ET_HIPROC | 0xffff | Processor-specific |
Core file
: 在程序崩溃或者进程传递了一个SIGSEGV信号(分段违规)时,会在核心文件重记录整个进程的镜像信息。可以使用GDB读取这类文件来辅助调试并查找程序崩溃的原因。