Workaround for Cortex-M33 Arm toochain linking

Binaries generated for Cortex-M33 targets (e.g. Musca S1/B1) using
the Arm toolchain + CMake is unable to run, unless we instruct the
linker to not use floating points.

Note: This is a temporary workaround, because
* Ideally, the Arm linker should be able to auto detect the
  architecture support from the input object files, but it's not
  always the case. We already have a similar workaround for Cortex-M4.
* The full option to use should be `--cpu=Cortex-M33.no_dsp.no_fp`
  but `no_dsp` currently conflicts with CMake's compilation tests
  (no option to disable DSP in the test objects before linking).
pull/14401/head
Lingkai Dong 2021-03-09 17:35:48 +00:00
parent 866855df5c
commit 6dc85e0386
2 changed files with 14 additions and 0 deletions

View File

@ -12,6 +12,13 @@ elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
"-mcpu=cortex-m33+nodsp"
"-mfpu=none"
)
list(APPEND link_options
# Necessary as the linker does not always detect
# the architecture from the objectfiles correctly.
# Also, the complete flag should be "--cpu=Cortex-M33.no_dsp.no_fp"
# but this currently conflicts with CMake's compiler test until fixed
"--cpu=Cortex-M33.no_fp"
)
endif()
function(mbed_set_cpu_core_definitions target)

View File

@ -12,6 +12,13 @@ elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
"-mcpu=cortex-m33+nodsp"
"-mfpu=none"
)
list(APPEND link_options
# Necessary as the linker does not always detect
# the architecture from the objectfiles correctly.
# Also, the complete flag should be "--cpu=Cortex-M33.no_dsp.no_fp"
# but this currently conflicts with CMake's compiler test until fixed
"--cpu=Cortex-M33.no_fp"
)
endif()
function(mbed_set_cpu_core_definitions target)