This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

dwarflint todo: DW_OP_GNU_implicit_pointer


This format extension is still subject to change and is not on mainline at
all yet.  So this is for later.  But logging it while it is fresh in mind.

DW_OP_GNU_implicit_pointer points to a DIE (like DW_OP-call_ref).  Check
that this is a valid link (hard-wrong low-level error), that the referent
is variable, formal_parameter, or dwarf_procedure (suspicious high-level
error), and that the referent has either a const_value or a location
attribute (hard-wrong high-level error).

For extra credit, chase the referent's location (list entries') expression
and see it does not use a DW_OP_GNU_implicit_pointer that points back to
the referrer (whose location had the first DW_OP_GNU_implicit_pointer),
or indirectly create a cycle.

Note that you actually don't want to check DW_OP_call* for creating cycles
in the same way.  Not that these are even used at all today.  But if the
expression uses conditional so it's not infinite, they could validly encode
full recursion by direct or indirect cycles of DW_OP_call* pointers!


Thanks,
Roland

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]