Skip to main content

xPack GNU RISC-V Embedded GCC v10.2.0-1.1 released

· 7 min read

Version 10.2.0-1.1 is a new release; it follows the upstream Sifive release v2020.12.0 from April 7, 2021.

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

There are binaries for x64 Windows, macOS (x64) and GNU/Linux (x64 and x86, Arm 64-bit).

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

Due to memory limitations during the build, there is no Arm 32-bit image.

Download​

The binary files are available from GitHub Releases.

Prerequisites​

  • x86/x64 GNU/Linux: any system with GLIBC 2.15 or higher (like Ubuntu 12 or later, Debian 8 or later, RedHat/CentOS 7 later, Fedora 20 or later, etc)
  • Arm GNU/Linux 64-bit: any system with GLIBC 2.23 or higher (like Ubuntu 16 or later, Debian 9 or later, RedHat/CentOS 8 or later, Fedora 24 or later, etc); (there is no Arm 32-bit image!);
  • x86/x64 Windows: Windows 7 with the Universal C Runtime (UCRT), Windows 8, Windows 10
  • x64 macOS: 10.13 or later

Install​

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

xpm install @xpack-dev-tools/riscv-none-elf-gcc@10.2.0-1.1.1 --verbose

Comprehensive instructions for installing xPack GNU RISC-V Embedded GCC on different platforms can be found in the Install Guide.

Compliance​

The xPack GNU RISC-V Embedded GCC generally follows the official SiFive RISC-V GCC releases), with as little differences as possible.

The current version is based on:

  • SiFive RISC-V GCC release v2020.12.0 from April 7, 2021, and includes the SiFive extensions, including the RVV vector support.

Changes​

There are no functional changes.

Improvements​

Compared to the original SiFive version, the same architecture and API options are supported, and there are minimal functional changes

  • libgloss was removed from the list of libraries always linked to the application, since it issues ECALL instructions that fail in bare metal environments

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-embed-gdb-py3 with support for Python 3.7.

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.

Support for Python 2 was discontinued.

Text User Interface (TUI)​

Support for TUI was added to GDB. The ncurses library (v6.2) was added to the distribution.

note

TUI is not available on Windows

Bug fixes​

  • none

Enhancements​

  • none

Known problems​

  • the SiFive v2020.12.0 release no longer includes libraries without the C (compressed) instructions; the list of multi-libs was expanded with 28 more libraries in v10.2.0-1.2
  • due to the very large number of instructions added by the vector support (~70K), the compiler sources became too large and it was not possible to build the Arm 32-bit image (#229)
  • the archive size got too big for the Windows 32-bit node to handle, and xpm install may fail with RangeError: Array buffer allocation failed; the 64-bit systems are not affected.

Documentation​

The original documentation is available in the share/doc folder.

Build​

The binaries for all supported platforms (Windows, macOS and Intel & Arm 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:

361eddbb7e5af900a49d1de8e2be37e8bdbb82acf1ca7729a4c8a967d110a95d
xpack-riscv-none-embed-gcc-10.2.0-1.1-darwin-x64.tar.gz

26a7bca59b93eab7c9adef485660c46cbfa24099ff7ca3aec0da50b621802973
xpack-riscv-none-embed-gcc-10.2.0-1.1-linux-arm64.tar.gz

f11eebf0761b1c054ec8ba88bde5398cc6ca2ded6f540c77c5859a52928a3524
xpack-riscv-none-embed-gcc-10.2.0-1.1-linux-ia32.tar.gz

9596a0cca454384d5ec7d56250ca2e91c435941f10ff54ebdaf60e63421d85eb
xpack-riscv-none-embed-gcc-10.2.0-1.1-linux-x64.tar.gz

6b026ba05dd3c8123a03014df47f13e3b1a17005a6f825569b587c1ad0462330
xpack-riscv-none-embed-gcc-10.2.0-1.1-win32-ia32.zip

e95cf9075dd03dd15d9020d0ae05542bd8079c41f990e4d29519c1fea7b32f03
xpack-riscv-none-embed-gcc-10.2.0-1.1-win32-x64.zip

Deprecation notices​

32-bit support​

Support for 32-bit Intel Linux and Intel Windows will most probably be dropped in 2022. Support for 32-bit Arm Linux 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 will most probably be dropped in 2022, and the minimum requirement will be raised to GLIBC 2.27, available starting with Ubuntu 18 and RedHat 8.

Download analytics​

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