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. |
- libctf: Return CTF_ERR in ctf_type_resolve_unsliced PR 30836
- libctf: Sanitize error types for PR 30836
- testsuite: Fix expand-return CMSE test for Armv8.1-M [PR115253]
- arm: Zero/Sign extends for CMSE security on Armv8-M.baseline [PR115253]
- testsuite: Verify r0-r3 are extended with CMSE
- arm: Zero/Sign extends for CMSE security
- Disallow pointer operands for |, ^ and partly & [PR106878]
- Properly honor param_max_fsm_thread_path_insns in backwards threader
- libstdc++: Fix std::random_device::entropy() for non-posix targets
- tree-optimization/67196 - normalize use predicates earlier
- tree-optimization/99412 - reassoc and reduction chains
- [PR40457] [arm] expand SI-aligned movdi into pair of movsi
- -Wdangling-pointer: don't mark SSA lhs sets as stores
- libstdc++: Add preprocessor checks to <experimental/internet> [PR100285]
- c++: Allow module name to be a single letter on Windows
- libcpp/remap: Only override if string matched
- c++: Use in-process client when networking is disabled
- lto: Always quote path to touch
- Improve sorry message for -fzero-call-used-regs
- Introduce -nostdlib++ option
- testsuite: Cut down 27_io/basic_istream/.../94749.cc for simulators
- testsuite: fix proc unsupported overriding in modules.exp [PR108899]
- testsuite: Fix up modules.exp [PR108899]
- testsuite: Skip module_cmi_p and related unsupported module test
- c++: testsuite: require lto_incremental in pr90990_0.C
- [PR105224] C++ modules and AAPCS/ARM EABI clash on inline key methods
- [PR102706] [testsuite] -Wno-stringop-overflow vs Warray-bounds
- [PR51534] [arm] split out pr51534 test for softfp
- [PR42093] [arm] [thumb2] disable tree-dce for test
- testsuite: Require vectors of doubles for pr97428.c
- xfail fp-uint64-convert-double-* on all arm targets
- [arm] xfail fp-uint64-convert-double tests
- [PATCH] testsuite: constraint some of fp tests to hard_float
- testsuite: Accept pmf-vbit-in-delta extra warning
- [testsuite] [arm/aarch64] -fno-short-enums for auto-init-[12].c
- testsuite: fix the condition bug in tsvc s176
- [testsuite] tsvc: skip include malloc.h when unavailable
- testsuite: Windows paths use \ and not /
- testsuite: Verify that module-mapper is available
- arm: Allow to override location of .gnu.sgstubs section
- testsuite: Sanitize fails for SP FPU on Arm
- libstdc++: Reduce <random> test iterations for simulators
- testsuite: 'b' instruction can't do long enough jumps
- testsuite: Windows reports errors with CreateProcess
- testsuite: /dev/null is not accessible on Windows
- [testsuite][arm] Fix cmse-15.c expected output
- libstdc++: Fix broken dg-prune-output
- testsuite: Only run test on target if VMA == LMA
- testsuite: Do not prefix linker script with "-Wl,"
- testsuite: Colon is reserved on Windows
- testsuite: Skip intrinsics test if arm
- testsuite: Skip intrinsics test if arm
- testsuite: gluefile file need to be prefixed
- testsuite: Fix mistransformed gcov
- gcov: Respect triplet when looking for gcov