2010-05-26 Rafael Espindola <espindola@google.com>
authorRafael Ávila de Espíndola <respindola@mozilla.com>
Wed, 26 May 2010 15:15:05 +0000 (15:15 +0000)
committerRafael Ávila de Espíndola <respindola@mozilla.com>
Wed, 26 May 2010 15:15:05 +0000 (15:15 +0000)
* script-sections.cc (Output_section_definition::set_section_addresses):
Check for --section-start.

gold/ChangeLog
gold/script-sections.cc

index e2b009d1ea92e947bd7cc490e2d1d0eb508d2745..899170d14e7d5f51e23c5c70a247133704f50068 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-26  Rafael Espindola  <espindola@google.com>
+
+       * script-sections.cc (Output_section_definition::set_section_addresses):
+       Check for --section-start.
+
 2010-05-26  Doug Kwan  <dougkwan@google.com>
 
        * arm.cc (Arm_scan_relocatable_relocs): New class.
index 952444e3d653dd750888dc3e3a1ad43f10c4f502..3266115a9e76b2de94f5c51e9369c55da9334054 100644 (file)
@@ -1939,14 +1939,23 @@ Output_section_definition::set_section_addresses(Symbol_table* symtab,
   uint64_t old_dot_value = *dot_value;
   uint64_t old_load_address = *load_address;
 
-  if (this->address_ == NULL)
-    address = *dot_value;
-  else
+  // Check for --section-start.
+  bool is_address_set = false;
+  if (this->output_section_ != NULL)
+    is_address_set =
+      parameters->options().section_start(this->output_section_->name(),
+                                          &address);
+  if (!is_address_set)
     {
-      Output_section* dummy;
-      address = this->address_->eval_with_dot(symtab, layout, true,
-                                             *dot_value, NULL, &dummy,
-                                             dot_alignment);
+      if (this->address_ == NULL)
+        address = *dot_value;
+      else
+        {
+          Output_section* dummy;
+          address = this->address_->eval_with_dot(symtab, layout, true,
+                                                  *dot_value, NULL, &dummy,
+                                                  dot_alignment);
+        }
     }
 
   uint64_t align;