From 153e7da4fc01a28171a44f5538a80e8cc29e1818 Mon Sep 17 00:00:00 2001 From: Doug Kwan Date: Tue, 13 Apr 2010 20:37:55 +0000 Subject: [PATCH] 2010-04-13 Doug Kwan * arm.cc (Arm_input_section::set_final_data_size): Compute accurate final data size instead of using current data size. --- gold/ChangeLog | 5 +++++ gold/arm.cc | 18 +++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 123cbb9..0fd5fde 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2010-04-13 Doug Kwan + + * arm.cc (Arm_input_section::set_final_data_size): Compute + accurate final data size instead of using current data size. + 2010-04-09 Doug Kwan * layout.cc (Layout::choose_output_section): Handle script section diff --git a/gold/arm.cc b/gold/arm.cc index c9e730b..036160f 100644 --- a/gold/arm.cc +++ b/gold/arm.cc @@ -4935,21 +4935,17 @@ template void Arm_input_section::set_final_data_size() { - // If this owns a stub table, finalize its data size as well. + off_t off = convert_types(this->original_size_); + if (this->is_stub_table_owner()) { - uint64_t address = this->address(); - // The stub table comes after the original section contents. - address += this->original_size_; - address = align_address(address, this->stub_table_->addralign()); - off_t offset = this->offset() + (address - this->address()); - this->stub_table_->set_address_and_file_offset(address, offset); - address += this->stub_table_->data_size(); - gold_assert(address == this->address() + this->current_data_size()); + off = align_address(off, this->stub_table_->addralign()); + this->stub_table_->set_address_and_file_offset(this->address() + off, + this->offset() + off); + off += this->stub_table_->data_size(); } - - this->set_data_size(this->current_data_size()); + this->set_data_size(off); } // Reset address and file offset. -- 2.7.4