/
Toolchain Projects

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