aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-x86-64.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-09-07 17:19:10 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-09-07 17:21:07 -0700
commit7a382c1c50fca0d4bc4c2e618ff6ac222c4e2137 (patch)
tree5fd76f03573b7ebbc4b986585323b5e7dbf419e3 /bfd/elf64-x86-64.c
parentbd757a5bf293aaed6c6aa79776bbef13ca2da92b (diff)
downloadgdb-7a382c1c50fca0d4bc4c2e618ff6ac222c4e2137.zip
gdb-7a382c1c50fca0d4bc4c2e618ff6ac222c4e2137.tar.gz
gdb-7a382c1c50fca0d4bc4c2e618ff6ac222c4e2137.tar.bz2
x86; Don't add elf64-x86-64.lo nor elf64.lo together with elfxx-x86.lo
Don't set r_info and r_sym fields in _bfd_x86_elf_link_hash_table_create. Instead, set them in _bfd_x86_elf_link_setup_gnu_properties. We can avoid adding elf64-x86-64.lo and elf64.lo together with elfxx-x86.lo to bfd_backends. * configure.ac (bfd_backends): Don't add elf64-x86-64.lo nor elf64.lo together with elfxx-x86.lo for 64-bit BFD. * configure: Regenerated. * elf32-i386.c (elf_i386_link_setup_gnu_properties): Set r_info and r_sym fields of plt_layout. * elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Likewise. * elfxx-x86.c (elf_x86_64_is_reloc_section): Remove BFD64 check. (_bfd_x86_elf_link_hash_table_create): Likewise. Don't set r_info nor r_sym fields. (_bfd_x86_elf_link_setup_gnu_properties): Set r_info and r_sym fields of htab. * elfxx-x86.h (elf_x86_plt_layout_table): Add r_info and r_sym.
Diffstat (limited to 'bfd/elf64-x86-64.c')
-rw-r--r--bfd/elf64-x86-64.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index a2a4be8..10da820 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -5185,6 +5185,17 @@ elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info)
plt_layout.normal_target = FALSE;
}
+ if (ABI_64_P (info->output_bfd))
+ {
+ plt_layout.r_info = elf64_r_info;
+ plt_layout.r_sym = elf64_r_sym;
+ }
+ else
+ {
+ plt_layout.r_info = elf32_r_info;
+ plt_layout.r_sym = elf32_r_sym;
+ }
+
return _bfd_x86_elf_link_setup_gnu_properties (info, &plt_layout);
}