[PATCH 0/2] Fully support standalone Clang/LLVM toolchains

Anup Patel anup at brainfault.org
Mon Jul 5 23:47:40 PDT 2021


On Mon, Jul 5, 2021 at 6:45 PM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> On Sun, Jul 4, 2021 at 1:56 AM Jessica Clarke <jrtc27 at jrtc27.com> wrote:
> >
> > This patch series is comprised of two parts.
> >
> > The first patch adds build system support for using Clang and LLVM
> > binutils, provided your Clang is able to locate a libgcc.a in its search
> > path.
> >
> > However, pure LLVM toolchains do not use libgcc, they use compiler-rt
> > (libclang_rt.builtins.<arch>.a). We could change the Makefile to not
> > hard-code -lgcc and instead use -print-libgcc-file-name, but that still
> > requires a bare metal compiler-rt built for the right -march/-mabi to be
> > present, which is often not the case. Moreover, we need very little from
> > libgcc/compiler-rt; RV64 needs nothing, and RV32 only needs 64-bit
> > division. Thus, the second patch vendors part of FreeBSD's libquad and
> > stops linking against libgcc entirely, allowing OpenSBI to be built with
> > just a cross-compiler. This means that building with any distro-provided
> > LLVM just works, as does compiling with the system Clang compiler and
> > LLD linker on FreeBSD without any external packages needed (beyond GNU
> > make).
>
> I am concerned about removing libgcc. If we want to support running
> OpenSBI on a processor without M extension, it would require us to
> link with libgcc, or compiler-rt.

We have mandated rv32ima or rv64ima as minimal requirement in
docs/platform_requirements.md. The 'I', 'M' and 'A' are very fundamental
extensions and we don't want to emulate these extensions in OpenSBI.

Further, a platform must support rv32gc or rv64gc to have platform
firmware binaries as-part of OpenSBI release tarball. If a platform
supports rv32ima or rv64ima but does not support rv32gc or rv64gc
then users have to compile platform firmware binaries from sources.

I think we are okay removing dependency on libgcc. since it allows
us to have llvm toolchain support in OpenSBI. Overall, I am quite
happy with this series.

Is there a pre-built llvm risc-v toolchain ?? or steps to create one ??

The BSD-2-clause is compatible with the BSD-3-clause used by
PATCH2. Am I correct ?

I hope we don't need to specifically mention anything in the
"Copyright and License" section of the top-level README.md
for BSD-3-clause licensed code ??

Regards,
Anup



More information about the opensbi mailing list