This page describes proposal to upgrade MeeGo toolchain in MeeGo Release 1.2. Current toolchain is based on gcc-4.5.0 and it is proposed to be upgraded to gcc-4.5.1 based in the Rel 1.2. Also full support of FPU (Floating Point Unit) in ARM processor architecture is proposed to be taken into use in the toolchain.
Responsibility area of Nokia is to take care of ARM processor architecture support in MeeGo toolchain. Current toolchain setup in MeeGo Release 1.1 only partially supports the use of FPU in ARM architecture.
Gcc compiler provides three options to support floating points in -mfloat-abi :
Linaro (http://www.linaro.org) is providing ARM support to gcc. Linaro provides ARM patches to gcc upstream. Support of -mfloat-abi=hard option is available in gcc-4.5.1.
Performance tests comparing options -mfloat-abi=softp and -mfloat-abi=hardfp are done using Linaro 2010.11 (http://lists.linaro.org/pipermail/linaro-toolchain/2010-November/000414.html) toolchain. E.g. in PythonBench16 the improvement is 60 %.
Nokia propose to upgrade gcc-4.5.1 with -mfloat-abi=hard option support. This change applies in MeeGo Release 1.2.
Together with gcc update, binutils is updated to version 2.20 or newer and (e)glibc to version 2.10 or newer.
Reason to update is that gcc-4.5.1 contains numbers of ARM patches (submitted by Linaro) that are important for Nokia and other device vendors that develop ARM based devices.
Architecture name is also thought by Debian . Debian considered "armv7hf" to be used to indicate if the hard floating point architecture is used. The name "armel" indicates that the hard floating point architecture is not used (-mfloat-abi=softfp). Since it is useful to also indicate that little endian mode is used, the new architecture name is proposed to be "armv7hl". The sub-architecture name "armv7nhl" is used to indicate NEON optimized binary.
Current softfp support (-mfloat-abi=softfp) is not allowed in MeeGo Release 1.2 and onwards.
In the same architecture the two sets of toolchain setups is proposed to be published as in follows:
* ARMv7 architecture (-march=armv7-a) * VFPv3-D16 (-mfpu=vfpv3-d16)
* ARMv7 architecture (-march=armv7-a) * NEON (-mfpu=neon)
Applications using the optimized set are provided as dedicated binaries that optimized for each HW platform.
Following impacts can be foreseen if the Toolchain is changed or not changed.
Toolchain NOT changed:
Analysis of impacts:
Toolchain version must be agreed during 11/2010 and it must be available to testing in OBS at the beginning of 12/2010.
Toolchain change in MeeGo Release 1.2 as follows: