From: Ian Lance Taylor Date: Wed, 19 Oct 2011 15:05:58 +0000 (+0000) Subject: PR gold/13204 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ea0d8c4740b09bb4d919a3e6b53d7a141f76a2bd;p=binutils-gdb.git PR gold/13204 * layout.cc (Layout::segment_precedes): Don't assert failure if a --section-start option was seen. * options.h (General_options::any_section_start): New function. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 153eead12b0..68572441b1a 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,10 @@ +2011-10-19 Ian Lance Taylor + + PR gold/13204 + * layout.cc (Layout::segment_precedes): Don't assert failure if a + --section-start option was seen. + * options.h (General_options::any_section_start): New function. + 2011-10-18 David S. Miller PR binutils/13301 diff --git a/gold/layout.cc b/gold/layout.cc index 2f77e5646a2..a4ef31ac5c2 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -2976,8 +2976,9 @@ Layout::segment_precedes(const Output_segment* seg1, // We shouldn't get here--we shouldn't create segments which we // can't distinguish. Unless of course we are using a weird linker - // script. - gold_assert(this->script_options_->saw_phdrs_clause()); + // script or overlapping --section-start options. + gold_assert(this->script_options_->saw_phdrs_clause() + || parameters->options().any_section_start()); return false; } diff --git a/gold/options.h b/gold/options.h index 427e9574fd6..28377908b7b 100644 --- a/gold/options.h +++ b/gold/options.h @@ -1381,6 +1381,11 @@ class General_options bool section_start(const char* secname, uint64_t* paddr) const; + // Return whether any --section-start option was used. + bool + any_section_start() const + { return !this->section_starts_.empty(); } + enum Fix_v4bx { // Leave original instruction.