The article's lack of references is stunning, as is the lack of detail. I'll consider the article to be a myth until the alleged facts have verifiable citations. If it is really true that an ELF ET_EXEC file that was built for the old ABI, and which itself does not use floating point arithmetic, cannot be execve()d unmodified on a system which ["also"] supports the new ABI, then that is a very bad situation.
Creating a Fedora ARM distribution part 1: history
Posted Oct 20, 2011 5:56 UTC (Thu) by jcm (subscriber, #18262)
[Link]
Additional piece we cut from the final copy for space reasons might help. Actually, that "additional" stuff was many paragraphs, so let me just cite this piece here:
--- begin ---
Beyond the architecture version in use, there are several terms used to describe the particular ABI (Application Binary Interface) against which applications and kernel code are compiled. The "EABI" is a term in common use - and completely disjoint from the "EABI" of the PowerPC community - which has long since been deprecated by ARM in favor of a combination of the BSABI (Base Standard ABI), and AAPCS (ARM Architecture Procedure Calling Standards) documents (in addition to ELF and C++ bindings). Most ARM programmers will commonly use terms like "EABI" in conversation. When they refer to "hard float" what they really mean is Section 6 of the AAPCS, which describes a means to use the VFP registers in procedure linkage.
Fedora targets two current releases of the ARM Architecture. Version 5 is
supported in the form of "armv5tel", which means version 5 of the architecture, with (t)humb support, (e)nhanced DSP instructions, and targeting a (l)ittle endian mode of execution. Version 7 is supported in the form of "armv7hl", which means version 7 of the architecture, compiled with support for hard floating point (aka VFPv3 instructions), and targeting (l)ittle endian. Technically, all ARMv7 parts implement hardware floating point and Thumb2 support, but since not all software is built to use these, distributions like Fedora still spell out the specific build configuration being used. Fedora ARM binary package filenames will include "armv5tel" or "armv7hl".
--- end ---
So if you're interested in finding out more about how the ABI works, look to the ARM AAPCS (section 6 is what you want). If you've still got questions, I can try to answer them in the morning.
Jon.
Creating a Fedora ARM distribution part 1: history
Posted Oct 20, 2011 6:08 UTC (Thu) by jcm (subscriber, #18262)
[Link]
Document number: ARM IHI 0042D
You are right that code which doesn't use the VFPv3 isn't specifically impacted by the VFP passing convention in section 6. But the way the ABI change was done (this isn't Fedora's issue), there was no clear set of standardized magical flags just magically inserted into ELF files to tell us whether an application actually uses FP (as opposed to just targeting the/an ABI that handles it). There is the "eabi" section, e.g.:
This will tell us what we build against but it will not tell us whether any floating point instructions were actually used (whether generated or inline assembly). Fedora is not alone in taking the action of treating this as an incompatible ABI break, and in taking an approach similar to what we have done. There were some other reasons for treating this as an entire bootstrap that will be spelled out explicitly in part 2.
Jon.
Creating a Fedora ARM distribution part 1: history
Posted Oct 20, 2011 13:47 UTC (Thu) by jengelh (subscriber, #33263)
[Link]
>the form of "armv5tel", which means version 5 of the architecture, with (t)humb support, (e)nhanced DSP instructions, and targeting a (l)ittle endian mode of execution.
I wonder if ARM could actually limit itself to something useful. After all, we don't have i586_mmx, i586_sse, i686, i686_mmx, i686_sse, i686_sse2, i686_sse3 for rpm arches either in practice.
Creating a Fedora ARM distribution part 1: history
Posted Oct 20, 2011 17:18 UTC (Thu) by jcm (subscriber, #18262)
[Link]
A lot of that is actually being fixed around platform standardization. There are a few things there I would like to have mentioned but I can't quite yet.
Creating a Fedora ARM distribution part 1: history
Posted Oct 20, 2011 22:36 UTC (Thu) by linusw (subscriber, #40300)
[Link]
Hey some of the best meat in the article was cut, these paragraphs were *really* helpful, that editing was most unfortunate :-(
Creating a Fedora ARM distribution part 1: history
Posted Oct 20, 2011 23:57 UTC (Thu) by jcm (subscriber, #18262)
[Link]
Well Jon and Jake did an excellent job, it's just I wrote 6,800 words after I'd decided to already cut a few things. Next week's article has a lot more technical detail and if that's not enough, I've got other stuff in the works. I can also post a blog with way too much technical meat on how this is implemented at the ISA level. I was thinking about a small blog series, for example, explaining how interworking really works, etc.
Creating a Fedora ARM distribution part 1: history
Posted Oct 21, 2011 19:18 UTC (Fri) by jake (editor, #205)
[Link]
> Well Jon and Jake did an excellent job
I can take zero credit for that, it was a "Jon and Jon" production all the way :)
I did just put up Part 2 for everyone's reading pleasure ...
jake
Creating a Fedora ARM distribution part 1: history
Posted Oct 29, 2011 16:52 UTC (Sat) by oak (guest, #2786)
[Link]
I think Debian was the first major distro to start Armv7 hard-fp transition and OpenSUSE last, but none of the major distros has yet completed the transition. Of minor ones, MeeGo had.