aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2009-05-15 17:01:04 +0000
committerIan Lance Taylor <ian@airs.com>2009-05-15 17:01:04 +0000
commit072fe7ce7a6d9d6b401284de5858495157a35df3 (patch)
treeca7231716f83cae7acf0c8b04566ffcef0f4c762 /gold/readsyms.cc
parent2009-05-15 Paul Pluzhnikov <ppluzhnikov@google.com> (diff)
downloadbinutils-gdb-072fe7ce7a6d9d6b401284de5858495157a35df3.tar.gz
binutils-gdb-072fe7ce7a6d9d6b401284de5858495157a35df3.tar.bz2
binutils-gdb-072fe7ce7a6d9d6b401284de5858495157a35df3.zip
* gold.h (Incremental_argument_list): Remove (invalid) forward
declaration. * incremental.cc (Incremental_inputs::report_achive): New method. (Incremental_inputs::report_object): New method. (Incremental_inputs::report_script): New method. (Incremental_inputs::finalize_inputs): New method. (Incremental_inputs::finalize): Call finalize_inputs(). (Incremental_inputs::sized_create_incremental_inputs_section_data): Create inputs entries. * incremental.h (Incremental_input_type): New enum. (Incremental_inputs::Incremental_input): Initialize new fields. (Incremental_inputs::report_inputs): New method. (Incremental_inputs::report_achive): New method. (Incremental_inputs::report_object): New method. (Incremental_inputs::report_script): New method. (Incremental_inputs::finalize_inputs): New method. (Incremental_inputs::Input_info): New struct. (Incremental_inputs::Input_info_map): New typedef. (Incremental_inputs::lock_): New field. (Incremental_inputs::Inputs_): New field. (Incremental_inputs::Inputs_map): New field. * main.cc (main): Call Incremental_input::report_inputs. * options.h (Input_argument_list): Typedef moved from Input_arguments. (Input_file_group::Files): Remove, use ::Input_argument_list. (Input_file_group::Input_argument_list): Remove, use ::Input_argument_list. * plugin.cc (Plugin_manager::add_input_file): Add error in incremental build. * read_syms.cc (do_read_syms): Call Incremental_input::report_* functions. * script.cc (read_input_script): Call Incremental_input::report_script. * script.h (Script_info): New class.
Diffstat (limited to 'gold/readsyms.cc')
-rw-r--r--gold/readsyms.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/gold/readsyms.cc b/gold/readsyms.cc
index b6da88d45ce..c05d5a39aef 100644
--- a/gold/readsyms.cc
+++ b/gold/readsyms.cc
@@ -33,6 +33,8 @@
#include "script.h"
#include "readsyms.h"
#include "plugin.h"
+#include "layout.h"
+#include "incremental.h"
namespace gold
{
@@ -199,7 +201,7 @@ Read_symbols::do_read_symbols(Workqueue* workqueue)
{
bool is_thin_archive
= memcmp(ehdr, Archive::armagt, Archive::sarmag) == 0;
- if (is_thin_archive
+ if (is_thin_archive
|| memcmp(ehdr, Archive::armag, Archive::sarmag) == 0)
{
// This is an archive.
@@ -207,7 +209,13 @@ Read_symbols::do_read_symbols(Workqueue* workqueue)
input_file, is_thin_archive,
this->dirpath_, this);
arch->setup();
-
+
+ if (this->layout_->incremental_inputs())
+ {
+ const Input_argument* ia = this->input_argument_;
+ this->layout_->incremental_inputs()->report_archive(ia, arch);
+ }
+
// Unlock the archive so it can be used in the next task.
arch->unlock(this);
@@ -280,6 +288,12 @@ Read_symbols::do_read_symbols(Workqueue* workqueue)
Read_symbols_data* sd = new Read_symbols_data;
obj->read_symbols(sd);
+ if (this->layout_->incremental_inputs())
+ {
+ const Input_argument* ia = this->input_argument_;
+ this->layout_->incremental_inputs()->report_object(ia, obj);
+ }
+
// Opening the file locked it, so now we need to unlock it. We
// need to unlock it before queuing the Add_symbols task,
// because the workqueue doesn't know about our lock on the