• ELF 文件格式


    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;

    表 2 e_ident[] 标识索引
    名称               取值        目的和值
    EI_MAG0         0           文件标识,0x7F
    EI_MAG1         1           文件标识,E
    EI_MAG2         2           文件标识,L
    EI_MAG3         3           文件标识,F
    EI_CLASS        4           文件类,0表示非法类别,ELFCLASSNONE;1表示32位,名称ELFCLASS32;2表示64位,名称ELFCLASS64
    EI_DATA          5           数据编码,0表示非法数据编码,ELFDATANONE;1表示小端,ELFDATA2LSB;2表示大端,ELFDATA2MSB
    EI_VERSION    6           文件版本,1表示当前版本
    EI_PAD            7           补齐字节开始处,标记 e_ident 中未使用字节的开始。初始化为 0
    EI_NIDENT      16         e_ident[]大小

    e_type 目标文件的格式,1表示可重定位文件、2表示可执行文件、3表示共享库文件

    e_machine:0=No machine、1=AT&T WE 32100、2=sparc、3=Intel 80386

    e_version:0=Invalid version、1=Current version

    e_entry 程序入口的虚拟地址。如果目标文件没有程序入口,可以为 0。

    e_phoff 程序头部表格(Program Header Table)的偏移量(按字节计算)。如果文件没有程序头部表格,可以为 0。

    e_shoff 节区头部表格(Section Header Table)的偏移量(按字节计算)。如果文件没有节区头部表格,可以为 0。

    e_flags 保存与文件相关的,特定于处理器的标志。标志名称采用 EF_machine_flag的格式。

    e_ehsize ELF 头部的大小(以字节计算)。

    e_phentsize 程序头部表格的表项大小(按字节计算)。

    e_phnum  程序头部表格的表项数目。可以为 0。

    e_shentsize 节区头部表格的表项大小(按字节计算)

    e_shnum 节区头部表格的表项数目。可以为 0。

    e_shstrndx 节区头部表格中与节区名称字符串表相关的表项的索引。如果文件没有节区名称字符串表,此参数可以为 SHN_UNDEF。

  • 相关阅读:
    3.2spring源码系列----循环依赖源码分析
    3.1 spring5源码系列--循环依赖 之 手写代码模拟spring循环依赖
    Jetson AGX Xavier ROS 调用usb单目摄像头运行ORB_SLAM2
    Jetson AGX Xavier ROS下调用USB单目摄像头
    SpringCloud-OpenFeign组件的使用
    SpringCloud-服务间通信方式
    SpringCloud-服务注册中心
    SpringCloud入门
    K8s—集群搭建
    Redis—过期策略以及内存淘汰机制
  • 原文地址:https://www.cnblogs.com/gaocan/p/5382785.html
Copyright © 2020-2023  润新知