This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Pass relocations to Target::do_calls_non_split.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6e0813d359c6eaddc481b3b902ca4ccc1251febe

commit 6e0813d359c6eaddc481b3b902ca4ccc1251febe
Author: Cary Coutant <ccoutant@gmail.com>
Date:   Fri Dec 11 14:20:41 2015 -0800

    Pass relocations to Target::do_calls_non_split.
    
    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.

Diff:
---
 gold/ChangeLog  | 13 +++++++++++++
 gold/i386.cc    |  3 +++
 gold/powerpc.cc |  6 +++++-
 gold/reloc.cc   |  1 +
 gold/target.cc  |  3 ++-
 gold/target.h   |  7 +++++--
 gold/x86_64.cc  |  3 +++
 7 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/gold/ChangeLog b/gold/ChangeLog
index fb1d3d0..e039ab1 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,5 +1,18 @@
 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
 	output_views_.
 	* object.h (Object::get_output_view): New function.
diff --git a/gold/i386.cc b/gold/i386.cc
index 8cc7244..e0809a4 100644
--- a/gold/i386.cc
+++ b/gold/i386.cc
@@ -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,
diff --git a/gold/powerpc.cc b/gold/powerpc.cc
index 59d04b3..71e38f9 100644
--- a/gold/powerpc.cc
+++ b/gold/powerpc.cc
@@ -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;
     }
 
diff --git a/gold/reloc.cc b/gold/reloc.cc
index b83a962..c0c06c5 100644
--- a/gold/reloc.cc
+++ b/gold/reloc.cc
@@ -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())
 	{
diff --git a/gold/target.cc b/gold/target.cc
index f558c5e..19d001c 100644
--- a/gold/target.cc
+++ b/gold/target.cc
@@ -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;
diff --git a/gold/target.h b/gold/target.h
index 6e08f38..d28491c 100644
--- a/gold/target.h
+++ b/gold/target.h
@@ -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
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index 12c6552..f260e74 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -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,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]