From: Mark Wielaard Date: Tue, 5 Apr 2011 16:11:36 +0000 (+0200) Subject: Turn check_linkage_external_die into a die_check class. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=679a0d48c2f9a7c666ff49041d651bae9b5e1295;p=thirdparty%2Felfutils.git Turn check_linkage_external_die into a die_check class. --- diff --git a/dwarflint/check_linkage_external_die.cc b/dwarflint/check_linkage_external_die.cc index e18d0e973..7cebc46ba 100644 --- a/dwarflint/check_linkage_external_die.cc +++ b/dwarflint/check_linkage_external_die.cc @@ -23,23 +23,16 @@ Network licensing program, please visit www.openinventionnetwork.com . */ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "highlevel_check.hh" -#include "../src/dwarfstrings.h" -#include "all-dies-it.hh" +#include "check_die_tree.hh" #include "pri.hh" #include "messages.hh" -#include using elfutils::dwarf; namespace { class check_linkage_external_die - : public highlevel_check + : public die_check { public: static checkdescriptor const *descriptor () @@ -53,27 +46,28 @@ namespace return &cd; } - explicit check_linkage_external_die (checkstack &stack, dwarflint &lint) - : highlevel_check (stack, lint) + check_linkage_external_die (checkstack &, dwarflint &) + { + // We don't keep any state for this die check. + } + + virtual void + die (all_dies_iterator const &it) { - for (all_dies_iterator it = all_dies_iterator (dw); - it != all_dies_iterator (); ++it) + dwarf::debug_info_entry const &entry = *it; + dwarf::debug_info_entry::attributes_type attrs = entry.attributes (); + if ((attrs.find (DW_AT_linkage_name) != attrs.end () + || attrs.find (DW_AT_MIPS_linkage_name) != attrs.end ()) + && attrs.find (DW_AT_external) == attrs.end ()) { - dwarf::debug_info_entry const &die = *it; - dwarf::debug_info_entry::attributes_type attrs = die.attributes (); - if ((attrs.find (DW_AT_linkage_name) != attrs.end () - || attrs.find (DW_AT_MIPS_linkage_name) != attrs.end ()) - && attrs.find (DW_AT_external) == attrs.end ()) - { - wr_message (to_where (die), - mc_impact_3 | mc_acc_suboptimal | mc_die_other) - << elfutils::dwarf::tags::name (die.tag ()) - << " has linkage_name attribute, but no external attribute." - << std::endl; - } + wr_message (to_where (entry), + mc_impact_3 | mc_acc_suboptimal | mc_die_other) + << elfutils::dwarf::tags::name (entry.tag ()) + << " has linkage_name attribute, but no external attribute." + << std::endl; } } }; - reg reg; + reg_die_check reg; }