RISC-V International
This page gives an overview of upstream projects. If you miss information or find mistakes, please edit.
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:
There are two calling conventions for GP registers in the RISC-V ecosystem:
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;
The GNU Binutils are a collection of binary tools (GNU linker, GNU assembler, many other excellent tools such as gprof).
Rule of thumb: Binutils (GNU linker, GNU assembler, tons of other excellent tools) releases twice per year (mid July and mid January).
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).
Rule of thumb: GCC closes the merge window for the next release in mid-November (once per year).
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.
RV32G and RV64G are mostly implemented. However, there is still some optimization potential.
GDB is the GNU Project debugger.
GDB major releases are approximately annually. There are typically one or two minor releases each year. This is the typical schedule:
At the time of writing the most recent release was 14.1, released on 2020-12-03.
Debugging works on top of PTRACE syscalls. HW-Breakpoint or HW-Watchpoint support is missing.
Glibc is the GNU C library.
Rule of thumb: Glibc releases twice per year (February and August).
Previous releases:
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
The upstream release page can be found here.
Newlib is a C standard library implementation intended for use on embedded systems.
Rule of thumb: Newlib releases once per year.
Last releases:
RV32 and RV64 are supported. Still, there is optimization and completeness potential.