All RISC-V GCC toolchains, if built correctly, are able to generate both 32/64-bit code, based on -march and -mabi. Thus a single version is enough for all use cases.

For the moment the official RISC-V so called embedded toolchain is still more focused on running applications on emulators, more than on bare-metal platforms. Those emulated environments use system traps to communicate with the host, thus the libgloss library is implemented to terminate all POSIX system calls with ECALL, using a Unix-like API. These calls fail on a bare-metal platform, since there is no ECALL exception handler. To make things worse, the official RISC-V toolchain mandated the linker to include libgloss and there is no easy way to remove it.

The xPack GNU RISC-V Embedded GCC does not include libgloss in the builds; to differentiate between them, the prefix was changed, to make it closer to embedded use case.

For the moment RISC-V does not define an EABI (Embedded ABI) and uses the same Unix ABI for embedded applications too, thus -eabi- would not be accurate.


Comments on the content of this page that might be useful for other readers are welcomed here. For question and general support, please use the project forums.