Pass relocations to Target::do_calls_non_split.
authorCary Coutant <ccoutant@gmail.com>
Fri, 11 Dec 2015 22:20:41 +0000 (14:20 -0800)
committerCary Coutant <ccoutant@gmail.com>
Fri, 11 Dec 2015 22:23:59 +0000 (14:23 -0800)
gold/
* target.h (Target::calls_non_split): Add prelocs, reloc_count
parameters.
(Target::do_calls_non_split): Likewise.
* target.cc (Target::do_calls_non_split): Likewise.
* reloc.cc (Sized_relobj_file::split_stack_adjust_reltype): Adjust
call to Target::calls_non_split.

* i386.cc (Target_i386::do_calls_non_split): Add prelocs, reloc_count
parameters.
* powerpc.cc (Target_powerpc::do_calls_non_split): Likewise.
* x86_64.cc (Target_x86_64::do_calls_non_split): Likewise.

gold/ChangeLog
gold/i386.cc
gold/powerpc.cc
gold/reloc.cc
gold/target.cc
gold/target.h
gold/x86_64.cc

index fb1d3d08db04cd27dc220e6408b48cc421e2c847..e039ab1d097713acdc62066c820d0dee879a3d76 100644 (file)
@@ -1,3 +1,16 @@
+2015-12-11  Cary Coutant  <ccoutant@gmail.com>
+
+       * target.h (Target::calls_non_split): Add prelocs, reloc_count
+       parameters.
+       (Target::do_calls_non_split): Likewise.
+       * target.cc (Target::do_calls_non_split): Likewise.
+       * reloc.cc (Sized_relobj_file::split_stack_adjust_reltype): Adjust
+       call to Target::calls_non_split.
+       * i386.cc (Target_i386::do_calls_non_split): Add prelocs, reloc_count
+       parameters.
+       * powerpc.cc (Target_powerpc::do_calls_non_split): Likewise.
+       * x86_64.cc (Target_x86_64::do_calls_non_split): Likewise.
+
 2015-12-11  Cary Coutant  <ccoutant@gmail.com>
 
        * object.cc (Sized_relobj_file::Sized_relobj_file): Initialize
index 8cc724460cadfed2c40081a51195e52b896e0ae9..e0809a42891cdcc7a9bcd3a13e4b7b709443f5d4 100644 (file)
@@ -491,6 +491,7 @@ class Target_i386 : public Sized_target<32, false>
   void
   do_calls_non_split(Relobj* object, unsigned int shndx,
                     section_offset_type fnoffset, section_size_type fnsize,
+                    const unsigned char* prelocs, size_t reloc_count,
                     unsigned char* view, section_size_type view_size,
                     std::string* from, std::string* to) const;
 
@@ -3881,6 +3882,8 @@ void
 Target_i386::do_calls_non_split(Relobj* object, unsigned int shndx,
                                       section_offset_type fnoffset,
                                       section_size_type fnsize,
+                                      const unsigned char*,
+                                      size_t,
                                       unsigned char* view,
                                       section_size_type view_size,
                                       std::string* from,
index 59d04b3c25d3f192eb77b87761d662702f3830bb..71e38f9609220b001de92c8645265e487e4e41e0 100644 (file)
@@ -631,6 +631,7 @@ class Target_powerpc : public Sized_target<size, big_endian>
   void
   do_calls_non_split(Relobj* object, unsigned int shndx,
                     section_offset_type fnoffset, section_size_type fnsize,
+                    const unsigned char* prelocs, size_t reloc_count,
                     unsigned char* view, section_size_type view_size,
                     std::string* from, std::string* to) const;
 
@@ -6590,6 +6591,8 @@ Target_powerpc<size, big_endian>::do_calls_non_split(
     unsigned int shndx,
     section_offset_type fnoffset,
     section_size_type fnsize,
+    const unsigned char* prelocs,
+    size_t reloc_count,
     unsigned char* view,
     section_size_type view_size,
     std::string* from,
@@ -6600,7 +6603,8 @@ Target_powerpc<size, big_endian>::do_calls_non_split(
     {
       // warn
       Target::do_calls_non_split(object, shndx, fnoffset, fnsize,
-                                view, view_size, from, to);
+                                prelocs, reloc_count, view, view_size,
+                                from, to);
       return;
     }
 
index b83a9629d77a711292e6d8de3e562acd214490fd..c0c06c5ce6fe72d9ce9e0396908b3c883c46fde9 100644 (file)
@@ -1364,6 +1364,7 @@ Sized_relobj_file<size, big_endian>::split_stack_adjust_reltype(
       std::string from;
       std::string to;
       parameters->target().calls_non_split(this, shndx, p->first, p->second,
+                                          prelocs, reloc_count,
                                           view, view_size, &from, &to);
       if (!from.empty())
        {
index f558c5e8739e46ead3e9264f32e17f1699ff9951..19d001c0c611cb1e23b1dd5d1ff5c4ba2de8f0dc 100644 (file)
@@ -161,7 +161,8 @@ Target::do_is_call_to_non_split(const Symbol* sym, unsigned int) const
 
 void
 Target::do_calls_non_split(Relobj* object, unsigned int, section_offset_type,
-                          section_size_type, unsigned char*, section_size_type,
+                          section_size_type, const unsigned char*, size_t,
+                          unsigned char*, section_size_type,
                           std::string*, std::string*) const
 {
   static bool warned;
index 6e08f381a961903bde2de1f8902fa1c824aa08c1..d28491cecdf2cd33ec8bcc6a2aea72d45c29daad 100644 (file)
@@ -338,10 +338,12 @@ class Target
   void
   calls_non_split(Relobj* object, unsigned int shndx,
                  section_offset_type fnoffset, section_size_type fnsize,
+                 const unsigned char* prelocs, size_t reloc_count,
                  unsigned char* view, section_size_type view_size,
                  std::string* from, std::string* to) const
   {
-    this->do_calls_non_split(object, shndx, fnoffset, fnsize, view, view_size,
+    this->do_calls_non_split(object, shndx, fnoffset, fnsize,
+                            prelocs, reloc_count, view, view_size,
                             from, to);
   }
 
@@ -664,7 +666,8 @@ class Target
   // Virtual function which may be overridden by the child class.
   virtual void
   do_calls_non_split(Relobj* object, unsigned int, section_offset_type,
-                    section_size_type, unsigned char*, section_size_type,
+                    section_size_type, const unsigned char*, size_t,
+                    unsigned char*, section_size_type,
                     std::string*, std::string*) const;
 
   // make_elf_object hooks.  There are four versions of these for
index 12c65524b757a5ab33f04162b72323358e0eea2f..f260e74c0bc936f09ebc2c6a8660bca1f615c3ab 100644 (file)
@@ -561,6 +561,7 @@ class Target_x86_64 : public Sized_target<size, false>
   void
   do_calls_non_split(Relobj* object, unsigned int shndx,
                     section_offset_type fnoffset, section_size_type fnsize,
+                    const unsigned char* prelocs, size_t reloc_count,
                     unsigned char* view, section_size_type view_size,
                     std::string* from, std::string* to) const;
 
@@ -4597,6 +4598,8 @@ void
 Target_x86_64<size>::do_calls_non_split(Relobj* object, unsigned int shndx,
                                        section_offset_type fnoffset,
                                        section_size_type fnsize,
+                                       const unsigned char*,
+                                       size_t,
                                        unsigned char* view,
                                        section_size_type view_size,
                                        std::string* from,