Fix an issue with split dwarf on clang

This commit is contained in:
Jeremy 2024-07-11 18:50:35 -05:00
parent 611660de5b
commit e1fb3527a4
No known key found for this signature in database
GPG Key ID: 19AA8270105E8EB4

View File

@ -1010,8 +1010,11 @@ namespace libdwarf {
if(cu) { if(cu) {
const auto& cu_die = cu.unwrap().cu_die.get(); const auto& cu_die = cu.unwrap().cu_die.get();
// gnu non-standard debug-fission may create non-skeleton CU DIEs and just add dwo attributes // gnu non-standard debug-fission may create non-skeleton CU DIEs and just add dwo attributes
// clang emits dwo names in the split CUs, so guard against going down the dwarf fission path (which
// doesn't infinitely recurse because it's not emitted as an absolute path and there's no comp dir but
// it's good to guard against the infinite recursion anyway)
auto dwo_name = get_dwo_name(cu_die); auto dwo_name = get_dwo_name(cu_die);
if(cu_die.get_tag() == DW_TAG_skeleton_unit || dwo_name) { if(cu_die.get_tag() == DW_TAG_skeleton_unit || (dwo_name && !skeleton)) {
perform_dwarf_fission_resolution(cu_die, dwo_name, object_frame_info, frame, inlines); perform_dwarf_fission_resolution(cu_die, dwo_name, object_frame_info, frame, inlines);
} else { } else {
retrieve_line_info(cu_die, pc, frame); retrieve_line_info(cu_die, pc, frame);