summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-12-04 23:11:35 +0000
committerIan Lance Taylor <iant@google.com>2007-12-04 23:11:35 +0000
commitabaa399568d8dea6b959350e387968eb746115c9 (patch)
tree23c1bb93b71b6c732cc908b6b470a481232f82e0
parentfd4980a3b8749aa27c12b4eacaa7f654d24c1957 (diff)
downloadppe42-binutils-abaa399568d8dea6b959350e387968eb746115c9.tar.gz
ppe42-binutils-abaa399568d8dea6b959350e387968eb746115c9.zip
Print symbol table statistics with --stats.
-rw-r--r--gold/main.cc1
-rw-r--r--gold/symtab.cc14
-rw-r--r--gold/symtab.h4
3 files changed, 19 insertions, 0 deletions
diff --git a/gold/main.cc b/gold/main.cc
index a4dcc5a42a..fe56aade44 100644
--- a/gold/main.cc
+++ b/gold/main.cc
@@ -106,6 +106,7 @@ main(int argc, char** argv)
File_read::print_stats();
fprintf(stderr, _("%s: output file size: %lld bytes\n"),
program_name, static_cast<long long>(layout.output_file_size()));
+ symtab.print_stats();
}
gold_exit(errors.error_count() == 0);
diff --git a/gold/symtab.cc b/gold/symtab.cc
index b2901ab9fa..6094c2af1e 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -1897,6 +1897,20 @@ Symbol_table::sized_write_section_symbol(const Output_section* os,
of->write_output_view(offset, sym_size, pov);
}
+// Print statistical information to stderr. This is used for --stats.
+
+void
+Symbol_table::print_stats() const
+{
+#if defined(HAVE_TR1_UNORDERED_MAP) || defined(HAVE_EXT_HASH_MAP)
+ fprintf(stderr, _("%s: symbol table entries: %zu; buckets: %zu\n"),
+ program_name, this->table_.size(), this->table_.bucket_count());
+#else
+ fprintf(stderr, _("%s: symbol table entries: %zu\n"),
+ program_name, this->table_.size());
+#endif
+}
+
// We check for ODR violations by looking for symbols with the same
// name for which the debugging information reports that they were
// defined in different source locations. When comparing the source
diff --git a/gold/symtab.h b/gold/symtab.h
index 9c7fb0935c..6d2577bbdd 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -1127,6 +1127,10 @@ class Symbol_table
void
write_section_symbol(const Output_section*, Output_file*, off_t) const;
+ // Dump statistical information to stderr.
+ void
+ print_stats() const;
+
private:
Symbol_table(const Symbol_table&);
Symbol_table& operator=(const Symbol_table&);
OpenPOWER on IntegriCloud