Skip to main content

xPack GNU RISC-V Embedded GCC v11.3.0-1 released

· 8 min read

Version 11.3.0-1 is a new release; it follows the GNU GCC release.

The xPack GNU RISC-V Embedded GCC is a standalone cross-platform binary distribution of the GNU GCC.

There are separate binaries for Windows (x64), macOS (x64) and GNU/Linux (x64, arm64 and arm).

Raspberry Pi

The main targets for the GNU/Linux Arm binaries are the Raspberry Pi class devices (armv7l and aarch64; armv6 is not supported).

note

Starting with 2022 (GCC 11.3), the xPack RISC-V toolchain no longer tracks the SiFive vendor GCC branch, but the official GNU releases; also the name was updated to riscv-none-elf-gcc.

Download​

The binary files are available from GitHub Releases.

Prerequisites​

  • x64 GNU/Linux: any system with GLIBC 2.27 or higher (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc)
  • arm64/arm GNU/Linux: any system with GLIBC 2.27 or higher (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc)
  • x64 Windows: Windows 7 with the Universal C Runtime (UCRT), Windows 8, Windows 10
  • x64 macOS: 10.13 or later
  • arm64 macOS: 11.6 or later

Install​

The easiest way to install this specific version, is by using xpm:

xpm install @xpack-dev-tools/riscv-none-elf-gcc@11.3.0-1.1 --verbose

The full details of installing the xPack GNU RISC-V Embedded GCC on various platforms can be found in the Install Guide.

Compliance​

The xPack GNU RISC-V Embedded GCC uses the official sources, with no functional changes:

  • GCC 11.3.0
  • binutils 2.38
  • gdb 12.1
  • newlib 4.2.0.20211231
  • python 3.10.4

Supported libraries​

The default architecture/ABI pair is rv32imac/ilp32.

The other supported libraries are:

$ riscv-none-elf-gcc -print-multi-lib
.;
rv32e/ilp32e;@march=rv32e@mabi=ilp32e
rv32ea/ilp32e;@march=rv32ea@mabi=ilp32e
rv32eac/ilp32e;@march=rv32eac@mabi=ilp32e
rv32ec/ilp32e;@march=rv32ec@mabi=ilp32e
rv32em/ilp32e;@march=rv32em@mabi=ilp32e
rv32ema/ilp32e;@march=rv32ema@mabi=ilp32e
rv32emac/ilp32e;@march=rv32emac@mabi=ilp32e
rv32emc/ilp32e;@march=rv32emc@mabi=ilp32e
rv32i/ilp32;@march=rv32i@mabi=ilp32
rv32ia/ilp32;@march=rv32ia@mabi=ilp32
rv32iac/ilp32;@march=rv32iac@mabi=ilp32
rv32iaf_zicsr/ilp32f;@march=rv32iaf_zicsr@mabi=ilp32f
rv32iafc_zicsr/ilp32f;@march=rv32iafc_zicsr@mabi=ilp32f
rv32iafd_zicsr/ilp32d;@march=rv32iafd_zicsr@mabi=ilp32d
rv32iafdc_zicsr/ilp32d;@march=rv32iafdc_zicsr@mabi=ilp32d
rv32ic/ilp32;@march=rv32ic@mabi=ilp32
rv32if_zicsr/ilp32f;@march=rv32if_zicsr@mabi=ilp32f
rv32ifc_zicsr/ilp32f;@march=rv32ifc_zicsr@mabi=ilp32f
rv32ifd_zicsr/ilp32d;@march=rv32ifd_zicsr@mabi=ilp32d
rv32ifdc_zicsr/ilp32d;@march=rv32ifdc_zicsr@mabi=ilp32d
rv32im/ilp32;@march=rv32im@mabi=ilp32
rv32ima/ilp32;@march=rv32ima@mabi=ilp32
rv32imaf_zicsr/ilp32f;@march=rv32imaf_zicsr@mabi=ilp32f
rv32imafc_zicsr/ilp32f;@march=rv32imafc_zicsr@mabi=ilp32f
rv32imafd_zicsr/ilp32d;@march=rv32imafd_zicsr@mabi=ilp32d
rv32imafdc_zicsr/ilp32d;@march=rv32imafdc_zicsr@mabi=ilp32d
rv32imc/ilp32;@march=rv32imc@mabi=ilp32
rv32imf_zicsr/ilp32f;@march=rv32imf_zicsr@mabi=ilp32f
rv32imfc_zicsr/ilp32f;@march=rv32imfc_zicsr@mabi=ilp32f
rv32imfd_zicsr/ilp32d;@march=rv32imfd_zicsr@mabi=ilp32d
rv32imfdc_zicsr/ilp32d;@march=rv32imfdc_zicsr@mabi=ilp32d
rv64i/lp64;@march=rv64i@mabi=lp64
rv64ia/lp64;@march=rv64ia@mabi=lp64
rv64iac/lp64;@march=rv64iac@mabi=lp64
rv64iaf_zicsr/lp64f;@march=rv64iaf_zicsr@mabi=lp64f
rv64iafc_zicsr/lp64f;@march=rv64iafc_zicsr@mabi=lp64f
rv64iafd_zicsr/lp64d;@march=rv64iafd_zicsr@mabi=lp64d
rv64iafdc_zicsr/lp64d;@march=rv64iafdc_zicsr@mabi=lp64d
rv64ic/lp64;@march=rv64ic@mabi=lp64
rv64if_zicsr/lp64f;@march=rv64if_zicsr@mabi=lp64f
rv64ifc_zicsr/lp64f;@march=rv64ifc_zicsr@mabi=lp64f
rv64ifd_zicsr/lp64d;@march=rv64ifd_zicsr@mabi=lp64d
rv64ifdc_zicsr/lp64d;@march=rv64ifdc_zicsr@mabi=lp64d
rv64im/lp64;@march=rv64im@mabi=lp64
rv64ima/lp64;@march=rv64ima@mabi=lp64
rv64imac/lp64;@march=rv64imac@mabi=lp64
rv64imaf_zicsr/lp64f;@march=rv64imaf_zicsr@mabi=lp64f
rv64imafc_zicsr/lp64f;@march=rv64imafc_zicsr@mabi=lp64f
rv64imafd_zicsr/lp64d;@march=rv64imafd_zicsr@mabi=lp64d
rv64imafdc_zicsr/lp64d;@march=rv64imafdc_zicsr@mabi=lp64d
rv64imc/lp64;@march=rv64imc@mabi=lp64
rv64imf_zicsr/lp64f;@march=rv64imf_zicsr@mabi=lp64f
rv64imfc_zicsr/lp64f;@march=rv64imfc_zicsr@mabi=lp64f
rv64imfd_zicsr/lp64d;@march=rv64imfd_zicsr@mabi=lp64d
rv64imfdc_zicsr/lp64d;@march=rv64imfdc_zicsr@mabi=lp64d

