Issue 160620.1: Define generic type for stack operations

Author: Michael Eager
Champion: Michael Eager
Date submitted: 2016-06-20
Date revised:
Date closed:
Type: Clarification
Status: Accepted
DWARF Version: 5
Section 2.5, pg 24-34
Background

The use of the terminology "special address type" is confusing.  It isn't clear what is 
special about the addresses with this type and the values with this type do not need to be 
addresses,  

Additionally, there are references to "pushing a type" or "pushing a type identifier" onto 
the stack, which may appear to imply that this is a separate operation than pushing a value
with a specified type onto the stack, or that DWARF defines a type identifier.

Proposal

The proposal replaces the use of "special address type" with "generic type".  The generic 
type is the same address-sized integral value with unspecified sign used as the stack vaue 
in DWARF V4 and earlier.  (Page and line references are to draft of 5/20/2016.)

pg. 24 (97-99):  
  Instead of a base type, elements can have a special address type, which is an integral 
  type that has the size of an address on the target machine and unspecified signedness.
==>
  Instead of a base type, elements can have the generic type, which is an integral 
  type that has the size of an address on the target machine and unspecified signedness. 
  *The generic type is the same as the type of stack operations in DWARF Version 4.*

pg. 24 (105):  "special address type" ==> "generic type"

pg. 26 (156-158):
  DW_OP_regval_type pushes the contents of the register together with the given
  base type, while the other operations push the result of adding the contents of a
  register to a given signed offset together with the special address type.
==>
  DW_OP_regval_type pushes the contents of the register together with the given
  base type, while the other operations push the result of adding the contents of a
  register to a given signed offset and have the generic type.

pg. 27 (210, 217, 220):  "special address type" ==> "generic type"

pg. 28 (245):  "together with the special address type identifier" ==> "with the generic type"

pg. 28 (247):  "special address type" ==> "generic type"

pg. 28 (260-261):  "together with the special address type identifier" ==> "with the generic type"

pg. 29 (288):  "together with the special address type identifier" ==> "with the generic type"

pg. 30 (320):  "both the special address type" ==> "the generic type"

pg. 30 (322, 328):  "special address type" ==> "generic type"

pg. 32 (392):  "both the special address type" ==> "generic type"

pg. 32 (397, 398):  "special address type" ==> "generic type"

pg. 34 (443, 451):  "special address type" ==> "generic type"



--

06/21/2016 -- Accepted.