From Fedora Project Wiki

(start some extra policy around dwarf)
 
No edit summary
 
Line 16: Line 16:


We could (should) enforce this at find-debuginfo.sh time in rpmbuild.  Before doing so we would want to verify that all the debuginfo-capable compilers in Fedora can emit DWARF.
We could (should) enforce this at find-debuginfo.sh time in rpmbuild.  Before doing so we would want to verify that all the debuginfo-capable compilers in Fedora can emit DWARF.
The kernel appears to emit STABS manually for some architectures.  Presumably there are firmware-level debuggers that know STABS but not DWARF?  Who knows, needs investigation.


We don't keep track of what compilers we ship.  The package review process might want to pick up on that.
We don't keep track of what compilers we ship.  The package review process might want to pick up on that.

Latest revision as of 20:24, 3 August 2012

Updates to debuginfo guidelines

Just some collected notes for the moment. Feedback welcome.

Summary

  • MUST: Debugging information in ELF objects must be DWARF.
  • MUST: Compilers with support for creating ELF objects with debugging information must default to DWARF for ELF.

Rationale

DWARF is the most widely supported and actively developed standard for debugging information in compiled executables. Older formats like STABS are basically moribund, and gdb can't do as good a job with non-DWARF formats. While there may be cases where individuals want to build binaries with other debug formats, Fedora packages should default to providing the best debugging experience possible.

Open Issues

We could (should) enforce this at find-debuginfo.sh time in rpmbuild. Before doing so we would want to verify that all the debuginfo-capable compilers in Fedora can emit DWARF.

The kernel appears to emit STABS manually for some architectures. Presumably there are firmware-level debuggers that know STABS but not DWARF? Who knows, needs investigation.

We don't keep track of what compilers we ship. The package review process might want to pick up on that.

Bytecode formats (python, java, etc) are not considered yet.

Mono PECOFF binaries are not considered yet. From a quick glance at the mono jit it looks like DWARF is the native format at least.

UEFI PECOFF binaries are not considered yet. It's not clear how useful standard debuginfo packages are for them anyway.

I don't believe there's any real support for any other true binary formats (Mach-O, other COFF variants).