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 REPLY 1
rlopes
Associate III

@Mahmoud Ben Romdhane can you help me on this?