Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Update information with Toolchain

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

Table of Contents

...

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).

...

  • Andrew Waterman (SiFive)
  • Palmer Dabbelt (Google)
  • Jim Wilson (SiFive)
  • Nelson Chu (SiFiveRIVOSINC)

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.35 schedule:
  • Binutils 2.35 (2020-07-24)
  • Binutils 2.35.1 (2020-09-19)
  • Binutils 2.35.2 (2021-01-3041 (30 Jul 2023)
  • Binutils 2.36 schedule:Binutils 2.36 (2021-01-2440 (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).

...

  • Andrew Waterman (SiFive)
  • Palmer Dabbelt (GoogleRIVOSINC)
  • Jim Wilson (SiFive)
  • 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 11 14 schedule
    • GCC 11 14 Stage 1 (starts 20202024-04-30)
    • GCC 11 14 Stage 3 (starts 20202024-11-16)
    • GCC 11 14 Stage 4 (starts 20212025-01-17)
    • GCC 1114.1 release (not defined; possibly May/June)

...

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

...

GDB

GDB is the GNU Project debugger.

...

At the time of writing the most recent release was 1014.1, released on 2020-10-24. Dates for branching (and hence release) of GDB 11 have yet to be announced12-03.

RISC-V status

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

...

Previous releases:

  • glibc 2.32 38 (20202023-0807-0531)
  • glibc 2.33 37 (20212023-02-01)
  • glibc 2.34 36 (20212022-0807-0130)

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.

...

Releases

  • LLVM 12 17 schedule
    • LLVM 1217.0.0 RC1 (branching) (2021-01-26)
    • LLVM 12.0.0 RC2 (2021-02-23)
    • LLVM 12.0.0 final (2021-03-02)

The upstream release page can be found here.

RISC-V status

    • 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.

...

Rule of thumb: Newlib releases once per year.

Last releases:

  • Newlib 34.3.0 (2020-01-22)
  • Newlib 4.0.0 (2020-11-17)
  • Newlib 4.1.0 (2020-12-1820 Jan 2023)

RISC-V status

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