What's new in 8.2-2019.01
We are pleased to announce the first Arm release of the pre-built GNU cross-toolchain for the A-profile cores: GCC 8.2-2019.01.
This is the same toolchain that was previously distributed by Linaro.
For more information about the GNU Arm toolchain and download the release packages, please go to the Arm Developer website.
In this release
i686-mingw32 hosted cross compilers
AArch32 bare-metal target (arm-eabi)
- gcc-arm-8.2-2019.01-i686-mingw32-arm-eabi.tar.xz
- gcc-arm-8.2-2019.01-i686-mingw32-arm-eabi.tar.xz.asc
- sysroot-newlib-arm-2019.01-arm-eabi.tar.xz
- sysroot-newlib-arm-2019.01-arm-eabi.tar.xz.asc
AArch64 ELF bare-metal target (aarch64-elf)
- gcc-arm-8.2-2019.01-i686-mingw32-aarch64-elf.tar.xz
- gcc-arm-8.2-2019.01-i686-mingw32-aarch64-elf.tar.xz.asc
- sysroot-newlib-arm-2019.01-aarch64-elf.tar.xz
- sysroot-newlib-arm-2019.01-aarch64-elf.tar.xz.asc
x86_64 hosted cross compilers
AArch64 GNU/Linux big-endian target (aarch64_be-linux-gnu)
- gcc-arm-8.2-2019.01-x86_64-aarch64_be-linux-gnu.tar.xz
- gcc-arm-8.2-2019.01-x86_64-aarch64_be-linux-gnu.tar.xz.asc
- sysroot-glibc-8.2-2019.01-x86_64-aarch64_be-linux-gnu.tar.xz
- sysroot-glibc-8.2-2019.01-x86_64-aarch64_be-linux-gnu.tar.xz.asc
- runtime-gcc-8.2-2019.01-x86_64-aarch64_be-linux-gnu.tar.xz
- runtime-gcc-8.2-2019.01-x86_64-aarch64_be-linux-gnu.tar.xz.asc
AArch32 bare-metal target (arm-eabi)
AArch32 target with soft float (arm-linux-gnueabi)
- gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz
- gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz.asc
- sysroot-glibc-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz
- sysroot-glibc-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz.asc
- runtime-gcc-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz
- runtime-gcc-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz.asc
AArch32 target with hard float (arm-linux-gnueabihf)
- gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabihf.tar.xz
- gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabihf.tar.xz.asc
- sysroot-glibc-8.2-2019.01-x86_64-arm-linux-gnueabihf.tar.xz
- sysroot-glibc-8.2-2019.01-x86_64-arm-linux-gnueabihf.tar.xz.asc
- runtime-gcc-8.2-2019.01-x86_64-arm-linux-gnueabihf.tar.xz
- runtime-gcc-8.2-2019.01-x86_64-arm-linux-gnueabihf.tar.xz.asc
AArch64 ELF bare-metal target (aarch64-elf)
AArch64 ELF bare-metal, big-endian target (aarch64_be-elf)
- gcc-arm-8.2-2019.01-x86_64-aarch64_be-elf.tar.xz
- gcc-arm-8.2-2019.01-x86_64-aarch64_be-elf.tar.xz.asc
AArch64 GNU/Linux target (aarch64-linux-gnu)
- gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz
- gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz.asc
- sysroot-glibc-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz
- sysroot-glibc-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz.asc
- runtime-gcc-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz
- runtime-gcc-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz.asc
Sources
Release Note for GNU-A Downloads 8.2-2019.01
Features
- All GCC 8.2 features. For details on GCC 8 release series, please refer to the list of changes, new features, and fixes.
- Linaro specific pre-processor macros to ensure that this is a continuation from the Linaro releases.
- Spectre v1 mitigation backport from upstream FSF trunk include the revisions listed below. This is an initial backport of those mitigations in the GNU toolchain and should be regarded as support for prototyping and early access only. Moreover, while the backports include support for the other architectures, they are included for completeness and all issues regarding these patches must be taken up upstream in the https://gcc.gnu.org/bugzilla by reproducing the same with upstream FSF trunk. Arm is interested in feedback regarding these workarounds for Spectre v1. A description of the mitigation has been published on LWN.net.
- Arm - add speculation_barrier pattern
- AArch64 - add speculation barrier
- AArch64 - Add new option -mtrack-speculation
- AArch64 - disable CB[N]Z TB[N]Z when tracking speculation
- AArch64 - new pass to add conditional-branch speculation tracking
- AArch64 - use CSDB based sequences if speculation tracking is enabled
- targhooks - provide an alternative hook for targets that never execute speculatively
- pdp11 - example of a port not needing a speculation barrier
- targhooks - Add ATTRIBUTE_UNUSED
- x86 - add speculation_barrier pattern
- rs6000 - add speculation_barrier pattern
- nvptx - Define TARGET_HAVE_SPECULATION_SAFE_VALUE
- fr30 - Define to speculation_safe_value_not_needed
- frv - Define to speculation_safe_value_not_needed
- iq2000 - Define to speculation_safe_value_not_needed
- m32r - Define to speculation_safe_value_not_needed
- mcore - Define to speculation_safe_value_not_needed
- msp430 - Define to speculation_safe_value_not_needed
- rx - Define to speculation_safe_value_not_needed
- v850 - Define to speculation_safe_value_not_needed
- stormy16 - Define to speculation_safe_value_not_needed
- h8300 - Define to speculation_safe_value_not_needed
- m68k - Define to speculation_safe_value_not_needed
- mn10300 - Define to speculation_safe_value_not_needed
- nios2 - Define to speculation_safe_value_not_needed
- spu - Define to speculation_safe_value_not_needed
- pa - Define to speculation_safe_value_not_needed
Changes since Arm release GCC 8.2-2018.11
- Bug 4041 - gcc-arm-8.2 toolchains do not support sanitizers
- Bug 4045 - gcc-arm-8.2-2018.08 release points to https://gcc.gnu.org/bugs/
- Bug 4130 - gcc8.2/AArch64: aarch64-linux-gnu-gdb: TUI mode is not supported
- Bug 4212 - arm gcc-8 release is missing gold linke
- Each binary release file now contains manifest file with configuration flags for each toolchain component
Content
This release includes the following items:
Component | Description |
---|---|
GCC 8.2.1 |
Repository: svn://gcc.gnu.org/svn/gcc/branches/ARM/arm-8-branch Revision: 263559 Sources provided in release source tar ball. GCC 8 branch based on revision id r263242 with some additional patches ported on top as described in Features section. |
glibc 2.28 |
Repository: git://sourceware.org/git/glibc.git Revision:2f498f3d140ab5152bd784df2be7af7d9c5e63ed |
newlib 3.0.0 |
Repository: git://sourceware.org/git/newlib.git Revision: newlib-3.0.0 |
binutils 2.30 |
Repository: git://sourceware.org/git/binutils-gdb.git Revision: e521dc888158a6cdbdccef0397e663c437450a80 |
GDB 8.1.1 |
Repository: git://sourceware.org/git/binutils-gdb.git Revision: f9812ee2042783bad9e8901cf47c178daee15a00 GDB-with-python support for Python 2.7.6 (x86_64 builds). GDB-with-python support for Python 2.7.13 (i686-mingw32 builds). |
libexpat 2.2.5 |
Repository: https://github.com/libexpat/libexpat.git Revision: R_2_2_5 |
libgmp 4.3.2 |
Sources provided in release source tar ball. |
Host requirements
Host name | Host Triplet Notation |
---|---|
Windows 7 32/64 bits or later | i686-mingw32 |
Ubuntu 14.04 LTS x86_64 or later or RHEL 6 x86_64. | x86_64 |
The GNU Toolchains
Toolchain Triplet | The GNU Toolchain Description |
---|---|
i686-mingw32-arm-eabi | i686-mingw32 hosted cross compiler for AArch32 bare-metal target. |
i686-mingw32-aarch64-elf | i686-mingw32 hosted cross compiler for AArch64 ELF bare-metal target. |
x86_64-aarch64-elf | x86_64 hosted cross compiler for AArch64 ELF bare-metal target. |
x86_64-aarch64_be-elf | x86_64 hosted cross compiler for AArch64 ELF bare-metal, big-endian target. |
x86_64-aarch64-linux-gnu | x86_64 hosted cross compiler for AArch64 GNU/Linux target. |
x86_64-aarch64_be-linux-gnu | x86_64 hosted cross compiler for AArch64 GNU/Linux big-endian target. |
x86_64-arm-eabi | x86_64 hosted cross compiler for AArch32 bare-metal target. |
x86_64-arm-linux-gnueabi | x86_64 hosted cross compiler for AArch32 target with soft float. |
x86_64-arm-linux-gnueabihf | x86_64 hosted cross compiler for AArch32 target with hard float. |
Installation instructions
Extract XZ compressed release archive using TAR archiving utility:
$ tar -xJf gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz -C /path/to/destination/directory
Compute and check MD5 checksum of XZ compressed release archives using md5sum utility:
$ md5sum --check gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz.asc gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz: OK
The prebuilt binary bundles can be un-tarred and executed in place. Assuming a RHEL6 host. Unpack the Linux cross toolchain:
$ mkdir install-lnx
$ tar x -C install-lnx -f <filename>.tar.xz
$ PATH=`pwd`/install-lnx/aarch64/bin:$PATH
Known issues
- Spectre v1 mitigations are provided here for early access and thus might have stability issues. On AArch32 we are currently aware of one issue as documented at PR86951.
- GDB's Python support requires Python compiled with UCS-4 support (built with --enable-unicode=ucs4) for both hosts x86_64 and i686-mingw32.
Ask questions
For any questions, please use the Arm Communities forums.
Report bugs
Please report any bugs via the Linaro Bugzilla.