|
| 1 | +2017-08-29 Alan Modra <amodra@gmail.com> |
| 2 | + |
| 3 | + * options.h (tls_get_addr_optimize): New option. |
| 4 | + * symtab.h (Symbol::clear_in_reg, clone): New functions. |
| 5 | + (Sized_symbol::clone): New function. |
| 6 | + (Symbol_table::clone): New function. |
| 7 | + * resolve.cc (Symbol::clone, Sized_symbol::clone): New functions. |
| 8 | + * powerpc.cc (Target_powerpc::has_tls_get_addr_opt_, |
| 9 | + tls_get_addr_, tls_get_addr_opt_): New vars. |
| 10 | + (Target_powerpc::tls_get_addr_opt, tls_get_addr, |
| 11 | + is_tls_get_addr_opt, replace_tls_get_addr, |
| 12 | + set_has_tls_get_addr_opt, stk_linker): New functions. |
| 13 | + (Target_powerpc::Track_tls::maybe_skip_tls_get_addr_call): Add |
| 14 | + target param. Update callers. Compare symbols rather than names. |
| 15 | + (Target_powerpc::do_define_standard_symbols): Init tls_get_addr_ |
| 16 | + and tls_get_addr_opt_. |
| 17 | + (Target_powerpc::Branch_info::mark_pltcall): Translate tls_get_addr |
| 18 | + sym to tls_get_addr_opt. |
| 19 | + (Target_powerpc::Branch_info::make_stub): Likewise. |
| 20 | + (Stub_table::define_stub_syms): Likewise. |
| 21 | + (Target_powerpc::Scan::global): Likewise. |
| 22 | + (Target_powerpc::Relocate::relocate): Likewise. |
| 23 | + (add_3_12_2, add_3_12_13, bctrl, beqlr, cmpdi_11_0, cmpwi_11_0, |
| 24 | + ld_11_1, ld_11_3, ld_12_3, lwz_11_3, lwz_12_3, mr_0_3, mr_3_0, |
| 25 | + mtlr_11, std_11_1): New constants. |
| 26 | + (Stub_table::eh_frame_added_): Delete. |
| 27 | + (Stub_table::tls_get_addr_opt_bctrl_, plt_fde_len_, plt_fde_): New vars. |
| 28 | + (Stub_table::init_plt_fde): New functions. |
| 29 | + (Stub_table::add_eh_frame, replace_eh_frame): Move definition out |
| 30 | + of line. Init and use plt_fde_. |
| 31 | + (Stub_table::plt_call_size): Return size for tls_get_addr stub. |
| 32 | + Extract alignment code to.. |
| 33 | + (Stub_table::plt_call_align): ..this new function. Adjust all callers. |
| 34 | + (Stub_table::add_plt_call_entry): Set has_tls_get_addr_opt and |
| 35 | + tls_get_addr_opt_bctrl, and align after that. |
| 36 | + (Stub_table::do_write): Write out tls_get_addr stub. |
| 37 | + (Target_powerpc::do_finalize_sections): Emit DT_PPC_OPT |
| 38 | + PPC_OPT_TLS/PPC64_OPT_TLS bit. |
| 39 | + (Target_powerpc::Relocate::relocate): Don't check for or modify |
| 40 | + nop following bl for tls_get_addr stub. |
| 41 | + |
1 | 42 | 2017-08-29 Alan Modra <amodra@gmail.com> |
2 | 43 |
|
3 | 44 | * symtab.h (Symbol): Split u_ into u1_ and u2_. Adjust accessors |
|
0 commit comments