Adding member type doesn't reset declaration-only-ness of a class

When reading DWARF, a declaration-only class was loosing its
declaration-only-ness just because a member type was being added.  Bad
things was then happening next because that (normally
declaration-only) class was then considered as being suitable for
early canonicalizing, while it wasn't (yet), in reality.  Its
canonicalizing should have been deferred.

This issue was spotted when comparing
kdebase-workspace-4.3.4-29.el6_6.x86_64.rpm and,
kdebase-workspace-4.3.4-30.el6_6.x86_64.rpm, using their associated
debug info.  The issue was happening precisely when comparing their
usr/lib64/kde4/kwin4_effect_builtins.so DSOs, precisely; it was
leading to a crash.

	* src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir):
          Adding a new member type shouldn't remove the
          declaration-only-ness of the class.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
Dodji Seketeli 2015-07-24 00:32:09 +02:00
parent b8ae34192f
commit 38a46fd0b0

View File

@ -6504,14 +6504,11 @@ build_class_type_and_add_to_ir(read_context& ctxt,
}
// Handle member types
else if (is_type_die(&child))
{
result->set_is_declaration_only(false);
decl_base_sptr td =
build_ir_node_from_die(ctxt, &child, is_in_alt_di,
result.get(),
called_from_public_decl,
where_offset);
}
decl_base_sptr td =
build_ir_node_from_die(ctxt, &child, is_in_alt_di,
result.get(),
called_from_public_decl,
where_offset);
} while (dwarf_siblingof(&child, &child) == 0);
}