From Fedora Project Wiki
(update patch status)
(clean up text a bit)
Line 8: Line 8:
== Summary ==
== Summary ==


DWARF 4 added a new ".debug_types" section -- a relatively simple and cheap way to compress DWARF debugging information.  This feature changes Fedora to take advantage of this compression.
DWARF 4 added a new ".debug_types" section.  This section enables a relatively simple and cheap way to compress DWARF debugging information.  This feature changes Fedora to take advantage of this compression.


== Owner ==
== Owner ==
Line 23: Line 23:
== Detailed Description ==
== Detailed Description ==


This feature was implemented in GCC and GDB quite a while ago, but until now Fedora has not taken advantage of it.  The compression is quite good; building gdb with this option reduces the size of the final executable from 17M to 11M.
This feature works by enabling a compiler option that instructs GCC to put "large" types into comdat sections in the object files.  Then, the linker automatically merges all such shared types when linking.  Since types occupy a reasonable proportion of the DWARF data, and because types are often identically across compliation units, this results in space savings.
 
The .debug_types feature was implemented in GCC and GDB quite a while ago, but until now Fedora has not taken advantage of it.  The compression is quite good.  For exmaple, building gdb with this option reduces the size of the final executable from 17M to 11M.  A stripped gdb is 6.7M; meaning that this flag removes around 60% of the debuginfo.


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 69: Line 71:
== Release Notes ==
== Release Notes ==


TBD.
Packages built in Fedora 18 are compiled with -fdebug-types-section, yielding much smaller debuginfo packages.  The new debuginfo is specified by the DWARF 4 standard; some debuginfo-reading packages may need updates in order to understand the new data.  All DWARF-reading packages in Fedora 18 have been updated.


== Comments and Discussion ==
== Comments and Discussion ==

Revision as of 16:18, 3 April 2012


Debug Types Sections

Summary

DWARF 4 added a new ".debug_types" section. This section enables a relatively simple and cheap way to compress DWARF debugging information. This feature changes Fedora to take advantage of this compression.

Owner

  • Email: tromey@redhat.com

Current status

  • Targeted release: Fedora 18
  • Last updated: 2012-03-21
  • Percentage of completion: 50%


Detailed Description

This feature works by enabling a compiler option that instructs GCC to put "large" types into comdat sections in the object files. Then, the linker automatically merges all such shared types when linking. Since types occupy a reasonable proportion of the DWARF data, and because types are often identically across compliation units, this results in space savings.

The .debug_types feature was implemented in GCC and GDB quite a while ago, but until now Fedora has not taken advantage of it. The compression is quite good. For exmaple, building gdb with this option reduces the size of the final executable from 17M to 11M. A stripped gdb is 6.7M; meaning that this flag removes around 60% of the debuginfo.

Benefit to Fedora

This reduces the size of debuginfo by quite a bit, just by enabling a compiler flag.

Scope

Several changes are needed to integrate this change into Fedora:

  • Either change GCC to enable -fdebug-types-section by default, or add this to the default compiler flags used when building RPMs.
  • Update SystemTap to handle the new section properly. (Done)
  • Update the dwarves package to handle the new section properly. ([Patch submitted])
  • Disable the new flag for kernel builds. This is needed because libdw cannot handle the multiple .debug_types sections that can appear in ET_REL files -- which includes kernel modules.

How To Test

You can easily verify whether the new section is in use using something like:

  • readelf -WS some-executable-or-library | fgrep .debug_types

Another test is whether the various tools that read debuginfo continue to work. This is best done by running their respective test suites.

User Experience

Users may notice faster download times, less disk space used, or faster startup for tools that read debuginfo.

Dependencies

The main dependency is upstream approval of the patches for the various affected projects.

Contingency Plan

No plan needed; we can continue with the current setup.

Documentation

Release Notes

Packages built in Fedora 18 are compiled with -fdebug-types-section, yielding much smaller debuginfo packages. The new debuginfo is specified by the DWARF 4 standard; some debuginfo-reading packages may need updates in order to understand the new data. All DWARF-reading packages in Fedora 18 have been updated.

Comments and Discussion