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] x86: Add sizeof_reloc to elf_x86_link_hash_table


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

commit 503294e755498eb6545ca72b338c5037facab7f7
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sat Sep 2 05:55:25 2017 -0700

    x86: Add sizeof_reloc to elf_x86_link_hash_table
    
    Initialize htab->sizeof_reloc once, instead of computing it every time.
    
    	* elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Initialize
    	sizeof_reloc.
    	(_bfd_x86_elf_adjust_dynamic_symbol): Use sizeof_reloc.
    	* elfxx-x86.h (elf_x86_link_hash_table): Add sizeof_reloc.

Diff:
---
 bfd/ChangeLog   | 7 +++++++
 bfd/elfxx-x86.c | 7 ++++---
 bfd/elfxx-x86.h | 1 +
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 554c1e7..764d3e7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,12 @@
 2017-09-02  H.J. Lu  <hongjiu.lu@intel.com>
 
+	* elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Initialize
+	sizeof_reloc.
+	(_bfd_x86_elf_adjust_dynamic_symbol): Use sizeof_reloc.
+	* elfxx-x86.h (elf_x86_link_hash_table): Add sizeof_reloc.
+
+2017-09-02  H.J. Lu  <hongjiu.lu@intel.com>
+
 	* elf32-i386.c (elf_i386_allocate_dynrelocs): Check VxWorks
 	with htab->is_vxworks.
 	(elf_i386_size_dynamic_sections): Likewise.
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 50d945e..fe5d211 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -277,6 +277,7 @@ _bfd_x86_elf_link_hash_table_create (bfd *abfd)
     {
       ret->r_info = elf64_r_info;
       ret->r_sym = elf64_r_sym;
+      ret->sizeof_reloc = sizeof (Elf64_External_Rela);
       ret->pointer_r_type = R_X86_64_64;
       ret->dynamic_interpreter = ELF64_DYNAMIC_INTERPRETER;
       ret->dynamic_interpreter_size = sizeof ELF64_DYNAMIC_INTERPRETER;
@@ -289,6 +290,7 @@ _bfd_x86_elf_link_hash_table_create (bfd *abfd)
       ret->r_sym = elf32_r_sym;
       if (bed->target_id == X86_64_ELF_DATA)
 	{
+	  ret->sizeof_reloc = sizeof (Elf32_External_Rela);
 	  ret->pointer_r_type = R_X86_64_32;
 	  ret->dynamic_interpreter = ELFX32_DYNAMIC_INTERPRETER;
 	  ret->dynamic_interpreter_size
@@ -297,6 +299,7 @@ _bfd_x86_elf_link_hash_table_create (bfd *abfd)
 	}
       else
 	{
+	  ret->sizeof_reloc = sizeof (Elf32_External_Rel);
 	  ret->pointer_r_type = R_386_32;
 	  ret->dynamic_interpreter = ELF32_DYNAMIC_INTERPRETER;
 	  ret->dynamic_interpreter_size
@@ -735,9 +738,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
     }
   if ((h->root.u.def.section->flags & SEC_ALLOC) != 0 && h->size != 0)
     {
-      srel->size += ((bed->target_id == I386_ELF_DATA)
-		     ? sizeof (Elf32_External_Rel)
-		     : bed->s->sizeof_rela);
+      srel->size += htab->sizeof_reloc;
       h->needs_copy = 1;
     }
 
diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h
index 86af21f..0c80ca4 100644
--- a/bfd/elfxx-x86.h
+++ b/bfd/elfxx-x86.h
@@ -313,6 +313,7 @@ struct elf_x86_link_hash_table
 
   bfd_vma (*r_info) (bfd_vma, bfd_vma);
   bfd_vma (*r_sym) (bfd_vma);
+  unsigned int sizeof_reloc;
   unsigned int pointer_r_type;
   int dynamic_interpreter_size;
   const char *dynamic_interpreter;


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