gold/
authorCary Coutant <ccoutant@google.com>
Mon, 15 Apr 2013 16:37:30 +0000 (16:37 +0000)
committerCary Coutant <ccoutant@google.com>
Mon, 15 Apr 2013 16:37:30 +0000 (16:37 +0000)
* script-sections.cc (Orphan_output_section): Reset address
to zero after each orphaned section for relocatable links.

gold/ChangeLog
gold/script-sections.cc

index a63521453b694b15b6043b7019acec849790c740..595c017b607d3d128311d4c6a98adf4968fc6521 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-15  Cary Coutant  <ccoutant@google.com>
+
+       * script-sections.cc (Orphan_output_section): Reset address
+       to zero after each orphaned section for relocatable links.
+
 2013-04-15  Cary Coutant  <ccoutant@google.com>
 
        * symtab.cc (Symbol_table::sized_write_globals): Subtract
index 2fb8cbbcc9b22dfef317b3fba1fc4ffb320f4027..a57e53ff2a65dc38f929aaeee6aa05b066ce7d57 100644 (file)
@@ -2918,11 +2918,17 @@ Orphan_output_section::set_section_addresses(Symbol_table*, Layout*,
       address += size;
     }
 
-  // An SHF_TLS/SHT_NOBITS section does not take up any address space.
-  if (this->os_ == NULL
-      || (this->os_->flags() & elfcpp::SHF_TLS) == 0
-      || this->os_->type() != elfcpp::SHT_NOBITS)
+  if (parameters->options().relocatable())
+    {
+      // For a relocatable link, reset DOT_VALUE to 0.
+      *dot_value = 0;
+      *load_address = 0;
+    }
+  else if (this->os_ == NULL
+          || (this->os_->flags() & elfcpp::SHF_TLS) == 0
+          || this->os_->type() != elfcpp::SHT_NOBITS)
     {
+      // An SHF_TLS/SHT_NOBITS section does not take up any address space.
       if (!have_load_address)
        *load_address = address;
       else