aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-x86-64/pr20830.s
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-01-10 13:31:59 -0800
committerH.J. Lu <hjl.tools@gmail.com>2017-01-10 13:31:59 -0800
commitfff53daefb7838b5718422c87946330e4a8288ce (patch)
tree5f78be197c91e52a9cb9aa373c37ece6d77a1527 /ld/testsuite/ld-x86-64/pr20830.s
parent5edad15d7c1e6a2409102b3426b444d6ea98bdfc (diff)
downloadgdb-fff53daefb7838b5718422c87946330e4a8288ce.zip
gdb-fff53daefb7838b5718422c87946330e4a8288ce.tar.gz
gdb-fff53daefb7838b5718422c87946330e4a8288ce.tar.bz2
i386/x86-64: Add unwind info for .plt.got section
When there are both PLT and GOT references to the same function symbol, linker combines GOTPLT and GOT slots into a single GOT slot and create an entry in .plt.got section for PLT access via the GOT slot. This patch adds unwind info for .plt.got section. bfd/ PR ld/20830 * elf32-i386.c (elf_i386_eh_frame_plt_got): New. (PLT_GOT_FDE_LENGTH): Likewise. (elf_i386_plt_layout): Add eh_frame_plt_got and eh_frame_plt_got_size. (elf_i386_plt): Updated. (elf_i386_link_hash_table): Add plt_got_eh_frame. (elf_i386_check_relocs): Create .eh_frame section for .plt.got. (elf_i386_size_dynamic_sections): Allocate and initialize .eh_frame section for .plt.got. (elf_i386_finish_dynamic_sections): Adjust .eh_frame section for .plt.got. (elf_i386_nacl_plt): Add FIXME for eh_frame_plt_got and eh_frame_plt_got_size. * elf64-x86-64.c (elf_x86_64_eh_frame_plt_got): New. (PLT_GOT_FDE_LENGTH): Likewise. (elf_x86_64_backend_data): Add eh_frame_plt_got and eh_frame_plt_got_size. (elf_x86_64_arch_bed): Updated. (elf_x86_64_bnd_arch_bed): Add FIXME for eh_frame_plt_got and eh_frame_plt_got_size. (elf_x86_64_nacl_arch_bed): Likewise. (elf_x86_64_link_hash_table): Add plt_got_eh_frame. (elf_x86_64_check_relocs): Create .eh_frame section for .plt.got. (elf_x86_64_size_dynamic_sections): Allocate and initialize .eh_frame section for .plt.got. (elf_x86_64_finish_dynamic_sections): Adjust .eh_frame section for .plt.got. ld/ PR ld/20830 * testsuite/ld-i386/i386.exp: Run pr20830. * testsuite/ld-x86-64/x86-64.exp: Likewise. * testsuite/ld-i386/pr20830.d: New file. * testsuite/ld-i386/pr20830.s: Likewise. * testsuite/ld-x86-64/pr20830.d: Likewise. * testsuite/ld-x86-64/pr20830.s: Likewise.
Diffstat (limited to 'ld/testsuite/ld-x86-64/pr20830.s')
-rw-r--r--ld/testsuite/ld-x86-64/pr20830.s8
1 files changed, 8 insertions, 0 deletions
diff --git a/ld/testsuite/ld-x86-64/pr20830.s b/ld/testsuite/ld-x86-64/pr20830.s
new file mode 100644
index 0000000..d9a1b4c
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr20830.s
@@ -0,0 +1,8 @@
+ .text
+ .globl foo
+ .type foo, @function
+foo:
+ .cfi_startproc
+ call func@plt
+ movq func@GOTPCREL(%rip), %rax
+ .cfi_endproc