DW_OP_GNU_uninit emitted with -gstrict-dwarf
Investigating if DW_OP_GNU_uninit is correctly emitted with -gstrict-dwarf for arm-none-eabi toolchain.
Stephen Illingworth questions the emission of DW_OP_GNU_uninit when compiling with -gstrict-dwarf for the arm-none-eabi toolchain. He observed this operator in the debug information of an object file and seeks confirmation on whether this behavior is correct or if he is misusing the flag.
- proposer
Asks whether the `DW_OP_GNU_uninit` debug information operator should be emitted when compiling with the `-gstrict-dwarf` flag.
“Given that the '-gstrict-dwarf' has been specified I don't expect DW_OP_GNU_uninit to be emitted. Is this current behaviour correct? Am I doing something wrong?”
In Details
The user is querying the DWARF debug information generation for an embedded ARM target. Specifically, they observe the DW_OP_GNU_uninit operation, which typically indicates uninitialized local variables, being present despite using the -gstrict-dwarf flag. This flag is intended to enforce stricter adherence to DWARF standards, and its interaction with uninitialized variable reporting in this context is under scrutiny.
- DW_OP_GNU_uninit
- A DWARF opcode that indicates an uninitialized local variable. Its presence suggests that the compiler is explicitly marking variables as uninitialized in the debug information.
- DWARF
- A debugging data format used by many Unix-like systems to support debuggers. It contains information about variables, types, functions, and control flow.
- -gstrict-dwarf
- A GCC compiler flag that enforces stricter adherence to DWARF debugging information standards. It aims to produce more correct and compliant debug symbols.