cancel
Showing results for 
Search instead for 
Did you mean: 

system_stm32wb0x.c - dangerous relocation: unsupported relocation

rlopes
Associate III

Subject: Linker Error: Multiple definitions of BLE assembly modules when using CubeMX v6.16.1 CMake generator on STM32WB09

Environment:

MCU: STM32WB09

CubeMX Version: 6.16.1

Toolchain: CMake / arm-none-eabi-gcc 14.3.1

IDE: VS Code with STM32CubeIDE Extension v3.7.0

Middleware: STM32_BLE (Bluetooth LE Stack)

Description: I am experiencing a linker failure when building a project generated with STM32CubeMX using the CMake toolchain option. While the project compiles and links correctly when using the standard STM32CubeIDE (Eclipse-based) workflow, the CMake-based build in VS Code fails during the linking stage.

The linker reports multiple definitions for several symbols located in the BLE Middleware assembly files. It appears that the same source files are being compiled into different targets and then linked together, causing collisions.

Key Error Logs:

[main] Building folder: C:/Users/reginaldo.lopes/Desktop/ble_test/build/Debug 
[build] Starting build
[driver] NOTE: You are building with preset Debug, but there are some overrides being applied from your VS Code settings.
[proc] Executing command: cube-cmake --build C:/Users/reginaldo.lopes/Desktop/ble_test/build/Debug --
[build] [0/1] Re-running CMake...
[build] Build type: Debug
[build] -- Configuring done (0.2s)
[build] -- Generating done (0.2s)
[build] -- Build files have been written to: C:/Users/reginaldo.lopes/Desktop/ble_test/build/Debug
[build] [1/69] Building C object CMakeFiles/ble_test.dir/System/Config/Debug_GPIO/app_debug.c.obj
[build] [2/69] Building C object CMakeFiles/ble_test.dir/System/Interfaces/usart_if.c.obj
[build] [3/69] Building C object CMakeFiles/ble_test.dir/STM32_BLE/Target/blenvm.c.obj
[build] [4/69] Building C object CMakeFiles/ble_test.dir/STM32_BLE/App/app_ble.c.obj
[build] [5/69] Building C object CMakeFiles/ble_test.dir/STM32_BLE/Target/bleplat.c.obj
[build] [6/69] Building C object CMakeFiles/ble_test.dir/STM32_BLE/Target/bleplat_cntr.c.obj
[build] [7/69] Building C object CMakeFiles/ble_test.dir/Core/Src/main.c.obj
[build] [8/69] Building C object CMakeFiles/ble_test.dir/Core/Src/radio.c.obj
[build] [9/69] Building C object CMakeFiles/ble_test.dir/Core/Src/pka.c.obj
[build] [10/69] Building C object CMakeFiles/ble_test.dir/Core/Src/gpio.c.obj
[build] [11/69] Building C object CMakeFiles/ble_test.dir/Core/Src/rng.c.obj
[build] [12/69] Building C object CMakeFiles/ble_test.dir/Core/Src/radio_timer.c.obj
[build] [13/69] Building C object CMakeFiles/ble_test.dir/Core/Src/stm32wb0x_hal_msp.c.obj
[build] [14/69] Building C object CMakeFiles/ble_test.dir/Core/Src/sysmem.c.obj
[build] [15/69] Building C object CMakeFiles/ble_test.dir/Core/Src/usart.c.obj
[build] [16/69] Building C object CMakeFiles/ble_test.dir/Core/Src/stm32wb0x_it.c.obj
[build] [17/69] Building C object CMakeFiles/ble_test.dir/Core/Src/app_entry.c.obj
[build] [18/69] Building ASM object CMakeFiles/ble_test.dir/startup_stm32wb09.s.obj
[build] [19/69] Building ASM object CMakeFiles/ble_test.dir/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj
[build] [20/69] Building C object CMakeFiles/ble_test.dir/Core/Src/syscalls.c.obj
[build] [21/69] Building ASM object CMakeFiles/ble_test.dir/Projects/Common/BLE/Modules/osal_memcpy.s.obj
[build] [22/69] Building ASM object CMakeFiles/ble_test.dir/Projects/Common/BLE/Startup/cpu_context_switch.s.obj
[build] [23/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rcc.c.obj
[build] [24/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Core/Src/system_stm32wb0x.c.obj
[build] [25/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_flash.c.obj
[build] [26/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_flash_ex.c.obj
[build] [27/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rcc_ex.c.obj
[build] [28/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_gpio.c.obj
[build] [29/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pwr.c.obj
[build] [30/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_dma.c.obj
[build] [31/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pwr_ex.c.obj
[build] [32/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_cortex.c.obj
[build] [33/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal.c.obj
[build] [34/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pka.c.obj
[build] [35/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_radio.c.obj
[build] [36/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rng.c.obj
[build] [37/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_radio_timer.c.obj
[build] [38/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_uart.c.obj
[build] [39/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/queued_writes/src/eatt_pwrq.c.obj
[build] [40/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_uart_ex.c.obj
[build] [41/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/evt_handler/src/ble_evt.c.obj
[build] [42/69] Building C object cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/stack/config/ble_stack_user_cfg.c.obj
[build] [43/69] Building C object cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/trace/adv_trace/stm32_adv_trace.c.obj
[build] [44/69] Building ASM object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj
[build] [45/69] Building C object cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/misc/stm32_mem.c.obj
[build] [46/69] Building C object cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/sequencer/stm32_seq.c.obj
[build] [47/69] Building C object cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/lpm/tiny_lpm/stm32_lpm.c.obj
[build] [48/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/device_context_switch.c.obj
[build] [49/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/NVMDB/Src/nvm_db_conf.c.obj
[build] [50/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Flash/flash_driver.c.obj
[build] [51/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Flash/flash_manager.c.obj
[build] [52/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/PKAMGR/Src/pka_manager.c.obj
[build] [53/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/NVMDB/Src/nvm_db.c.obj
[build] [54/69] Building ASM object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal_memcpy.s.obj
[build] [55/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Profiles/Src/gatt_profile.c.obj
[build] [56/69] Building ASM object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj
[build] [57/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Profiles/Src/gap_profile.c.obj
[build] [58/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/RTDebug/RTDebug.c.obj
[build] [59/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/RADIO_utils/Src/RADIO_utils.c.obj
[build] [60/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal.c.obj
[build] [61/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/stm_list.c.obj
[build] [62/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/stm32_lpm_if.c.obj
[build] [63/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/miscutil.c.obj
[build] [64/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_rng.c.obj
[build] [65/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_aes.c.obj
[build] [66/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_pka.c.obj
[build] [67/69] Building C object cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/cryptolib_hw_aes.c.obj
[build] [68/69] Linking C executable ble_test.elf
[build] FAILED: [code=1] ble_test.elf 
[build] C:\Windows\system32\cmd.exe /C "cd . && C:\Users\reginaldo.lopes\AppData\Local\stm32cube\bundles\gnu-tools-for-stm32\14.3.1+st.2\bin\arm-none-eabi-gcc.exe -mcpu=cortex-m0plus  -Wall -fdata-sections -ffunction-sections -O0 -g3 -mcpu=cortex-m0plus  -T "C:/Users/reginaldo.lopes/Desktop/ble_test/stm32wb09_flash.ld" --specs=nano.specs -Wl,-Map=ble_test.map -Wl,--gc-sections -Wl,--print-memory-usage cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Core/Src/system_stm32wb0x.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rcc.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rcc_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_flash.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_flash_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_gpio.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_dma.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pwr.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pwr_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_cortex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pka.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_radio.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_radio_timer.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rng.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_uart.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_uart_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/evt_handler/src/ble_evt.c.obj cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/queued_writes/src/eatt_pwrq.c.obj cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/stack/config/ble_stack_user_cfg.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/trace/adv_trace/stm32_adv_trace.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/misc/stm32_mem.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/sequencer/stm32_seq.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/lpm/tiny_lpm/stm32_lpm.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/device_context_switch.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Flash/flash_manager.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Flash/flash_driver.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/NVMDB/Src/nvm_db_conf.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/NVMDB/Src/nvm_db.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/PKAMGR/Src/pka_manager.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Profiles/Src/gatt_profile.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Profiles/Src/gap_profile.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/RADIO_utils/Src/RADIO_utils.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/RTDebug/RTDebug.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal_memcpy.s.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/stm_list.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/miscutil.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/stm32_lpm_if.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_rng.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_pka.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_aes.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/cryptolib_hw_aes.c.obj CMakeFiles/ble_test.dir/STM32_BLE/App/app_ble.c.obj CMakeFiles/ble_test.dir/STM32_BLE/Target/blenvm.c.obj CMakeFiles/ble_test.dir/STM32_BLE/Target/bleplat.c.obj CMakeFiles/ble_test.dir/STM32_BLE/Target/bleplat_cntr.c.obj CMakeFiles/ble_test.dir/System/Config/Debug_GPIO/app_debug.c.obj CMakeFiles/ble_test.dir/System/Interfaces/usart_if.c.obj CMakeFiles/ble_test.dir/Core/Src/main.c.obj CMakeFiles/ble_test.dir/Core/Src/gpio.c.obj CMakeFiles/ble_test.dir/Core/Src/pka.c.obj CMakeFiles/ble_test.dir/Core/Src/radio.c.obj CMakeFiles/ble_test.dir/Core/Src/radio_timer.c.obj CMakeFiles/ble_test.dir/Core/Src/rng.c.obj CMakeFiles/ble_test.dir/Core/Src/app_entry.c.obj CMakeFiles/ble_test.dir/Core/Src/usart.c.obj CMakeFiles/ble_test.dir/Core/Src/stm32wb0x_it.c.obj CMakeFiles/ble_test.dir/Core/Src/stm32wb0x_hal_msp.c.obj CMakeFiles/ble_test.dir/Core/Src/sysmem.c.obj CMakeFiles/ble_test.dir/Core/Src/syscalls.c.obj CMakeFiles/ble_test.dir/startup_stm32wb09.s.obj CMakeFiles/ble_test.dir/Projects/Common/BLE/Modules/osal_memcpy.s.obj CMakeFiles/ble_test.dir/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj CMakeFiles/ble_test.dir/Projects/Common/BLE/Startup/cpu_context_switch.s.obj -o ble_test.elf -LC:/Users/reginaldo.lopes/Desktop/ble_test/cmake/stm32cubemx/../../Middlewares/ST/STM32_BLE/cryptolib   -LC:/Users/reginaldo.lopes/Desktop/ble_test/cmake/stm32cubemx/../../Middlewares/ST/STM32_BLE/stack/lib -l:libcrypto.a  -l:stm32wb0x_ble_stack.a  -lm && cd ."
[build] C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/ble_test.dir/Projects/Common/BLE/Modules/osal_memcpy.s.obj: in function `Osal_MemCpy':
[build] C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Modules/osal_memcpy.s:29: multiple definition of `Osal_MemCpy'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal_memcpy.s.obj:C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Modules/osal_memcpy.s:29: first defined here
[build] C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/ble_test.dir/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj: in function `blue_unit_conversion':
[build] C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Modules/blue_unit_conversion.s:40: multiple definition of `blue_unit_conversion'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj:C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Modules/blue_unit_conversion.s:40: first defined here
[build] C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/ble_test.dir/Projects/Common/BLE/Startup/cpu_context_switch.s.obj: in function `CPUcontextSave':
[build] C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Startup/cpu_context_switch.s:41: multiple definition of `CPUcontextSave'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj:C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Startup/cpu_context_switch.s:41: first defined here
[build] C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/ble_test.dir/Projects/Common/BLE/Startup/cpu_context_switch.s.obj: in function `CPUcontextRestore':
[build] C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Startup/cpu_context_switch.s:75: multiple definition of `CPUcontextRestore'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj:C:/Users/reginaldo.lopes/Desktop/ble_test/Projects/Common/BLE/Startup/cpu_context_switch.s:75: first defined here
[build] C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/bin/ld.exe: warning: C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v6-m/nofp/crtn.o: missing .note.GNU-stack section implies executable stack
[build] C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/bin/ld.exe: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
[build] C:/Users/reginaldo.lopes/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/14.3.1+st.2/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/bin/ld.exe: cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj(CPUcontextRestore): Unknown destination type (ARM/Thumb) in cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Core/Src/system_stm32wb0x.c.obj
[build] cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Core/Src/system_stm32wb0x.c.obj: in function `SystemInit':
[build] C:/Users/reginaldo.lopes/Desktop/ble_test/Core/Src/system_stm32wb0x.c:208:(.text.SystemInit+0x26): dangerous relocation: unsupported relocation
[build] Memory region         Used Size  Region Size  %age Used
[build]              RAM:         64 KB        64 KB    100.00%
[build]            FLASH:      120112 B       508 KB     23.09%
[build]       REGION_NVM:           0 B         4 KB      0.00%
[build]       REGION_ROM:           0 B         6 KB      0.00%
[build] collect2.exe: error: ld returned 1 exit status
[proc] The command: cube-cmake --build C:/Users/reginaldo.lopes/Desktop/ble_test/build/Debug -- exited with code: 1
[build] ninja: build stopped: subcommand failed.
[driver] Build completed: 00:00:19.529
[build] Build finished with exit code 1

Observations: The build log shows that files like osal_memcpy.s, blue_unit_conversion.s, and cpu_context_switch.s are being compiled twice:

Once as part of the main project target (CMakeFiles/ble_test.dir/...).

Once as part of the Common target within the auto-generated CubeMX CMake directory (cmake/stm32cubemx/CMakeFiles/Common.dir/...).

Additionally, I am seeing a dangerous relocation: unsupported relocation error in system_stm32wb0x.c during SystemInit, which is likely a side effect of the inconsistent object linking caused by the duplicated assembly symbols.

Request: Is this a known bug in the CubeMX v6.16.1 CMake template for the WB series? Are there any recommended adjustments to the CMakeLists.txt or the .ioc configuration to prevent the generator from creating these redundant source entries?

 

 

1 ACCEPTED SOLUTION

Accepted Solutions

Hello @rlopes @vrxiaojie 

Issue is fixed in the latest STM32CubeMX release 6.17.0.

You can get it through this link.

Thanks

Mahmoud

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

View solution in original post

8 REPLIES 8
rlopes
Associate III

@Mahmoud Ben Romdhane can you help me on this?

Hello @rlopes 

Let me thank you for posting.

I am currently investigating this behavior, and I will get back to you ASAP.

Thanks.

Mahmoud

 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hello @rlopes 

I reproduced your behavior using STM32CubeMX 6.16.1 and GNU 13.3.but I did not get dangerous relocation error.

Could you please reproduce the test with GNU 13.3.1, knowing that you should add this flag on -z noexecstack on gcc-arm-none-eabi.cmake.

MahmoudBenRomdhane_0-1769174390437.png

To further the investigation, I also need the compilation console.

 

Thanks.

Mahmoud

 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

@Mahmoud Ben Romdhane 
The problem occurs when compiling in VS Code (CMAKE) using the latest version of the ST extension using STM32CubeMX 6.16.1 and GNU 13.3

Hello @rlopes 

Let me thank you for bringing this issue to our attention.

An internal ticket was submitted to the dedicated team (Internal Ticket Number:225823).

I will let you know when the issue is fixed.

Thanks.

Mahmoud

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hi @Mahmoud Ben Romdhane  

Is there any progress? I have same issue here. I'm using development tools NUCLEO-WB09KE. 

Environment:

STM32CubeMX 6.16.1

STM32Cube MCU Package for STM32WB0 Series v1.4.0

GNU 13.3.1 (STM32CubeCLT 1.20.0)

Clion 2025.1.4 

C:\windows\system32\cmd.exe /C "cd . && C:\ST\STM32CubeCLT_1.20.0\GNU-tools-for-STM32\bin\arm-none-eabi-gcc.exe -mcpu=cortex-m0plus  -Wall -fdata-sections -ffunction-sections -u _printf_float -O0 -g3 -mcpu=cortex-m0plus  -T "D:/WB09KE/stm32wb09_flash.ld" --specs=nano.specs -Wl,-Map=WB09KE.map -Wl,--gc-sections -Wl,--print-memory-usage cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Core/Src/system_stm32wb0x.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_tim.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_tim_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rcc.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_rcc_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_flash.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_flash_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_gpio.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_dma.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pwr.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pwr_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_cortex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_i2c.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_i2c_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_pka.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_radio.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_radio_timer.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_uart.c.obj cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir/__/__/Drivers/STM32WB0x_HAL_Driver/Src/stm32wb0x_hal_uart_ex.c.obj cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/evt_handler/src/ble_evt.c.obj cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/queued_writes/src/eatt_pwrq.c.obj cmake/stm32cubemx/CMakeFiles/STM32_BLE.dir/__/__/Middlewares/ST/STM32_BLE/stack/config/ble_stack_user_cfg.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/trace/adv_trace/stm32_adv_trace.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/misc/stm32_mem.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/sequencer/stm32_seq.c.obj cmake/stm32cubemx/CMakeFiles/Utilities.dir/__/__/Utilities/lpm/tiny_lpm/stm32_lpm.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/device_context_switch.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Flash/flash_manager.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Flash/flash_driver.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/NVMDB/Src/nvm_db_conf.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/NVMDB/Src/nvm_db.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/PKAMGR/Src/pka_manager.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Profiles/Src/gatt_profile.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/Profiles/Src/gap_profile.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/RADIO_utils/Src/RADIO_utils.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/RTDebug/RTDebug.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal_memcpy.s.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/stm_list.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/miscutil.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/stm32_lpm_if.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_rng.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_pka.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/hw_aes.c.obj cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Interfaces/cryptolib_hw_aes.c.obj CMakeFiles/WB09KE.dir/STM32_BLE/App/app_ble.c.obj CMakeFiles/WB09KE.dir/STM32_BLE/Target/blenvm.c.obj CMakeFiles/WB09KE.dir/STM32_BLE/Target/bleplat.c.obj CMakeFiles/WB09KE.dir/STM32_BLE/Target/bleplat_cntr.c.obj CMakeFiles/WB09KE.dir/System/Config/Debug_GPIO/app_debug.c.obj CMakeFiles/WB09KE.dir/System/Interfaces/usart_if.c.obj CMakeFiles/WB09KE.dir/Core/Src/main.c.obj CMakeFiles/WB09KE.dir/Core/Src/gpio.c.obj CMakeFiles/WB09KE.dir/Core/Src/dma.c.obj CMakeFiles/WB09KE.dir/Core/Src/i2c.c.obj CMakeFiles/WB09KE.dir/Core/Src/pka.c.obj CMakeFiles/WB09KE.dir/Core/Src/radio.c.obj CMakeFiles/WB09KE.dir/Core/Src/radio_timer.c.obj CMakeFiles/WB09KE.dir/Core/Src/app_entry.c.obj CMakeFiles/WB09KE.dir/Core/Src/usart.c.obj CMakeFiles/WB09KE.dir/Core/Src/stm32wb0x_it.c.obj CMakeFiles/WB09KE.dir/Core/Src/stm32wb0x_hal_msp.c.obj CMakeFiles/WB09KE.dir/Core/Src/stm32wb0x_hal_timebase_tim.c.obj CMakeFiles/WB09KE.dir/Core/Src/sysmem.c.obj CMakeFiles/WB09KE.dir/Core/Src/syscalls.c.obj CMakeFiles/WB09KE.dir/startup_stm32wb09.s.obj CMakeFiles/WB09KE.dir/Projects/Common/BLE/Modules/osal_memcpy.s.obj CMakeFiles/WB09KE.dir/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj CMakeFiles/WB09KE.dir/Projects/Common/BLE/Startup/cpu_context_switch.s.obj CMakeFiles/WB09KE.dir/Lib/stcc4/Src/stcc4_i2c.c.obj -o WB09KE.elf -LD:/WB09KE/cmake/stm32cubemx/../../Middlewares/ST/STM32_BLE/cryptolib   -LD:/WB09KE/cmake/stm32cubemx/../../Middlewares/ST/STM32_BLE/stack/lib -l:libcrypto.a  -l:stm32wb0x_ble_stack.a  -lm && cd ."
C:/ST/STM32CubeCLT_1.20.0/GNU-tools-for-STM32/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/WB09KE.dir/Projects/Common/BLE/Modules/osal_memcpy.s.obj: in function `Osal_MemCpy':
D:/WB09KE/Projects/Common/BLE/Modules/osal_memcpy.s:29: multiple definition of `Osal_MemCpy'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/osal_memcpy.s.obj:D:/WB09KE/Projects/Common/BLE/Modules/osal_memcpy.s:29: first defined here
C:/ST/STM32CubeCLT_1.20.0/GNU-tools-for-STM32/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/WB09KE.dir/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj: in function `blue_unit_conversion':
D:/WB09KE/Projects/Common/BLE/Modules/blue_unit_conversion.s:40: multiple definition of `blue_unit_conversion'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Modules/blue_unit_conversion.s.obj:D:/WB09KE/Projects/Common/BLE/Modules/blue_unit_conversion.s:40: first defined here
C:/ST/STM32CubeCLT_1.20.0/GNU-tools-for-STM32/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/WB09KE.dir/Projects/Common/BLE/Startup/cpu_context_switch.s.obj: in function `CPUcontextSave':
D:/WB09KE/Projects/Common/BLE/Startup/cpu_context_switch.s:41: multiple definition of `CPUcontextSave'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj:D:/WB09KE/Projects/Common/BLE/Startup/cpu_context_switch.s:41: first defined here
C:/ST/STM32CubeCLT_1.20.0/GNU-tools-for-STM32/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/WB09KE.dir/Projects/Common/BLE/Startup/cpu_context_switch.s.obj: in function `CPUcontextRestore':
D:/WB09KE/Projects/Common/BLE/Startup/cpu_context_switch.s:75: multiple definition of `CPUcontextRestore'; cmake/stm32cubemx/CMakeFiles/Common.dir/__/__/Projects/Common/BLE/Startup/cpu_context_switch.s.obj:D:/WB09KE/Projects/Common/BLE/Startup/cpu_context_switch.s:75: first defined here
C:/ST/STM32CubeCLT_1.20.0/GNU-tools-for-STM32/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: warning: C:/ST/STM32CubeCLT_1.20.0/GNU-tools-for-STM32/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v6-m/nofp/crtn.o: missing .note.GNU-stack section implies executable stack
C:/ST/STM32CubeCLT_1.20.0/GNU-tools-for-STM32/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: NOTE: This behaviour is deprecated and will be removed in a future version of the linker

 

 

vrxiaojie
Associate

I found a temporary solution to avoid this error.

in cmake/stm32cubemx/CmakeLists.txt, delete these.

vrxiaojie_0-1770106230045.png

However I have to delete these again after code generation from CubeMX. 

 

Hello @rlopes @vrxiaojie 

Issue is fixed in the latest STM32CubeMX release 6.17.0.

You can get it through this link.

Thanks

Mahmoud

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.