Re: armelfp: new architecture name for an armel variant
On Sun, Jul 11, 2010 at 03:40:16AM +0100, Wookey wrote:
> I don't think you can re-use Debian arch names. They mean something
> and if it's been used at all widely you can't just change it later (or
> at least not for 10-20 years or so). (armeb was little-enough used
> that we probably could change it).
> Yes, this would be nice, by some mechanism or other. It's currently
> harder than is helpful.
> You are conflating ABI with optional build/instruction set features.
> Debian arches should be reserved for _incompatible_ ABIs (OABI, EABI
> hard-float, EABI softfloat). With/without VFP and cortex A8
> optimisations is not incompatible - it's orthogonal. Each Debian arch
> has a _default_ for those (which can change over time as i386 used to
> be built for i386, then i486, now i586).
It was still i486 last I checked.
> Encoding those flavours/build options in the (incompatible ABI) 'Arch'
> name is the wrong way to go (IMHO). It's too heavyweight and intrusive and
> you get get alphabet soup. We should use other mechanisms to build and
> select optimisations and instruction-set extensions (at either
> install-time or runtime, maybe both).
> The tricky-bit here is that instruction-set extensions (VFP3, thumb2,
> NEON) and instruction set versions (v4, v5, v6a, v7) can also be
> incompatible in the sense that they won't run on hardware without
> those features. But I really think we should try to deal with that by
> correctly decorating ELF headers and making sure that the loaders and
> dpkg 'DTRT' in terms of selecting compatible stuff. Not create an arch
> for every combination.
I think there is a difference in instruction set versus calling
convention. You should be able to mix binaries with different instruction
sets as long as your hardware supports them all. You can't mix binaries
with different calling convensions (so where you pass arguments matters).
The ABI covers the calling convension, not the instruction set as far
as I know.
Certainly on i386 you can run i386 and i486 optimized and instruction
set binaries on an i686 processor. You can even mix libraries with i486
instructions with programs using i686 instructions. You can't mix them
with amd64 binaries and libraries though, because that's a different ABI
(fortunately the amd64 kernel supports both ABIs of course). So yeah
the tricky bit is picking a name for the ABI without encoding instruction
set into it that isn't relevant to the ABI. Arm sure is a big mess with
all those incompatible extensions to the instruction set.