/* Pedantic checking of DWARF files. Copyright (C) 2009, 2010, 2011 Red Hat, Inc. This file is part of elfutils. This file 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; either version 3 of the License, or (at your option) any later version. 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 this program. If not, see . */ #ifndef DWARFLINT_CHECKS_HIGH_HH #define DWARFLINT_CHECKS_HIGH_HH #ifdef HAVE_CONFIG_H # include #endif #include "checks.hh" #include "check_debug_info.hh" #include "../libdw/c++/dwarf" #include "../libdwfl/libdwfl.h" class open_highlevel_dwarf : public check { Dwfl *const _m_dwfl; public: static checkdescriptor const *descriptor () { static checkdescriptor cd (checkdescriptor::create ("open_highlevel_dwarf") .hidden ()); return &cd; } Dwarf *const c_dw; elfutils::dwarf const dw; open_highlevel_dwarf (checkstack &stack, dwarflint &lint); ~open_highlevel_dwarf (); }; struct highlevel_check_i { open_highlevel_dwarf *_m_loader; Dwarf *const c_dw; elfutils::dwarf const &dw; highlevel_check_i (checkstack &stack, dwarflint &lint) : _m_loader (lint.check (stack, _m_loader)) , c_dw (_m_loader->c_dw) , dw (_m_loader->dw) {} }; template class highlevel_check : public check > , public highlevel_check_i { open_highlevel_dwarf *_m_loader; public: static checkdescriptor const *descriptor () { static checkdescriptor cd ("highlevel_check"); return &cd; } highlevel_check (checkstack &stack, dwarflint &lint) : highlevel_check_i (stack, lint) {} }; #endif//DWARFLINT_CHECKS_HIGH_HH