【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(二)
ELF文件格式内部结构详解(二)
文章目录
- ELF文件格式内部结构详解(二)
- 6、ELF文件头
- 6.1 ELF 文件头信息字段
- 6.2 目标平台字段
- 6.3 入口点字段
- 6.4 表位置字段
- 7、ELF程序头
- 7.1 PHDR 程序头
- 7.2 INTERP 程序头
- 7.3 LOAD 程序头文件
- 7.4 动态程序头
- 7.5 NOTE 程序头
- 7.6 TLS 程序头
- 7.7 GNU_EH_FRAME 程序头
- 7.8 GNU_STACK 程序头
- 7.9 GNU_RELRO 程序头
- 8、ELF Section头信息
- 9、ELF 元节(Meta-Sections)
- 9.1 字符串表部分
- 9.2 符号表部分
- 10、ELF 的主要部分
- 10.1 .text 部分
- 10.2 .data 部分
- 10.3 .bss 部分
- 10.4 .rodata 部分
- 10.5 .tdata 和 .tbss 部分
- 11、符号
- 11.1 全局符号与局部符号
- 11.2 弱符号
- 11.3 符号版本
- 11.4 映射符号
编译和链接过程的最终输出是一个可执行和可链接格式 (ELF) 文件,其中包含操作系统和加载器加载和运行程序所需的所有信息。从最抽象的层面来看,ELF 文件可以被认为是一组描述程序及其运行方式的表。在 ELF 格式中,存在三种类型的表:位于文件开头的 ELF 文件头、程序头、描述如何将 ELF 程序加载到内存中的节头,以及 ELF 文件中指示加载器如何准备执行的逻辑节。
6、ELF文件头
ELF 文件的开头是 ELF 文件头。ELF 文件头描述了程序的全局属性,例如程序设计运行的架构、程序入口点以及指向文件中其他表的指针和大小。
给定一个 ELF 文件,例如我们之前在“汇编和链接”部分中汇编和链接的 print32.so 和 print64.so 程序,我们可以使用 readelf 之类的程序查看这些属性和节。可以使用 readelf 的 -h 参数查看 ELF 文件头,如下所示: