X86 ELF或二进制文件中是否有特定ABI的签名?
我需要确定用于生成一些二进制文件、程序、动态和静态库的ABI 我想问一下,是否有一个属性、一个标记或一个字符串,我可以用一些外部工具来检查,看看哪个ABI被用来创建那个二进制对象。我的对象主要是用于x86和ARM的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
编辑:类似于文件开头的魔法字节,通常用于检测文件的文件格式。ELF文件中可能存在多个指示器
EI_OSABI
字段FreeBSD
在e_indent
字段的保留部分使用“品牌”签名(从第8个字节开始)EABI
版本/变量信息,对象文件也可能有.ARM.attributes
部分.comment
部分可能包含编译器名称/版本,但它只是信息性的-操作系统不使用它来标识ABI,通常不提及特定的ABI信息.note
部分可能包含指向正在使用的ABI的其他信息readelf
将显示必要的信息,但您可能需要添加一些开关(例如,-A
以显示.ARM.attributes
部分)。我认为没有任何东西可以解析.note.ABI标记
部分,因此您可能需要手动执行
有关更多信息,请参阅SysV ABI和ARM EABI文档