2013-01-16 Sriraman Tallam <tmsriram@google.com>
authorSriraman Tallam <tmsriram@google.com>
Wed, 16 Jan 2013 22:47:14 +0000 (22:47 +0000)
committerSriraman Tallam <tmsriram@google.com>
Wed, 16 Jan 2013 22:47:14 +0000 (22:47 +0000)
* 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
gold/layout.cc
gold/testsuite/plugin_final_layout.cc

index f5969f0..9e998a8 100644 (file)
@@ -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
index f7f0e7e..576d44b 100644 (file)
@@ -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();
index 3e264f6..88dea30 100644 (file)
 // 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 ()
 {
 }