RISC-V International

Page tree
Skip to end of metadata
Go to start of metadata

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

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 (SiFive)

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-30)
  • Binutils 2.36 schedule:
    • Binutils 2.36 (2021-01-24)

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 (Google)
  • Jim Wilson (SiFive)
  • Kito Cheng (SiFive)

GCC RISC-V community meetings

Releases

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

  • GCC 11 schedule
    • GCC 11 Stage 1 (starts 2020-04-30)
    • GCC 11 Stage 3 (starts 2020-11-16)
    • GCC 11 Stage 4 (starts 2021-01-17)
    • GCC 11.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 10.1, released on 2020-10-24. Dates for branching (and hence release) of GDB 11 have yet to be announced.

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.32 (2020-08-05)
  • glibc 2.33 (2021-02-01)
  • glibc 2.34 (2021-08-01)

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 12 schedule
    • LLVM 12.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


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 3.3.0 (2020-01-22)
  • Newlib 4.0.0 (2020-11-17)
  • Newlib 4.1.0 (2020-12-18)

RISC-V status

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

  • No labels