aboutsummaryrefslogtreecommitdiff
path: root/gold/readsyms.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gold/readsyms.cc')
-rw-r--r--gold/readsyms.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/gold/readsyms.cc b/gold/readsyms.cc
index ee0e063..adc8fac 100644
--- a/gold/readsyms.cc
+++ b/gold/readsyms.cc
@@ -74,8 +74,10 @@ Read_symbols::run(Workqueue* workqueue)
this->input_objects_->add_object(obj);
- Read_symbols_data sd = obj->read_symbols();
- workqueue->queue(new Add_symbols(this->symtab_, obj, sd,
+ Read_symbols_data* sd = new Read_symbols_data;
+ obj->read_symbols(sd);
+ workqueue->queue(new Add_symbols(this->symtab_, this->layout_,
+ obj, sd,
this->this_blocker_,
this->next_blocker_));
@@ -94,6 +96,7 @@ Read_symbols::run(Workqueue* workqueue)
Archive* arch = new Archive(this->input_.name(), input_file);
arch->setup();
workqueue->queue(new Add_archive_symbols(this->symtab_,
+ this->layout_,
this->input_objects_,
arch,
this->this_blocker_,
@@ -155,7 +158,10 @@ Add_symbols::locks(Workqueue* workqueue)
void
Add_symbols::run(Workqueue*)
{
+ this->object_->layout(this->layout_, this->sd_);
this->object_->add_symbols(this->symtab_, this->sd_);
+ delete this->sd_;
+ this->sd_ = NULL;
}
} // End namespace gold.