diff options
author | Sriraman Tallam <tmsriram@google.com> | 2013-01-16 22:47:14 +0000 |
---|---|---|
committer | Sriraman Tallam <tmsriram@google.com> | 2013-01-16 22:47:14 +0000 |
commit | 7c381248b302a5290a3f7a240a2cfe14181d7e24 (patch) | |
tree | e55f6bc22d214f59b4a6b19ce27364d4dbb485d4 /gold | |
parent | 6a3e1baeae1ce25cc959d53a84925074a97deef9 (diff) | |
download | binutils-7c381248b302a5290a3f7a240a2cfe14181d7e24.zip binutils-7c381248b302a5290a3f7a240a2cfe14181d7e24.tar.gz binutils-7c381248b302a5290a3f7a240a2cfe14181d7e24.tar.bz2 |
2013-01-16 Sriraman Tallam <tmsriram@google.com>
* 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.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 8 | ||||
-rw-r--r-- | gold/layout.cc | 2 | ||||
-rw-r--r-- | gold/testsuite/plugin_final_layout.cc | 8 |
3 files changed, 17 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index f5969f0..9e998a8 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,11 @@ +2013-01-16 Sriraman Tallam <tmsriram@google.com> + + * 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 <amodra@gmail.com> * powerpc.cc (Target_powerpc::do_relax): Default shared libs to diff --git a/gold/layout.cc b/gold/layout.cc index f7f0e7e..576d44b 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -1150,6 +1150,7 @@ Layout::layout(Sized_relobj_file<size, big_endian>* 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 3e264f6..88dea30 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 () { } |