Target triplets
Adhemerval Zanella
adhemerval.zanella@linaro.org
Fri Jan 11 13:20:00 GMT 2019
On 11/01/2019 10:40, Adhemerval Zanella wrote:
>
>
> On 11/01/2019 09:59, Christer Solskogen wrote:
>> On 11.01.2019 12:13, Florian Weimer wrote:
>>
>>> I'm not aware of anyone building a distribution, but I don't follow
>>> (32-bit) Arm developments.
>>>
>>
>> I was thinking more in the direction that it is not mentioned in the README file. binutils support it, but not gcc.
>
> The arm-linux-gnu is usually referenced as 'old' arm ABI and it differs
> on some points from new embedded ABI. AFAIK the main points are:
>
> 1. OABI assumes underlying machine supports floating point support.
> It means that if the hardware does not have floating-point support
> (quite common on old ARM chips), an exception will be generated and
> the kernel will emulate the instruction (incurring in a context switch
> into the kernel).
>
> On Linux it is defined by CONFIG_FPE_NWFPE and it will add the code
> on arch/arm/nwfpe.
>
> 2. The kernel interface is also different in some ways, which makes
> some syscalls incompatibles. First difference is eabi says 64-bit
> members should be 64-bit aligned instead of simply word aligned.
> EABI also pads structures to the size of the largest member it
> contains instead of the invariant 32-bit [1].
>
> It means that Linux need to provide this extra syscalls and
> handle it accordingly. This is defined by OABI_COMPAT.
>
> 3. The syscall itself it done slight differently which complicates
> the libc code. OABI requires that system call number be encoded
> into the swi/svc instruction, where EABI requires the system call
> number to be on r7. For OABI this requires the kernel to actually
> fetch the instruction word and analyse to decode which syscall to
> issue.
>
> [1] As described as arch/arm/kernel/sys_oabi-compat.c
>
Also to give some more context, the OABI support was removed around 2011-2012
on libc-ports [1] [2] [3]. As you can see, it required a lot of specialized
code and my understanding the rationale is ARM ecosystem was moving away
from OABI and there is no sense to continue support it on glibc.
[1] https://sourceware.org/ml/libc-ports/2012-01/msg00023.html
[2] https://sourceware.org/ml/libc-ports/2012-04/msg00122.html
[3] https://sourceware.org/ml/libc-ports/2012-04/msg00123.html
More information about the Libc-help
mailing list