Bug 18844 - assert failure in abidw at abg-dwarf-reader.cc:6537
The DWARF reader is not scheduling a declaration-only class for
resolution when the class has member types. When reading the code of
build_class_type_and_add_to_ir(), we see that the scheduling is done
before getting out of the function. But then, building members of the
class can trigger another invocation of
build_class_type_and_add_to_ir() before the current invocation
returns. In that case, the declaration-only class being built appears
as not being scheduled for resolution. And that is what violates the
assertion that declaration-only classes should be scheduled for
resolution whenever they are used.
This patch addresses the issue by scheduling the resolution earlier, when
we know we are dealing with a declaration-only class, and before
dealing with members of that classes.
* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
Schedule declaration-only class resolution before the class
appears as usable as to other types being built.
* tests/data/test-read-dwarf/test12-pr18844.so: Add a new binary
test input.
* tests/data/test-read-dwarf/test12-pr18844.so.abi: The reference
ABI XML output for the binary above.
* tests/data/Makefile.am: Add the new test inputs above to the
source distribution.
* tests/test-read-dwarf.cc (in_out_specs): Add the new test inputs
above to the set of input this test harness has to run over.