Skip to content

nanoMIPS-2021.11-05-nongnulibs

Compare
Choose a tag to compare
@farazs-github farazs-github released this 24 Apr 19:45
818736e

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.