- The Linaro Binary Toolchain
- Host Requirements
- Package Versions
- NEWS for GCC 4.9 (as of Linaro GCC 4.9-2017.01)
- The Linaro Binary Toolchain
- Host Requirements
- Package Versions
- NEWS for GCC 5 (as of Linaro GCC 5.5-2017.10)
- The Linaro Binary Toolchain
- Host Requirements
- Package Versions
- NEWS for GCC 7 (as of Linaro GCC 7.5-2019.12)
The Linaro Binary Toolchain
Notice: All Linaro GCC 4.9 series toolchain users should migrate to the latest version of the Linaro GCC 4.9 toolchain in order to mitigate potential security exposure to CVE -2015-7547. See the NEWS section below for details.
Download release packages from:
Previous snapshots and release-candidates are at:
A description of what each ABI or triplet is can be found at:
Host Requirements
Linaro officially supports the current and previous Ubuntu LTS releases (as of the time of this release). This does not mean that the toolchain will not work on other/older Linux distributions. See the following for the life-time of Ubuntu LTS releases.
The host system upon which the cross-compiler will run requires a minimum of glibc 2.14, because of API changes to glibc’s memcpy API .
Package Versions
FSF eglibc 2.19 (linaro_eglibc-2_19)
Linaro newlib 2.1.0-2014.09 (linaro_newlib-branch)
Linaro binutils 2.24 (linaro_binutils-2_24-branch)
Linaro toolchain package git branches are hosted at:
NEWS for GCC 4.9 (as of Linaro GCC 4.9-2017.01)
This makes arm-linux-gnueabi and armeb-linux-gnueabi toolchains use “soft” FP ABI instead of “softfp”.
Historically, TCWG’s toolchains provided both “soft” and “softfp” multilibs, but when switching from crosstool-ng to cbuildv2/abe (which support a single multilib) “softfp” multilib was choosen. Using “-mfloat-abi=soft” is a better choice for a gnueabi toolchain, since it doesn’t require cores to have a floating-point unit.
This change should not break compatibility for toolchain users since the ABI will stay the same. The compiler and glibc libraries will not refernce FP instructions.
- Host binaries for x86_64 linux hosts now have symbols and debug information stripped in order to reduce the size of the toolchain binary archives. This reduces the archive size from 830M to 480M for aarch64-linux-gnu target with the gcc-4.9-branch.
- Removed .la files from binary installation as these files break autotools builds.
- The mingw toolchains are now archived using the rsync -L option in order to avoid problems with Windows extractors and symbolic links.
This resolves the following user bugs:
- Copy the libwinpthread DLL into the bin directories so it gets into the tmp directory before tar is run.
- Applied fix for CVE -2015-7547 – A stack-based buffer overflow in glibc’s getaddrinfo() was corrected in glibc 2.23 and backported into Linaro eglibc 2.19 (linaro_eglibc-2_19).
The Linaro Binary Toolchain
The Linaro GCC 5.5-2017.10 Final Release is now available.
Notice: All Linaro GCC 5 series toolchain users should migrate to the latest version of the Linaro GCC 5 toolchain in order to mitigate potential security exposure to CVE -2015-7547. See the NEWS section below for details.
Download release packages from:
Previous snapshots and release-candidates are at:
A description of the arm and AArch64 target triples can be found at:
Host Requirements
Linaro officially supports the current and previous Ubuntu LTS releases (as of the time of this release). This does not mean that the toolchain will not work on other/older Linux distributions. See the following for the life-time of Ubuntu LTS releases.
The host system upon which the cross-compiler will run requires a minimum of glibc 2.14, because of API changes to glibc’s memcpy API .
Package Versions
Linaro glibc 2.21 (linaro/2.21)
Linaro newlib 2.1.0-2014.09 (linaro_newlib-branch)
Linaro binutils 2.25 (users/linaro/binutils-2_25-branch)
Linaro toolchain package git branches are hosted at:
NEWS for GCC 5 (as of Linaro GCC 5.5-2017.10)
Data-based padding causes current address evaluation to be non-constant on aarch64
ICE : declaration and definition of function with __attribute__((target(“thumb”))) and inlined assembler, with debug symbols enabled
Internal compiler error using -mtune=cortex-a57.cortex-a53.
- The soft-float targeted toolchains have now been configured to generate code using -mfloat-abi=soft.
This makes arm-linux-gnueabi and armeb-linux-gnueabi toolchains use the “soft” FP ABI instead of “softfp”.
Historically, TCWG’s toolchains provided both “soft” and “softfp” multilibs, but when switching from crosstool-ng to cbuildv2/abe (which support a single multilib) “softfp” multilib was choosen. Using “-mfloat-abi=soft” is a better choice for a gnueabi toolchain, since it doesn’t require cores to have a floating-point unit.
This change should not break compatibility for toolchain users since the ABI will stay the same. The compiler and glibc libraries will not refernce FP instructions.
ARM GCC 5.2 call weak function instead of strong when called through pointer
[regression] FAIL : libgomp.fortran/retval1.f90 -O1 execution test
aarch64-linux-gnu-g++ internal compiler error: in curr_insn_transform
- Backported glibc patch to simplify static malloc interposition [BZ #20432] to correct user identified issue.
commit 058b5a41d56b9a8860dede14d97dd443792d064b
Author: Florian Weimer
Date: Fri Aug 26 22:40:27 2016 +0200
malloc: Simplify static malloc interposition [BZ #20432]
- Host binaries for x86_64 linux hosts now have symbols and debug information stripped in order to reduce the size of the toolchain binary archives. This reduces the archive size from 1.1G to 580M for aarch64-linux-gnu target with the gcc-5-branch.
- Removed .la files from binary toolchain archive as these files break autotools builds.
- The mingw toolchains are now archived using the rsync -L option in order to avoid problems with Windows extractors and symbolic links.
This resolves the following user bugs:
- Copy the libwinpthread DLL into the bin directories so it gets into the tmp directory before tar is run.
commit ef90a4718f535cbe6345b4e7168baea7b1972abf
Author: Matthew Wahab
Date: Tue Jan 12 16:35:30 2016 +0000
[ARM] Support ARMv8.2 RAS extension.
- Baremetal sysroot names now contain ‘newlib’ rather than ‘glibc’.
- Manifests now contain relative paths rather than absolute paths.
- Now generating proper manifest files.
- Fixed pi requeue support in glibc 2.21 while allowing the existing 2.21 minimum kernel default setting. This was checked into the linaro/2.21/master branch.
commit a68cafa11c500d8a49a3014c43c5152859d037ae
Author: Adhemerval Zanella
Date: Tue May 17 10:16:39 2016 -0300
Add runtime check for __ASSUME_REQUEUE_PI (BZ# 18463)
commit 6e5cb616b5b442ce8b2664ad673c0acf42a490ac
Author: Adhemerval Zanella
Date: Mon May 16 19:01:10 2016 -0300
Remove __ASSUME_SET_ROBUST_LIST
commit 9ac61c0047295696cbcdbc26bdc174c7bd25a3c8
Author: Adhemerval Zanella
Date: Mon May 16 10:35:25 2016 -0300
Remove __ASSUME_FUTEX_LOCK_PI
- Backported support into GCC for Cortex-A32, Cortex-A35, and Cortex-R8.
- Applied fix for CVE -2015-7547 – A stack-based buffer overflow in glibc’s getaddrinfo() was corrected in glibc 2.23 and backported into glibc 2.21.
- ARMv8.1 Instruction Support – ARMv8.1 instructions support was checked into GCC and binutils. It has been backported into Linaro GCC 5.3 and Linaro binutils 2.25.
- Backported -Bsymbolic-functions into Linaro binutils 2.25.
- Performance related backports from Linaro GCC 5.2-2015.11, Linaro GCC 5.2-2015.12, and Linaro GCC 5.3-2016.01-1, Linaro GCC 5.3-2016.02, Linaro GCC 5.3-2016.03, Linaro GCC 5.3-2016.04, Linaro GCC 5.4-2016.06, Linaro GCC 5.4-2016.10, Linaro GCC 5.4-2016.12, Linaro GCC 5.4-2017.02, GCC 5.4-2017.04 and Linaro GCC 5.5-2017.10 have been included.
See the following Linaro GCC snapshots:
The Linaro Binary Toolchain
On ARM targets (arm*-*-*), a bug introduced in GCC 5 that affects conformance to the procedure call standard ( AAPCS ) has been fixed. The bug affects some C++ code where class objects are passed by value to functions and could result in incorrect or inconsistent code being generated. This is an ABI change. If the option -Wpsabi is enabled (on by default) the compiler will emit a diagnostic note for code that might be affected.
GCC 5 and GCC 6 releases will continue to be affected by the ABI bug, since changing ABI in these releases is not practical. A warning enabled by -Wpsabi option was added to GCC 5 and GCC 6 toolchains to diagnose codebases that might be affected by the ABI bug.
Additionally, this same bug was present in AArch64 backend in development versions of GCC 7. There was no releases of GCC with this bug present in AArch64 backend, therefore the release notes does not mention this. However, be advised that any code bases built with development versions of GCC 7 need to be recompiled with released version of GCC 7 to conform to ABI .
For an explanation of GCC 7 series changes please see the following website:
For help in porting to GCC 7 please see the following explanation:
Download release packages from:
Previous snapshots and release-candidates are at:
A description of the arm and AArch64 target triples can be found at:
Host Requirements
Linaro officially supports the current and previous Ubuntu LTS releases (as of the time of this release). This does not mean that the toolchain will not work on other/older Linux distributions. See the following for the life-time of Ubuntu LTS releases.
The host system upon which the cross-compiler will run requires a minimum of glibc 2.14, because of API changes to glibc’s memcpy API .
Package Versions
Newlib 2.5 (newlib-2_5_0 tag)
GNU Binutils 2.28 (users/linaro/binutils-2_28-branch)
Linaro toolchain package git branches are hosted at:
NEWS for GCC 7 (as of Linaro GCC 7.5-2019.12)
- Runtest and gdbserver are no longer installed in the toolchain bin/ directory. Binary releases no longer include runtest at all, and gdbserver is a target tool; it is now shipped in the sysroot under usr/bin/.
LDTS case #2211: gdbserver and runtest in GCC binary release are in the wrong place or have the wrong name
Linaro bugzilla #3344: gdbserver broken in Linaro 2017.02
- The Linaro GCC 7.4-2019.01 snapshot added a fix for Linaro bug 4007: “Internal compiler error with -mcpu=thunderx2t99”.
- The Linaro GCC 7.2-2017.09 snapshot added float and integer moves improvement for AArch64 targets.
- The Linaro GCC 7.1-2017.07 snapshot added prefetching configuration improvement for AArch64 targets and laid groundwork to enabling prefetching in more cases.
- Previous MinGW hosted version of Linaro GCC C preprocessor failed to convert character set used for string, character constants, etc. This is fixed in this release.
Linaro bugzilla #3040 : CC1 and cc1plus cannot convert UTF -8.
- Performance related backports from the following snapshots have been included: Linaro GCC 7.1-2017.05, Linaro GCC 7.1-2017.06, Linaro GCC 7.1-2017.07, Linaro GCC 7.2-2017.08, Linaro GCC 7.2-2017.09, Linaro GCC 7.2-2017.10, Linaro GCC 7.2-2018.04, Linaro GCC 7.4-2019.01 and Linaro GCC 7.5-2019.11.
See the following Linaro GCC snapshots: