You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

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

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


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