This is the mail archive of the dwarf2@corp.sgi.com mailing list for the dwarf2 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

REVISED Proposal 000410.3 -- Add FORM classes "loclist", "lineptr",and "macptr"


(REVISED) PROPOSAL

Remove the two paragraphs added to 7.5.4 by my previous proposal (000410.1),
which explain the usage of class constant for pointers into .debug_loc
etc., and add, instead, three new FORM classes.

Replace the second paragraph of Section 7.5.4 with:

	The attribute form governs how the value of the
	attribute is encoded.  There are 9 classes of
	form, listed below.  Some encodings are members
	of more than one class; in that case, the list
	of classes allowed by the attribute in question
	determines the class of the form.  DW_FORM_data4
	and DW_FORM_data8 are members of class "constant",
	"lineptr", "loclist", and "macptr".  They are
	members of the constant class if used for the
	value of an attribute that allows class constant
	but not class lineptr, loclist or macptr.  They
	are members of class lineptr, loclist, or macptr
	if used for the value of an attribute that
	allows one of those classes.

	Each possible form belongs to one or more of the
	following classes:

Replace the description of class constant in Section 7.5.4 with:

    constant

	There are six forms of constants. There are
	fixed length constant data forms for one, two,
	four and eight byte values (respectively,
	DW_FORM_data1, DW_FORM_data2, DW_FORM_data4, and
	DW_FORM_data8). There are also variable length
	constant data forms encoded using LEB128 numbers
	(see below). Both signed (DW_FORM_sdata) and
	unsigned (DW_FORM_udata) variable length
	constants are available.  Note that
	DW_FORM_data4 and DW_FORM_data8 are members of
	class constant only if the attribute in question
	does not allow one of "lineptr", "loclist", or
	"macptr" (see below).

	In the 32-bit DWARF format, a constant that
	represents an offset into another section uses
	form DW_FORM_data4; in the 64-bit DWARF format,
	such offsets use form DW_FORM_data8 (see section
	7.4).

Add to the list in Section 7.5.4 (between "flag" and "reference",
keeping it alphabetical):

    lineptr

        This is an offset into the .debug_line section. It
        consists of a 4- or 8-byte value which is the offset from
        the beginning of the .debug_line section to the first
        byte of the data making up the statement list for the
        compilation unit. It is relocatable in a relocatable
        object file, and relocated in an executable or shared
        object. It includes DW_FORM_data4 and DW_FORM_data8.

    loclist

        This is an offset into the .debug_loc section. It
        consists of a 4- or 8-byte value which is the offset from
        the beginning of the .debug_loc section to the first
        byte of the data making up the location list for the
        object in question. It is relocatable in a relocatable
        object file, and relocated in an executable or shared
        object.  It includes DW_FORM_data4 and DW_FORM_data8.

    macptr

        This is an offset into the .debug_macinfo section. It
        consists of a 4- or 8-byte value which is the offset from
        the beginning of the .debug_macinfo section to the first
        byte of the data making up the macro information for the
        compilation unit. It is relocatable in a relocatable
        object file, and relocated in an executable or shared
        object.  It includes DW_FORM_data4 and DW_FORM_data8.


Add (in italics) the following paragraph after the above:

	<i>Because classes lineptr, loclist, and macptr
	share a common representation, it is not
	possible for an attribute to allow more than one
	of these classes.  If an attribute allows both
	class constant and one of lineptr, loclist or
	macptr, then DW_FORM_data4 and DW_FORM_data8 are
	interpreted as members of the latter as
	appropriate to the attribute (and not class
	constant).</i>

Modify Figure 17 (Attribute Encodings) as follows:

    DW_AT_location		block, loclist
    DW_AT_stmt_list		lineptr
    DW_AT_string_length		block, loclist
    DW_AT_return_addr		block, loclist
    DW_AT_frame_base		block, loclist
    DW_AT_macro_info		macptr
    DW_AT_static_link		block, loclist
    DW_AT_use_location		block, loclist
    DW_AT_vtable_elem_location	block, loclist

NOTE: I intentionally omitted DW_AT_segment from the list above; there
I believe "constant" was intended to be an actual constant value.
begin:vcard 
n:Weatherford;David
tel;work:650 786-8942
x-mozilla-html:TRUE
org:Sun Microsystems, Inc.;Forte Tools
version:2.1
email;internet:David.Weatherford@Sun.COM
title:<img src="http://xidus.net/~weath/weath-small.gif"><br>Staff Engineer
adr;quoted-printable:;;901 San Antonio Road=0D=0AMS UMPK16-305;Palo Alto;CA;94303;
x-mozilla-cpt:;-8304
fn:David Weatherford
end:vcard

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]