Releases: MediaTek-Labs/nanomips-gnu-toolchain
nanoMIPS-2024.11-02
nanoMIPS GNU toolchain v2024.11-02
Published on January 08, 2025
- Introduction
- Release Notes
- Documentation
- Component Versions
- Downloads
- Bug Reporting
- License Agreements
Introduction
The nanoMIPS Toolchain includes example code, source code, and documentation to facilitate development of bare metal applications on nanoMIPS simulators and development boards. This is not a fully functional toolchain. These toolchains provide GNU components (assembler, linkers, libraries and utilities) that can be couple with clang/LLVM for building applications to run on nanoMIPS cores.
Component Description
- GNU 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
New Features
Bug Fixes
- GOLD linker now correctly expands DSP BPOSGE32C instruction in to 3 instructions using a trampoline, when the branch target is out of +16kB range.
- GDB simulator(nanomips-elf-run) will clear the DSP carry bit in the DSPcontrol register when there is no carry out of ADDSC instruction. Retaining the spurious carry can affect the correctness of a subsequent ADDWC instruction.
- Fix encoding of DSP prepend instruction in GNU assembler.
Other Changes
Known Issues
- The relocation-minimization pass in the assembler results in instructions with invalid branch targets in some cases. This pass is disabled by default and it is advisable to keep it disabled until further notice.
Documentation
Note These are external links to documents by MIPS Tech
- Getting Started Guide, v1.02
- nanoMIPS ABI Supplement, v1.03
- Programmer's Guide, v1.04
- nanoMIPS ABI Porting Guide, v1.02
- Tuning memcpy for MIPS Cores - whitepaper, v0.2
Component Versions
Component | Based on upstream version |
---|---|
binutils | 2.28 |
GCC | 6.3.0 |
newlib | 2.5.0 |
GDB | 8.0 |
QEMU | 2.5.0 |
gold | 2.30 |
smallClib | Internal |
Python | 2.7.16 |
Downloads
Prebuilt Binaries
Variant | Size | Checksum |
---|---|---|
Bare Metal Toolchain | ||
Linux x64 (.tgz) | [170M] | md5: 50c06d9968aaa46e0ddc06852714001a sha256: 34c1301f9579d0c97c71a449f04384a365b2db0f1ef95e96f5494152e36f727e |
Source Components
Component | Size | Checksum |
---|---|---|
binutils-2024.11-02.src.tgz | [51M] | md5: 69b839aea24c54f0b7e755f31e08b8a8 sha256: 3d28480136aa86d853614686a8005e5b5e26e7317f41fbcecfe4bae3e161e15f |
gdb-2024.11-02.src.tgz | [51M] | md5: 45e18511a783f60ef4f9f372b0cad551 sha256: 963bcc8dacc71cb19d75392f6a70040d47239ab2d56091cb0dbb3004255e38cf |
gold-2024.11-02.src.tgz | [52M] | md5: f12c43fe0acce1e3e70d2f87f0050098 sha256: ff2b14bae1d9697026c18ec4bf6de6a2116e0ccc1e8447f9424ba74d14809bc9 |
newlib-2024.11-02.src.tgz | [21M] | md5: 52d136b522066068958e030d715314dd sha256: 409020ee436be5eb20d41d0821acb1ea627d727bb52f139b71acccef403091e7 |
gcc-2024.11-02.src.tgz | [119M] | md5: 44b3ed79080455cb202903417cce4108 sha256: 3013920d67d52d75da91e90215b2bf76440ff8760434300f3dddb1a575c36595 |
smallclib-2024.11-02.src.tgz | [1M] | md5: 79ad29f7b69df6af459a9879fd6693a2 sha256: 4b8301f25aaa26639168ce3589e80874678e9c4ec1a672e7eedc376e70ca0759 |
qemu-2024.11-02.src.tgz | [90M] | md5: 9499bdcf184ec71647937ff3de4e2673 sha256: 262a07ec48884832323882ffb1d8d2ceee61fc3df2b88b470649779fdc06c6e6 |
packages-2024.11-02.src.tgz | [192M] | md5: 733b10eceabb99d4f67eac06e6bfa9c8 sha256: 6ad35493fb18a965775a2fa5f3b9dc3afe36e8a09854a4455103f9a9c7dd4cec |
python-2024.11-02.src.tgz | [22M] | md5: 9975608efb1ea6492387f50fe516bbd0 sha256: 2e27d7b9ecf548f7fc640725bd4affe62f3126154d4b34809641ce171a396b8a |
Bug Reporting
Report bugs for MediaTek's nanoMIPS GNU toolchain, here.
For reporting issues that are not target-specific, please see instructions provided within the source files of the concerned component.
License Agreements
License Categories
The components included in this toolchain fall under multiple license agreements:
- GPL v2 - QEMU, Linux
- GPL v3.1 - GNU toolchain, gdb, gmp, mpfr, libiconv
- LGPL v3 - mpc
- MIT / BSD style Licenses - Newlib, smallclib, tinyclib, libgloss/MIPS HAL, libffi, expat, ncurses
- zlib - zlib-libpng license
- PSFL v2 - python
To refer to the complete license text for any component, check the corresponding sources above.
Disclaimer of Warranties and Limitation of Liability
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
TO THE FULLEST EXTENT ALLOWED AND PERMITTED BY APPLICABLE LAWS AND REGULATIONS, MEDIATEK SHALL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE TO YOU OR ANY THIRD PARTY THROUGH YOU FOR PERSONAL INJURY OR ANY CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, INDIRECT, PUNITIVE OR SPECIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF DATA, BUSINESS INTERRUPTION OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR IN RELATION TO THIS AGREEMENT, YOUR USE OF THE Software Package and DOCUMENTATION, OR YOUR DEVELOPMENT OF APPLICATIONS, WHETHER BASED ON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR OTHERWISE, EVEN IF MEDIATEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
License Agreements
GPL v3.1
The source code is distributed under the GNU General Public License version 3,
with the addition under section 7 of an exception described in the "GCC
Runtime Library Exception, version 3.1" as follows (or see the file
COPYING.RUNTIME):
GCC RUNTIME LIBRARY EXCEPTION
Version 3.1, 31 March 2009
Copyright (C) 2009 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
This GCC Runtime Library Exception ("Exception") is an additional
permission under section 7 of the GNU General Public License, version
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.
When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.
- Definitions.
A file is an "Independent Module" if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
interface provided by the Runtime Library, but is not otherwise based
on the Runtime Library.
"GCC" means a version of the GNU Compiler Collection, with or without
modifications, governed by version 3 (or a specified later version) of
the GNU General Public License (GPL) with the option of using any
subsequent versions published by the FSF.
"GPL-compatible Software" is software whose conditions of propagation,
modification and use would permit combination with GCC in accord with
th...
nanoMIPS-2024.09-03
nanoMIPS GNU toolchain v2024.09-03
Published on November 12, 2024
- Introduction
- Release Notes
- Documentation
- Component Versions
- Downloads
- Bug Reporting
- License Agreements
Introduction
The nanoMIPS Toolchain includes example code, source code, and documentation to facilitate development of bare metal applications on nanoMIPS simulators and development boards. This is not a fully functional toolchain. These toolchains provide GNU components (assembler, linkers, libraries and utilities) that can be couple with clang/LLVM for building applications to run on nanoMIPS cores.
Component Description
- GNU 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
New Features
- The toolchain implements a 64-bit
time_t
type to avoid the Y2K38 issue. This must be explicitly enabled by passing the flag -muse-64bit-time_t on the compiler command line and it has the following effects:
time_t as defined by #include <time.h> becomes 64-bit wide- Compiler defines macro
__nanomips_64bit_time_t__
which user code can use to detect this condition. - Library search paths in the link command get updated to use a standard C library with 64-bit time_t.
- Note: Link command-lines that specify an explicit search path for the C library must be manually updated!
- ABI Version field in the ELF header of output objects is incremented to 1 and these objects can not be inter-linked with legacy objects that use a 32-bit time_t. A new linker option
-Wl,--allow-abi-mismatch
can be used to force inter-linking with a broken time_t ABI, if absolutely required. - Objects can be inspected with
nanomips-elf-readelf -h
and those built with the work-around enabled will exhibit an incremented ABI Version (1 instead of 0).
- Compiler defines macro
Bug Fixes
Other Changes
Known issues
- The relocation-minimization pass in the assembler results in instructions with invalid branch targets in some cases. This pass is disabled by default and it is advisable to keep it disabled until further notice.
Documentation
Note These are external links to documents by MIPS Tech
- Getting Started Guide, v1.02
- nanoMIPS ABI Supplement, v1.03
- Programmer's Guide, v1.04
- nanoMIPS ABI Porting Guide, v1.02
- Tuning memcpy for MIPS Cores - whitepaper, v0.2
Component Versions
Component | Based on upstream version |
---|---|
binutils | 2.28 |
GCC | 6.3.0 |
newlib | 2.5.0 |
GDB | 8.0 |
QEMU | 2.5.0 |
gold | 2.30 |
smallClib | Internal |
Python | 2.7.16 |
Downloads
Prebuilt Binaries
Variant | Size | Checksum |
---|---|---|
Bare Metal Toolchain | ||
Linux x64 (.tgz) | [171M] | md5: 9b9ab249a85f056c555fc261880a7b67 sha256: bdf77a448612cf5bbf36da924193a1b54385782a20743de30fcfe10366db840e |
Source Components
Component | Size | Checksum |
---|---|---|
binutils-2024.09-03.src.tgz | [51M] | md5: 0123c1c3b4609f21e97517b76ba1af54 sha256: 9f940360c94f7822436f93c57d7591e6c770f5c1a72279832c820580745a99a2 |
gdb-2024.09-03.src.tgz | [51M] | md5: 407857b2f24bcb584c30571ed1e94bc5 sha256: 812545a3c21525c36fdb4a862ec720d5c9c5324f499c9f523b1e2b4b2d717500 |
gold-2024.09-03.src.tgz | [52M] | md5: 5589036d213ea2dcc55a5813b7f1c755 sha256: 29ce33441bbb1dd7ce44cb00ecb14b70c832e6527aff3f22b48de494e11143e6 |
newlib-2024.09-03.src.tgz | [21M] | md5: 2b6b42a33ccbf2f93758dc369d260221 sha256: 70b3ac64197f39e3069afae720592057cb75ee67f331ff8921d4afdd7b33c070 |
gcc-2024.09-03.src.tgz | [119M] | md5: 3a6082e1fe5d14964486b1e44989e496 sha256: 49748fc93ca45de9bbd3fb733f35ae4175084de08d844747df12cab218416309 |
smallclib-2024.09-03.src.tgz | [1M] | md5: 11e39d70a6d77c900536dcc3d5a2f37e sha256: 9318a678ae2a1566f35c1f5b4dc510e7f738593e5cefefc1a001995ea7b0a6e6 |
qemu-2024.09-03.src.tgz | [90M] | md5: 39e74ce21af3a74f33d846bc2a6473cc sha256: af3360be8f82309f558f00fda876287ed85ff499337b47517baf2c45c6d8440f |
packages-2024.09-03.src.tgz | [192M] | md5: e91ea45c748a7631aa41ad8aba136677 sha256: c241c9f2771ce9495046dacf133e94499a3680c4c49c8e0ff7bfa6f17419edb6 |
python-2024.09-03.src.tgz | [22M] | md5: 4372b816c98027050e9c8bb7d2d9b3be sha256: f58cf539a311126180951ca2cd5c5d67ac26000d6a3ba9738d06fb5bb99d8c28 |
Bug Reporting
Report bugs for MediaTek's nanoMIPS GNU toolchain, here.
For reporting issues that are not target-specific, please see instructions provided within the source files of the concerned component.
License Agreements
License Categories
The components included in this toolchain fall under multiple license agreements:
- GPL v2 - QEMU, Linux
- GPL v3.1 - GNU toolchain, gdb, gmp, mpfr, libiconv
- LGPL v3 - mpc
- MIT / BSD style Licenses - Newlib, smallclib, tinyclib, libgloss/MIPS HAL, libffi, expat, ncurses
- zlib - zlib-libpng license
- PSFL v2 - python
To refer to the complete license text for any component, check the corresponding sources above.
Disclaimer of Warranties and Limitation of Liability
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
TO THE FULLEST EXTENT ALLOWED AND PERMITTED BY APPLICABLE LAWS AND REGULATIONS, MEDIATEK SHALL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE TO YOU OR ANY THIRD PARTY THROUGH YOU FOR PERSONAL INJURY OR ANY CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, INDIRECT, PUNITIVE OR SPECIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF DATA, BUSINESS INTERRUPTION OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR IN RELATION TO THIS AGREEMENT, YOUR USE OF THE Software Package and DOCUMENTATION, OR YOUR DEVELOPMENT OF APPLICATIONS, WHETHER BASED ON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR OTHERWISE, EVEN IF MEDIATEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
License Agreements
GPL v3.1
The source code is distributed under the GNU General Public License version 3,
with the addition under section 7 of an exception described in the "GCC
Runtime Library Exception, version 3.1" as follows (or see the file
COPYING.RUNTIME):
GCC RUNTIME LIBRARY EXCEPTION
Version 3.1, 31 March 2009
Copyright (C) 2009 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
This GCC Runtime Library Exception ("Exception") is an additional
permission under section 7 of the GNU General Public License, version
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.
When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.
- Definitions.
A file is an "Independent Module" if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
interface provided by the Run...
nanoMIPS-2024.07-02
nanoMIPS GNU toolchain v2024.07-02
Published on August 28, 2024
- Introduction
- Release Notes
- Documentation
- Component Versions
- Downloads
- Bug Reporting
- License Agreements
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.
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
New Features
- Provide dummy interfaces for floating point (fenv/cfenv) headers. Thor/nanoMIPS processor does not have hardware floating point capability. The library support provides is just sufficient to satisfy compile/link requirements for projects that refer to the interface.
Documentation
Note These are external links to docunments by MIPS Tech/Wave Computing.
- Getting Started Guide, v1.02
- nanoMIPS ABI Supplement, v1.03
- Programmer's Guide, v1.04
- nanoMIPS ABI Porting Guide, v1.02
- Tuning memcpy for MIPS Cores - whitepaper, v0.2
Component Versions
Component | Based on upstream version |
---|---|
binutils | 2.28 |
GCC | 6.3.0 |
musl | 1.1.16 |
newlib | 2.5.0 |
GDB | 8.0 |
QEMU | 2.5.0 |
gold | 2.30 |
smallClib | Internal |
Python | 2.7.16 |
Downloads
Prebuilt Binaries
Variant | Size | Checksum |
---|---|---|
Bare Metal Toolchain | ||
Linux x64 (.tgz) | [156M] | md5: cef4a004eb27de3cdc92b62b17c8665c sha256: c6b0b53b4807ad0b72827f3e5be2aeb012cbec91ee4ca8f07c5d75eacb0443e2 |
Source Components
Component | Size | Checksum |
---|---|---|
binutils-2024.07-02.src.tgz | [53M] | md5: 6688ae14f20bcc408a6f7876ff55030e sha256: 0f4156530642462ff69283eefd61b8912b6879611ffc991513a61d4d8531d828 |
gdb-2024.07-02.src.tgz | [52M] | md5: b6b535320bea76757624d64b5fb553fd sha256: 7d848df549cd77925100ea463014df9f4300be81cf11c4ccceaf3ac1fbc76b52 |
gold-2024.07-02.src.tgz | [54M] | md5: 5f26d3c5dbf4b22f28181e3b88471951 sha256: a4330d1a2284dfd1b74e2b51d3fdb9b629c7d9d8386dbf06c7d55193a91dc231 |
newlib-2024.07-02.src.tgz | [20M] | md5: a3fc02c828b54eecd6fc93a4188c74db sha256: eff32c1a3eca3bb29101e9dd76a509df07115a5ecb021d49004080a0f0d9239e |
gcc-2024.07-02.src.tgz | [125M] | md5: 0a04c83ea3b307ed5690cd5db840a6da sha256: 82a36166151c03660cd321ecfe202fe8939bde03a0ce827438efd6e823ec0ff3 |
smallclib-2024.07-02.src.tgz | [1M] | md5: d6e233f37bd9185a91647e5e95fbb487 sha256: bdb068f911075e9d13033aaabe3cf9997a957936dd6c41b91da97212ec1f5fa6 |
qemu-2024.07-02.src.tgz | [90M] | md5: ca75037b3ffcb2316f3b0dac6b5d48d4 sha256: 68e2e9f031149b0880fa6b78f594a88950d9038a4ebf6b8f34812be452424f8e |
musl-2024.07-02.src.tgz | [1M] | md5: 150a0867c52ec68b87631e9473a13847 sha256: 800b7b653a7aa7d77df828ebf85cd4d1b8acbdcfd990c12416d94a21888b2087 |
packages-2024.07-02.src.tgz | [192M] | md5: fbb919ed81766b5fc12e3da9c0228dd7 sha256: edc0e3b24cbd480144bda356b3c593532ba98fc5690c3ffcc2b0effd13716f9c |
python-2024.07-02.src.tgz | [22M] | md5: 457dddfcae2a08e7b346db3289d576f8 sha256: 168a676797a6750df556739c40bc91efbd97b9a5db9e251f3b62e6cc1d6e7c82 |
Bug Reporting
Report bugs for MediaTek's nanoMIPS GNU toolchain, here.
For reporting issues that are not target-specific, please see instructions provided within the source files of the concerned component.
License Agreements
License Categories
The components included in this toolchain fall under multiple license agreements:
- GPL v2 - QEMU, Linux
- GPL v3.1 - GNU toolchain, gdb, gmp, mpfr, libiconv
- LGPL v3 - mpc
- MIT / BSD style Licenses - Newlib, smallclib, tinyclib, libgloss/MIPS HAL, musl-libc, libffi, expat, ncurses
- zlib - zlib-libpng license
- PSFL v2 - python
To refer to the complete license text for any component, check the corresponding sources above.
Disclaimer of Warranties and Limitation of Liability
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
TO THE FULLEST EXTENT ALLOWED AND PERMITTED BY APPLICABLE LAWS AND REGULATIONS, MEDIATEK SHALL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE TO YOU OR ANY THIRD PARTY THROUGH YOU FOR PERSONAL INJURY OR ANY CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, INDIRECT, PUNITIVE OR SPECIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF DATA, BUSINESS INTERRUPTION OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR IN RELATION TO THIS AGREEMENT, YOUR USE OF THE Software Package and DOCUMENTATION, OR YOUR DEVELOPMENT OF APPLICATIONS, WHETHER BASED ON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR OTHERWISE, EVEN IF MEDIATEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
License Agreements
GPL v3.1
The source code is distributed under the GNU General Public License version 3,
with the addition under section 7 of an exception described in the "GCC
Runtime Library Exception, version 3.1" as follows (or see the file
COPYING.RUNTIME):
GCC RUNTIME LIBRARY EXCEPTION
Version 3.1, 31 March 2009
Copyright (C) 2009 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
This GCC Runtime Library Exception ("Exception") is an additional
permission under section 7 of the GNU General Public License, version
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.
When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.
- Definitions.
A file is an "Independent Module" if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
interface provided by the Runtime Library, but is not otherwise based
on the Runtime Library.
"GCC" means a version of the GNU Compiler Collection, with or without
modifications, governed by version 3 (or a specified later version) of
the GNU General Public License (GPL) with the option of using any
subsequent versions published by the FSF.
"GPL-compatible Software" is software whose conditions of propagation,
modification and use would permit combination with GCC in accord with
the license of GCC.
"Target Code" refers to output from any compiler for a real or virtual
target processor architecture, in executable form or suitable for
input to an assembler, loader, linker and/or execution
phase. Notwithstanding that, Target Code does not incl...
nanoMIPS-2024.01-02
Update README.md
nanoMIPS-2022.03-01
nanoMIPS GNU toolchain v2022.03-01
Published on March 21, 2022
- Introduction
- Release Notes
- Documentation
- Component Versions
- Downloads
- Bug Reporting
- License Agreements
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.
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. - GCC Linux (MUSL) Toolchain
For compiling Linux applications for Linux running on nanoMIPS cores.
Release Notes
New Features
- Update GCC from v6.3.0 to v11.2.0
- GCC now defaults to GNU C17 for compiling C code and to C++17 for compiling C++ code.
- GCC now defaults to DWARF version 5 for debug information structures, excluding line tables. Support libraries are still built with
-gdwarf-4
to maintain compatibility with the rest of the toolchain. - GCC now defaults to
-fno-common
. Multiple tentative definitions result in errors at link stage. - GCC now preserves auxiliary debug information created by the language front-end when doing LTO which increases final debug information size but eases debugging experience.
- A new
nanomips-elf-lto-dump
has been added. It dumps various information about LTO byte-code object files. - Various enhancements to existing GCC warnings as well the introduction of the new ones enabled by default as
-Wignored-attributes
,-Wshift-count-negative
,-Wstringop-*
,-Wfree-nonheap-object
and-Wbuiltin-declaration-mismatch
.
- Update binutils from v2.29 to v2.37
- Update newlib from v2.5.0 to v4.2.0
- Update qemu from v2.5 to v6.2.0
Bug Fixes
- C99 inlining semantics is now properly implemented by the GCC. Non-static functions having
inline
keyword that do not end up inlined by the GCC, require out of line definition and can cause missing symbol errors at the link stage if one is not provided in another object file. Proper fix in most cases is to applystatic
keyword to such functions.
Other Changes
- Internal LTO format has changed. LTO object files created with the prior versions of the toolchain cannot be linked with this release.
Known issues
- The
-fstack-check
feature is not supported. - The
-mfunc-opt-list
does not supportnoipa
attribute. - Dereferencing a pointer explicitly marked with aligned attribute less than the pointer's natural alignment, may produce unaligned access at runtime if passed as argument to a function.
Refer to the upstream release notes for GCC 11.2 for more details.
Documentation
Note These are external links to docunments by MIPS Tech/Wave Computing.
- Getting Started Guide, v1.02
- nanoMIPS ABI Supplement, v1.03
- Programmer's Guide, v1.04
- nanoMIPS ABI Porting Guide, v1.02
- Tuning memcpy for MIPS Cores - whitepaper, v0.2
Component Versions
Component | Based on upstream version |
---|---|
binutils | 2.37 |
GCC | 11.2.0 |
musl | 1.1.16 |
newlib | 4.2.0 |
GDB | 8.0 |
QEMU | 6.2.0 |
gold | 2.30 |
smallClib | Internal |
Python | 3.7.4 |
Downloads
Prebuilt Binaries
Variant | Size | Checksum |
---|---|---|
Bare Metal Toolchain | ||
Linux x64 (.tar.gz) | [168M] | md5: 16abf95c4909d7d187392ebc6c32e2c4 sha256: 72b700af37e6be7c92a5dc5e9a12f9236023a09866292b93253a956fc9204286 |
Windows 64 (.tar.gz) | [122M] | md5: eb5d860f121987a9d11065c395266681 sha256: 2358613dca04daea05cb732a53521f91796199ba76519d4b88417f18d0b33e7f |
Linux x86 (.tar.gz) | [171M] | md5: f21d3316650fb3431981c002312a03d0 sha256: 68c05ac1522dc2c2c64a645b1f490460812ba607bc51a7d144587c6a41b60b23 |
Windows x86 (.tar.gz) | [118M] | md5: 764ba0045137afa06dd88d1b3b678f8e sha256: 8951a500da066b375e747a7e819e0832c4fce44b615dbd3fe02d980b59e79b55 |
MUSL/Linux Toolchain | ||
Linux x64 (.tar.gz) | [184M] | md5: 6bb0b8a36b53762441cd5c16878b6fd0 sha256: 26dc4cc9b81d652757e6543f9c3c1f1932a3611e337a6727610c74de8750327e |
Windows 64 (.tar.gz) | [147M] | md5: 9a2576852dda88e3724d297a833e1dc5 sha256: b906c0bd0b624ae7ed5770a3d8da71cb302bde44baa88ce1a7a1c8eae9d917ec |
Linux x86 (.tar.gz) | [186M] | md5: 6859e59668b92ae644bd595712ec8d2a sha256: 8f487b3016ac8c18e0acf3f5620f4428e255a470dda009c88f9af7d9f21d7f19 |
Windows x86 (.tar.gz) | [142M] | md5: 38fd8ae3b0d16519aef947a8d2d8b093 sha256: 8b0aa8d4750af234e08ff544cf1ea1ca426b8dd266990a9c41c60c1467f0683d |
Source Components
Component | Size | Checksum |
---|---|---|
binutils-2022.03-01.src.tar.gz | [51M] | md5: 9c534173e7323807548babed97cf225e sha256: eb825018b62e70e666ea2a9abdb35c7354e5abf5229137d6496c173647e57bb6 |
gdb-2022.03-01.src.tar.gz | [51M] | md5: f24202cf90d1aae0912eed36432291f7 sha256: 142102f6c5c8a372b641c7ef97ef3386d97acc5080ac2b7f4540955c3820ab89 |
gold-2022.03-01.src.tar.gz | [52M] | md5: 90ccdd0fd2c7fde03cf58be032c2a58e sha256: 0e324dad66f26bd09bdac0cfb7a1eddf42da634f5abd3b2063d220f719ba1ba8 |
newlib-2022.03-01.src.tar.gz | [21M] | md5: b6bec7cb08f9dd7b456672b6d82d083a sha256: 89e71a1053b84df54f7e10d65f3355671f79859d2b97fe3e3a3037e6f9d89ebd |
gcc-2022.03-01.src.tar.gz | [119M] | md5: e1163f1a2032a0ed1799460fd953c1f4 sha256: bae9cf646817ca999db4ef4e2a5929a46abdf0b007a196c1a050228ad5879aad |
smallclib-2022.03-01.src.tar.gz | [1M] | md5: 6e907b59949edbb0bbc72e1339ae4dcd sha256: 83bb6d15a13a9354a924ad7fbd7ae1e919cc5be003944108a8a88323dedc9b03 |
qemu-2022.03-01.src.tar.gz | [90M] | md5: 4f22a3d705255a13edc5145e4d2c74df sha256: 7d896e824ab64d0608e62731e36778d23a0d89420485245218e153fa7fa87bac |
musl-2022.03-01.src.tar.gz | [1M] | md5: 3f4d763384966fc243e3b0ebeb3cd5bf sha256: 25127ad0737fad18eb2713c67f04db6ec4aefe2a3281c83e66932fe2381bcf7c |
packages-2022.03-01.src.tar.gz | [192M] | md5: 1fba8e5f262cb60800142a9735d2ac5d sha256: e227b97c9ba16781559feba47e03d98c17dd169d30fd6769d318f8bec18f46bd |
python-2022.03-01.src.tar.gz | [22M] | md5: 307abaaa75bd376ba1f43cb4e7162f7c sha256: 8f2206a574854320c1c49d20225b5df3ad673ea673afc2d0d8c098509232138c |
Bug Reporting
Report bugs for MediaTek's nanoMIPS GNU toolchain, here.
For reporting issues that are not target-specific, please see instructions provided within the source files of the concerned component.
License Agreements
License Categories
The components included in this toolchain fall under multiple license agreements:
- GPL v2 - QEMU, Linux
- GPL v3.0 - GNU toolchain, gdb, gmp, mpfr, libiconv
- LGPL v3 - mpc
- MIT / BSD style Licenses - Newlib, smallclib, tinyclib, libgloss/MIPS HAL, musl-libc, libffi, expat, ncu...
nanoMIPS-2021.11-07
nanoMIPS GNU toolchain v2021.11-07
Published on October 15, 2024
- Introduction
- Release Notes
- Documentation
- Component Versions
- Downloads
- Bug Reporting
- License Agreements
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.
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. - GCC Linux (MUSL) Toolchain
For compiling Linux applications for Linux running on nanoMIPS cores.
Release Notes
New Features
- The toolchain implements a 64-bit
time_t
type to avoid the Y2K38 issue. This must be explicitly enabled by passing the flag -muse-64bit-time_t on the compiler command line and it has the following effects:
time_t as defined by #include <time.h> becomes 64-bit wide- Compiled defines macro
__nanomips_64bit_time_t__
which user code can use to detect this condition. - Library search paths in the link command get updated to use a standard C library with 64-bit time_t.
Note: Link command-lines that specify an explicit search path for the C library must be manually updated! - ABI Version field in the ELF header of output objects is incremented to 1 and these objects can not be inter-linked with legacy objects that use a 32-bit time_t. A new linker option
-Wl,--allow-abi-mismatch
can be used to force inter-linking with a broken time_t ABI, if absolutely required. - Objects can be inspected with
nanomips-elf-llvm-readelf -h
and those built with the work-around enabled will exhibit an incremented ABI Version (1 instead of 0).
*Provide dummy interfaces for floating point (fenv/cfenv) headers. The nanoMIPS I7200 processor does not have hardware floating point capability. The library support provides is just sufficient to satisfy compile/link requirements for projects that refer to the interface.
- Compiled defines macro
Bug Fixes
Other Changes
Known issues
- The relocation-minimization pass in the assembler results in instructions with invalid branch targets in some cases. This pass is disabled by default and it is advisable to keep it disabled until further notice.
Documentation
Note These are external links to docunments by MIPS Tech/Wave Computing.
- Getting Started Guide, v1.02
- nanoMIPS ABI Supplement, v1.03
- Programmer's Guide, v1.04
- nanoMIPS ABI Porting Guide, v1.02
- Tuning memcpy for MIPS Cores - whitepaper, v0.2
Component Versions
Component | Based on upstream version |
---|---|
binutils | 2.28 |
GCC | 6.3.0 |
musl | 1.1.16 |
newlib | 2.5.0 |
GDB | 8.0 |
QEMU | 2.5.0 |
gold | 2.30 |
smallClib | Internal |
Python | 2.7.16 |
Downloads
Prebuilt Binaries
Variant | Size | Checksum |
---|---|---|
Bare Metal Toolchain | ||
Linux x64 (.tgz) | [131M] | md5: 3331a027b2096d7efc9c01eff6b12412 sha256: fcdf0afb376c4ba5c9f323f0f43a6da75664e4c0f16db4735c8d08616d43f8cf |
Windows 64 (.tgz) | [109M] | md5: 0fd4476f0b03ee5c504bf03122944e21 sha256: cae349f3844c31bac3c3e457e75e368996c9c491e1ada25363e8aab3eb536c66 |
Linux x86 (.tgz) | [136M] | md5: 6dfb96acbb1b34d2d2e2b839a3d87deb sha256: 187c6f4f7b0e6096f24d67ca50367d753b748157f2c750d2ac14e021e026bf52 |
Windows x86 (.tgz) | [106M] | md5: 9cdc466ab80c070bf26aee07c44582c9 sha256: 4b36af39eda5a226e24db94dedceedaaec8800da126f7072169a80dea08bbcb8 |
MUSL/Linux Toolchain | ||
Linux x64 (.tgz) | [129M] | md5: 49610f7fb4d9975c7890f0abcd3826c2 sha256: 739d177d01dc092b50ad07b2d8a5e04c03b8a61464fa2ba4f1cd03661a1e8f04 |
Windows 64 (.tgz) | [110M] | md5: b1977bf5d71fa3e10d80e063efaa1693 sha256: 663941257cf82199817936712a81e6afe8fd7f4f5a52395474917327785857b5 |
Linux x86 (.tgz) | [130M] | md5: 1c9ca78344ccc05065a0f0d8133a6456 sha256: b5b7f39d6ed805a359d64e4d9f7a9fc05652b989ab21fefcdb402239494b35a5 |
Windows x86 (.tgz) | [106M] | md5: a8d6299e78303d5136d6d18aca27ea29 sha256: da327cc8217e323267721b71ff47fc338135f104f3285223d3ab1366bc2e1985 |
Source Components
Component | Size | Checksum |
---|---|---|
binutils-2021.11-07.src.tar.gz | [51M] | md5: b49fc252b915b5d19f5be92d608dff13 sha256: 103763556c65a584fdd655258874765d41eb2ba6e40985dd3a2689fc1670a8db |
gdb-2021.11-07.src.tar.gz | [51M] | md5: 50b29bc9542f25351a591ba4ecbc0c22 sha256: 27527090024fb68b81c4910e48dd634bf05c8e1ddb47700352f8a72bc05c3284 |
gold-2021.11-07.src.tar.gz | [52M] | md5: 68c1b2c9091aa3b153aa97cffc86b37c sha256: dca8d373463460da99c09cb92a88b3c6770f066d1824a8b6516436ace49a3b03 |
newlib-2021.11-07.src.tar.gz | [20M] | md5: d70f15d9bb6ae760b27ea174abfc7afd sha256: f5e7bd326bf2185b0ac4bb7b8c6c7d606e6beaf2b80a752fb3a9b3c6af8729b0 |
gcc-2021.11-07.src.tar.gz | [112M] | md5: e35c4137878e3510526c1ea22474c58a sha256: 3dd8062732f3668b87164f51309459fa2c48d76626ce495b98ab8e7e09cc3cec |
smallclib-2021.11-07.src.tar.gz | [1M] | md5: fba6ac550bc49f509860e3e06ba6e447 sha256: ead8234605f2daaf10fe8dc9f11a486c811f9155cb60207a55b4d0700031d677 |
qemu-2021.11-07.src.tar.gz | [11M] | md5: f64003c4a44d90b98ca98f3ea14427bd sha256: f0d52dbd2d653108a5a75c1718476f0ae7c5895f913533d48785555b8dfaefc7 |
musl-2021.11-07.src.tar.gz | [1M] | md5: 99f82cd54b9cce1493abe6b1b9c14e2e sha256: 3627bc31278aca07114383b6c88d66ea4582e8f3ce88e262bd4f2227279ebe6d |
packages-2021.11-07.src.tar.gz | [189M] | md5: 43cb183ecd5eb7c15eb09b83874d3db3 sha256: e20f193f9d66280cfa7f5ac34b5c6184c984bdc23c969b9f068743311d82dc8f |
python-2021.11-07.src.tar.gz | [16M] | md5: 1ede895e9f32dbfcf5b7230a81f34d0a sha256: c8f98674db913b3a3d0c9356e21dcfc7a49de6e5dd72a330b154448a450ba511 |
Bug Reporting
Report bugs for MediaTek's nanoMIPS GNU toolchain, here.
For reporting issues that are not target-specific, please see instructions provided within the source files of the concerned component.
License Agreements
License Categories
The components included in this toolchain fall under multiple license agreements:
- GPL v2 - QEMU, Linux
- GPL v3.1 - GNU toolchain, gdb, gmp, mpfr, libiconv
- LGPL v3 - mpc
- MIT / BSD style Licenses - Newlib, smallclib, tinyclib, libgloss/MIPS HAL, musl-libc, libffi, expat, ncurses
- zlib - zlib-libpng license
- PSFL v2 - python
To refer to the complete license text for any component, check the corresponding sources above.
Disclaimer of Warranties and Limitation of Liability
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT L...
nanoMIPS-2021.11-05.2-nongnulibs
nanoMIPS GNU toolchain v2021.11-05.2-nongnulibs
Published on August 23, 2024
- Introduction
- Release Notes
- Documentation
- Component Versions
- Downloads
- Bug Reporting
- License Agreements
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 with some GNU library/runtime components replaced with non-GPL'd counterparts from LLVM13. This is a support release based on 2021.11-05.1-nongnulibs with minor changes to newlib.
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
This is a minor update on top of
New Features
- Provide dummy interfaces for floating point (fenv/cfenv) headers. The i7200 processor does not have hardware floating point capability. The library support provided here is just enough to satisfy compile/link requirements for projects that refer to the interface.
Documentation
Note These are external links to docunments by MIPS Tech/Wave Computing.
- Getting Started Guide, v1.02
- nanoMIPS ABI Supplement, v1.03
- Programmer's Guide, v1.04
- nanoMIPS ABI Porting Guide, v1.02
- Tuning memcpy for MIPS Cores - whitepaper, v0.2
Component Versions
Component | Based on upstream version |
---|---|
binutils | 2.28 |
GCC | 6.3.0 |
musl | 1.1.16 |
newlib | 2.5.0 |
GDB | 8.0 |
QEMU | 2.5.0 |
gold | 2.30 |
smallClib | Internal |
Python | 2.7.16 |
Downloads
Prebuilt Binaries
Variant | Size | Checksum |
---|---|---|
Bare Metal Toolchain | ||
Linux x64(.tar.gz) | [155M] | md5: e0863900285443084db72ead1e31df64 sha256: 1bdc82a5305c6ff0130feff1d59b30192709338fa1a820e60ad127620828cb37 |
Source Components
Component | Size | Checksum |
---|---|---|
llvm-project-2021.11-05-nongnulibs.src.tgz | [147M] | md5:32e3455149a6fbfac657332334a949e9 sha256:578185a05ee96afe7aced721bf3bfda7c693ba3003ae8eebbcf6b0e7c56b176c |
binutils-2021.11-02.src.tar.gz | [51M] | md5: cac44dcf275f91e86bd7800e8f822c47 sha256: 03bb8e1ea8c77132a8fb31cd347f70b82493d4fb4566b1d9e6858eb503a28166 |
gdb-2021.11-02.src.tar.gz | [51M] | md5: cd7dc7bccec345094e50f21703b3ac13 sha256: 3e870a666c349c929aa0cd4119c28fd67ce8ab28fc6dbee8d941081f9766306f |
gold-2021.11-02.src.tar.gz | [52M] | md5: 7cced0c043df3a8bbc245d8759e3a296 sha256: 6cfa0f352db00eaedf9fbb894ce45eb43edcb0c641f1716f66d3044c64256717 |
newlib-2021.11-05.2-nongnulibs.src.tar.gz | [19M] | md5:139c344c55cc72449e280629a72c93a1 sha256: 639711e41d1818125aa6bcc8db24cdad199dc7d5a5a7651512fdcafe4f02cb9e |
gcc-2021.11-02.src.tar.gz | [112M] | md5: 1e713b424de80d767f97c99023b46afc sha256: 78d83b7af01f51b229109eae2f4bef223b9cd3165d1d411aa7078572f2ca768b |
smallclib-2021.11-02.src.tar.gz | [1M] | md5: 8308f78c9323e5d9f9ab37dffc02d010 sha256: 2f4970fc839ed54ea78a1c5ee930b77274d61ca3f087bbf06ab506a68bd468f4 |
qemu-2021.11-02.src.tar.gz | [11M] | md5: 7862126d82e0c7a6d3bf7e72afff4e91 sha256: c98eddb3cf4a0f5ac06f46cf421a7931b305f41d3434c3e0c7e6f1f50a1caf6a |
musl-2021.11-02.src.tar.gz | [1M] | md5: 35df398c20c588f113e9993d2650e6d9 sha256: 006092876cc271989225be1a860ca3772625be162ed33daae08f1e23d9f7d2da |
packages-2021.11-02.src.tar.gz | [189M] | md5: ef2c4d8a50d453e60f314712262e4127 sha256: 23e9034041da67457635c3da370a29c45120d8557159d226db096505c4bcee45 |
python-2021.11-02.src.tar.gz | [16M] | md5: 23be3057efc8e0d39b89321cb6866b98 sha256: 9e80d55a898ca685ce8e31e029ba7a248d75df5e99f3b3d7cdfe68d2e3119787 |
Bug Reporting
Report bugs for MediaTek's nanoMIPS GNU toolchain, here.
For reporting issues that are not target-specific, please see instructions provided within the source files of the concerned component.
License Agreements
License Categories
The components included in this toolchain fall under multiple license agreements:
- GPL v2 - QEMU, Linux
- GPL v3.1 - GNU toolchain, gdb, gmp, mpfr, libiconv
- LGPL v3 - mpc
- MIT / BSD style Licenses - Newlib, smallclib, tinyclib, libgloss/MIPS HAL, musl-libc, libffi, expat, ncurses
- zlib - zlib-libpng license
- PSFL v2 - python
- LLVM - Apache License v2.0 with LLVM Exceptions
To refer to the complete license text for any component, check the corresponding sources above.
Disclaimer of Warranties and Limitation of Liability
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
TO THE FULLEST EXTENT ALLOWED AND PERMITTED BY APPLICABLE LAWS AND REGULATIONS, MEDIATEK SHALL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE TO YOU OR ANY THIRD PARTY THROUGH YOU FOR PERSONAL INJURY OR ANY CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, INDIRECT, PUNITIVE OR SPECIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF DATA, BUSINESS INTERRUPTION OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR IN RELATION TO THIS AGREEMENT, YOUR USE OF THE Software Package and DOCUMENTATION, OR YOUR DEVELOPMENT OF APPLICATIONS, WHETHER BASED ON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR OTHERWISE, EVEN IF MEDIATEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
License Agreements
GPL v3.1
The source code is distributed under the GNU General Public License version 3,
with the addition under section 7 of an exception described in the "GCC
Runtime Library Exception, version 3.1" as follows (or see the file
COPYING.RUNTIME):
GCC RUNTIME LIBRARY EXCEPTION
Version 3.1, 31 March 2009
Copyright (C) 2009 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
This GCC Runtime Library Exception ("Exception") is an additional
permission under section 7 of the GNU General Public License, version
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.
When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.
- Definitions.
A file is an "Independent Module" if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
inte...
nanoMIPS-2021.11-05.1-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 with some GNU library/runtime components replaced with non-GPL counter-parts from LLVM13. This is a support release based on v2021.11-05-nongnulibs with linker updates.
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
Software work-arounds
- Enabled via linker option
--fix-nmips-hw113064
. Linker will expandb[al]c[32]
with specific bit patterns intolapc[48] + j[al]rc
. - Enabled via linker option
--fix-nmips-hw142543
. Linker will expandb[al]c[32]
with specific bit patterns intolapc[48] + j[al]rc
. It will also expandmove.balc
with specific bit patterns intomove + balc[32]
.
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.
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.
nanoMIPS-2021.11-02.1
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 a support release based on v2021.11-02 with linker updates.
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
Software work-arounds
- Enabled via linker option
--fix-nmips-hw113064
. Linker will expandb[al]c[32]
with specific bit patterns intolapc[48] + j[al]rc
. - Enabled via linker option
--fix-nmips-hw142543
. Linker will expandb[al]c[32]
with specific bit patterns intolapc[48] + j[al]rc
. It will also expandmove.balc
with specific bit patterns intomove + balc[32]
.