From: Ian Lance Taylor Date: Thu, 9 Jun 2011 19:25:02 +0000 (+0000) Subject: * script-sections.cc X-Git-Tag: sid-snapshot-20110701~244 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a94907d981327b5b17f0be51b6e0934b1add7bad;p=thirdparty%2Fbinutils-gdb.git * script-sections.cc (Orphan_output_section::set_section_addresses): For a relocatable link set address to 0. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 5c705bf9b3e..56e073f9a87 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2011-06-09 Ian Lance Taylor + + * script-sections.cc + (Orphan_output_section::set_section_addresses): For a relocatable + link set address to 0. + 2011-06-09 Cary Coutant PR gold/12804 diff --git a/gold/script-sections.cc b/gold/script-sections.cc index 10af8e11675..3bcc9e6adaa 100644 --- a/gold/script-sections.cc +++ b/gold/script-sections.cc @@ -2846,6 +2846,17 @@ Orphan_output_section::set_section_addresses(Symbol_table*, Layout*, uint64_t address = *dot_value; address = align_address(address, this->os_->addralign()); + // For a relocatable link, all orphan sections are put at + // address 0. In general we expect all sections to be at + // address 0 for a relocatable link, but we permit the linker + // script to override that for specific output sections. + if (parameters->options().relocatable()) + { + address = 0; + *load_address = 0; + have_load_address = false; + } + if ((this->os_->flags() & elfcpp::SHF_ALLOC) != 0) { this->os_->set_address(address);