News

2022-01-24 - New x86-64 toolchains

So far, we had a single toolchain targeting the x86-64 architecture, named x86-64-core-i7. However, this toolchain was either compiled with too recent instructions for some platforms, or not sufficiently optimized for others.

There has been some recent work to standardize some specific "levels" of the x86-64 architecture, which have been defined in the psABI spec and are supported starting from gcc 11.x: x86-64, x86-64-v2, x86-64-v3, x86-64-v4. See also this Phoronix article for some more details.

We are now happy to be offering our toolchains targeting these four x86-64 architecture levels:

  • The x86-64 toolchain, which is the most generic, and will work on all x86-64 platforms, starting with Opteron. It only uses MMX, SSE and SSE2.
  • The x86-64-v2 toolchain, which corresponds to the Nehalem generation of Intel CPUs. It uses MMX, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.2.
  • The x86-64-v3 toolchain, which corresponds to the Haswell generation of Intel CPUs. It uses MMX, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.2, AVX, AVX2
  • The x86-64-v4 toolchain. It uses MMX, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.2, AVX, AVX2, AVX512

With these new toolchains available for x86-64, we expect to stop maintain the x86-64-core-i7 toolchain in the future.

2021-12-27 - 2021.11 toolchains released, new toolchains

All toolchains have been updated to be built with Buildroot 2021.11, and some additional updates and fixes. This means that we are now using:

  • For stable toolchains: gcc 10.3.0, binutils 2.36.1, Linux headers 4.9, gdb 10.2, glibc 2.34, uClibc 1.0.39 and musl 1.2.2
  • For bleeding-edge toolchains: gcc 11.2, binutils 2.37, Linux headers 5.4, gdb 11.1, glibc 2.34, uClibc 1.0.39 and musl 1.2.2

The riscv64 toolchains have been replaced by riscv64-lp64d toolchains, making them more generally useful.

Runtime testing using Qemu has been added for RISC-V 64-bit, m68k-68xxx and OpenRISC.

The gdb cross-debugger is now compiled with both Python and TUI support.

Internally, there's been some significant refactoring of the scripts and Gitlab CI pipelines that control the build and testing of those toolchains. Many thanks to Romain Naour for providing the ground work that enabled this refactoring.

2020-10-01 - 2020.08 toolchains released, new toolchains

All toolchains have been updated to be built with Buildroot 2020.08, and some additional updates and fixes. This means that we are now using:

  • For stable toolchains: gcc 9.3.0, binutils 2.33.1, Linux headers 4.9, gdb 8.3.1, glibc 2.31, uClibc 1.0.34 and musl 1.2.0
  • For bleeding-edge toolchains: gcc 10.2.0, binutils 2.34, Linux headers 5.4, gdb 9.2, glibc 2.31, uClibc 1.0.34 and musl 1.2.0

In addition, we have new toolchains available for a number of additional CPU variants: for powerpc64-e6500, powerpc-e300c3 and powerpc-440fp.

Finally, boot testing in Qemu has been extended to cover PowerPC64 E5500, NIOSII and m68k MCF5208.

2020-04-03 - All toolchains updated

All toolchains have been updated to be built with Buildroot 2020.02. This means that we are now using:

  • For stable toolchains: gcc 8.4.0, binutils 2.32, Linux headers 4.4, gdb 8.2.1, glibc 2.30, uClibc 1.0.32 and musl 1.1.24
  • For bleeding-edge toolchains: gcc 9.3.0, binutils 2.33.1, Linux headers 4.19, gdb 8.3, glibc 2.30, uClibc 1.0.32 and musl 1.1.24
2018-07-17 - Bleeding-edge toolchain updates: Binutils 2.31, ncurses fix

Bleeding edge toolchains have been updated to use Binutils 2.31, which was released a few days ago. Only a few toolchains have not been updated: ARMv7-M, m68k Coldfire and Xtensa, due to issues building with binutils 2.31. Those issues will be fixed soon and the corresponding toolchains will be rebuilt accordingly.

In addition, the ncurses library configuration has been fixed to use the terminfo files from the host machine, which should fix usability of gdb. See this Buildroot commit for details.

2018-06-25 - Bleeding-edge toolchain updates: GCC 8.1, GDB 8.1

Bleeding edge toolchains have been updated to GCC 8.1.0, Binutils 2.30, GDB 8.1, Linux headers 4.14 and glibc 2.26, musl 1.1.19 or uClibc-ng 1.0.30.

See our blog post.

2018-03-29 - Toolchain updates

Stable toolchains have been updated to GCC 6.4.0, Binutils 2.29.1, GDB 7.11.1, Linux headers 4.1 and glibc 2.26, musl 1.1.18 or uClibc-ng 1.0.28.

Bleeding edge toolchains have been updated to GCC 7.3.0, Binutils 2.30, GDB 8.0.1, Linux headers 4.9 and glibc 2.27, musl 1.1.18 or uClibc-ng 1.0.28.

Qemu testing for PowerPC64 Little Endian was added.

See our blog post.

2017-08-16 - Toolchain updates

All bleeding edge toolchains have been rebuilt with GCC 7.2.0, binutils 2.29, GDB 8.0. The glibc bleeding edge toolchains are now using glibc 2.26.

The bleeding edge toolchains are now built in a Debian Jessie environment, so they require glibc 2.14 at least on the host machine.

Stable toolchains have also seen a few updates:

  • armv7m and m68k-coldfire toolchains rebuilt with a fix in elf2flt.
  • mips32r5 toolchain is now built with NaN 2008 encoding, which is compliant with the Linux kernel expection for this architecture variant.
2017-06-19 - First release

138 toolchains built!

The following architectures are available, most of them coming with multiple flavours:

  • aarch64
  • arc
  • arm
  • bfin
  • m68k
  • microblaze
  • mips32
  • mips64
  • nios2
  • openrisc
  • powerpc
  • powerpc64
  • sh4
  • sparc64
  • sparcv8
  • x86
  • x86-64
  • xtensa-lx60

At least one libc per architecture is available, but you will usually find up to three (glibc, uclibc, and musl).

The toolchains often come in two versions:

  • The stable one features GCC 5.4, binutils 2.27, 3.10 kernel header, and GDB 7.11.
  • The bleeding-edge one features GCC 6.3, binutils 2.28, 4.9 kernel header, and GDB 7.12.