User: Password:
|
|
Subscribe / Log in / New account

Creating a Fedora ARM distribution part 1: history

Creating a Fedora ARM distribution part 1: history

Posted Oct 20, 2011 4:59 UTC (Thu) by jreiser (subscriber, #11027)
Parent article: Creating a Fedora ARM distribution part 1: History

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.


(Log in to post comments)

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.:

# readelf -A /bin/bash
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "7-A"
Tag_CPU_arch: v7
Tag_CPU_arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_arch: VFPv3-D16
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_align_preserved: 8-byte, except leaf SP
Tag_ABI_enum_size: int
Tag_ABI_HardFP_use: SP and DP
Tag_ABI_VFP_args: VFP registers
Tag_DIV_use: Not allowed

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]

A good reference is Debian page on similar transition:
http://wiki.debian.org/ArmHardFloatPort

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.


Copyright © 2018, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds