Skip to content

Conversation

@Barto22
Copy link
Contributor

@Barto22 Barto22 commented Jan 11, 2026

Before merging and running this PR, this two must be merged: #17849 and #17850

Summary

This PR updates the build environment to use the latest Ubuntu 24.04 LTS base image and upgrades the GNU toolchains to:

  • ARM GCC 15.2.rel1
  • RISC-V GCC 15.2.0

All SIM board configurations that enable LIBCXX are now built with clang, as GCC < 15 lacks required builtin features for C++23 and libc++.

This continues the integration effort for LLVM libc++ and libc++abi (v21.1.8) in NuttX, enabling modern C++23-compatible standard library components including new language features and exception handling.

Impact

  • Modernizes CI and build environment to current LTS
  • Improves ARM/RISC-V toolchain compatibility
  • Ensures SIM + libc++ builds consistently via clang
  • Existing GNU libstdc++ and non-libc++ workflows remain unaffected

Current status:

  • Runtime / ABI: basic C++ exception handling is functional
  • Compatibility: legacy C++ toolchains are unaffected
  • Build systems: validated via make and cmake
  • Forward support: establishes a solid baseline for C++23 and libc++ work

No impact to existing boards or applications unless enabling libc++.

Testing

Host environment:

  • Linux x86_64 (Ubuntu 24.04 LTS Docker image)

Boards / Configurations tested:

  • stm32f4discovery:testlibcxx
  • esp32c3-devkit:testlibcxx

Toolchains:

  • ARM GCC 15.2.rel1
  • RISC-V GCC 15.2.0
  • clang (for SIM + libc++ targets)

Procedure:

  • Built with both make and cmake
  • Verified exception handling
  • Validated libc++ functionality
  • Confirmed non-libc++ builds remain functional

Status:

  • libc++ functionality verified
  • Exception handling working
  • No regressions detected

Logs and additional validation data are available on request.

@github-actions github-actions bot added Area: Build system Arch: arm Issues related to ARM (32-bit) architecture Area: OS Components OS Components issues Board: arm Board: risc-v Board: xtensa Size: L The size of the change in this PR is large labels Jan 11, 2026
This commit adds support for LLVM libcxx and libcxxabi version 21.1.8,
including necessary patches and CMake configuration for building with
NuttX.

Signed-off-by: Bartosz <bartol2205@gmail.com>
Fix exception handling issues in libcxx and libcxxabi to work properly
with NuttX's exception model.

Signed-off-by: Bartosz <bartol2205@gmail.com>
Add necessary changes to support ESP32 RISC-V initialization with
proper C++ constructor handling including code style fixes.

Signed-off-by: Bartosz <bartol2205@gmail.com>
@Barto22 Barto22 force-pushed the feature/add-support-for-latest-libcxx-and-libcxxabi branch from 6522e0c to 0b3dd30 Compare January 12, 2026 06:52
This commit adds support for threads using pthread support.

Signed-off-by: Bartosz <bartol2205@gmail.com>
@jerpelea jerpelea changed the title Add support for latest LLVM LIBCXX and LIBCXXABI version 21.1.8 libs: Add support for latest LLVM LIBCXX and LIBCXXABI version 21.1.8 Jan 12, 2026
jerpelea
jerpelea previously approved these changes Jan 12, 2026
Remove flag for long-calls for arm architecture.

Signed-off-by: Bartosz <bartol2205@gmail.com>
boards/sim/: Change gcc to clang

This commit will update Docker file to latest Ubuntu LTS with update of GCC for ARM and RISCV. Also SIM boards with LIBCXX are build with clang because GCC < 15 have lack of some builtin features.

Signed-off-by: Bartosz <bartol2205@gmail.com>
Fix cmake formatting.

Signed-off-by: Bartosz <bartol2205@gmail.com>
@Barto22 Barto22 requested a review from btashton as a code owner January 12, 2026 13:23
@github-actions github-actions bot added Area: Documentation Improvements or additions to documentation Area: Tooling Area: Build system Area: CI Area: Networking Effects networking subsystem Arch: arm Issues related to ARM (32-bit) architecture Arch: arm64 Issues related to ARM64 (64-bit) architecture Arch: avr Issues related to all AVR(8-bit or 32-bit) architectures Arch: risc-v Issues related to the RISC-V (32-bit or 64-bit) architecture Arch: simulator Issues related to the SIMulator Arch: sparc Issues related to the SPARC architecture Arch: tricore Issues related to the TriCore architecture from Infineon Arch: x86_64 Issues related to the x86_64 architecture Arch: xtensa Issues related to the Xtensa architecture Area: Drivers Drivers issues Area: File System File System issues Area: Sensors Sensors issues Area: Crypto Area: PCI Board: arm64 Board: simulator Size: XL The size of the change in this PR is very large. Consider breaking down the PR into smaller pieces. and removed Board: xtensa labels Jan 22, 2026
@Barto22 Barto22 closed this Jan 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Arch: arm Issues related to ARM (32-bit) architecture Arch: arm64 Issues related to ARM64 (64-bit) architecture Arch: avr Issues related to all AVR(8-bit or 32-bit) architectures Arch: risc-v Issues related to the RISC-V (32-bit or 64-bit) architecture Arch: simulator Issues related to the SIMulator Arch: sparc Issues related to the SPARC architecture Arch: tricore Issues related to the TriCore architecture from Infineon Arch: x86_64 Issues related to the x86_64 architecture Arch: xtensa Issues related to the Xtensa architecture Area: Build system Area: CI Area: Crypto Area: Documentation Improvements or additions to documentation Area: Drivers Drivers issues Area: File System File System issues Area: Networking Effects networking subsystem Area: OS Components OS Components issues Area: PCI Area: Sensors Sensors issues Area: Tooling Board: arm Board: arm64 Board: risc-v Board: simulator Size: L The size of the change in this PR is large Size: XL The size of the change in this PR is very large. Consider breaking down the PR into smaller pieces.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants