PR gold/15662
authorCary Coutant <ccoutant@google.com>
Thu, 27 Jun 2013 23:20:35 +0000 (23:20 +0000)
committerCary Coutant <ccoutant@google.com>
Thu, 27 Jun 2013 23:20:35 +0000 (23:20 +0000)
* powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
function.
(Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
(Target_powerpc::do_relax): Call the above.

gold/ChangeLog
gold/powerpc.cc

index 874a20af00af209efef1a418b03cf549443bf680..d719df427b9291be703744a63d644ef2ff224f99 100644 (file)
@@ -1,3 +1,11 @@
+2013-06-27  Jing Yu  <jingyu@google.com>
+
+       PR gold/15662
+       * powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
+       function.
+       (Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
+       (Target_powerpc::do_relax): Call the above.
+
 2013-06-27  Cary Coutant  <ccoutant@google.com>
 
        * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
index 747c7b4c0226094606451c9a3205d0bbc56462c1..17849ee533c6581ec5b970b983683bf108a68aa7 100644 (file)
@@ -2628,7 +2628,7 @@ Target_powerpc<size, big_endian>::do_relax(int pass,
       && parameters->options().output_is_position_independent())
     {
       // Fill in the BRLT relocs.
-      this->brlt_section_->reset_data_size();
+      this->brlt_section_->reset_brlt_sizes();
       for (typename Branch_lookup_table::const_iterator p
             = this->branch_lookup_table_.begin();
           p != this->branch_lookup_table_.end();
@@ -2636,7 +2636,7 @@ Target_powerpc<size, big_endian>::do_relax(int pass,
        {
          this->brlt_section_->add_reloc(p->first, p->second);
        }
-      this->brlt_section_->finalize_data_size();
+      this->brlt_section_->finalize_brlt_sizes();
     }
   return again;
 }
@@ -3013,6 +3013,20 @@ class Output_data_brlt_powerpc : public Output_section_data_build
       targ_(targ)
   { }
 
+  void
+  reset_brlt_sizes()
+  {
+    this->reset_data_size();
+    this->rel_->reset_data_size();
+  }
+
+  void
+  finalize_brlt_sizes()
+  {
+    this->finalize_data_size();
+    this->rel_->finalize_data_size();
+  }
+
   // Add a reloc for an entry in the BRLT.
   void
   add_reloc(Address to, unsigned int off)