diff options
author | Alan Modra <amodra@gmail.com> | 2020-09-22 22:51:42 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-09-24 07:54:05 +0930 |
commit | 294338867c268b6da43327b6cbe70e746bff1a04 (patch) | |
tree | 5a92aab3be8a1fcc30d2778739111b09d2146a2c /gas/sb.c | |
parent | c94053440e29421dd8846530da73f09c9ede2e0f (diff) | |
download | gdb-294338867c268b6da43327b6cbe70e746bff1a04.zip gdb-294338867c268b6da43327b6cbe70e746bff1a04.tar.gz gdb-294338867c268b6da43327b6cbe70e746bff1a04.tar.bz2 |
PR26656, power10 libstdc++.so segfault in __cxxabiv1::__cxa_throw
This adds missing support for a power10 version of the __tls_get_addr
call stub implementing DT_PPC64_OPT PPC64_OPT_TLS. Without this,
power10 code using __tls_get_addr fails miserably at runtime unless
the --no-tls-get-addr-optimize option is given.
PR 26656
* elf64-ppc.c (plt_stub_size): Add "odd" param. Use it with
size_power10_offset rather than calculating from start of stub.
Add size for notoc tls_get_addr_opt stub.
(plt_stub_pad): Add "odd" param, pass to plt_stub_size.
(build_tls_get_addr_head, build_tls_get_addr_tail): New functions.
(build_tls_get_addr_stub): Delete.
(ppc_build_one_stub): Use a temp for htab->params->stub_bfd.
Emit notoc tls_get_addr_opt stub. Move eh_frame code to
suit. Adjust code to use bfd_tls_get_addr_head/tail in place
of build_tls_get_addr_stub.
(ppc_size_one_stub): Size notoc tls_get_addr_opt stub.
Adjust plt_stub_size and plt_stub_pad calls. Correct "odd"
when padding stub. Size eh_frame for notoc stub too.
Correct lr_restore value.
(ppc64_elf_relocate_section): Don't skip over first insn of
notoc tls_get_addr_opt stub.
Diffstat (limited to 'gas/sb.c')
0 files changed, 0 insertions, 0 deletions