Issue 080112.3: FORM Reform Proposal 3: Implicit Flag Form

Author: Cary Coutant
Champion: Cary Coutant
Date submitted: 2008-01-12
Date revised:
Date closed:
Type: Extension
Status: Accepted with changes
DWARF Version: 4
Background

One study showed that attributes with DW_FORM_flag contribute 2-5% of the 
total size of the .debug_info section by requiring the flag to be explicitly 
represented in the debug info.

This proposal adds a new form, DW_FORM_implicit_flag, which by its very 
presence in the abbrev table entry, means that the flag is set -- it would 
consume no bytes from the .debug_info section. This would allow the producer 
a choice of using DW_FORM_flag in situations where it didn't want to create 
a new abbreviation code, or using implicit_flag in a separate abbreviation code.


Proposal

In Section 7.5.4, "Attribute Encodings," replace the description of class 
flag with the following:

 flag

   A flag may be represented explicitly as a single byte of
   data (DW_FORM_flag), or implicitly (DW_FORM_implicit_flag).
   In the first case, if the flag has the value zero, it
   indicates the absence of the attribute; if the flag has
   a non-zero value, it indicates the presence of the
   attribute. In the second case, the attribute is considered
   present, and no value is encoded the debugging information
   entry itself.

In Figure 21, add the following row:

 Form name                Value    Class

 DW_FORM_implicit_flag    0x19     flag

--

Approved changing DW_FORM_implicit_flag to DW_FORM_flag_present.