This repository contains sources and build scripts for GNU Tools for STM32 C/C++ bare-metal toolchain included into STM32CubeIDE advanced development platform and part of the STM32Cube software ecosystem. It is based on ARM GNU Toolchain sources, with patches improving use in embedded systems.
- GNU C/C++ Compiler (GCC) - Upstream source code repository
- GNU Binutils - Upstream source code repository
- GDB - Upstream source code repository
- Newlib - Upstream source code repository
See LICENSE.md
- GNU/Linux
- Windows
- macOs
For communication and support, please refer to:
- ST Support Center for any defect
- ST Community MCUs or MPUs forums
Patch | Description |
---|---|
Fix for long path issues on Windows | Windows has a limit of the number of characters in paths to files. This fix allows up to 248 characters in paths to GCC toolchain binaries and up to 4096 characters for all files processed by the GCC tools. Without the patch the latter limit is about 150 characters. |
Provide Newlib string function compatible with all platforms | Adds aliases for Newlib string functions. Enables the functions to be called on all target platforms without changing the target source code. Useful for unit testing of target source code on Windows. |
Provide compatibility with IAR EW projects | Adds pre-processor symbol __FILE_NAME__ which is used in IAR EW. Will be required for import of IAR EW projects. |
Enable debugging of functions in target libraries libg or libg_nano | Updates the GCC build scripts for libg and libg_nano in Newlib, so that debug symbols are not stripped. |
Correct stack usage for functions with inline assembler | Required by Stack Analyzer advanced debug function in CubeIDE. |
Reduce Newlib code size by 10-30% | Updates the GCC build scripts for Newlib to use -Os instead of -O2. Beneficial in most embedded projects. |
Prepare for calculation of cyclomatic complexity | Provides the ability to calculate cyclomatic complexity of the target source code processed by GCC. The patch integrates the plugin into GCC binaries. |
Include librdimon-v2m.a in delivery for both Newlib variants | Support rdimon on Cortex-A by including librdimon-v2m.a for the Newlib-nano. |
- string merge section map output
- ld: fix alignment issue for ARM thumb long branch stub using PureCode section
- arm: Always use vmov.f64 instead of vmov.f32 with MVE
- libstdc++: Remove some more unconditional uses of atomics
- testsuite: Tweak xfail bogus g++.dg/warn/Wstringop-overflow-4.C:144, PR106120
- tree-optimization/111294 - backwards threader PHI costing
- c++/modules: anon union member of as-base class [PR112580]
- c-family: -Waddress-of-packed-member and casts
- analyzer: deal with -fshort-enums
- testsuite: Prune warning about size of enums
- testsuite: Verify -fshort-enums and -fno-short-enums in pr33738.C
- testsuite: Add -fno-short-enums to pr97315-1.C
- testsuite: remove -fwrapv from signbit-5.c
- testsuite: Add -fwrapv to signbit-5.c
- Make mve_fp_fpu[12].c accept single or double precision FPU
- testsuite: Disable finite math only for test [PR115826]
- arm: testsuite: fix issues relating to fp16 alternative testing
- testsuite: Align testcase with implementation [PR105090]
- testsuite: Remove gcc.dg/tree-ssa/scev-3.c -4.c and 5.c
- testsuite: Cut down 27_io/basic_istream/.../94749.cc for simulators
- testsuite: fix the condition bug in tsvc s176