On 09/16/2012 03:36 PM, Tommy Hoffner wrote:
Seems like the mailer doesn't approve of Lotus Notes email

The standard way of encoding a constant value seems to be something like:

<2>< 196> DW_TAG_constant
DW_AT_name rans2
DW_AT_const_value 16
DW_AT_decl_file 1
DW_AT_decl_line 0
DW_AT_type <143>

Where we have the following abbrevation
< 6>< 69><code: 6> DW_TAG_constant DW_CHILDREN_no
< 72> DW_AT_name DW_FORM_string
< 74> DW_AT_const_value DW_FORM_data4
< 76> DW_AT_decl_file DW_FORM_data1
< 78> DW_AT_decl_line DW_FORM_data1
< 80> DW_AT_type DW_FORM_ref4

There seems to be a common agreement that we need to know the type (i.e. what 
DW_AT_type points to)
to be able to interpret the data in DW_AT_const_value since DW_FORM_data4 only 
gives us the size of
the data. Or as the standard says:
"constant
...

The data in DW_FORM_data1, DW_FORM_data2, DW_FORM_data4 and DW_FORM_data8 can 
be anything.

Depending on context, it may be a signed integer, an unsigned integer, a 
floating-point constant, or
anything else."

But DW_FORM_data only goes up to 8 byte data.

Maybe DWARF needs a DW_FORM_data16.


In fortran I can write:

program dbq001

implicit none

real*16 rans2

parameter ( rans2 = 0.1234567890123456789012345678901_16 )

end

Giving me a 16 byte conhstant. My attempt on encoding this was

< 6>< 69><code: 6> DW_TAG_constant DW_CHILDREN_no
< 72> DW_AT_name DW_FORM_string
< 74> DW_AT_const_value DW_FORM_block1
< 76> DW_AT_decl_file DW_FORM_data1
< 78> DW_AT_decl_line DW_FORM_data1
< 80> DW_AT_type DW_FORM_ref4

The problem is that the standard section above doesn't mention DW_FORM_block1 
as something that can
contain a constant. It does however say:

"In all forms, the length is the number of information bytes that follow. The 
information bytes may
contain any mixture of relocated (or relocatable) addresses, references to 
other debugging
information entries or data bytes."

However since all the data types above can be expressed as expressions, I seen 
tools assuming that
DW_FORM_block always contains an expression.

So I think the DW_FORM_block1 above should contain the raw floating point data 
(apart from the size
field). While a number of tools expect an expression evaluating to the raw bit 
pattern (?) for the
16 byte data we want.

Have I missed anything.

Any hints comments on how to encode it. I realize this is actually in between 
syntax and semantics.
I mean the DW_FORM is giving the syntactic part, and a some point we need to 
interpret a bit pattern
as a floating point value and I guess this is in-between in the sense that it 
concern how to
extract/generate the bit pattern that can be interpreted as a constant

I got the suggestion to use DW_FORM_sdata or DW_FORM_udata, since that will 
make the part I'm having
trouble with unambigious, but it feel strange, since it isn't even obvious 
which encoding it the
"right one" since signed and unsigned doesn't really make sense for a 16 byte 
float

/Tommy Hoffner

Tommy Hoffner

Compiler Backend Development
IBM Toronto Laboratory, 8200 Warden Ave, Markham, Ontario, Canada, L6G 1C7
Tel: 905-413-2036 Tie: 313-2036 Internet: [email protected]


_______________________________________________
Dwarf-Discuss mailing list
[email protected]
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org



--
Michael Eager    [email protected]
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077


_______________________________________________
Dwarf-Discuss mailing list
[email protected]
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org

Reply via email to