Features
- All GCC 8.3 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-2019.01
- Bug4249 - gcc-arm-8 releases contain .la files.
- Bug4251 - gcc-arm-8 mingw32 releases contain symlinks.
- Bug4253 - gcc-arm-8.2-2019.01 release uses gdb-8.1 instead of gdb-8.2.
- Bug4297 - ARM Toolchain use a Linux kernel headers -rc release.
- Each binary release file now contains manifest.txt file with configuration flags for each toolchain component.
- Additional Linaro ABE manifest files to build x86_64 host toolchains.
- Experimental multilib support for arm-eabi toolchain (multilib a+rm-profile with newlib-nano enabled).
Content
This release includes the following items:
Component | Description |
---|---|
GCC 8.3 | Repository: svn://gcc.gnu.org/svn/gcc/branches/ARM/arm-8-branch Revision: 269184 Sources provided in release source tar ball. GCC 8 branch based on revision id r269117 with some additional patches ported on top as described in Features section. |
glibc2.28 | Repository: git://sourceware.org/git/glibc.git Revision: 4aeff335ca19286ee2382d8eba794ae5fd49281a |
newlib3.0.0 | Repository: git://sourceware.org/git/newlib.git Revision: newlib-3.1.0 |
binutils2.32 | Repository: git://sourceware.org/git/binutils-gdb.git Revision: 0738b7acd30816902ccfbbb3eac16862f26985cb |
GDB8.2.1 | Repository: git://sourceware.org/git/binutils-gdb.git Revision: 07d117342c8d967b730a7193e2f879f22c60e88c GDB-with-python support for Python 2.7.6 (x86_64 builds). GDB-with-python support for Python 2.7.13 (i686-mingw32 builds). |
libexpat2.2.5 | Repository: https://github.com/libexpat/libexpat.git Revision: R_2_2_5 |
Linux Kernel | Repository: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git Revision: v4.19 |
libgmp4.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. Note: This toolchain has enabled experimental multilib support: multilib a+rm-profile with newlib-nano. |
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. |
Release Contains Files
gcc-arm-*.tar.xz | The compiler and tools. |
gcc-arm-src-snapshot-*.tar.xz | The compiler and tools sources. |
gcc-arm-src-snapshot-*-manifest.txt | Text manifest file with list of remote repositories of toolchain and tools. |
runtime-gcc-*.tar.xz | Runtime libraries needed on the target. |
sysroot-*.tar.xz | A set of libraries and headers to develop against. |
gcc-arm-*-abe-manifest.txt | Input files for Linaro ABE build system. |
*.asc | md5 checksum files. |
Installation instructions
Extract XZ compressed release archive using TAR archiving utility:
$ tar -xJf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C /path/to/destination/directory
Compute and check MD5 checksum ofXZ compressed release archives using md5sum utility:
$ md5sum --check gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz.asc gcc-arm-8.3-2019.03-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
Building toolchain from source
You can build GNU cross-toolchain for the A-profile from sources using Linaro ABE (Advanced Build Environment) and provided ABE manifest files.
Below example shows how to build gcc-arm-aarch64-linux-gnu toolchain from sources using Linaro ABE build system.
Instructions
Clone ABE one of the URL below and checkout the stable branch (see Getting ABE):
$ git clone https://git.linaro.org/toolchain/abe.git
Create the build directory and change to it. Any name for the directory will work (see Building Toolchains With ABE):
$ mkdir build && cd build
Configure ABE (from the build directory):
$ ../abe/configure
And finally build toolchain (from the build directory):
$ ../abe/abe.sh --manifest gcc-arm-aarch64-linux-gnu-abe-manifest.txt --build all
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.
- GDB's Python support requires Python DLL dependencies for i686-mingw32 host.
- Toolchains dedicated for i686-mingw32 host require mingw-w64 library, a complete runtime environment for GCC.
Ask questions
For any questions, please use the Arm Communities forums.
Report bugs
Please report any bugs via the Linaro Bugzilla.