在移植uboot时出现uboot运行循环打印raise:signal #8 caught的现象。
追踪发现打印来自于arch/arm/lib/eabi_compat.c中的raise函数,何处调用的raise函数还没查到,但是查看Makefile发现
# For EABI conformant tool chains, provide eabi_compat()
ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS)))
extra-y += eabi_compat.o
endif
意思是对于支持eabi的工具链则需要编译eabi_compat.c
百度eabi,百度百科中的解释如下:
应用程序二进制接口(application binary interface,ABI) 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低层接口。ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。
ABI掩盖了各种细节,例如:调用约定(控制着函数的参数如何传送以及如何接受返回值);系统调用的编码和一个应用如何向操作系统进行系统调用;以及在一个完整的操作系统ABI中,对象文件的二进制格式、程序库等等。一个完整的ABI,像Intel二进制兼容标准 (iBCS) ,允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作体统上运行。其他的 ABI 标准化细节包括 C++ name decoration 和同一个平台上的编译器之间的调用约定,但是不包括跨平台的兼容性。
在搜索搜出来的一些说法如下:
EABI(Embedded Application Binary Interface),嵌入式应用程序二进制接口。
ABI的定义
ABI描述应用程序与操作系统、应用程序与库、应用程序的组成部分之间的低层接口。ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。
EABI的具体定义
Codesourcery上有一个这样的QA:
https://support.codesourcery.com/GNUToolchain/kbentry32
Question
What is the ABI for the ARM Architecture? Is it the same as the ARM EABI?
Answer
The ABI for the ARM Architecture is a standard developed by ARM and its partners that explains how compilers, assemblers, linkers, and other similar tools should generate object files and executable files.
Tools that correctly implement the ABI for the ARM Architecture can interoperate; i.e., o

本文介绍了在移植过程中遇到的关于ARM EABI的问题,详细解析了EABI(Embedded Application Binary Interface)的定义、作用及其相对于旧ABI的改进。EABI是一组标准,确保不同编译器生成的二进制文件可以互相兼容,促进编译器、链接器等工具间的交互操作。ARM EABI包含多个规范,如AAPCS、EHABI等,旨在提高性能和兼容性。
最低0.47元/天 解锁文章
779

被折叠的 条评论
为什么被折叠?



