From f418727792e6e7dce38aa382db45d147bccd8ed7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafael=20=C3=81vila=20de=20Esp=C3=ADndola?= Date: Wed, 26 May 2010 15:15:05 +0000 Subject: [PATCH] 2010-05-26 Rafael Espindola * script-sections.cc (Output_section_definition::set_section_addresses): Check for --section-start. --- gold/ChangeLog | 5 +++++ gold/script-sections.cc | 23 ++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index e2b009d1ea..899170d14e 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2010-05-26 Rafael Espindola + + * script-sections.cc (Output_section_definition::set_section_addresses): + Check for --section-start. + 2010-05-26 Doug Kwan * arm.cc (Arm_scan_relocatable_relocs): New class. diff --git a/gold/script-sections.cc b/gold/script-sections.cc index 952444e3d6..3266115a9e 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; -- 2.34.1