[x86] Resolve non-PIC undefweak symbols in executable
[external/binutils.git] / bfd / ChangeLog
1 2016-02-26  H.J. Lu  <hongjiu.lu@intel.com>
2
3         PR ld/19636
4         PR ld/19704
5         PR ld/19719
6         * elf32-i386.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New.
7         (elf_i386_link_hash_entry): Add has_got_reloc and
8         has_non_got_reloc.
9         (elf_i386_link_hash_table): Add interp.
10         (elf_i386_link_hash_newfunc): Initialize has_got_reloc and
11         has_non_got_reloc.
12         (elf_i386_copy_indirect_symbol): Copy has_got_reloc and
13         has_non_got_reloc.
14         (elf_i386_check_relocs): Set has_got_reloc and has_non_got_reloc.
15         (elf_i386_fixup_symbol): New function.
16         (elf_i386_pie_finish_undefweak_symbol): Likewise.
17         (elf_i386_allocate_dynrelocs): Don't allocate space for dynamic
18         relocations and discard relocations against resolved undefined
19         weak symbols in executable.  Don't make resolved undefined weak
20         symbols in executable dynamic.  Keep dynamic non-GOT/non-PLT
21         relocation against undefined weak symbols in PIE.
22         (elf_i386_size_dynamic_sections): Set interp to .interp section.
23         (elf_i386_relocate_section): Don't generate dynamic relocations
24         against resolved undefined weak symbols in PIE, except for
25         R_386_PC32.
26         (elf_i386_finish_dynamic_symbol): Keep PLT/GOT entries without
27         dynamic PLT/GOT relocations for resolved undefined weak symbols.
28         Don't generate dynamic relocation against resolved undefined weak
29         symbol in executable.
30         (elf_i386_finish_dynamic_sections): Call
31         elf_i386_pie_finish_undefweak_symbol on all symbols in PIE.
32         (elf_backend_fixup_symbol): New.
33         * elf64-x86-64.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New.
34         (elf_x86_64_link_hash_entry): Add has_got_reloc and
35         has_non_got_reloc.
36         (elf_x86_64_link_hash_table): Add interp.
37         (elf_x86_64_link_hash_newfunc): Initialize has_got_reloc and
38         has_non_got_reloc.
39         (elf_x86_64_copy_indirect_symbol): Copy has_got_reloc and
40         has_non_got_reloc.
41         (elf_x86_64_check_relocs): Set has_got_reloc and
42         has_non_got_reloc.
43         (elf_x86_64_fixup_symbol): New function.
44         (elf_x86_64_pie_finish_undefweak_symbol): Likewise.
45         (elf_x86_64_allocate_dynrelocs): Don't allocate space for dynamic
46         relocations and discard relocations against resolved undefined
47         weak symbols in executable.  Don't make resolved undefined weak
48         symbols in executable dynamic.
49         (elf_x86_64_size_dynamic_sections): Set interp to .interp section.
50         (elf_x86_64_relocate_section): Check relocation overflow for
51         dynamic relocations against unresolved weak undefined symbols.
52         Don't generate dynamic relocations against resolved weak
53         undefined symbols in PIE.
54         (elf_x86_64_finish_dynamic_symbol): Keep PLT/GOT entries without
55         dynamic PLT/GOT relocations for resolved undefined weak symbols.
56         Don't generate dynamic relocation against resolved undefined weak
57         symbol in executable.
58         (elf_x86_64_finish_dynamic_sections): Call
59         elf_x86_64_pie_finish_undefweak_symbol on all symbols in PIE.
60         (elf_backend_fixup_symbol): New.
61
62 2016-02-26  Alan Modra  <amodra@gmail.com>
63
64         * elf64-ppc.c (create_linkage_sections): Create sfpr when
65         save_restore_funcs, rest of sections when not relocatable.
66         (ppc64_elf_init_stub_bfd): Always call create_linkage_sections.
67         (sfpr_define): Define all symbols on emitted code.
68         (ppc64_elf_func_desc_adjust): Adjust for sfpr now being created
69         when relocatable.  Move sfpr_define loop earlier.
70
71 2016-02-24  H.J. Lu  <hongjiu.lu@intel.com>
72
73         * elf64-x86-64.c (elf_x86_64_need_pic): New function.
74         (elf_x86_64_relocate_section): Use it.  Replace
75         x86_64_elf_howto_table[r_type] with howto.
76
77 2016-02-24  H.J. Lu  <hongjiu.lu@intel.com>
78
79         PR ld/19698
80         * elflink.c (bfd_elf_record_link_assignment): Set versioned if
81         symbol version is unknown.
82
83 2016-02-24  H.J. Lu  <hongjiu.lu@intel.com>
84
85         * elf32-i386.c (elf_i386_allocate_dynrelocs): Set plt_got.offset
86         to (bfd_vma) -1 when setting needs_plt to 0.
87         * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
88
89 2016-02-23  H.J. Lu  <hongjiu.lu@intel.com>
90
91         * elflink.c (bfd_elf_record_link_assignment): Check for shared
92         library, instead of PIC, and don't check PDE when making linker
93         assigned symbol dynamic.
94
95 2016-02-23  Faraz Shahbazker  <faraz.shahbazker@imgtec.com>
96
97         * bfd/elfxx-mips.c (_bfd_mips_post_process_headers): Increment
98         ABIVERSION for non-executable stack.
99
100 2016-02-23  Rich Felker  <bugdal@aerifal.cx>
101
102         PR target/19516
103         * elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol):
104         Always produce a RELATIVE reloc for a local symbol.
105
106 2016-02-23  Hans-Peter Nilsson  <hp@axis.com>
107
108         Fix test-case ld-elf/pr19617b
109         * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't
110         discard unused non-function symbols when --dynamic-list-data.
111
112 2016-02-22  H.J. Lu  <hongjiu.lu@intel.com>
113
114         * elflink.c (_bfd_elf_link_renumber_dynsyms): Always create the
115         dynsym section, even if it is empty, with dynamic sections.
116
117 2016-02-22  H.J. Lu  <hongjiu.lu@intel.com>
118
119         * syms.c: Remove BSF_COMMON from comments.
120         * bfd-in2.h: Regenerated.
121
122 2016-02-22  Jiong Wang  <jiong.wang@arm.com>
123
124         * elfnn-aarch64. (aarch64_type_of_stub): Remove redundation calcuation
125         for destination.  Remove useless function parameters.
126         (elfNN_aarch64_size_stubs): Update parameters for aarch64_type_of_stub.
127
128 2016-02-19  Nick Clifton  <nickc@redhat.com>
129
130         PR ld/19629
131         * aoutx.h (aout_link_add_symbols): Check for out of range string
132         table offsets.
133
134         PR ld/19628
135         * reloc.c (bfd_generic_get_relocated_section_contents): Stop
136         processing if we encounter a reloc without an associated symbol.
137
138 2016-02-18  H.J. Lu  <hongjiu.lu@intel.com>
139
140         PR ld/19617
141         * elflink.c (elf_link_add_object_symbols): Always create dynamic
142         sections for -E/--dynamic-list.
143
144 2016-02-17  H.J. Lu  <hongjiu.lu@intel.com>
145
146         * elf64-x86-64.c (elf_backend_omit_section_dynsym): New.  Defined
147         to bfd_true.
148
149 2016-02-16  Joseph Myers  <joseph@codesourcery.com>
150
151         * plugin.c (plugin_vec): Set match priority to 255.
152         * format.c (bfd_check_format_matches) [BFD_SUPPORTS_PLUGINS]: When
153         matching against the plugin vector, take priority from there not
154         from TEMP.
155
156 2016-02-15  Nick Clifton  <nickc@redhat.com>
157
158         * elf-bfd.h (struct bfd_elf_special_section): Use unsigned values
159         for length and type fields.  Use a signed value for the
160         suffix_length field.
161
162 2016-02-10  H.J. Lu  <hongjiu.lu@intel.com>
163
164         PR ld/19601
165         * elf32-i386.c (elf_i386_relocate_section): Mask off the least
166         significant bit in GOT offset for R_386_GOT32X.
167
168 2016-02-10  Nick Clifton  <nickc@redhat.com>
169
170         PR 19405
171         * elf32-nios2.c (nios2_elf32_install_imm16): Allow for signed
172         immediate values.
173         * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Limit the
174         number of messages about FDE encoding preventing .eh_frame_hdr
175         generation.
176
177 2016-02-09  Nick Clifton  <nickc@redhat.com>
178
179         * oasys.c (oasys_archive_p): Fix indentation.
180         * elf32-nds32.c (nds32_elf_relax_section): Use an unsigned
181         constant for left shifting.
182
183         * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Add a more
184         helpful warning message to explain why certain AArch64 relocs
185         might overflow.
186
187 2016-02-05  Simon Marchi  <simon.marchi@ericsson.com>
188
189         * pe-mips.c (coff_mips_reloc): Fix formatting.
190
191 2016-02-05  Cupertino Miranda  <Cupertino.Miranda@synopsys.com>
192
193         * cpu-arc.c: Change default archure from bfd_mach_arc_arcv2
194         to bfd_mach_arc_arc600.
195
196 2016-02-04  Alan Modra  <amodra@gmail.com>
197
198         * elf64-ppc.c (ppc64_elf_relocate_section): Adjust last patch
199         for big-endian.
200
201 2016-02-02  H.J. Lu  <hongjiu.lu@intel.com>
202
203         PR ld/19542
204         * elf64-x86-64.c (elf_x86_64_convert_load): Store the estimated
205         distances in the compressed_size field of the output section.
206
207 2016-02-02  Alan Modra  <amodra@gmail.com>
208
209         * elf64-ppc.c (ppc64_elf_relocate_section): Further restrict
210         ELFv2 entry optimization.
211
212 2016-02-02  H.J. Lu  <hongjiu.lu@intel.com>
213
214         PR binutils/19547
215         * elf.c (assign_section_numbers): Clear HAS_RELOC if there are
216         no relocations in relocatable files.
217
218 2016-02-01  H.J. Lu  <hongjiu.lu@intel.com>
219
220         PR ld/19553
221         * elflink.c (elf_link_add_object_symbols): Don't add DT_NEEDED
222         if a symbol from a library loaded via DT_NEEDED doesn't match
223         the symbol referenced by regular object.
224
225 2016-02-01  Nathaniel Smith  <njs@pobox.com>
226
227         * peicode.h (pe_ILF_build_a_bfd): Create an import symbol for both
228         CODE and DATA.
229
230 2016-02-01  Alan Modra  <amodra@gmail.com>
231
232         * elf64-x86-64.c (elf_x86_64_get_plt_sym_val): Don't abort on
233         an out of range reloc_index.
234         * elf32-i386.c (elf_i386_get_plt_sym_val): Likewise.
235
236 2016-02-01  Kamil Rytarowski  <n54@gmx.com>
237
238         * Makefile.am (OPTIONAL_BACKENDS): Add netbsd-core.lo.
239         (OPTIONAL_BACKENDS_CFILES): Add netbsd-core.c.
240         * Makefile.in: Regenerated.
241
242 2016-02-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
243
244         * elf64-s390.c (elf_s390_reloc_name_lookup): Fix indentation.
245
246 2016-01-31  John David Anglin  <danglin@gcc.gnu.org>
247
248         PR ld/19526
249         * elf32-hppa.c (elf32_hppa_final_link): Don't sort non-regular output
250         files.
251         * elf64-hppa.c (elf32_hppa_final_link): Likewise.  Remove retval.
252
253 2016-01-30  H.J. Lu  <hongjiu.lu@intel.com>
254
255         PR ld/19539
256         * elf32-i386.c (elf_i386_reloc_type_class): Check relocation
257         against STT_GNU_IFUNC symbol only with dynamic symbols.
258         * elf64-x86-64.c (elf_x86_64_reloc_type_class): Likewise.
259
260 2016-01-28  H.J. Lu  <hongjiu.lu@intel.com>
261
262         PR binutils/19523
263         * dwarf2.c (_bfd_dwarf2_slurp_debug_info): Set BFD_DECOMPRESS to
264         decompress debug sections.
265
266 2016-01-25  Maciej W. Rozycki  <macro@imgtec.com>
267
268         * elf32-arc.c (elf_arc_finish_dynamic_symbol): Rename `index' to
269         `dynindx'.
270
271 2016-01-25  Nick Clifton  <nickc@redhat.com>
272
273         PR target/19435
274         * mach-o.c (bfd_mach_o_close_and_cleanup): Suppress code to free
275         dsym filename buffer.
276
277 2016-01-24  Maciej W. Rozycki  <macro@imgtec.com>
278
279         * elfxx-mips.c (BZ16_REG_FIELD): Simplify calculation.
280
281 2016-01-24  Maciej W. Rozycki  <macro@imgtec.com>
282
283         * elfxx-mips.c (BZ16_REG): Correct calculation.
284
285 2016-01-21  Nick Clifton  <nickc@redhat.com>
286
287         * elf32-arc.c (ADD_RELA): Fix compile time warning errors by
288         changing the type of _loc to be bfd_byte *.
289         (elf_arc_finish_dynamic_symbol): Likewise.
290
291 2016-01-21  Nick Clifton  <nickc@redhat.com>
292
293         PR ld/19455
294         * elf32-arm.c (elf32_arm_create_dynamic_sections): Set the ELF
295         class of the linker stub bfd.
296         (elf32_arm_check_relocs): Skip check for pic format after
297         processing a vxWorks R_ARM_ABS12 reloc.
298         * elflink.c (bfd_elf_final_link): Check for ELFCLASSNONE when
299         reporting a class mismatch.
300
301 2016-01-21  Jiong Wang  <jiong.wang@arm.com>
302
303         * elfnn-aarch64.c (aarch64_type_of_stub): Allow insert long branch
304         veneer for sym_sec != input_sec.
305         (elfNN_aarch64_size_stub): Support STT_SECTION symbol.
306         (elfNN_aarch64_final_link_relocate): Take rela addend into account when
307         calculation destination.
308
309 2016-01-21  Alan Modra  <amodra@gmail.com>
310
311         * elf-linux-core.h (swap_linux_prpsinfo32_out): New function.
312         (swap_linux_prpsinfo64_out): New function.
313         (LINUX_PRPSINFO32_SWAP_FIELDS): Delete.
314         (LINUX_PRPSINFO64_SWAP_FIELDS): Delete.
315         * elf.c (elfcore_write_linux_prpsinfo32): Adjust.  Don't memset.
316         (elfcore_write_linux_prpsinfo64): Likewise.
317         * elf32-ppc.c (swap_ppc_linux_prpsinfo32_out): New function.
318         (PPC_LINUX_PRPSINFO32_SWAP_FIELDS): Delete.
319         (elfcore_write_ppc_linux_prpsinfo32): Adjust.  Don't memset.
320
321 2016-01-21  Alan Modra  <amodra@gmail.com>
322
323         * elf-linux-core.h: Rename from elf-linux-psinfo.h.
324         * elf.c: Adjust #include.
325         * elf32-ppc.c: Don't #include elf-linux-psinfo.h
326         * Makefile.am (SOURCE_HFILES): Update.
327         * Makefile.in: Regenerate.
328         * po/SRC-PORFILES.in: Regenerate.
329
330 2016-01-21  Alan Modra  <amodra@gmail.com>
331
332         * configure.ac: Move corefile selection later in file.  Move
333         tdefaults code immediately after other target vector code.
334         * configure: Regenerate.
335
336 2016-01-20  Mickael Guene  <mickael.guene@st.com>
337
338         * elf32-arm.c (elf32_arm_special_sections): Remove catch of noread
339         section using '.text.noread' pattern.
340
341 2016-01-19  John Baldwin  <jhb@FreeBSD.org>
342
343         * elf.c (elfcore_grok_note): Recognize NT_FREEBSD_THRMISC notes.
344
345 2016-01-18  Miranda Cupertino  <Cupertino.Miranda@synopsys.com>
346             Zissulescu Claudiu  <Claudiu.Zissulescu@synopsys.com>
347
348         * arc-plt.def: New file.
349         * arc-plt.h: Likewise.
350         * elf32-arc.c (elf_arc_abs_plt0_entry, elf_arc_abs_pltn_entry,
351                        elf_arcV2_abs_plt0_entry, elf_arcV2_abs_pltn_entry,
352                        elf_arc_pic_plt0_entry, elf_arc_pic_pltn_entry,
353                        elf_arcV2_pic_plt0_entry, elf_arcV2_pic_pltn_entry): Remove.
354         (name_for_global_symbol): Added.
355         (ADD_RELA): Helper to create dynamic relocs.
356         (new_got_entry_to_list): Create a new got entry in linked list.
357         (symbol_has_entry_of_type): Search for specific type of entry in
358         list.
359         (is_reloc_for_GOT): return FALSE for any TLS related relocs.
360         (is_reloc_for_TLS, arc_elf_set_private_flags)
361         (arc_elf_print_private_bfd_data, arc_elf_copy_private_bfd_data)
362         (arc_elf_merge_private_bfd_data): New functions.
363         (debug_arc_reloc): Cleaned debug info printing.
364         (PDATA reloc): Changed not to perform address alignment.
365         (reverse_me): Added. Fix for ARC_32 relocs.
366         (arc_do_relocation): Return bfd_reloc_of when no relocation should
367         occur.
368         (arc_get_local_got_ents): Renamed from arc_get_local_got_offsets.
369         Changed function to access an array of list of GOT entries instead
370         of just an array of offsets.
371         (elf_arc_relocate_section): Added support for PIC and TLS related relocations.
372         (elf_arc_check_relocs): Likewise.
373         (elf_arc_adjust_dynamic_symbol, elf_arc_finish_dynamic_symbol,
374         (elf_arc_finish_dynamic_sections): Likewise
375         (arc_create_dynamic_sections): Modified conditions to create
376         dynamic sections.
377         (ADD_SYMBOL_REF_SEC_AND_RELOC): New macro.
378         (plt_do_relocs_for_symbol, relocate_plt_for_symbol)
379         (relocate_plt_for_entry): Changed to support new way to define PLT
380         related code.
381         (add_symbol_to_plt): Likewise.
382         (arc_elf_link_hash_table_create): New function.
383
384 2016-01-18  Nick Clifton  <nickc@redhat.com>
385
386         PR ld/19440
387         * coff-rs6000.c (_bfd_xcoff_swap_sym_in): Sign extend external
388         section number into internal section number.
389         * coff64-rs6000.c (_bfd_xcoff64_swap_sym_in): Likewise.
390         * coffswap.h (coff_swap_sym_in): Likewise.
391         * peXXigen.c (_bfd_XXi_swap_sym_in): Likewise.
392         * coffcode.h (_coff_bigobj_swap_sym_in): Make sure that internal
393         section number field is big enough to hold the external value.
394
395 2016-01-17  Alan Modra  <amodra@gmail.com>
396
397         * configure: Regenerate.
398
399 2016-01-12  Yury Usishchev  <y.usishchev@samsung.com>
400
401         * elf32-arm.c (elf32_arm_fix_exidx_coverage): Insert cantunwind
402         when address in first unwind entry does not match start of
403         section.
404
405 2016-01-08  Richard Sandiford  <richard.sandiford@arm.com>
406             Jiong Wang  <jiong.wang@arm.com>
407
408         PR ld/19368
409         * elf32-arm.c (elf32_arm_reloc_type_class): Map R_ARM_IRELATIVE to
410         reloc_class_ifunc.
411
412 2016-01-06  Andrew Burgess  <andrew.burgess@embecosm.com>
413
414         * elf32-arc.c (reloc_type_to_name): Change ARC_RELOC_HOWTO to
415         place 'R_' before the reloc name returned.
416         (elf_arc_howto_table): Change ARC_RELOC_HOWTO to place 'R_' before
417         the relocation string.
418
419 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
420
421         * elfxx-mips.c (mips_elf_merge_obj_abiflags): New function,
422         factored out from...
423         (_bfd_mips_elf_merge_private_bfd_data): ... here.
424
425 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
426
427         * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Move
428         attribute check after ELF file header flag check.
429
430 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
431
432         * elfxx-mips.c (mips_elf_merge_obj_attributes): Propagate the
433         return status from `_bfd_elf_merge_object_attributes'.
434
435 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
436
437         * elfxx-mips.c (mips_elf_merge_obj_e_flags): New function,
438         factored out from...
439         (_bfd_mips_elf_merge_private_bfd_data): ... here.
440
441 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
442
443         * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Fold the
444         handling of input MIPS ABI flags together.
445
446 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
447
448         * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Suppress
449         attribute checks for null input.
450
451 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
452
453         * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Use local
454         pointers to target data.
455
456 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
457
458         * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Correct
459         an FP ABI warning.
460
461 2016-01-01  Alan Modra  <amodra@gmail.com>
462
463         Update year range in copyright notice of all files.
464
465 For older changes see ChangeLog-2015 and doc/ChangeLog-0415
466 \f
467 Copyright (C) 2016 Free Software Foundation, Inc.
468
469 Copying and distribution of this file, with or without modification,
470 are permitted in any medium without royalty provided the copyright
471 notice and this notice are preserved.
472
473 Local Variables:
474 mode: change-log
475 left-margin: 8
476 fill-column: 74
477 version-control: never
478 End: