This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[committed, PATCH] x86: Add sizeof_reloc to elf_x86_link_hash_table
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: binutils at sourceware dot org
- Date: Sat, 2 Sep 2017 05:59:04 -0700
- Subject: [committed, PATCH] x86: Add sizeof_reloc to elf_x86_link_hash_table
- Authentication-results: sourceware.org; auth=none
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.
---
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 554c1e7520..764d3e7766 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 50d945ef0a..fe5d211af2 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 86af21f431..0c80ca45be 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;
--
2.13.5