Changes​

Compared to the upstream GNU release, there are no functional changes.

risc-none-elf-gcc​

For compliance reasons, starting with 11.x, the name of the toolchain was updated to risc-none-elf-gcc.

newlib-nano​

Support for newlib-nano is available using the --specs=nano.specs option. For better results, this option must be added to both compile and link time.

nosys.specs​

If no syscalls are needed, --specs=nosys.specs can be used at link time to provide empty implementations for the POSIX system calls.

Compile options​

The libraries are compiled with -O2 -mcmodel=medany. The nano version is compiled with -Os -mcmodel=medany.

caution

It is mandatory for the applications to be compiled with -mcmodel=medany, otherwise the link will fail.

Python​

Support for Python scripting was added to GDB. This distribution provides a separate binary, riscv-none-elf-gdb-py3 with support for Python 3.

The Python 3 run-time is included, so GDB does not need any version of Python to be installed, and is insensitive to the presence of other versions.

Text User Interface (TUI)​

Support for TUI was added to GDB. The ncurses library was added to the distribution.

note

TUI is not available on Windows

Bug fixes​

  • none

Enhancements​

  • none

Known problems​

  • due to the large number of libraries, the archive is >400 MB

Documentation​

The original documentation is available online.

Build​

The binaries for all supported platforms (Windows, macOS and GNU/Linux) were built using the xPack Build Box (XBB), a set of build environments based on slightly older distributions, that should be compatible with most recent systems.

The scripts used to build this distribution are in:

  • distro-info/scripts

For the prerequisites and more details on the build procedure, please see the README-MAINTAINER page.

CI tests​

Before publishing, a set of simple tests were performed on an exhaustive set of platforms. The results are available from:

Tests​

The binaries were tested on a variety of platforms, but mainly to check the integrity of the build, not the compiler functionality.

Checksums​

The SHA-256 hashes for the files are:

e3fda6401ea1a055a90bfe3116f4d46fdc9201280df7c3991bb964f4bad18886
xpack-riscv-none-elf-gcc-11.3.0-1-darwin-arm64.tar.gz

67c2f2d9bb530948610400e2b43aeef8a1d4913fae275b1edf04968019fb19b9
xpack-riscv-none-elf-gcc-11.3.0-1-darwin-x64.tar.gz

5a1729612cf187a9a3a395aab572bd3869491616998a9d298a0ae28c2a3bbf93
xpack-riscv-none-elf-gcc-11.3.0-1-linux-arm.tar.gz

2cd91f4bcc0c7a0f5b5beead3be834f6708d7a196f94f7728ac68e1ad06cee24
xpack-riscv-none-elf-gcc-11.3.0-1-linux-arm64.tar.gz

1c99fb1573ff2ed5deffce64cb96bb9272f351f054684c49dfd5ad41c6dd804d
xpack-riscv-none-elf-gcc-11.3.0-1-linux-x64.tar.gz

56cc2e340bdcaa718862b3526a7c550605e699847a8903e471336ba0a4535c68
xpack-riscv-none-elf-gcc-11.3.0-1-win32-x64.zip

Deprecation notices​

32-bit support​

Support for 32-bit Intel Linux and Intel Windows was dropped in 2022. Support for 32-bit Arm Linux (armv7l) will be preserved for a while, due to the large user base of 32-bit Raspberry Pi systems.

Linux minimum requirements​

Support for RedHat 7 was dropped in 2022 and the minimum requirement was raised to GLIBC 2.27, available starting with Ubuntu 18, Debian 10 and RedHat 8.

Download analytics​

Credit to Shields IO for the badges and to Somsubhra/github-release-stats for the individual file counters.