All RISC-V GCC toolchains, if built correctly, are able to generate
both 32/64-bit code, based on
-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
Those emulated environments use system traps to communicate with the host,
libgloss library is implemented to terminate all POSIX system
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
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
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.