I nixed unit_reference. It has no place in the high-level "logical view".
The one and only place it appears is in the DW_AT_import attribute of a
DW_TAG_imported_unit, which is never seen by the logical view.
dwarflint should have special case checks for DW_TAG_imported_unit in its
low/mid-level checks. (It could use C++ with raw_*, or just do it in the
low-level parts.) Those checks are:
DW_TAG_imported_unit must have DW_AT_import and no other attrs
Its DW_AT_import must use ref_addr to point to a CU.
That must be a real top-level compile_unit or partial_unit DIE,
and must not be the same CU containing that DW_TAG_imported_unit.
For extra credit, complain about circular chains of CU1->CU2 pointers in
some DW_TAG_imported_unit somewhere in CU1's tree. But that is not really
worth the effort, it's pathological and would blow up by itself.
Show replies by date