nanoMIPS-2021.11-05-nongnulibs
Introduction
The nanoMIPS Toolchain includes example code, source code, and documentation to facilitate development of bare metal applications on nanoMIPS simulators and development boards. These toolchains provide compilers, linkers, libraries and utilities for building applications to run on nanoMIPS cores. This is the nongnulibs variant of the GNU toolchain, based on v2021.11-02 with some GNU library/runtime components replaced with non-GPL counter-parts from LLVM13.
Component Description
GCC Bare Metal Toolchain
This is a software engineer’s cross-development system for nanoMIPS processors, intended for statically linked embedded applications running on bare metal CPUs or light-weight operating systems.
Release Notes
Changes to generate nongnulibs variant
- Replace GCC builtins ( libgcc ) with the builtins library from CompilerRT.
- Replace C-runtime components from GCC (crtbegin.o, crtend.o) with corresponding versions from CompilerRT.
- Replace GNU standard C++ library ( libstdc++ ) with LLVM LibC++.
- Replace low-level headers from GCC with LLVM/Clang headers.
- The run-time library and headers are publicly available in MediaTek-labs llvm-project repository on branch mtk/nanomips-nongnu
Usage
- The default library/header/object paths in the toolchain have been replaced with symbolic links to the new components. One can use this toolchain as a drop-in replacement for GNU toolchain v2021.11-02.
- C++ clock interfaces, std::time() and std::steady_clock() required an implementation of gettimeofday() at the link step. This is not included in the toolchain and must be provided by the user.