GCC Configurations

This page describes the standard configurations that the Toolchain group builds and tests under.


Toolchain specific build-deps PPA:

Machine-readable configurations:


cortexa9 is the primary target. It is configured with:

  • --with-mode=thumb --with-arch=armv7-a --with-tune=cortex-a9 --with-float=softfp --with-fpu=neon

Note the use of --with-arch= instead of --with-cpu= to enable the A8 erratas.

cortexa8 is a universal Cortex-A configuration:

  • --with-mode=thumb --with-arch=armv7-a --with-float=softfp --with-fpu=vfpv3-d16

Code generated with this should work on any shipping Cortex-A device. This also matches the Ubuntu configuration.

armv5 is a ARMv5TE in ARM mode target:

  • --with-mode=arm --with-arch=armv5te --with-float=soft

This exercises ARM mode and the earlier architecture support.

i686 is a 32 bit x86 target. The default GCC configuration is used.

x86_64 is a 64 bit x86 target. The default GCC configuration is used.


We sometimes build variants such a profiled or SMS bootstrap. See the cbuild/config directory for details. The variants are:

  • profiled - a profiled bootstrap using PGO
  • sms - a bootstrap built with SMS turned on
  • baremetal - a baremetal cross compiler in the same vein as Android's arm-none-eabi


Graphite is a loop optimiser. It is enabled with: --with-cloog --enable-cloog-backend=ppl-legacy A recent decision (2013) by the GCC steering committee was made to depreciate this as it lacks a maintainer, as well as lacks any test case to prove it actually works. Others GCC developers claim this has actually cause other performance issues, so Linaro doesn't enable this anymore.


GCC ties into the system that it is building for for features such as thread local variables, OpenMP, and libstdc++. This information is pulled from a 'sysroot', which consists of the headers and libraries of a basic system.

WorkingGroups/ToolChain/Configurations/GCC (last modified 2013-09-01 14:37:24)