summaryrefslogtreecommitdiff
path: root/gold/script-sections.cc
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <respindola@mozilla.com>2010-05-26 15:15:05 +0000
committerRafael Ávila de Espíndola <respindola@mozilla.com>2010-05-26 15:15:05 +0000
commitf418727792e6e7dce38aa382db45d147bccd8ed7 (patch)
treeaf8d317014e25281703e97f4d866e77e95a32958 /gold/script-sections.cc
parentc8ce57109cba194742fc1d0b6f953cf535571750 (diff)
downloadbinutils-gdb-f418727792e6e7dce38aa382db45d147bccd8ed7.tar.gz
2010-05-26 Rafael Espindola <espindola@google.com>
* script-sections.cc (Output_section_definition::set_section_addresses): Check for --section-start.
Diffstat (limited to 'gold/script-sections.cc')
-rw-r--r--gold/script-sections.cc23
1 files changed, 16 insertions, 7 deletions
diff --git a/gold/script-sections.cc b/gold/script-sections.cc
index 952444e3d65..3266115a9e7 100644
--- a/gold/script-sections.cc
+++ b/gold/script-sections.cc
@@ -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;