Issue 080404.1: Calculate value in DWARF expression

Author: Cary Coutant
Champion: Coutant
Date submitted: 2008-04-04
Date revised:
Date closed:
Type: Extension
Status: Rejected
DWARF Version: 4
This is an alternate to <a href="http://dwarfstd.org/issues/071227.1.html&type=open">Issue 071227.1</a>,

Modifications to section 2.4, "DWARF Expdressions"

Proposal:

This is a proposal for a typed stack with polymorphic
operators. I've marked up (in HTML) version of Sections
2.5 and 2.6 of the DWARF spec (using Ron's updated version
of Section 2.6), with all the new material highlighted
in green, and replaced material highlighted in red and 
struck through. You can view it here: <a href="doc/040408.1.html">Modified Sections</a>

In summary, I've done the following:

1. Changed the language where it talks about a stack of 
   address-sized entries, and changed it to a stack of 
   typed entries, where the available types are those base 
   types supported by the target machine.

2. Added some non-normative notes about quality-of-
   implementation and accuracy of floating-point arithmetic.

3. Added a set of DW_OP_const*_type operations to push 
   constants of a given type onto the stack.

4. Added DW_OP_regval and DW_OP_regval_type operations to 
   push the value of a register onto the stack: the former 
   with an implicit integral type, the latter with an explicit type.

5. Added DW_OP_deref_type and DW_OP_xderef_type operations to 
   dereference a pointer and load a value from memory with an 
   explicit type.

6. Added notes about dyadic operations requiring operands of 
   the same type, and certain operations that require integral values.

7. Added DW_OP_convert to convert a value from one type to another.

8. Added DW_OP_value to mark the top of stack as a value rather 
   than a location.

9. Added DW_OP_readonly to mark the location on the top of the 
   stack as read-only.

10. Added some extra example location descriptions.

===

Rejected in favor of 071227.1.