mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 11:33:45 +08:00
92de84a60c
* cref.h: New file. * options.h (class General_options): Add --print-symbol-counts. * main.cc (main): Issue defined symbol report if requested. * archive.cc (Archive::interpret_header): Make into a const member function. (Archive::add_symbols): Call Input_objects::archive_start and archive_stop. (Archive::const_iterator): Define new class. (Archive::begin, Archive::end): New functions. (Archive::include_all_members): Rewrite to use iterator. (Archive::count_members): New function. * archive.h (class Archive): Update declarations. (Archive::filename): New function. * object.cc: Include "cref.h". (Sized_relobj::Sized_relobj): Initialize defined_count_. (Sized_relobj::do_get_global_symbol_counts): New function. (Input_objects::add_object): Add object to cross-referencer. (Input_objects::archive_start): New function. (Input_objects::archive_stop): New function. (Input_objects::print_symbol_counts): New function. * object.h: Declare Cref and Archive. (Object::get_global_symbol_counts): New function. (Object::do_get_global_symbol_counts): New pure virtual function. (class Sized_relobj): Add defined_count_ field. Update declarations. (class Input_objects): Add cref_ field. Update constructor. Update declarations. * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and defined_count_. (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing symbol counts. (Sized_dynobj::do_get_global_symbol_counts): New function. * dynobj.h (class Sized_dynobj): Add fields symbols_ and defined_count_. Update declarations. Define Symbols typedef. * symtab.cc (Symbol_table::add_from_relobj): Add defined parameter. Change all callers. (Symbol_table::add_from_dynobj): Add sympointers and defined parameters. Change all callers. * symtab.h (class Symbol_table): Update declarations. * Makefile.am (CCFILES): Add cref.cc. (HFILES): Add cref.h. * Makefile.in: Rebuild.
74 lines
1.9 KiB
C++
74 lines
1.9 KiB
C++
// cref.h -- cross reference reports for gold -*- C++ -*-
|
|
|
|
// Copyright 2008 Free Software Foundation, Inc.
|
|
// Written by Ian Lance Taylor <iant@google.com>.
|
|
|
|
// This file is part of gold.
|
|
|
|
// This program 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.
|
|
|
|
// This program 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, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
|
// MA 02110-1301, USA.
|
|
|
|
#ifndef GOLD_CREF_H
|
|
#define GOLD_CREF_H
|
|
|
|
namespace gold
|
|
{
|
|
|
|
class Object;
|
|
class Archive;
|
|
class Cref_inputs;
|
|
|
|
// This class collects data for cross reference and other reporting.
|
|
|
|
class Cref
|
|
{
|
|
public:
|
|
Cref()
|
|
: inputs_(NULL)
|
|
{ }
|
|
|
|
// Record an input object file. This is called for each object file
|
|
// in the order in which it is processed.
|
|
void
|
|
add_object(Object*);
|
|
|
|
// Start recording an input archive. This is called for each
|
|
// archive in the order in which it appears on the command line. A
|
|
// call to add_archive_start precedes calls to add_object for each
|
|
// object included from the archive.
|
|
void
|
|
add_archive_start(Archive*);
|
|
|
|
// Finish recording an input archive. This is called after
|
|
// add_object has been called for each object included from the
|
|
// archive.
|
|
void
|
|
add_archive_stop(Archive*);
|
|
|
|
// Print symbol counts.
|
|
void
|
|
print_symbol_counts(const Symbol_table*) const;
|
|
|
|
private:
|
|
void
|
|
need_inputs();
|
|
|
|
Cref_inputs* inputs_;
|
|
};
|
|
|
|
} // End namespace gold.
|
|
|
|
#endif // !defined(GOLD_CREF_H)
|