summaryrefslogtreecommitdiff
path: root/gold/readsyms.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2006-10-06 20:40:16 +0000
committerIan Lance Taylor <iant@google.com>2006-10-06 20:40:16 +0000
commit12e14209f0834b6d3d9884a586b558c32eb2607c (patch)
tree04db4beba9abf0d2bb6f91c383a4ac4d76cf7541 /gold/readsyms.cc
parent33423b7ffed87b140d924bc06ff35d353bfc4871 (diff)
downloadbinutils-gdb-12e14209f0834b6d3d9884a586b558c32eb2607c.tar.gz
Lay out object file sections when we add the symbols to the symbol
table.
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 ee0e0638c62..adc8fac6e91 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.