How to Detect if an ARM ELF Binary is Hard-float (ARMHF) or Soft-float (ARMEL)

If some cases you may want to know if a library or binary built for the ARM architecture is using hard-float (armhf) or soft-float (armel). You can analyze ELF binary using readefl utility, so let’s have a try. First let’s install some armel and armhf files on a computer running Ubuntu by install gcc/g++ toolchain for armel and armhf:

We now have armhf and armel libraries installed in /usr/arm-linux-gnueabihf/lib and /usr/arm-linux-gnueabi/lib respectively. Let’s check the output of readelf filtered with “FP” string for for armel:

and armhf:

Great, so there’s an extra line for armhf (Tag_ABI_VFP_args) that seems to confirm the library is hard-float. With readelf compiled from elftoolchain-0.6.1 (source code), the extra line will be a bit different: “Tag_ABI_VFP_args: AAPCS (VFP variant) AAPCS stands for ARM Architecture Procedure Call Standard. You can read more details on ARM website. There are also two other possible values for Tag_ABI_VFP_args: “AAPCS (base variant)” and “toolchain-specific”, but I’m not […]

Raspberry Pi Releases Raspbian SD Card Image Based on Debian Wheezy ARMHF

The Raspberry Pi foundation announced the very first stable release of the Raspbian distribution, which is based on Debian 7.0 “Wheezy” armhf rootfs in order to take advantage of the FPU in Broadcom BCM2835. This distribution offers up to 40% performance improvement on several tasks, and for some specific tasks such as MP3 encoding is can boost the speed by nearly 6 times thanks to hard-float support. It is now the recommended distribution for the Raspberry Pi, runs LXDE environment, and comes with Midori browser, development tools and example source as per the previous Debian distros. omxplayer by gimli (XBMC developer) is also pre-installed in the image, and will allow you to play videos using hardware acceleration. You can download Raspbian via: Bittorrent – HTTP – The default credentials are pi / raspberry. Adam Armstrong has run some benchmarks to compare Raspbian (armhf) with the previous Raspberry Pi Squeeze (armel) distribution. Some tasks see little improvements since they […]

Getting Started with MultiArch (armel / armhf) in Ubuntu

Until now, I used xapt and dpkg-cross to install cross libraries for armel, but since I’ve upgraded to Ubuntu 12.04, it appears to be broken. I’ve contacted Linaro about this issue, and the “cross-building” expert at Linaro (wookey) recommended me to use multiarch instead, as xapt/dpkg-cross will be eventually deprecated. He provided me an example showing how-to use multiarch to build Chromium. I’ve been looking for a “How-to multiarch”, but haven’t been able to find something really clear and simple, so I thought I would post it here. In the example, they used a chroot for cross-building, which is probably a good idea to avoid messing up with the system. It’s also possible multiarch is not 100% reliable, and I’ve read stories where people messed up their system when using multiarch with i386 (32-bit) and amd64 (64-bit). Preparing a chroot for cross-building I’ll use a 32-bit Ubuntu precise chroot, but you can use an older distribution (e.g. oneric) and 64-bit […]