Want to know anything about ARM ABIs? Neither did I, but in the process of trying to get these cross-compiled Eth binaries working across a wide-range of mobile, wearable and SBC devices I have learnt more than I ever wanted to know. I did it for you. And for the children.
And it isn’t over! No sir, it is not. I still haven’t actually got it working on my flagship target device, the Samsung Gear S2 smartwatch. Because the S2 ships with GCC 4.6 runtime libraries. From GCC 4.6.1. Which was released in June 2011. Of course it does. So I will have to go down another rabbit-hole there, of building GCC against a non-default sysroot.
So, what are these “two ABIs”? They are the armel and armhf calling conventions, which can respectively be boiled down to “software floating-point” and “hardware floating-point”. Those form the two “kingdoms” of ARM, with armel dying, but not dead, with older hardware, Android 32-bit and Tizen still clinging onto the carcass. Oh, and there is ARMv6 for the first generation of Raspberry Pi, where everything else in the universe is ARMv7.
You don’t want to hear anymore about this nonsense, and I don’t want to write anymore, but here is a handy table which contains my very hard-won knowledge of “what is what” for our main target platforms, and for the existing binaries which we are generating. Click on the image for a readable version!
Happy New Year! Here is the Happy Hat to cheer us into 2016.