[GOLD] PowerPC got reloc optimisation
[deliverable/binutils-gdb.git] / gold / ChangeLog
1 2019-07-13 Alan Modra <amodra@gmail.com>
2
3 * powerpc.cc (Powerpc_relobj::make_got_relative): New function.
4 (relative_value_is_known): New functions.
5 (Target_powerpc::Relocate::relocate): Edit code using
6 GOT16_HA, GOT16_LO_DS, and GOT_PCREL34 relocs.
7
8 2019-07-13 Alan Modra <amodra@gmail.com>
9
10 * powerpc.cc (Target_powerpc): Add powerxx_stubs_ and accessor
11 functions.
12 (Target_powerpc::maybe_skip_tls_get_addr_call): Handle PLT_PCREL34
13 and PLT_PCREL34_NOTOC relocs.
14 (Powerpc_relocate_functions): Add addr34, addr34_hi, addr34_ha,
15 addr28, addr16_higher34, addr16_highera34, addr16_highest34,
16 addr16_highest34a functions.
17 (li_11_0, ori_11_11_0, sldi_11_11_34): Define.
18 (paddi_12_pc, pld_12_pc, pnop): Define.
19 (d34, ha34): New inline functions.
20 (Stub_table::add_plt_call_entry): Handle powerxx_stubs.
21 (Stub_table::add_eh_frame): Likewise.
22 (build_powerxx_offset): New function.
23 (Stub_table::plt_call_size): Handle powerxx_stubs.
24 (Stub_table::branch_stub_size): Likewise.
25 (Stub_table::do_write): Likewise.
26 (Target_powerpc::Scan::get_reference_flags): Handle new relocs.
27 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc: Likewise.
28 (Target_powerpc::Scan::local, global, relocate): Likewise.
29
30 2019-07-13 Alan Modra <amodra@gmail.com>
31
32 * ehframe.cc (Fde::operator==): Delete.
33 (Cie::remove_fde): Delete.
34 (Eh_frame::remove_ehframe_for_plt): Delete fde_data and fde_length
35 parameters. Remove all post-map plt FDEs.
36 * ehframe.h (Fde:post_map): Make const, add variant to compare plt.
37 (Fde::operator==): Delete.
38 (Cie::remove_fde): Implement here.
39 (Cie::last_fde): New accessor.
40 (Eh_frame::remove_ehframe_for_plt): Update prototype.
41 * layout.cc (Layout::remove_eh_frame_for_plt): Delete fde_data and
42 fde_length parameters.
43 * layout.h (Layout::remove_eh_frame_for_plt): Update prototype.
44 * powerpc.cc (Stub_table::tls_get_addr_opt_bctrl_): Delete.
45 (Stub_table::plt_fde_len_, plt_fde_, init_plt_fde): Delete.
46 (Stub_table::add_plt_call_entry): Don't set tls_get_addr_opt_bctrl_.
47 (eh_advance): New function.
48 (stub_sort): New function.
49 (Stub_table::add_eh_frame): Emit eh_frame for notoc plt calls and
50 branches as well as __tls_get_addr_opt plt call stub.
51 (Stub_table::remove_eh_frame): Update to suit.
52
53 2019-07-13 Alan Modra <amodra@gmail.com>
54
55 * powerpc.cc (Target_powerpc::maybe_skip_tls_get_addr_call): Handle
56 notoc calls.
57 (is_branch_reloc): Template on size. Return true for REL24_NOTOC.
58 Update all callers.
59 (max_branch_delta): Likewise.
60 (Target_powerpc::Branch_info::make_stub): Add a stub for notoc
61 calls to functions needing a valid toc pointer.
62 (Target_powerpc::do_relax): Layout stubs again if any need resize.
63 (add_12_11_12, addi_12_11, addis_12_11, ldx_12_11_12, ori_12_12_0),
64 (oris_12_12_0, sldi_12_12_32): Define.
65 (Stub_table::Plt_stub_ent): Add notoc_ and iter_ fields.
66 (Stub_table::Branch_stub_key, Branch_stub_key_hash): Rename from
67 Branch_stub_ent and Branch_stub_ent hash. Remove save_res_ from key.
68 (Stub_table::Branch_stub_ent): New struct.
69 (class Stub_table): Add need_resize and resizing vars.
70 (Stub_table::need_resize, branch_size): New accessors.
71 (Stub_table::set_resizing): New function.
72 (Stub_table::add_plt_call_entry): Handle notoc calls and resizing
73 on seeing such or a tocsave stubs after a normal stub using the
74 same sym.
75 (Stub_table::add_long_branch_entry): Similarly.
76 (Stub_table::find_long_branch_entry): Return a Branch_stub_ent*.
77 (Stub_table::define_stub_syms): Adjust
78 (Stub_table::build_tls_opt_head, build_tls_opt_tail): New functions.
79 (build_notoc_offset): New function.
80 (Stub_table::plt_call_size): Move out of line. Handle notoc calls.
81 (Stub_table::branch_stub_size): Similarly.
82 (Stub_table::do_write): Separate loop for ELFv2 stubs, handling
83 notoc calls. Simplify ELFv1 loop. Output notoc branch stubs.
84 Use build_tls_opt_head and build_tls_opt_tail.
85 (Target_powerpc::Scan::get_reference_flags): Handle REL24_NOTOC.
86 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Likewise,
87 and PLTSEQ_NOTOC and PLTCALL_NOTOC.
88 (Target_powerpc::Scan::local, global, relocate): Likewise.
89
90 2019-06-28 Alan Modra <amodra@gmail.com>
91
92 * powerpc.cc (Target_powerpc::Relocate::relocate): Don't look
93 at next/previous reloc when relnum is -1.
94
95 2019-06-28 Alan Modra <amodra@gmail.com>
96
97 * powerpc.cc (Stub_table::plt_error): New function.
98 (Stub_table::do_write): Use it.
99 (Output_data_glink::do_write): Don't segfault emitting linkage
100 table error.
101
102 2019-06-28 Alan Modra <amodra@gmail.com>
103
104 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Handle
105 REL16_HIGH* relocs.
106 (Target_powerpc::Scan::local): Likewise.
107 (Target_powerpc::Scan::global): Likewise.
108 (Target_powerpc::Relocate::relocate): Likewise.
109
110 2019-06-10 Martin Liska <mliska@suse.cz>
111
112 * errors.h: Include string.
113
114 2019-05-10 Joshua Oreman <oremanj@hudson-trading.com>
115
116 PR gold/21066
117 * gc.h (gc_process_relocs): Track relocations in .eh_frame sections
118 when ICF is enabled, even though the .eh_frame sections themselves
119 are not foldable.
120 * icf.cc (get_section_contents): Change arguments to permit operation
121 on just part of a section. Include extra identity regions in the
122 referring section's contents recursively.
123 (match_sections): Lock object here instead of in get_section_contents
124 so that get_section_contents can operate recursively.
125 (Icf::add_ehframe_links): New method.
126 (Icf::find_identical_sections): Pass .eh_frame sections to
127 add_ehframe_links(). Increase default iteration count from 2 to 3
128 because handling exception info typically requires one extra iteration.
129 * icf.h (Icf::extra_identity_list_): New data member with accessor.
130 (is_section_foldable_candidate): Include .gcc_except_table sections.
131 * options.h: Update documentation for new default ICF iteration count.
132 * testsuite/Makefile.am (icf_test_pr21066): New test case.
133 * testsuite/Makefile.in: Regenerate.
134 * testsuite/icf_test_pr21066.cc: New source file.
135 * testsuite/icf_test_pr21066.sh: New test script.
136
137 2019-02-19 Egeyar Bagcioglu <egeyar.bagcioglu@oracle.com>
138
139 PR gold/23870
140 * aarch64.cc (Target_aarch64::Scan::global): Check if a symbol with
141 R_AARCH64_MOVW_.ABS_* relocations requires a PLT entry.
142 * testsuite/Makefile.am: Add aarch64_pr23870 test case.
143 * testsuite/Makefile.in: Regenerate.
144 * testsuite/aarch64_pr23870_bar.c: New file.
145 * testsuite/aarch64_pr23870_foo.c: New file.
146 * testsuite/aarch64_pr23870_main.S: New file.
147
148 2019-02-12 Nick Clifton <nickc@redhat.com>
149
150 * po/fr.po: Updated French translation.
151
152 2019-01-21 Nick Clifton <nickc@redhat.com>
153
154 * po/uk.po: Updated Ukranian translation.
155
156 2019-01-19 Nick Clifton <nickc@redhat.com>
157
158 * po/gold.pot: Regenerate.
159
160 2018-06-24 Nick Clifton <nickc@redhat.com>
161
162 2.32 branch created.
163
164 2019-01-09 Andrew Paprocki <andrew@ishiboo.com>
165
166 * configure: Regenerate.
167
168 2019-01-01 Alan Modra <amodra@gmail.com>
169
170 Update year range in copyright notice of all files.
171
172 For older changes see ChangeLog-2018
173 \f
174 Copyright (C) 2019 Free Software Foundation, Inc.
175
176 Copying and distribution of this file, with or without modification,
177 are permitted in any medium without royalty provided the copyright
178 notice and this notice are preserved.
179
180 Local Variables:
181 mode: change-log
182 left-margin: 8
183 fill-column: 74
184 version-control: never
185 End:
This page took 0.032928 seconds and 5 git commands to generate.