[Dwarf-Discuss] Use of Location Description operations in DWARF Expressions?
Michael Eager
eager@eagercon.com
Fri Mar 20 00:49:41 GMT 2020
On 3/19/20 9:30 AM, David Stenberg via Dwarf-Discuss wrote:
> Hi!
>
> This is something that has popped up in a number of LLVM patch reviews,
> and is something that we would like to get some help with clarifying.
>
> For DWARF[345], may a DWARF Expression (described in section 2.5)
> contain any of the operations listed under the Location Descriptions
> section (2.6)? For example, may a DW_AT_call_value in DWARF5, which
> "is a DWARF expression", contain any of those operations
> (e.g. a DW_OP_piece)?
>
> DWARF5 section 2.5 specifies the following for the operations under
> section 2.6:
>
> "In addition to the general operations that are defined here, operations
> that are specific to location descriptions are defined in Section 2.6
> on page 38."
>
> Reading section 2.5 and 2.6, I have interpreted the standard as if DWARF
> Expressions and Location Descriptions are disparate things; Location
> Descriptions may describe locations _using_ DWARF Expressions, but in
> places where a DWARF Expression is expected, you may not have a Location
> Description in its place. Is that correct?
>
> Given the above quote, and if my interpretation of how DWARF Expressions
> and Location Descriptions correlate is correct, I would assume that the
> answer to this mail's initial question is no. Or am I overlooking
> somethere here?
My reading of sections 2.5 & 2.6 is that you cannot have a DW_OP_piece
in an DWARF expression.
A DWARF expression, when evaluated (as the result of evaluating a
DW_AT_call_value), yields a value which is at the top of the stack.
A Composite Location Description, containing DW_OP_piece, as mentioned
on page 42, "does not compute a value or store any result on the DWARF
stack."
The DW_OP_reg* operations in a Location Description name a register, but
do not modify the stack. (See comment page 40.)
Implicit Location Descriptions may only appear in Location Descriptions.
The wording of the text says that the three operations specify a
value, but do not say that this value is pushed on the stack.
--
Michael Eager eager at eagercon.com
1960 Park Blvd., Palo Alto, CA 94306
More information about the Dwarf-discuss
mailing list