Skip to content

Debug Mode Adds Unsupported -g2 Flag to Assembler, Causing Fatal Error #5005

Open
@AliveGh0st

Description

@AliveGh0st

Description:

When attempting to debug a project created with STM32Cube in PlatformIO, the assembler (arm-none-eabi-as) receives the -g2 flag, which it does not recognize, resulting in a fatal error. This issue prevents successful debugging even though the project compiles without errors in normal build mode.

Environment:

  • PlatformIO Version: 6.1.16
  • Platform: ST STM32
  • Board: genericSTM32F103ZE
  • Toolchain: arm-none-eabi-gcc (version 12.3.1)
  • Operating System: Windows 11

Build Configuration (platformio.ini):

[env:genericSTM32F103ZE]
platform = ststm32
board = genericSTM32F103ZE
build_flags =
  -g

Problem:

When initiating a debug session using pio debug -v, PlatformIO automatically adds the -g2 and -ggdb2 flags to both the GCC compiler and the assembler. While the compiler accepts these flags, the assembler (arm-none-eabi-as) does not recognize -g2, leading to the following fatal error:

Assembler messages:
Fatal error: unknown option `-g2'
*** [path_to_output.o] Error 1

Even though I forced the -g option in build_flags, it did not take effect.I added the following content to the configuration file, and the debug debugging can be used normally.

debug_build_flags =
    -g

Steps to Reproduce:

Create a new STM32Cube project using PlatformIO with the genericSTM32F103ZE board.
In platformio.ini, set -g as the debug flag.
Include an assembly startup file (e.g., startup_stm32f103zetx.s) in the project.
Build the project to confirm that it compiles without issues.
Start a debug session using pio debug -v.
Observe the assembler error related to the -g2 flag.

Log Output:

CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/genericSTM32F103ZE.html
PLATFORM: ST STM32 (17.6.0) > STM32F103ZE (64k RAM. 512k Flash)
HARDWARE: STM32F103ZET6 72MHz, 64KB RAM, 512KB Flash
DEBUG: Current (stlink) External (blackmagic, cmsis-dap, jlink, stlink)
PACKAGES:
 - toolchain-gccarmnoneeabi @ 1.120301.0 (12.3.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
[Dependency graph information]
Building in debug mode
arm-none-eabi-as -mthumb -mcpu=cortex-m3 -g2 -ggdb2 -o .pio\build\genericSTM32F103ZE\src\N1OS\Startup\startup_stm32f103zetx.o Startup\startup_stm32f103zetx.s
arm-none-eabi-gcc -o .pio\build\genericSTM32F103ZE\src\N1OS\Users\App\User\Program\app.o -c [additional flags including -g2 -ggdb2]
Assembler messages:
Fatal error: unknown option `-g2'
*** [.pio\build\genericSTM32F103ZE\src\N1OS\Startup\startup_stm32f103zetx.o] Error 1

Expected Behavior:

PlatformIO should respect the build_flags specified in the platformio.ini file and avoid adding unsupported flags like -g2 to the assembler. The debugger should initiate successfully without modifying the assembler flags in an incompatible way.

Actual Behavior:

During the debug build process, PlatformIO adds -g2 and -ggdb2 flags to both the GCC compiler and the assembler. While GCC handles these flags gracefully, the assembler does not recognize -g2, resulting in a fatal error and preventing the debug session from starting.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions