From: Petr Machata Date: Mon, 30 Nov 2009 12:32:48 +0000 (+0100) Subject: dwarflint: Move .debug_info checks to check_debug_info.hh/.ii X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e5034bc0a5c48221d9a7320f1423c1bada4f7f49;p=thirdparty%2Felfutils.git dwarflint: Move .debug_info checks to check_debug_info.hh/.ii * .ii is for "interfaces". Type _declarations_ go there. --- diff --git a/src/Makefile.am b/src/Makefile.am index 976af4948..b8fda9853 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -97,7 +97,7 @@ dwarflint_SOURCES = dwarfstrings.c \ dwarflint/all-dies-it.hh \ dwarflint/check_highlevel.cc dwarflint/checks-high.hh \ dwarflint/check_debug_abbrev.cc \ - dwarflint/check_debug_info.cc \ + dwarflint/check_debug_info.cc dwarflint/check_debug_info.hh dwarflint/check_debug_info.ii \ dwarflint/check_debug_line.cc \ dwarflint/check_debug_loc_range.cc dwarflint/check_debug_loc_range.hh \ dwarflint/check_matching_ranges.cc \ diff --git a/src/dwarflint/check_debug_abbrev.cc b/src/dwarflint/check_debug_abbrev.cc index 68d3f2223..0c86264ae 100644 --- a/src/dwarflint/check_debug_abbrev.cc +++ b/src/dwarflint/check_debug_abbrev.cc @@ -30,6 +30,7 @@ #include "checks-low.hh" #include "pri.hh" #include "tables.hh" +#include "check_debug_info.hh" #include #include diff --git a/src/dwarflint/check_debug_info.cc b/src/dwarflint/check_debug_info.cc index aba009a9b..fae697984 100644 --- a/src/dwarflint/check_debug_info.cc +++ b/src/dwarflint/check_debug_info.cc @@ -40,10 +40,10 @@ #include "messages.h" #include "low.h" -#include "checks-low.hh" #include "pri.hh" #include "config.h" #include "check_debug_loc_range.hh" +#include "check_debug_info.hh" namespace { diff --git a/src/dwarflint/check_debug_info.hh b/src/dwarflint/check_debug_info.hh new file mode 100644 index 000000000..5099b4d68 --- /dev/null +++ b/src/dwarflint/check_debug_info.hh @@ -0,0 +1,79 @@ +/* Checking of .debug_info + Copyright (C) 2009 Red Hat, Inc. + This file is part of Red Hat elfutils. + + Red Hat elfutils is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by the + Free Software Foundation; version 2 of the License. + + Red Hat elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with Red Hat elfutils; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. + + Red Hat elfutils is an included package of the Open Invention Network. + An included package of the Open Invention Network is a package for which + Open Invention Network licensees cross-license their patents. No patent + license is granted, either expressly or impliedly, by designation as an + included package. Should you wish to participate in the Open Invention + Network licensing program, please visit www.openinventionnetwork.com + . */ + +#ifndef DWARFLINT_CHECK_DEBUG_INFO_HH +#define DWARFLINT_CHECK_DEBUG_INFO_HH + +#include "checks-low.hh" + +/** The pass for reading basic .debug_info data -- the layout of + sections and their headers. */ +class read_cu_headers + : public check +{ + section *_m_sec_info; + +public: + std::vector const cu_headers; + explicit read_cu_headers (dwarflint &lint); +}; + +class check_debug_info + : public check +{ + section *_m_sec_info; + section *_m_sec_abbrev; + section *_m_sec_str; + check_debug_abbrev *_m_abbrevs; + read_cu_headers *_m_cu_headers; + + // Abbreviation table with that offset had user(s) that failed + // validation. Check for unused abbrevs should be skipped. + std::vector< ::Dwarf_Off> _m_abbr_skip; + + bool check_cu_structural (struct elf_file *file, + struct read_ctx *ctx, + struct cu *const cu, + Elf_Data *strings, + struct coverage *strings_coverage, + struct relocation_data *reloc, + struct cu_coverage *cu_coverage); + + void check_info_structural (elf_file *file, + Elf_Data *strings); + +public: + // The check pass adds all low_pc/high_pc ranges loaded from DIE + // tree into this following cu_cov structure. If it finds any + // rangeptr-class attributes, it sets cu_cov.need_ranges to true. + cu_coverage cu_cov; + std::vector cus; + + explicit check_debug_info (dwarflint &lint); + ~check_debug_info (); +}; +static reg reg_debug_info; + +#endif//DWARFLINT_CHECK_DEBUG_INFO_HH diff --git a/src/dwarflint/check_debug_info.ii b/src/dwarflint/check_debug_info.ii new file mode 100644 index 000000000..bd0ae5a90 --- /dev/null +++ b/src/dwarflint/check_debug_info.ii @@ -0,0 +1,2 @@ +class read_cu_headers; +class check_debug_info; diff --git a/src/dwarflint/check_debug_line.cc b/src/dwarflint/check_debug_line.cc index be8a67d57..284ba02af 100644 --- a/src/dwarflint/check_debug_line.cc +++ b/src/dwarflint/check_debug_line.cc @@ -1,9 +1,10 @@ #include "checks-low.hh" +#include "check_debug_info.hh" +#include "pri.hh" #include #include "../libdw/known-dwarf.h" #include "dwarfstrings.h" -#include "pri.hh" #include @@ -58,7 +59,7 @@ namespace << " refers to directory #" << *ptr << ", which wasn't defined." << std::endl; - /* Consumer might choke on that. */ + /* Consumer might choke on that. */ retval = false; } else if (*ptr != 0) diff --git a/src/dwarflint/check_debug_loc_range.cc b/src/dwarflint/check_debug_loc_range.cc index 1f07843e8..8bc01e9ae 100644 --- a/src/dwarflint/check_debug_loc_range.cc +++ b/src/dwarflint/check_debug_loc_range.cc @@ -39,6 +39,7 @@ #include "low.h" #include "config.h" #include "check_debug_loc_range.hh" +#include "check_debug_info.hh" #include "dwarf-opcodes.h" #include "pri.hh" diff --git a/src/dwarflint/check_debug_loc_range.hh b/src/dwarflint/check_debug_loc_range.hh index 893b553fc..9a31c764b 100644 --- a/src/dwarflint/check_debug_loc_range.hh +++ b/src/dwarflint/check_debug_loc_range.hh @@ -25,6 +25,7 @@ . */ #include "checks-low.hh" +#include "check_debug_info.ii" class check_debug_ranges : public check diff --git a/src/dwarflint/check_expected_trees.cc b/src/dwarflint/check_expected_trees.cc index f615371b2..3c385acd2 100644 --- a/src/dwarflint/check_expected_trees.cc +++ b/src/dwarflint/check_expected_trees.cc @@ -2,6 +2,7 @@ # include #endif +#include "check_debug_info.hh" #include "checks-high.hh" #include "expected.hh" #include "dwarfstrings.h" diff --git a/src/dwarflint/checks-low.cc b/src/dwarflint/checks-low.cc index 3db0b52dc..7c4d4b95e 100644 --- a/src/dwarflint/checks-low.cc +++ b/src/dwarflint/checks-low.cc @@ -31,6 +31,7 @@ #include "config.h" #include "pri.hh" #include "check_debug_loc_range.hh" +#include "check_debug_info.hh" #include #include #include diff --git a/src/dwarflint/checks-low.hh b/src/dwarflint/checks-low.hh index 5a53c5e42..030395e8e 100644 --- a/src/dwarflint/checks-low.hh +++ b/src/dwarflint/checks-low.hh @@ -64,18 +64,6 @@ public: {} }; -/** The pass for reading basic .debug_info data -- the layout of - sections and their headers. */ -class read_cu_headers - : public check -{ - section *_m_sec_info; - -public: - std::vector const cu_headers; - explicit read_cu_headers (dwarflint &lint); -}; - class check_debug_abbrev : public check { @@ -90,42 +78,6 @@ public: }; static reg reg_debug_abbrev; -class check_debug_info - : public check -{ - section *_m_sec_info; - section *_m_sec_abbrev; - section *_m_sec_str; - check_debug_abbrev *_m_abbrevs; - read_cu_headers *_m_cu_headers; - - // Abbreviation table with that offset had user(s) that failed - // validation. Check for unused abbrevs should be skipped. - std::vector< ::Dwarf_Off> _m_abbr_skip; - - bool check_cu_structural (struct elf_file *file, - struct read_ctx *ctx, - struct cu *const cu, - Elf_Data *strings, - struct coverage *strings_coverage, - struct relocation_data *reloc, - struct cu_coverage *cu_coverage); - - struct cu *check_info_structural (elf_file *file, - Elf_Data *strings); - -public: - // The check pass adds all low_pc/high_pc ranges loaded from DIE - // tree into this following cu_cov structure. If it finds any - // rangeptr-class attributes, it sets cu_cov.need_ranges to true. - cu_coverage cu_cov; - std::vector cus; - - explicit check_debug_info (dwarflint &lint); - ~check_debug_info (); -}; -static reg reg_debug_info; - class check_debug_aranges : public check {