1  // cref.h -- cross reference reports for gold   -*- C++ -*-
       2  
       3  // Copyright (C) 2008-2023 Free Software Foundation, Inc.
       4  // Written by Ian Lance Taylor <iant@google.com>.
       5  
       6  // This file is part of gold.
       7  
       8  // This program is free software; you can redistribute it and/or modify
       9  // it under the terms of the GNU General Public License as published by
      10  // the Free Software Foundation; either version 3 of the License, or
      11  // (at your option) any later version.
      12  
      13  // This program is distributed in the hope that it will be useful,
      14  // but WITHOUT ANY WARRANTY; without even the implied warranty of
      15  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16  // GNU General Public License for more details.
      17  
      18  // You should have received a copy of the GNU General Public License
      19  // along with this program; if not, write to the Free Software
      20  // Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      21  // MA 02110-1301, USA.
      22  
      23  #ifndef GOLD_CREF_H
      24  #define GOLD_CREF_H
      25  
      26  #include <cstdio>
      27  
      28  namespace gold
      29  {
      30  
      31  class Object;
      32  class Archive;
      33  class Cref_inputs;
      34  
      35  // This class collects data for cross reference and other reporting.
      36  
      37  class Cref
      38  {
      39   public:
      40    Cref()
      41      : inputs_(NULL)
      42    { }
      43  
      44    // Record an input object file.  This is called for each object file
      45    // in the order in which it is processed.
      46    void
      47    add_object(Object*);
      48  
      49    // Start recording an input archive.  This is called for each
      50    // archive in the order in which it appears on the command line.  A
      51    // call to add_archive_start precedes calls to add_object for each
      52    // object included from the archive.
      53    void
      54    add_archive_start(Archive*);
      55  
      56    // Finish recording an input archive.  This is called after
      57    // add_object has been called for each object included from the
      58    // archive.
      59    void
      60    add_archive_stop(Archive*);
      61  
      62    // Print symbol counts.
      63    void
      64    print_symbol_counts(const Symbol_table*) const;
      65  
      66    // Print a cross reference table.
      67    void
      68    print_cref(const Symbol_table*, FILE*) const;
      69  
      70   private:
      71    void
      72    need_inputs();
      73  
      74    Cref_inputs* inputs_;
      75  };
      76  
      77  } // End namespace gold.
      78  
      79  #endif // !defined(GOLD_CREF_H)