[GOLD] PowerPC --no-tls-optimize
[external/binutils.git] / gold / ChangeLog
1 2017-07-31  Alan Modra  <amodra@gmail.com>
2
3         * options.h (no_tls_optimize): New powerpc option.
4         * powerpc.cc (Target_powerpc::abiversion, set_abiversion): Formatting.
5         (Target_powerpc::stk_toc): Formatting, fix comment.
6         (Target_powerpc::Track_tls::tls_get_addr_state): Rename from
7         tls_get_addr.
8         (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
9         Return TLSOPT_NONE when !tls_optimize.
10         (Target_powerpc::add_global_pair_with_rel): Check
11         for existing reloc before reserving.
12         (Target_powerpc::add_local_tls_pair): Likewise.
13
14 2017-07-31  Alan Modra  <amodra@gmail.com>
15
16         * powerpc.cc (Target_powerpc::scan_relocs): Warn on --plt-localentry
17         without ld.so checks.
18
19 2017-07-29  Alan Modra  <amodra@gmail.com>
20
21         PR 21847
22         * powerpc.cc (Target_powerpc::scan_relocs): Default to
23         --no-plt-localentry.
24
25 2017-07-28  H.J. Lu  <hongjiu.lu@intel.com>
26
27         PR gold/21857
28         * compressed_output.cc (Output_compressed_section::set_final_data_size):
29         Call put_ch_reserved to clear the reserved field for 64-bit ELF.
30
31 2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>
32
33         * mips.cc (Mips_relocate_functions): Add "llu" suffix to
34         0x800080008000.
35
36 2017-07-23  Alan Modra  <amodra@gmail.com>
37
38         * powerpc.cc (glink_eh_frame_fde_64v2): Correct advance to
39         restore of LR.
40         (glink_eh_frame_fde_64v1): Advance to restore of LR at latest
41         possible insn.
42
43 2017-07-18  Nick Clifton  <nickc@redhat.com>
44
45         PR 21775
46         * aarch64.cc: Fix spelling typos.
47         * arm.cc: Likewise.
48         * layout.cc: Likewise.
49         * powerpc.cc: Likewise.
50         * x86_64.cc: Likewise.
51
52 2017-07-12  Alan Modra  <amodra@gmail.com>
53
54         * po/es.po: Update from translationproject.org/latest/gold/.
55         * po/fi.po: Likewise.
56         * po/fr.po: Likewise.
57         * po/id.po: Likewise.
58         * po/it.po: Likewise.
59         * po/vi.po: Likewise.
60         * po/zh_CN.po: Likewise.
61         * po/ja.po: New file from translationproject.org.
62         * po/sv.po: Likewise.
63         * po/uk.po: Likewise.
64
65 2017-07-06  Han Shen  <shenhan@google.com>
66
67         PR gold/21491
68         * aarch64.cc (Erratum_stub::invalidate_erratum_stub): New method.
69         (Erratum_stub::is_invalidated_erratum_stub): New method.
70         (Stub_table::relocate_reloc_stub): Renamed from "relocate_stub".
71         (Stub_table::relocate_reloc_stubs): Renamed from "relocate_stubs".
72         (Stub_table::relocate_erratum_stub): New method.
73         (AArch64_relobj::fix_errata_and_relocate_erratum_stubs): Renamed from
74         "fix_errata".
75         (Target_aarch64::relocate_reloc_stub): Renamed from "relocate_stub".
76
77 2017-06-23  Alan Modra  <amodra@gmail.com>
78
79         * options.h (General_options): Add plt_localentry.
80         * powerpc.cc (Target_powerpc::st_other): New function.
81         (Target_powerpc::plt_localentry0_, plt_localentry0_init_,
82         has_localentry0_): New vars.
83         (Target_powerpc::plt_localentry0, set_has_localentry0,
84         is_elfv2_localentry0): New functions.
85         (Target_powerpc::Branch_info::mark_pltcall): Don't set tocsave or
86         return true for localentry:0 calls.
87         (Stub_table::Plt_stub_ent::localentry0_): New var.
88         (Stub_table::add_plt_call_entry): Set localentry0_ and has_localentry0_.
89         Don't set r2save_ for localentry:0 calls.
90         (Output_data_glink::do_write): Save r2 in __glink_PLTresolve for elfv2.
91         (Target_powerpc::scan_relocs): Default plt_localentry0_.
92         (Target_powerpc::do_finalize_sections): Set DT_PPC64_OPT.
93         (Target_powerpc::Relocate::relocate): Don't require nop following
94         calls for localentry:0 plt calls, and don't change nop.
95
96 2017-06-23  Alan Modra  <amodra@gmail.com>
97
98         * powerpc.cc (Target_powerpc::tocsave_loc_): New var.
99         (Target_powerpc::mark_pltcall, add_tocsave, tocsave_loc): New functions.
100         (Target_powerpc::Branch_info::tocsave_): New var.
101         (Target_powerpc::Branch_info::mark_pltcall): New function.
102         (Target_powerpc::Branch_info::make_stub): Pass tocsave_ to
103         add_plt_call_entry.
104         (Stub_table::Plt_stub_ent): Make public.  Add r2save_.
105         (Stub_table::add_plt_call_entry): Add bool tocsave_ param.  Set
106         r2save_.
107         (Stub_table::find_plt_call_entry): Return Plt_stub_ent*.  Adjust
108         use throughout.
109         (Stub_table::do_write): Conditionally output r2 save in plt stubs.
110         (Target_powerpc::Scan::local): Handle R_PPC64_TOCSAVE.
111         (Target_powerpc::Scan::global): Likewise.
112         (Target_powerpc::Relocate::relocate): Skip r2 save in plt call stub
113         with tocsave reloc.  Replace header tocsave nop with r2 save.
114         * symtab.h (struct Symbol_location_hash): Make public.
115
116 2017-06-21  Alan Modra  <amodra@gmail.com>
117
118         * powerpc.cc (Plt_stub_key): Rename from Plt_stub_ent.  Remove indx_.
119         (Plt_stub_key_hash): Rename from Plt_stub_ent_hash.
120         (struct Plt_stub_ent): New.
121         (Plt_stub_entries): Map from Plt_stub_key to Plt_stub_ent.  Adjust
122         use throughout file.
123
124 2017-06-20  Eric Christopher  <echristo@gmail.com>
125
126         * aarch64.cc (scan_reloc_for_stub): Use plt_address_for_global to
127         calculate the symbol value.
128         (scan_reloc_section_for_stubs): Allow stubs to be created for
129         section symbols.
130         (maybe_apply_stub): Handle creating stubs for weak symbols to
131         match the code in scan_reloc_for_stub.
132
133 2017-06-20  James Clarke  <jrtc27@jrtc27.com>
134
135         * powerpc.cc (Stub_table::define_stub_syms): Always include object's
136         uniq_ value.
137
138 2017-06-15  Eric Christopher  <echristo@gmail.com>
139
140         * aarch64.cc: Fix a few typos and grammar-os.
141
142 2017-06-15  Jiong Wang  <jiong.wang@arm.com>
143
144         * aarch64.cc (Insn_utilities::is_mrs_tpidr_el0): New method.
145         (AArch64_relobj<size, big_endian>::try_fix_erratum_843419_optimized):
146         Return ture for some TLS relaxed sequences.
147
148 2017-06-07  Eric Christopher  <echristo@gmail.com>
149
150         * aarch64.cc (maybe_apply_stub): Add debug logging for looking
151         up stubs to undefined symbols and early return rather than
152         fail to look them up.
153         (scan_reloc_for_stub): Add debug logging for no stub creation
154         for undefined symbols.
155
156 2017-05-23  Alan Modra  <amodra@gmail.com>
157
158         PR 21503
159         * options.h: Add --emit-stub-syms option.
160         * powerpc.cc (object_id): New.
161         (Powerpc_relobj): Add uniq_ and accessor.  Sort variables for
162         better packing.
163         (Powerpc_dynobj): Sort variables for better packing.
164         (Target_powerpc::define_local): New function.
165         (Target_powerpc::group_sections): Pass stub table size to
166         Stub_table constructor.
167         (Target_powerpc::do_relax): Define stub and glink symbols.
168         (Stub_table): Add uniq_ variable, and id param to constructor.
169         (Stub_table::Plt_stub_ent): Add indx_ variable.
170         (Stub_table::Branch_stub_entries): Move typedef earlier.
171         (Stub_table::branch_stub_size): Replace "to" parameter with a
172         Branch_stub_entries iterator.
173         (Stub_table::add_long_branch_entry): Adjust to suit.
174         (Stub_table::add_plt_call_entry): Set indx_.
175         (Stub_table::define_stub_syms): New function.
176
177 2017-05-15  Eric Christopher <echristo@gmail.com>
178
179         * layout.cc (Layout::segment_precedes): Add a case for testing
180         pointer equality when determining which segment precedes
181         another.
182
183 2017-05-13  James Clarke  <jrtc27@jrtc27.com>
184
185         PR gold/21444
186         * gold.cc (Target_sparc::Relocate::relocate_tls): Local
187         variables are final for position-independent executables. This
188         has to be consistent with Target_sparc::Scan::local otherwise
189         they will disagree as to whether local-exec is used.
190
191 2017-05-12  Igor Kudrin  <ikudrin@accesssoftek.com>
192
193         PR gold/21430
194         * aarch64.cc
195         (AArch64_relobj::convert_input_section_to_relaxed_section):
196         Set the section offset to -1ULL.
197         (Target_aarch64::relocate_section): Adjust the view in case
198         of a relaxed input section.
199         * testsuite/Makefile.am (pr21430): New test.
200         * testsuite/Makefile.in: Regenerate
201         * testsuite/pr21430.s: New test source file.
202         * testsuite/pr21430.sh: New test script.
203
204 2017-04-27  Alan Modra  <amodra@gmail.com>
205
206         * testsuite/plugin_section_order.c (onload): Add missing break.
207
208 2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
209
210         * mips.cc (Mips_got_entry::hash()): Shift addend to reduce
211         possibility of collisions.
212         (Mips_got_entry::equals): Fix case for GOT_TLS_LDM
213         entries.
214
215 2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
216
217         * mips.cc (Mips_relobj::merge_processor_specific_data_): New data
218         member.
219         (Mips_relobj::merge_processor_specific_data): New method.
220         (Mips_relobj::do_read_symbols): Set merge_processor_specific_data_
221         to false, only if the input file is a binary or if object has no
222         contents except the section name string table and an empty symbol
223         table with the undefined symbol.
224         (Target_mips::do_finalize_sections): Refactor.  Skip empty object files
225         for merging processor-specific data.
226
227 2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
228
229         * mips.cc (Target_mips::Relocate::calculated_value_): New data
230         member.
231         (Target_mips::Relocate::calculate_only_): Likewise.
232         (Target_mips::Relocate::relocate): Handle multiple consecutive
233         relocations with the same offset.
234
235 2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
236
237         * mips.cc (Target_mips::Relocate::relocate): Remove redundant
238         checks for relocatable link.
239         (Mips_relocate_functions::reljalr): Likewise.
240
241 2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
242
243         * mips.cc (class Mips_output_section_options): New class.
244         (Target_mips::do_make_output_section): New method.
245
246 2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
247
248         * mips.cc (Mips_relocate_functions::rel26): Don't print relocation
249         overflow error message.
250         (Target_mips::relocate_special_relocatable): Improve relocation
251         overflow error message.
252         (Target_mips::Relocate::relocate): Likewise.
253
254 2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
255
256         * mips.cc (symbol_refs_local): Return false if a symbol
257         is from a dynamic object.
258         (Target_mips::got_section): Make _GLOBAL_OFFSET_TABLE_ STV_HIDDEN.
259         (Target_mips::set_gp): Refactor.  Make _gp STT_NOTYPE and
260         STB_LOCAL.
261         (Target_mips::do_finalize_sections): Set _gp after all the checks
262         for creating .got are done.
263         (Target_mips::Scan::global): Remove unused code.
264
265 2017-02-22  Alan Modra  <amodra@gmail.com>
266
267         * powerpc.cc (Target_powerpc::make_iplt_section): Check that
268         output_section exists before attempting add_output_section_data.
269         (Target_powerpc::make_brlt_section): Likewise.
270
271 2017-02-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
272
273         * mips.cc (Target_mips::Scan::get_reference_flags): Remove
274         gold_unreachable from default case.
275
276 2017-02-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
277
278         PR gold/21111
279         * mips.cc (Mips_relocate_functions::relhigher): New method.
280         (Mips_relocate_functions::relhighest): Likewise.
281         (mips_get_size_for_reloc): Add support for relocs: R_MIPS_HIGHER and
282         R_MIPS_HIGHEST.
283         (Target_mips::Scan::local): Add support for relocs: R_MIPS_HIGHER,
284         R_MIPS_HIGHEST, R_MICROMIPS_HIGHER and R_MICROMIPS_HIGHEST.
285         (Target_mips::Scan::global): Likewise.
286         (Target_mips::Scan::get_reference_flags): Likewise.
287         (Target_mips::Relocate::relocate): Call static methods for resolving
288         HIGHER and HIGHEST relocations.
289
290 2017-02-03  Rahul Chaudhry  <rahulchaudhry@google.com>
291
292         * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
293         Return true even when building pie binaries.
294         (Target_x86_64::possible_function_pointer_reloc): Check opcode
295         for R_X86_64_PC32 relocations.
296         (Target_x86_64::local_reloc_may_be_function_pointer): Pass
297         extra arguments to local_reloc_may_be_function_pointer.
298         (Target_x86_64::global_reloc_may_be_function_pointer): Likewise.
299         * gc.h (gc_process_relocs): Add check for STT_FUNC.
300         * testsuite/Makefile.am (icf_safe_pie_test): New test case.
301         * testsuite/Makefile.in: Regenerate.
302         * testsuite/icf_safe_pie_test.sh: New shell script.
303
304 2017-02-03  Alan Modra  <amodra@gmail.com>
305
306         * powerpc.cc (Powerpc_relobj::make_toc_relative): Don't crash
307         when no .toc section exists.
308
309 2017-01-31  Cary Coutant  <ccoutant@gmail.com>
310
311         PR gold/21090
312         * x86_64.cc (Target_x86_64::can_convert_mov_to_lea): Add check
313         for predefined symbol.
314         (Target_x86_64::Relocate::relocate): Fix formatting.
315
316 2017-01-23  Rahul Chaudhry  <rahulchaudhry@google.com>
317
318         * testsuite/icf_safe_so_test.sh: Use "set -e".
319         * testsuite/icf_safe_test.sh: Likewise.
320         * testsuite/icf_test.sh: Likewise.
321
322 2017-01-23  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
323
324         * mips.cc (Mips_output_data_plt::rel_plt): Remove const from return
325         type.
326         (Target_mips::make_plt_entry): Make the sh_info field of .rel.plt
327         point to .plt.
328
329 2017-01-23  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>
330
331         PR gold/21054
332         * mips.cc (Mips_got_info::record_global_got_symbol): Don't add symbol
333         to the dynamic symbol table if it is forced to local visibility.
334         (Target_mips::do_finalize_sections): Don't add __RLD_MAP symbol to the
335         dynamic symbol table if it is forced to local visibility.
336
337 2017-01-20  Nick Clifton  <nickc@redhat.com>
338
339         * aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS
340         from a pointer to an array.
341
342 2017-01-13  H.J. Lu  <hongjiu.lu@intel.com>
343
344         PR gold/21040
345         * powerpc.cc (Powerpc_relobj<size, big_endian>::make_toc_relative):
346         Cast 0x80008000 to uint64_t.
347
348 2017-01-12  Cary Coutant  <ccoutant@gmail.com>
349
350         * object.cc (Sized_relobj_file): Fix byte counts for calls to memmem.
351
352 2017-01-11  Cary Coutant  <ccoutant@gmail.com>
353
354         PR gold/21040
355         * x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
356         Remove unnecessary 'typename' keyword.
357         (Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
358         (Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
359         (Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
360         (Output_data_plt_x86_64_bnd::do_write): Likewise.
361
362 2017-01-11  Cary Coutant  <ccoutant@gmail.com>
363
364         PR gold/21040
365         * x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
366         Remove unnecessary 'typename' keyword.
367         (Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
368         (Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
369         (Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
370         * testsuite/copy_test_relro_1.cc (p, b, c, q): Add separate extern
371         declarations.
372
373 2017-01-11  Cary Coutant  <ccoutant@gmail.com>
374
375         PR gold/21039
376         * testsuite/script_test_13.sh: Adjust patterns to work for i386.
377         * testsuite/script_test_15a.sh: Likewise.
378         * testsuite/script_test_15b.sh: Likewise.
379         * testsuite/script_test_15c.sh: Likewise.
380
381 2017-01-11  Alan Modra  <amodra@gmail.com>
382
383         * powerpc.cc (class Powerpc_copy_relocs): New.
384         (Powerpc_copy_relocs::emit): New function.
385         (Powerpc_relobj::relatoc_, toc_, no_toc_opt_): New variables.
386         (Powerpc_relobj::toc_shndx, set_no_toc_opt, no_toc_opt): New inlines.
387         (Powerpc_relobj::do_relocate_sections): New function.
388         (Powerpc_relobj::make_toc_relative): Likewise.
389         (Powerpc_relobj::do_find_special_sections): Stash away .rela.toc
390         and .toc too.
391         (ok_lo_toc_insn): Move earlier, and handle more insns.
392         (Target_powerpc::Scan::local): If optimizing toc accesses, set
393         no_toc_opt for entries we can't edit.  Check insn validity.
394         Emit "toc optimization is not supported" warning, downgraded
395         from error.
396         (Target_powerpc::Scan::global): Likewise.
397         (Target_powerpc::Relocate::relocate): Edit TOC indirect code
398         to TOC relative.  Don't emit "toc optimization is not supported"
399         error here.
400
401 2017-01-10  Cary Coutant  <ccoutant@gmail.com>
402
403         * aarch64.cc (AArch64_relobj::do_relocate_sections): Call
404         Sized_relobj_file::relocate_section_range().
405         * arm.cc (Arm_relobj::do_relocate_sections): Likewise.
406         * object.h (Sized_relobj_file::relocate_section_range): New method.
407         * reloc.cc (Sized_relobj_file::do_relocate_sections): Move
408         implementation...
409         (Sized_relobj_file::relocate_section_range): ...to new method.
410
411 2017-01-10  Alan Modra  <amodra@gmail.com>
412
413         * testsuite/ver_test_8.sh: Accept .TOC. in lieu of
414         _GLOBAL_OFFSET_TABLE_.  Allow zero count.
415         * testsuite/copy_test_relro_1.cc (c, q): New vars.
416         * testsuite/copy_test_relro.cc: Rewrite to test read-only
417         status of variables directly.  Reference new vars in
418         read-only data.
419
420 2017-01-10  Alan Modra  <amodra@gmail.com>
421
422         * options.h: Add --secure-plt option.
423         * powerpc.cc (Target_powerpc::Scan::local): Detect and error
424         on -fPIC -mbss-plt code.
425         (Target_powerpc::Scan::global): Likewise.
426
427 2017-01-09  Alan Modra  <amodra@gmail.com>
428
429         * powerpc.cc (Target_powerpc::make_plt_section): Point sh_info of
430         ".rela.plt" at ".plt".
431
432 2017-01-07  Alan Modra  <amodra@gmail.com>
433
434         * powerpc.cc: Use shorter equivalent elfcpp typedef for
435         Reltype and reloc_size throughout.
436         (Target_powerpc::symval_for_branch): Exclude dynamic symbols.
437         (Target_powerpc::Scan::local): Use local var r_sym.
438         (Target_powerpc::Scan::global: Likewise.
439         (Target_powerpc::Relocate::relocate): Delete shadowing r_sym.
440
441 2017-01-02  Alan Modra  <amodra@gmail.com>
442
443         Update year range in copyright notice of all files.
444
445 For older changes see ChangeLog-2016
446 \f
447 Copyright (C) 2017 Free Software Foundation, Inc.
448
449 Copying and distribution of this file, with or without modification,
450 are permitted in any medium without royalty provided the copyright
451 notice and this notice are preserved.
452
453 Local Variables:
454 mode: change-log
455 left-margin: 8
456 fill-column: 74
457 version-control: never
458 End: