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::[email protected]

  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

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions