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 _______________________________________________ elfutils-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/elfutils-devel
