DWARF Standard


HOME
SPECIFICATIONS
FAQ
ISSUES



110926.1 Jan Kratochvil .debug_frame DW_OP_call_ref allowance Clarification Accepted with modification Todd Allen


Section 6.4, pg 131
DWARF-4 states:

> 6.4.2 Call Frame Instructions
> DW_OP_call2, DW_OP_call4 and DW_OP_call_ref operators are not meaningful in 
> an operand of these instructions because there is no mapping from call frame
> information to any corresponding debugging compilation unit information, 
> thus there is no way to interpret the call offset.

(a) 
DW_OP_call_ref is absolute intended for cross-CU references.  There is no need
to know "corresponding debugging compilation unit" to interpret
DW_OP_call_ref.  (It applies also to DW_OP_implicit_pointer now.)

(b)
DWARF-4 also states:

> 6.4.1 Structure of Call Frame Information
> 5. address_size (ubyte)
> If a compilation unit exists for this frame, its address size must match the
> address size here.

So is there any "corresponding debugging compilation unit" or not?  This 
paragraph states there is such "exists for" - "corresponding" (expecting just
by matching the FDE address range to DW_AT_low_pc/DW_AT_high_pc/DW_AT_ranges).

--

Revised text:
     6.4.2, bullet 1:
     DW_OP_call2, DW_OP_call4 and DW_OP_call_ref operators are not
     allowed in an operand of these instructions because
     the call frame information must not depend on other
     debug sections.

Accepted with modifications -- May 15, 2012.



All logos and trademarks in this site are property of their respective owner.
The comments are property of their posters, all the rest © 2007-2017 by DWARF Standards Committee.