summaryrefslogtreecommitdiff
path: root/gold/main.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2010-01-05 21:52:51 +0000
committerIan Lance Taylor <ian@airs.com>2010-01-05 21:52:51 +0000
commitdde3f402cfe649f271730fa5de983ee663743ea3 (patch)
treeca56e62c8e4e0b6e57743388d5f1f282cc584869 /gold/main.cc
parent43e85a8f541dcc299092452d816749cf99e31d60 (diff)
downloadbinutils-gdb-dde3f402cfe649f271730fa5de983ee663743ea3.tar.gz
PR 10980
* 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.
Diffstat (limited to 'gold/main.cc')
-rw-r--r--gold/main.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/gold/main.cc b/gold/main.cc
index 5d6cbd5a0f5..9be497204cc 100644
--- a/gold/main.cc
+++ b/gold/main.cc
@@ -1,6 +1,6 @@
// main.cc -- gold main function.
-// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -270,13 +270,18 @@ main(int argc, char** argv)
layout.print_stats();
}
- if (mapfile != NULL)
- mapfile->close();
-
// Issue defined symbol report.
if (command_line.options().user_set_print_symbol_counts())
input_objects.print_symbol_counts(&symtab);
+ // Output cross reference table.
+ if (command_line.options().cref())
+ input_objects.print_cref(&symtab,
+ mapfile == NULL ? stdout : mapfile->file());
+
+ if (mapfile != NULL)
+ mapfile->close();
+
if (parameters->options().fatal_warnings()
&& errors.warning_count() > 0
&& errors.error_count() == 0)