mirror of
https://github.com/apache/nuttx.git
synced 2026-10-11 00:00:24 +00:00
With -mfdpic and -mlong-calls, GCC turns a call to an imported function in tail position into "ldr r3, [r9, #off]; bx r3". The GOT slot holds the address of the function descriptor, so the branch goes to the descriptor in RAM instead of through it, and the core faults. A normal call loads the code address and the data base from the descriptor first. GCC 13.2 and 15.3 both do this. Only an optimized build makes tail calls. The C++ library of apps/testing/fs/xipfs then faults in its constructor, which ends in a call to syslog(), and the test stops at "stage the C++ module". Pass -fno-optimize-sibling-calls with the other FDPIC flags, in the make build and the CMake build. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com> |
||
|---|---|---|
| .. | ||
| arm.cmake | ||
| armclang.cmake | ||
| armv6-m.cmake | ||
| armv7-a.cmake | ||
| armv7-m.cmake | ||
| armv7-m_armclang.cmake | ||
| armv7-m_clang.cmake | ||
| armv7-m_gcc.cmake | ||
| armv7-m_ghs.cmake | ||
| armv7-r.cmake | ||
| armv8-m.cmake | ||
| armv8-r.cmake | ||
| clang.cmake | ||
| elf.cmake | ||
| gcc.cmake | ||
| ghs.cmake | ||
| platform.cmake | ||
| Toolchain.cmake | ||