X86 ELF或二进制文件中是否有特定ABI的签名?

X86 ELF或二进制文件中是否有特定ABI的签名?,x86,arm,elf,abi,X86,Arm,Elf,Abi,我需要确定用于生成一些二进制文件、程序、动态和静态库的ABI 我想问一下,是否有一个属性、一个标记或一个字符串,我可以用一些外部工具来检查,看看哪个ABI被用来创建那个二进制对象。我的对象主要是用于x86和ARM的ELF,我也包括用于调试目的的ABI,就像矮人对象一样 编辑:类似于文件开头的魔法字节,通常用于检测文件的文件格式。ELF文件中可能存在多个指示器 系统的EI_OSABI字段 用于标记,例如 FreeBSD在e_indent字段的保留部分使用“品牌”签名(从第8个字节开始) 对于ARM

我需要确定用于生成一些二进制文件、程序、动态和静态库的ABI

我想问一下,是否有一个属性、一个标记或一个字符串,我可以用一些外部工具来检查,看看哪个ABI被用来创建那个二进制对象。我的对象主要是用于x86和ARM的ELF,我也包括用于调试目的的ABI,就像矮人对象一样


编辑:类似于文件开头的魔法字节,通常用于检测文件的文件格式。

ELF文件中可能存在多个指示器

  • 系统的
    EI_OSABI
    字段
  • 用于标记,例如
  • FreeBSD
    e_indent
    字段的保留部分使用“品牌”签名(从第8个字节开始)
  • 对于ARM文件,在中还有
    EABI
    版本/变量信息,对象文件也可能有
    .ARM.attributes
    部分
  • .comment
    部分可能包含编译器名称/版本,但它只是信息性的-操作系统不使用它来标识ABI,通常不提及特定的ABI信息
  • .note
    部分可能包含指向正在使用的ABI的其他信息
  • 在大多数情况下,
    readelf
    将显示必要的信息,但您可能需要添加一些开关(例如,
    -A
    以显示
    .ARM.attributes
    部分)。我认为没有任何东西可以解析
    .note.ABI标记
    部分,因此您可能需要手动执行

    有关更多信息,请参阅SysV ABI和ARM EABI文档