From 7c381248b302a5290a3f7a240a2cfe14181d7e24 Mon Sep 17 00:00:00 2001 From: Sriraman Tallam Date: Wed, 16 Jan 2013 22:47:14 +0000 Subject: [PATCH] 2013-01-16 Sriraman Tallam * layout.cc (Layout::layout): Do not do default sorting for text sections when section ordering is specified. (make_output_section): Ditto. * testsuite/plugin_final_layout.cc: Name the function sections to catch reordering issues. --- gold/ChangeLog | 8 ++++++++ gold/layout.cc | 2 ++ gold/testsuite/plugin_final_layout.cc | 8 +++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index f5969f0371f..9e998a8d633 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,11 @@ +2013-01-16 Sriraman Tallam + + * layout.cc (Layout::layout): Do not do default sorting for + text sections when section ordering is specified. + (make_output_section): Ditto. + * testsuite/plugin_final_layout.cc: Name the function sections + to catch reordering issues. + 2013-01-15 Alan Modra * powerpc.cc (Target_powerpc::do_relax): Default shared libs to diff --git a/gold/layout.cc b/gold/layout.cc index f7f0e7e33a1..576d44bee2e 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -1150,6 +1150,7 @@ Layout::layout(Sized_relobj_file* object, unsigned int shndx, // By default the GNU linker sorts some special text sections ahead // of others. We are compatible. if (!this->script_options_->saw_sections_clause() + && !this->is_section_ordering_specified() && !parameters->options().relocatable() && Layout::special_ordering_of_input_section(name) >= 0) os->set_must_sort_attached_input_sections(); @@ -1646,6 +1647,7 @@ Layout::make_output_section(const char* name, elfcpp::Elf_Word type, // need to know that this might happen before we attach any input // sections. if (!this->script_options_->saw_sections_clause() + && !this->is_section_ordering_specified() && !parameters->options().relocatable() && strcmp(name, ".text") == 0) os->set_may_sort_attached_input_sections(); diff --git a/gold/testsuite/plugin_final_layout.cc b/gold/testsuite/plugin_final_layout.cc index 3e264f623af..88dea30d4b7 100644 --- a/gold/testsuite/plugin_final_layout.cc +++ b/gold/testsuite/plugin_final_layout.cc @@ -21,16 +21,22 @@ // MA 02110-1301, USA. // The goal of this program is to verify if section ordering -// via plugins happens correctly. +// via plugins happens correctly. Also, test is plugin based ordering +// overrides default text section ordering where ".text.hot" sections +// are grouped. The plugin does not want foo and baz next to each other. +// Plugin section order is foo() followed by bar() and then baz(). +__attribute__ ((section(".text._Z3barv"))) void bar () { } +__attribute__ ((section(".text.hot._Z3bazv"))) void baz () { } +__attribute__ ((section(".text.hot._Z3foov"))) void foo () { } -- 2.30.2