From 5db74697b5561dceca9197ab79a23ffbb74286f3 Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Mon, 26 Oct 2009 14:29:22 +0100 Subject: [PATCH] dwarflint: Move some code around --- src/Makefile.am | 3 ++- src/dwarflint/check_debug_line.cc | 4 +++- src/dwarflint/checks-low.cc | 4 ++-- src/dwarflint/checks.hh | 9 ++++----- src/dwarflint/dwarflint.cc | 7 +++++++ src/dwarflint/dwarflint.hh | 2 ++ src/dwarflint/main.cc | 6 ------ 7 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 src/dwarflint/dwarflint.cc diff --git a/src/Makefile.am b/src/Makefile.am index d0aa6c32a..87fbf4a01 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -79,7 +79,8 @@ dwarfcmp_test_SOURCES = $(dwarfcmp_SOURCES) dwarfcmp_test_LDADD = $(dwarfcmp_LDADD) dwarflint_SOURCES = dwarfstrings.c \ - dwarflint/main.cc dwarflint/dwarflint.hh dwarflint/misc.h \ + dwarflint/main.cc \ + dwarflint/dwarflint.cc dwarflint/dwarflint.hh dwarflint/misc.h \ dwarflint/low.c dwarflint/low.h \ dwarflint/expected-at.cc dwarflint/expected.hh \ dwarflint/coverage.cc dwarflint/coverage.h \ diff --git a/src/dwarflint/check_debug_line.cc b/src/dwarflint/check_debug_line.cc index a0b6233f2..06b4c4f78 100644 --- a/src/dwarflint/check_debug_line.cc +++ b/src/dwarflint/check_debug_line.cc @@ -42,7 +42,7 @@ namespace throw check_base::failed (""); //xxx check_debug_info *info = NULL; - info = toplev_check (lint, info); + info = lint.toplev_check (info); if (info != NULL) for (std::vector::iterator it = info->cus.begin (); it != info->cus.end (); ++it) @@ -66,11 +66,13 @@ namespace if (!checked_read_uleb128 (ctx, ptr, where, "directory index")) return false; + if (*name == '/' && *ptr != 0) wr_message (*where, cat (mc_impact_2, mc_line, mc_header)) << ": file #" << nfile << " has absolute pathname, but refers to directory != 0." << std::endl; + if (*ptr > _m_include_directories.size ()) /* Not >=, dirs are indexed from 1. */ { diff --git a/src/dwarflint/checks-low.cc b/src/dwarflint/checks-low.cc index fbcfaa609..a9d7ee7c4 100644 --- a/src/dwarflint/checks-low.cc +++ b/src/dwarflint/checks-low.cc @@ -338,7 +338,7 @@ check_debug_ranges::check_debug_ranges (dwarflint &lint) check_debug_aranges::check_debug_aranges (dwarflint &lint) : _m_sec_aranges (lint.check (_m_sec_aranges)) { - check_debug_info *info = toplev_check (lint); + check_debug_info *info = lint.toplev_check (); coverage *cov = NULL; if (info != NULL) { @@ -347,7 +347,7 @@ check_debug_aranges::check_debug_aranges (dwarflint &lint) // stored in check_ranges, and that should have been requested // explicitly. But for the time being... if (info->cu_cov.need_ranges) - toplev_check (lint); + lint.toplev_check (); if (!info->cu_cov.need_ranges) cov = &info->cu_cov.cov; } diff --git a/src/dwarflint/checks.hh b/src/dwarflint/checks.hh index be8437af3..b41b7459d 100644 --- a/src/dwarflint/checks.hh +++ b/src/dwarflint/checks.hh @@ -32,13 +32,12 @@ public: }; template -T * -toplev_check (dwarflint &lint, - __attribute__ ((unused)) T *tag = NULL) +inline T * +dwarflint::toplev_check (__attribute__ ((unused)) T *tag) { try { - return lint.check (); + return check (); } catch (check_base::failed const &f) { @@ -58,7 +57,7 @@ struct reg virtual void run (dwarflint &lint) { - toplev_check (lint); + lint.toplev_check (); } }; diff --git a/src/dwarflint/dwarflint.cc b/src/dwarflint/dwarflint.cc new file mode 100644 index 000000000..72f23c89b --- /dev/null +++ b/src/dwarflint/dwarflint.cc @@ -0,0 +1,7 @@ +#include "dwarflint.hh" + +dwarflint::dwarflint (Elf *a_elf) + : _m_elf (a_elf) +{ + check_registrar::inst ()->enroll (*this); +} diff --git a/src/dwarflint/dwarflint.hh b/src/dwarflint/dwarflint.hh index d5a80744c..d292888da 100644 --- a/src/dwarflint/dwarflint.hh +++ b/src/dwarflint/dwarflint.hh @@ -70,6 +70,8 @@ public: { return check (); } + + template T * toplev_check (T *tag = NULL); }; #endif//DWARFLINT_HH diff --git a/src/dwarflint/main.cc b/src/dwarflint/main.cc index b3aaafae3..38fd1b2c7 100644 --- a/src/dwarflint/main.cc +++ b/src/dwarflint/main.cc @@ -258,12 +258,6 @@ layout_rel_file (Elf *elf) return 0; } -dwarflint::dwarflint (Elf *a_elf) - : _m_elf (a_elf) -{ - check_registrar::inst ()->enroll (*this); -} - int main (int argc, char *argv[]) { -- 2.47.3