aboutsummaryrefslogtreecommitdiff
path: root/gold/object.h
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2011-03-30 01:31:57 +0000
committerCary Coutant <ccoutant@google.com>2011-03-30 01:31:57 +0000
commite0c5278066dc16f8b0e00e970f56c1bd4d32f864 (patch)
treeba7ae7374a9b99a360917e9b7eefce05da11a0e8 /gold/object.h
parent53a9226b8f0df0be4f8af3478212741eff1a489c (diff)
downloadfsf-binutils-gdb-e0c5278066dc16f8b0e00e970f56c1bd4d32f864.zip
fsf-binutils-gdb-e0c5278066dc16f8b0e00e970f56c1bd4d32f864.tar.gz
fsf-binutils-gdb-e0c5278066dc16f8b0e00e970f56c1bd4d32f864.tar.bz2
* archive.cc (Library_base::should_include_member): Move
method here from class Archive. (Archive::Archive): Initialize base class. (Archive::should_include_member): Move to base class. (Archive::do_for_all_unused_symbols): New function. (Add_archive_symbols::run): Remove redundant access to incremental_inputs. (Lib_group::Lib_group): Initialize base class. (Lib_group::do_filename): New function. (Lib_group::include_member): Pass pointer to Lib_group to report_object. (Lib_group::do_for_all_unused_symbols): New function. (Add_lib_group_symbols::run): Report archive information for incremental links. * archive.h (class Library_base): New base class. (class Archive): Derive from Library_base. (Archive::filename): Move to base class. (Archive::set_incremental_info): Likewise. (Archive::incremental_info): Likewise. (Archive::Should_include): Likewise. (Archive::should_include_member): Likewise. (Archive::Armap_entry): Remove. (Archive::Unused_symbol_iterator): Remove. (Archive::unused_symbols_begin): Remove. (Archive::unused_symbols_end): Remove. (Archive::do_filename): New function. (Archive::do_get_mtime): New function. (Archive::do_for_all_unused_symbols): New function. (Archive::task_): Move to base class. (Archive::incremental_info_): Likewise. (class Lib_group): Derive from Library_base. (Lib_group::do_filename): New function. (Lib_group::do_get_mtime): New function. (Lib_group::do_for_all_unused_symbols): New function. (Lib_group::task_): Move to base class. * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New function. * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New function. * incremental.cc (Incremental_inputs::report_archive_begin): Use Library_base; call library's get_mtime; add incremental inputs entry before members. (class Unused_symbol_visitor): New class. (Incremental_inputs::report_archive_end): Use Library_base; use visitor class to record unused symbols; don't add incremental inputs entry after members. (Incremental_inputs::report_object): Use Library_base. * incremental.h (Incremental_archive_entry::Incremental_archive_entry): Remove unused Archive parameter. (Incremental_inputs::report_archive_begin): Use Library_base. (Incremental_inputs::report_archive_end): Likewise. (Incremental_inputs::report_object): Likewise. * object.cc (Sized_relobj::do_for_all_global_symbols): New function. * object.h (Object::for_all_global_symbols): New function. (Object::do_for_all_global_symbols): New function. (Sized_relobj::do_for_all_global_symbols): New function. * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New function. * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New function.
Diffstat (limited to 'gold/object.h')
-rw-r--r--gold/object.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/gold/object.h b/gold/object.h
index 8ee03a7..0b25b42 100644
--- a/gold/object.h
+++ b/gold/object.h
@@ -422,6 +422,12 @@ class Object
Read_symbols_data* sd, std::string* why)
{ return this->do_should_include_member(symtab, layout, sd, why); }
+ // Iterate over global symbols, calling a visitor class V for each.
+ void
+ for_all_global_symbols(Read_symbols_data* sd,
+ Library_base::Symbol_visitor_base* v)
+ { return this->do_for_all_global_symbols(sd, v); }
+
// Functions and types for the elfcpp::Elf_file interface. This
// permit us to use Object as the File template parameter for
// elfcpp::Elf_file.
@@ -572,6 +578,11 @@ class Object
do_should_include_member(Symbol_table* symtab, Layout*, Read_symbols_data*,
std::string* why) = 0;
+ // Iterate over global symbols, calling a visitor class V for each.
+ virtual void
+ do_for_all_global_symbols(Read_symbols_data* sd,
+ Library_base::Symbol_visitor_base* v) = 0;
+
// Return the location of the contents of a section. Implemented by
// child class.
virtual Location
@@ -1810,6 +1821,11 @@ class Sized_relobj : public Relobj
do_should_include_member(Symbol_table* symtab, Layout*, Read_symbols_data*,
std::string* why);
+ // Iterate over global symbols, calling a visitor class V for each.
+ void
+ do_for_all_global_symbols(Read_symbols_data* sd,
+ Library_base::Symbol_visitor_base* v);
+
// Read the relocs.
void
do_read_relocs(Read_relocs_data*);