diff options
author | Cary Coutant <ccoutant@google.com> | 2011-03-30 01:31:57 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2011-03-30 01:31:57 +0000 |
commit | e0c5278066dc16f8b0e00e970f56c1bd4d32f864 (patch) | |
tree | ba7ae7374a9b99a360917e9b7eefce05da11a0e8 /gold/object.h | |
parent | 53a9226b8f0df0be4f8af3478212741eff1a489c (diff) | |
download | fsf-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.h | 16 |
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*); |