summaryrefslogtreecommitdiff
path: root/components/cplusplus/cpp11
diff options
context:
space:
mode:
authorseteiro <[email protected]>2026-10-10 20:34:34 +0800
committerRbb666 <[email protected]>2026-10-11 16:11:07 +0800
commit3577e7a6ed0f183534e207179de5251e155fd49e (patch)
tree424c4f10acd38b0807e7cfe25db1af1e92a44136 /components/cplusplus/cpp11
parent33b1dd58bafbd850e982191b5f138cf8d7578e61 (diff)
[components][libc] run .init_array constructors in cplusplus_system_init
Newer GCC emits C++ global constructors into .init_array, which many linker scripts keep outside [__ctors_start__, __ctors_end__), so they never ran. Walk __init_array_start/__init_array_end (weak) as well, skipping entries already covered by the ctors range. Add RT_USING_CPP_CRT_INIT for ports whose startup runtime already runs .init_array, default on for the simulator. With it set, only the .init_array walk is skipped; the ctors range is still walked. Renesas RA/RA_WIRELESS/RZ families select it when C++ is enabled: FSP SystemInit() already walks .init_array, so boards whose linker script only provides __init_array_* would run constructors twice. Boards that fold .init_array into the ctors range (ra6m3-hmi-board, ra8d1, rz) still run them once via RT-Thread. Also source env.sh and restore RTT_EXEC_PATH in ToolsCI project generate and dist steps so scons is on PATH (exit 127) and the ARM toolchain path is not overwritten by env.sh. Fixes #11778
Diffstat (limited to 'components/cplusplus/cpp11')
0 files changed, 0 insertions, 0 deletions