summaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2013-04-21 23:21:55 +0000
committerAlan Modra <amodra@bigpond.net.au>2013-04-21 23:21:55 +0000
commit0d41c65c8b840f91d77a44b2ba3e0b1d93ee6545 (patch)
treef4893f63d20ff9d319d573aceaefd55570222662 /gold
parentfb2da5ca1e1364710e289e45ddfd540bd3caf86b (diff)
downloadbinutils-redhat-0d41c65c8b840f91d77a44b2ba3e0b1d93ee6545.tar.gz
PR gold/15355
* layout.cc (Layout::segment_precedes): Allow more than one segment with the same type and flags.
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog50
-rw-r--r--gold/layout.cc6
2 files changed, 32 insertions, 24 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 64aedfdd7e..67d7571eae 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2013-04-22 Alan Modra <amodra@gmail.com>
+
+ PR gold/15355
+ * layout.cc (Layout::segment_precedes): Allow more than one
+ segment with the same type and flags.
+
2013-04-15 Cary Coutant <ccoutant@google.com>
* layout.cc (Layout::set_relocatable_section_offsets): Don't
@@ -10,12 +16,12 @@
2013-04-15 Cary Coutant <ccoutant@google.com>
- * symtab.cc (Symbol_table::sized_write_globals): Subtract
- section starting address for relocatable link.
- * testsuite/Makefile.am (script_test_11): New test.
- * testsuite/Makefile.in: Regenerate.
- * testsuite/script_test_11.c: New source file.
- * testsuite/script_test_11.t: New linker script.
+ * symtab.cc (Symbol_table::sized_write_globals): Subtract
+ section starting address for relocatable link.
+ * testsuite/Makefile.am (script_test_11): New test.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/script_test_11.c: New source file.
+ * testsuite/script_test_11.t: New linker script.
2013-04-13 Alan Modra <amodra@gmail.com>
@@ -310,17 +316,17 @@
2013-01-28 Cary Coutant <ccoutant@google.com>
- * dwp.cc (File_list): New typedef.
- (Dwo_name_info_reader): New class.
- (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
- (Dwo_id_info_reader::visit_top_die): Remove unused member function.
- (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
- (Dwo_file::read_executable): New function.
- (Dwo_file::read): Move common setup code to ...
- (Dwo_file::make_object): ... here.
- (dwp_options): Add --exec/-e.
- (usage): Likewise.
- (main): Likewise.
+ * dwp.cc (File_list): New typedef.
+ (Dwo_name_info_reader): New class.
+ (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
+ (Dwo_id_info_reader::visit_top_die): Remove unused member function.
+ (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
+ (Dwo_file::read_executable): New function.
+ (Dwo_file::read): Move common setup code to ...
+ (Dwo_file::make_object): ... here.
+ (dwp_options): Add --exec/-e.
+ (usage): Likewise.
+ (main): Likewise.
2013-01-24 Sriraman Tallam <tmsriram@google.com>
@@ -503,11 +509,11 @@
2012-12-14 Cary Coutant <ccoutant@google.com>
- * testsuite/Makefile.am (exception_separate_shared_12_test): Add
- --no-as-needed flag.
- (exception_separate_shared_12_test): Likewise.
- (incremental_copy_test): Likewise.
- * testsuite/Makefile.in: Regenerate.
+ * testsuite/Makefile.am (exception_separate_shared_12_test): Add
+ --no-as-needed flag.
+ (exception_separate_shared_12_test): Likewise.
+ (incremental_copy_test): Likewise.
+ * testsuite/Makefile.in: Regenerate.
2012-12-14 Cary Coutant <ccoutant@google.com>
diff --git a/gold/layout.cc b/gold/layout.cc
index f2dc6da191..13f57cb82f 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -3175,12 +3175,14 @@ Layout::segment_precedes(const Output_segment* seg1,
// The order of non-PT_LOAD segments is unimportant. We simply sort
// by the numeric segment type and flags values. There should not
- // be more than one segment with the same type and flags.
+ // be more than one segment with the same type and flags, except
+ // when a linker script specifies such.
if (type1 != elfcpp::PT_LOAD)
{
if (type1 != type2)
return type1 < type2;
- gold_assert(flags1 != flags2);
+ gold_assert(flags1 != flags2
+ || this->script_options_->saw_phdrs_clause());
return flags1 < flags2;
}