[TTC-15] i386/x86-64: Add unwind info for .plt.got section submit/tizen_5.0_base/20181101.000001 submit/tizen_base/20180129.030705
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 19 Jan 2018 11:02:31 +0000 (14:02 +0300)
committerSlava Barinov <v.barinov@samsung.com>
Fri, 26 Jan 2018 08:07:17 +0000 (11:07 +0300)
commita6eb3329ea30667394508b8f6703aea98d87c67b
tree5a703604a31cf38931199a4c183a530b0497ed18
parent0dd3bc431de697efebd13b71d98bace6311d62c0
[TTC-15] 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.

Backport from upstream: fff53daefb7838b5718422c87946330e4a8288ce
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
Change-Id: I15ead2a145afaf5dff5b7fbc84e3a8f676f7618e
bfd/ChangeLog
bfd/elf32-i386.c
bfd/elf64-x86-64.c
ld/ChangeLog
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/pr20830.d [new file with mode: 0644]
ld/testsuite/ld-i386/pr20830.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr20830.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr20830.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp