Toolchain Projects

This page gives an overview of upstream projects. If you miss information or find mistakes, please edit.


ABIs, APIs, and other conventions

The main document for RISC-V ABI/ELF-related information is the RISC-V ELF psABI document, which can be found here: https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md

An overview of other RISC-V ABI/API related documents can be found here: https://github.com/riscv/riscv-elf-psabi-doc/blob/master/README.md

The following RISC-V ABIs are currently defined:

  • 32-bit

    • ILP32, ILP32F, ILP32D, ILP32E

  • 64-bit

    • LP64, LP64F, LP64D, LP64Q, LP64E

Calling conventions

There are two calling conventions for GP registers in the RISC-V ecosystem:

Default library path

The rich set of APIs has the consequence, that glibc's default library path includes a subdirectory for the actual ABI (e.g. "/usr/lib64/lp64d" for LP64D).
These default paths are defined here: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/riscv/configure.ac;


Binutils

The GNU Binutils are a collection of binary tools (GNU linker, GNU assembler, many other excellent tools such as gprof).

RISC-V maintainers

  • Andrew Waterman (SiFive)

  • Palmer Dabbelt (Google)

  • Jim Wilson (SiFive)

  • Nelson Chu (RIVOSINC)

Releases

Rule of thumb: Binutils (GNU linker, GNU assembler, tons of other excellent tools) releases twice per year (mid July and mid January).

  • Binutils 2.41 (30 Jul 2023)

  • Binutils 2.40 (14 Jan 2023)

RISC-V status


GCC

The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (e.g. libstdc).

RISC-V maintainers

  • Andrew Waterman (SiFive)

  • Palmer Dabbelt (RIVOSINC)

  • Jim Wilson

  • Kito Cheng (SiFive)

GCC RISC-V community meetings

RISC-V GCC Patchwork Sync meetings

Releases

Rule of thumb: GCC closes the merge window for the next release in mid-November (once per year).

  • GCC 14 schedule

    • GCC 14 Stage 1 (starts 2024-04-30)

    • GCC 14 Stage 3 (starts 2024-11-16)

    • GCC 14 Stage 4 (starts 2025-01-17)

    • GCC 14.1 release (not defined; possibly May/June)

After stage 3 has started, new functionality may not be introduced.

The upstream release schedule can be found here.

The upstream release timeline can be found here.

RISC-V status

RV32G and RV64G are mostly implemented. However, there is still some optimization potential.


GDB

GDB is the GNU Project debugger.

RISC-V maintainers

  • Andrew Burgess (Embecosm)

  • Palmer Dabbelt (Google)

Releases

GDB major releases are approximately annually. There are typically one or two minor releases each year. This is the typical schedule:

  • major release branch/pre-release approximately 1 month before release

  • first minor release ("re-spin") approximately 3 months after major release

At the time of writing the most recent release was 14.1, released on 2020-12-03.

RISC-V status

Debugging works on top of PTRACE syscalls. HW-Breakpoint or HW-Watchpoint support is missing.


Glibc

Glibc is the GNU C library.

RISC-V maintainers

  • Palmer Dabbelt (Google)

  • Andrew Waterman (SiFive)

  • DJ Delorie (Red Hat)

  • Darius Rad(Bluespec)

Releases

Rule of thumb: Glibc releases twice per year (February and August).

Previous releases:

  • glibc 2.38 (2023-07-31)

  • glibc 2.37 (2023-02-01)

  • glibc 2.36 (2022-07-30)

RISC-V status

  • The following ABIs are supported:

    • ILP32, ILP32D, LP64, LP64D


LLVM

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.

RISC-V maintainer

  • Alex Bradbury (lowRISC)

LLVM RISC-V meetings

Releases

  • LLVM 17 schedule

    • LLVM 17.0.6  (28 Nov 2023)

The upstream release page can be found here.

RISC-V status


Newlib

Newlib is a C standard library implementation intended for use on embedded systems.

RISC-V maintainer

  • Kito Cheng (SiFive)

Releases

Rule of thumb: Newlib releases once per year.

Last releases:

  • Newlib 4.3.0 (20 Jan 2023)

RISC-V status

RV32 and RV64 are supported. Still, there is optimization and completeness potential.

RISC-V International