Skip to content

Generated GCC linker script not compatible with startup file for STM32F4xx_DFP #2318

@nizarnaouali-code

Description

@nizarnaouali-code

Describe the Bug
The generated GCC linker script and the startup file are not compatible for STM32F4xx .

To Reproduce
Steps to reproduce the behavior:

  • Create file intr.csolution.yml
solution:
  cdefault:
  compiler: GCC

  packs:
    - pack: ARM::CMSIS
    - pack: Keil::STM32F4xx_DFP@2.17.1

  target-types:
    - type: Device
      device: STMicroelectronics::STM32F429ZITx 

  build-types:
    - type: Debug
      optimize: debug
      debug: on

    - type: Release
      optimize: balanced
      debug: off

  projects:
    - project: ./intr.cproject.yml
  • Create file intr.cproject.yml
project:
  groups:
    - group: Application
      files:
        - file: ./src/main.c

  components:
    - component: CMSIS:CORE
    - component: Device:Startup
  • Build with:
cbuild -S intr.csolution.yml -c intr.Debug+Device --update-rte --packs
  • The GCC linker ld will signal missing synmbols from linker script:
/usr/lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/Keil_Device_Startup_2_6_3.dir/home/nizar/Work/Practice/Bare_Metal/Interrupts/RTE/Device/STM32F429ZITx/startup_stm32f429xx.S.obj: in function `LoopFillZerobss':
/home/nizar/Work/Practice/Bare Metal/Interrupts/RTE/Device/STM32F429ZITx/startup_stm32f429xx.S:61:(.text.Reset_Handler+0x38): undefined reference to `_estack'
/usr/lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /home/nizar/Work/Practice/Bare Metal/Interrupts/RTE/Device/STM32F429ZITx/startup_stm32f429xx.S:64:(.text.Reset_Handler+0x3c): undefined reference to `_sdata'
/usr/lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /home/nizar/Work/Practice/Bare Metal/Interrupts/RTE/Device/STM32F429ZITx/startup_stm32f429xx.S:65:(.text.Reset_Handler+0x40): undefined reference to `_edata'
/usr/lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /home/nizar/Work/Practice/Bare Metal/Interrupts/RTE/Device/STM32F429ZITx/startup_stm32f429xx.S:66:(.text.Reset_Handler+0x44): undefined reference to `_sidata'
/usr/lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /home/nizar/Work/Practice/Bare Metal/Interrupts/RTE/Device/STM32F429ZITx/startup_stm32f429xx.S:81:(.text.Reset_Handler+0x48): undefined reference to `_sbss'
/usr/lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /home/nizar/Work/Practice/Bare Metal/Interrupts/RTE/Device/STM32F429ZITx/startup_stm32f429xx.S:82:(.text.Reset_Handler+0x4c): undefined reference to `_ebss'
Memory region         Used Size  Region Size  %age Used
            ROM0:         288 B         2 MB      0.01%
            RAM0:        192 KB       192 KB    100.00%
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Expected behavior
The build process will give no issues.

Environment (please complete the following information):

  • [CMSIS_COMPILER_ROOT/gcc_linker_script.ld.src]
  • Version [2.12.0]
  • OS: [linux]

Additional context
When I change compiler to CLANG, The error disappears.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingquestionFurther information is requested

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions