summaryrefslogtreecommitdiff
path: root/dwarflint/check_linkage_external_die.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dwarflint/check_linkage_external_die.cc')
-rw-r--r--dwarflint/check_linkage_external_die.cc23
1 files changed, 4 insertions, 19 deletions
diff --git a/dwarflint/check_linkage_external_die.cc b/dwarflint/check_linkage_external_die.cc
index 9d759dd1..d615afae 100644
--- a/dwarflint/check_linkage_external_die.cc
+++ b/dwarflint/check_linkage_external_die.cc
@@ -99,27 +99,12 @@ namespace
static bool is_external (all_dies_iterator<dwarf> const &it)
{
- bool candidates = true;
dwarf::debug_info_entry entry = *it;
- do
- {
- dwarf::debug_info_entry::attributes_type attrs = entry.attributes ();
- if (attrs.find (DW_AT_external) != attrs.end ())
- return true;
-
- dwarf::debug_info_entry::attributes_type::const_iterator origin
- = attrs.find (DW_AT_abstract_origin);
- if (origin == attrs.end ())
- origin = attrs.find (DW_AT_specification);
-
- if (origin != attrs.end ())
- entry = *(*origin).second.reference ();
- else
- candidates = false;
- }
- while (candidates);
+ dwarf::debug_info_entry::attributes_type attrs = (*it).attributes ();
+ dwarf::debug_info_entry::attributes_type::const_iterator external
+ = attrs.find_integrate (DW_AT_external);
- return false;
+ return external != attrs.end () && (*external).second.flag ();
}
virtual void