dde3f402cf
* options.h (class General_options): Add --cref. * main.cc (main): Print cref table if --cref. Don't close mapfile until after printing cref table. * cref.cc: Include "symtab.h". (class Cref_inputs): Define Cref_table_compare and Cref_table. (Cref_table_compare::operator()): New function. (Cref_inputs::gather_cref): New function. (filecol): New static const. (Cref_inputs::print_cref): New function. (Cref::print_cref): New function. * cref.h: Include <cstdio>. (class Cref): Update declarations. * mapfile.h (Mapfile::file): New function. * object.h (class Object): Define Symbols. Declare virtual do_get_global_symbols. (Object::get_global_symbols): New function. * object.cc (Input_objects::add_object): Pass object to cref_ if --cref. (Input_objects::archive_start): Likewise. (Input_objects::archive_stop): Likewise. (Input_objects::print_cref): New function. * dynobj.h (Sized_dynobj::do_get_global_symbols): New function. * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if --cref. * plugin.cc (Sized_pluginobj::do_get_global_symbols): New function. * plugin.h (class Sized_pluginobj): Update declarations.
80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
// cref.h -- cross reference reports for gold -*- C++ -*-
|
|
|
|
// Copyright 2008, 2010 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
|
|
|
|
#include <cstdio>
|
|
|
|
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;
|
|
|
|
// Print a cross reference table.
|
|
void
|
|
print_cref(const Symbol_table*, FILE*) const;
|
|
|
|
private:
|
|
void
|
|
need_inputs();
|
|
|
|
Cref_inputs* inputs_;
|
|
};
|
|
|
|
} // End namespace gold.
|
|
|
|
#endif // !defined(GOLD_CREF_H)
|