Test suite cleanup.
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
c4eb27e1
ST
12014-04-02 Sriraman Tallam <tmsriram@google.com>
2
3 * icf.cc (get_section_contents): Replace copies of reloc
4 vectors with const references.
5
ae447ddd
CC
62014-04-02 Cary Coutant <ccoutant@google.com>
7
8 * configure.ac (HAVE_PUBNAMES): Use C instead of C++.
9 (HAVE_NO_USE_LINKER_PLUGIN): Check for -fno-use-linker-plugin.
10 * configure: Regenerate.
11 * testsuite/Makefile.am (OPT_NO_PLUGINS): New macro for
12 -fno-use-linker-plugin.
13 (LINK1, CXXLINK1): Add it to the link command.
14 * testsuite/Makefile.in: Regenerate.
15
fa47fa92
AM
162014-03-12 Alan Modra <amodra@gmail.com>
17
18 * Makefile.in: Regenerate.
19
9b12c500
CC
202014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
21
22 * symtab.h (Symbol::set_nonvis): New function.
23
beacaa96
CC
242014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
25
26 * symtab.cc (Sized_symbol<32>::init_output_data):
27 Instantiate the template.
28 (Sized_symbol<64>::init_output_data): Likewise.
29
800d9823
CC
302014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
31
32 * symtab.cc (Symbol_table::sized_write_globals): Allow a target to
33 adjust dynamic symbol value.
34 * target.h (Target::adjust_dyn_symbol): New function.
35 (Target::do_adjust_dyn_symbol): New function.
36
918fc1f8
CC
372014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
38
39 * output.cc (Output_data_dynamic::Dynamic_entry::write):
40 Get the value of DYNAMIC_CUSTOM dynamic entry.
41 * output.h (Output_data_dynamic::add_custom): New function.
42 (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM
43 dynamic entry.
44 (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM.
45 * target.h (Target::dynamic_tag_custom_value): New function.
46 (Target::do_dynamic_tag_custom_value): New function.
47
98ff9231
CC
482014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
49
50 * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set
51 dynsym indexes.
52 * target.h (Target::has_custom_set_dynsym_indexes): New function.
53 (Target::do_has_custom_set_dynsym_indexes): New function.
54 (Target::set_dynsym_indexes): New function.
55 (Target::do_set_dynsym_indexes): New function.
56
b80eed39
AM
572014-03-07 Alan Modra <amodra@gmail.com>
58
59 * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
60 CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
61 (Powerpc_relocate_functions::has_overflow_unsigned): New function.
62 (Powerpc_relocate_functions::has_overflow_bitfield,
63 overflowed): Use the above.
64 (Target_powerpc::Relocate::relocate): Correct overflow checking
65 for a number of relocations. Modify overflow test for 16-bit
66 fields in instructions to signed/unsigned according to whether
67 the field takes a signed or unsigned value.
68
4b95cf5c
AM
692014-03-05 Alan Modra <amodra@gmail.com>
70
71 Update copyright years.
72
45965137
AM
732014-03-05 Alan Modra <amodra@gmail.com>
74
75 * powerpc.cc (Target_powerpc::Scan::local, global): Support
76 R_PPC64_ADDR64_LOCAL.
77 (Target_powerpc::Relocate::relocate): Likewise.
78
2c80b753
AM
792014-03-03 Alan Modra <amodra@gmail.com>
80
81 * dwp.cc (print_version): Update copyright year to current.
82
c1c69e83
AM
832014-02-10 Alan Modra <amodra@gmail.com>
84
85 * po/gold.pot: Regenerate.
86
dd0c4e70
CC
872014-02-06 Cary Coutant <ccoutant@google.com>
88
89 Fix problem where -u is ignored when a weak undef is seen.
90
91 * archive.cc (Library_base::should_include_member): Reorder
92 code to check for -u option if a weak undef has already been seen.
93 * testsuite/Makefile.am (weak_undef_test_2): New test case.
94 * testsuite/Makefile.in: Regenerate.
95 * testsuite/weak_undef_file3.cc: New file.
96 * testsuite/weak_undef_file4.cc: New file.
97 * testsuite/weak_undef_test_2.cc: New file.
98
1a221d3d
CC
992014-02-05 Cary Coutant <ccoutant@google.com>
100
101 Fix issues with gold undefined symbol diagnostics.
102
103 PR binutils/15435
104 * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
105 check to here.
106 * target-reloc.h (is_strong_undefined): New function.
107 (relocate_section): Move undef vtable symbol check from here.
108 Check for is_strong_undefined.
109
e889f0a4
CC
1102014-02-05 Cary Coutant <ccoutant@google.com>
111
112 Fix problems with the --dynamic-list option.
113
114 PR gold/13577
115 * options.cc (General_options::parse_dynamic_list):
116 Set have_dynamic_list_.
117 (General_options::General_options): Initialize have_dynamic_list_.
118 (General_options::finalize): Turn off -Bsymbolic and
119 -Bsymbolic-functions if --dynamic-list provided.
120 * options.h (General_options::have_dynamic_list): New function.
121 (General_options::have_dynamic_list_): New data member.
122 * symtab.h (Symbol::is_preemptible): Handle --dynamic-list
123 correctly.
124
125 PR gold/16530
126 * symtab.cc (Symbol_table::add_from_relobj): If symbol is named
127 in --dynamic-list, mark it.
128
129 * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case.
130 (dynamic_list_2): New test case.
131 * testsuite/Makefile.in: Regenerate.
132 * testsuite/dynamic_list_2.cc: New file.
133 * testsuite/dynamic_list_2.t: New file.
134 * testsuite/dynamic_list_lib1.cc: New file.
135 * testsuite/dynamic_list_lib2.cc: New file.
136 * testsuite/gc_dynamic_list_test.c: New file.
137 * testsuite/gc_dynamic_list_test.sh: New file.
138 * testsuite/gc_dynamic_list_test.t: New file.
139
ec673e64
CC
1402014-01-28 Cary Coutant <ccoutant@google.com>
141
142 Add .gdb_index version 7 support.
143
144 * gold/dwarf_reader.cc: include <utility> (for make_pair).
145 (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed
146 debug sections.
147 (Dwarf_ranges_table::read_ranges_table): Likewise.
148 (Dwarf_pubnames_table::read_section): Check for GNU-style
149 sections, and for compressed debug sections.
150 (Dwarf_pubnames_table::read_header): Compute end address of table.
151 (Dwarf_pubnames_table::next_name): Return flag_byte. Check
152 for end of list by offset, not by offset == 0.
153 (Dwarf_info_reader::do_read_string_table): Check for compressed
154 debug sections.
155 * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
156 Initialize new data members.
157 (Dwarf_pubnames_table::next_name): return flag_byte.
158 (Dwarf_pubnames_table::end_of_table_): New data member.
159 (Dwarf_pubnames_table::is_gnu_style_): New data member.
160 * gold/gdb-index.cc (gdb_index_version): Update to version 7.
161 (Gdb_index_info_reader::read_pubtable): Read flag_byte.
162 (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't
163 read skeleton type unit DIEs.
164 (Gdb_index::add_symbol): Add flag_byte; adjust all callers.
165 (Gdb_index::do_write): Write flag_byte.
166 * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter.
167 (Gdb_index::Cu_vector): Store flags along with cu indexes.
168 * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7.
169 * gold/testsuite/gdb_index_test_comm.sh: Likewise.
170
221fd5d5
L
1712014-01-08 H.J. Lu <hongjiu.lu@intel.com>
172
173 * version.cc (print_version): Update copyright year to 2014.
174
6c09fb0b
ILT
1752013-12-19 Dimitry Andric <dimitry@andric.com>
176
177 * stringpool.cc (Stringpool_template::reserve): Add
178 HAVE_UNORDERED_MAP case.
179 * stringpool.cc (Stringpool_template::print_stats): Likewise.
180
8356f2d0
CC
1812013-12-18 Cary Coutant <ccoutant@google.com>
182
183 * configure.ac: Check for <unordered_set> and <unordered_map>.
184 * config.in: Regenerate.
185 * configure: Regenerate.
186 * system.h: Use <unordered_set> and <unordered_map> if available.
187
f2c7d7ee
RM
1882013-12-10 Roland McGrath <mcgrathr@google.com>
189
190 * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
191 with $(INSTALL_PROGRAM_ENV).
192 * Makefile.in: Regenerate.
193
6632e8cc
CC
1942013-11-22 Cary Coutant <ccoutant@google.com>
195
196 * configure.ac: Add check for which library is needed for
197 dlopen.
198 * configure: Regenerate.
199
0c075858
CC
2002013-11-22 Cary Coutant <ccoutant@google.com>
201
202 * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
203 assembler.
204 * testsuite/Makefile.in: Regenerate.
205
f49fe902
L
2062013-11-17 H.J. Lu <hongjiu.lu@intel.com>
207
208 * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):
209 Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like
210 R_X86_64_PC32 and R_X86_64_PLT32, respectively.
211 (Target_x86_64<size>::Scan::local): Likewise.
212 (Target_x86_64<size>::Scan::global): Likewise.
213 (Target_x86_64<size>::Relocate::relocate): Likewise.
214 (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc):
215 Likewise.
216 (Target_x86_64<size>::Scan::check_non_pic(): Handle
217 R_X86_64_PC32_BND.
218
219 * testsuite/Makefile.am (check_PROGRAMS): Add
220 exception_x86_64_bnd_test.
221 (exception_x86_64_bnd_test_SOURCES): New macro.
222 (exception_x86_64_bnd_test_DEPENDENCIES): Likewise.
223 (exception_x86_64_bnd_test_LDFLAGS): Likewise.
224 (exception_x86_64_bnd_test_LDADD): Likewise.
225 (exception_x86_64_bnd_1.o): New rule.
226 (exception_x86_64_bnd_2.o): Likewise.
227 * testsuite/Makefile.in: Regenerated.
228
9055360d
AM
2292013-11-15 Alan Modra <amodra@gmail.com>
230
231 * powerpc.cc (Target_powerpc::glink_section): Provide non-const
232 accessor.
233 (Target_powerpc::Branch_info::make_stub): Make global entry stubs.
234 Only call ppc64_local_entry_offset for 64-bit. Restrict
235 symval_for_branch lookup to ELFv1.
236 (Stub_table::add_plt_call_entry): Use unsigned int off.
237 (Output_data_glink::Address, invalid_address): New.
238 (Output_data_glink::add_eh_frame): Move out of line. Add
239 support for ELFv2.
240 (Output_data_glink::add_global_entry, find_global_entry,
241 global_entry_address): New functions.
242 (Output_data_glink::global_entry_stubs_, end_branch_table_,
243 ge_size): New variables.
244 (Output_data_glink::set_final_data_size): Add global entry
245 stub sizing.
246 (Output_data_glink::do_write): Write global entry stubs.
247 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target
248 parameter. Return true for ELFv2. Adjust callers.
249 (Target_powerpc::Scan::local, global): Restrict opd lookup to
250 ELFv1. Similarly for ifunc and dynamic relocation processing
251 specific to ELFv1. Recognize that symbols are defined on
252 their plt entries for ELFv2.
253 (Target_powerpc::symval_for_branch): Assert if called for
254 ELFv2 or ppc32.
255 (Target_powerpc::Relocate::relocate): Use global entry plt
256 stub for symbol value if such exists on ELFv2.
257 (Target_powerpc::Relocate::relocate): Don't call
258 symval_for_branch when ELFv2. Do adjust for local entry
259 offset when ELFv2.
260 (Target_powerpc::do_dynsym_value): Set symbols to global entry
261 plt stub for ELFv2.
262 (Target_powerpc::do_plt_address_for_global): Similarly.
263
cafdd569
CC
2642013-11-14 Cary Coutant <ccoutant@google.com>
265
266 Revert patch -- this did not fix the problem, and there is
267 no race there.
268
269 2013-11-14 Cary Coutant <ccoutant@google.com>
270
271 PR gold/14860
272 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
273 (Ehframe_hdr::set_final_data_size): Allocate a Lock.
274 * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
275 updating fde_offsets_.
276 (Eh_frame_hdr::lock_): New data member.
277
94e49e16
CC
2782013-11-14 Cary Coutant <ccoutant@google.com>
279
280 * dwp.cc (Dwo_file_entry): New type.
281 (File_list): Use Dwo_file_entry.
282 (Dwo_file::verify): New function.
283 (Dwo_file::verify_dwo_list): New function.
284 (Dwo_file::sized_verify_dwo_list): New function.
285 (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file
286 list.
287 (Dwp_options): New enum type.
288 (dwp_options): Add --verify-only.
289 (usage): Likewise.
290 (main): Likewise.
291 * dwp.h (gold_info): Add declaration.
292
7cdd7d57
CC
2932013-11-14 Cary Coutant <ccoutant@google.com>
294
295 PR gold/14860
296 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
297 (Ehframe_hdr::set_final_data_size): Allocate a Lock.
298 * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
299 updating fde_offsets_.
300 (Eh_frame_hdr::lock_): New data member.
301
1d946cb3
CC
3022013-11-06 Cary Coutant <ccoutant@google.com>
303
304 PR gold/15758
305 * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections
306 before reloc sections.
307
4f65b40e
AM
3082013-11-04 Alan Modra <amodra@gmail.com>
309
310 * symtab.h (Symbol::Reference_flags): Add FUNC_DESC_ABI.
311 (Symbol::needs_dynamic_reloc): Test new flag.
312 * powerpc.cc (needs_dynamic_reloc, use_plt_offset): Delete.
313 (Target_powerpc::Scan::get_reference_flags): Add target param.
314 Return FUNC_DESC_ABI for 64-bit ELFv1.
315 (Target_powerpc::Branch_info::make_stub): Adjust get_reference_flags
316 call.
317 (Target_powerpc::Scan::global): Use Symbol::needs_dynamic_reloc.
318 (Target_powerpc::Relocate::relocate): Use Symbol::use_plt_offset.
319
908794a9
CC
3202013-10-31 Cary Coutant <ccoutant@google.com>
321
322 Restore support for dwp v2 DWARF package file format.
323
324 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
325 tu_length parameter. Adjust all callers.
326 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
327 * dwp.cc: Include dwarf.h.
328 (Section_bounds): New struct type.
329 (Unit_set): New struct type.
330 (Dwo_file::Dwo_file): Initialize new data member.
331 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
332 Combine and rename to...
333 (Dwo_file::read_unit_index): ...this.
334 (Dwo_file::sized_read_compunit_index)
335 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
336 (Dwo_file::sized_read_unit_index): ...this.
337 (Dwo_file::copy_section): Remove section_name, is_str_offsets
338 parameters; add section_id parameter.
339 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
340 (Dwo_file::add_unit_set): ...this.
341 (Dwo_file::shndx_map_): Remove.
342 (Dwo_file::sect_offsets_): New data member.
343 (Dwp_output_file::Dwp_output_file): Initialize new data members.
344 (Dwp_output_file::add_section): Rename to...
345 (Dwp_output_file::add_contribution): ...this.
346 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
347 (Dwp_output_file::add_tu_set): Likewise.
348 (Dwp_output_file::Contribution): New type.
349 (Dwp_output_file::Section::contributions): New data member.
350 (Dwp_output_file::Cu_or_tu_set): Remove.
351 (Dwp_output_file::Section::Section): New ctor.
352 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
353 (Dwp_output_file::Dwp_index::Section_table): New type.
354 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
355 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
356 parameter.
357 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
358 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
359 (Dwp_output_file::Dwp_index::section_table): New member function.
360 (Dwp_output_file::Dwp_index::section_table_end): New member function.
361 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
362 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
363 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
364 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
365 (Dwp_output_file::Dwp_index::section_table_): New data member.
366 (Dwp_output_file::Dwp_index::section_mask_): New data member.
367 (Dwp_output_file::add_output_section): New member function.
368 (Dwp_output_file::write_new_section): New member function.
369 (Dwp_output_file::write_contributions): New member function.
370 (Dwp_output_file::section_id_map_): New data member.
371 (class Dwo_id_info_reader): Remove.
372 (class Unit_reader): New class.
373 (get_dwarf_section_name): New function.
374 (Dwo_file::read_executable): Adjust initializations of class data.
375 (Dwo_file::read): Add support for v2 package file format.
376 (Dwo_file::read_unit_index): Likewise.
377 (Dwo_file::sized_read_unit_index): Likewise.
378 (Dwo_file::copy_section): Likewise.
379 (Dwo_file::add_unit_set): Likewise.
380 (Dwp_output_file::add_output_section): Likewise.
381 (Dwp_output_file::add_contribution): Likewise.
382 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
383 for empty slot.
384 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
385 file format.
386 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
387 slot.
388 (Dwp_output_file::initialize): Remove unused function.
389 (Dwp_output_file::finalize): Add support for v2 package file format.
390 (Dwp_output_file::write_index): Likewise.
391 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
392 function prototype.
393
2500c017
CC
3942013-10-31 Cary Coutant <ccoutant@google.com>
395
396 * configure.ac: Fix check for -fmerge-constants.
397 * configure.ac: Regenerate.
398
dd0845d7
RM
3992013-10-30 Roland McGrath <mcgrathr@google.com>
400
401 * x86_64.cc (Output_data_plt_x86_64_nacl::first_plt_entry):
402 Correct 9-byte nop sequence to match what the assembler generates.
403
b4f7960d
AM
4042013-10-30 Alan Modra <amodra@gmail.com>
405
406 * powerpc.cc (Powerpc_relobj::abiversion, set_abiversion,
407 ppc64_local_entry_offset, ppc64_local_entry_offset,
408 do_read_symbols): New functions.
409 (Powerpc_relobj::e_flags_, st_other_): New vars.
410 (Powerpc_relobj::Powerpc_relobj): Call set_abiversion.
411 (Powerpc_dynobj::abiversion, set_abiversion): New functions.
412 (Powerpc_relobj::e_flags_): New var.
413 (Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline
414 and adjust for ELFv2.
415 (Target_powerpc::abiversion, set_abiversion, stk_toc): New functions.
416 (Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2.
417 (Powerpc_dynobj::do_find_special_sections): Likewise.
418 (Target_powerpc::do_define_standard_symbols): Define ".TOC.".
419 (Target_powerpc::Branch_info::make_stub): Adjust stub destination
420 to ELFv2 local entry.
421 (Target_powerpc::do_relax): No thread safe barriers needed for
422 ELFv2.
423 (Output_data_plt_powerpc::initial_plt_entry_size_,
424 plt_entry_size): Delete. Replace all uses with
425 first_plt_entry_offset() and plt_entry_size().
426 (Output_data_plt_powerpc::Output_data_plt_powerpc): Remove
427 reserved_size parm. Update callers.
428 (Output_data_plt_powerpc::entry_count): Update.
429 (Output_data_plt_powerpc::first_plt_entry_offset): Make private
430 and use Target_powerpc::first_plt_entry_offset().
431 (Output_data_plt_powerpc::get_plt_entry_size): Similarly and
432 rename to plt_entry_size.
433 (Output_data_plt_powerpc::add_ifunc_entry,
434 add_local_ifunc_entry): Adjust reloc for ELFv2.
435 (glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1.
436 (glink_eh_frame_fde_64v2): New.
437 (Stub_table::plt_call_size): Support ELFv2 sizing.
438 (Output_data_glink::add_eh_frame): Use the new FDE.
439 (Output_data_glink::set_final_data_size): Adjust for ELFv2 glink.
440 (Stub_table::do_write): Write ELFv2 stubs and glink.
441 (Target_powerpc::Relocate::relocate): Replaces nop after call
442 with ld 2,24(1) and adjust local offset destination for ELFv2.
443
f9c6b907
AM
4442013-10-30 Alan Modra <amodra@gmail.com>
445
446 * powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
447 (Target_powerpc::Scan::global, local): Likewise.
448 (Target_powerpc::Relocate::relocate): Likewise. Check for overflow
449 on all ppc64 @h and @ha relocs.
450
e84fe78f
AM
4512013-10-14 Alan Modra <amodra@gmail.com>
452
453 * output.h (Output_data_got::add_constant): Tidy.
454 (Output_data_got::add_constant_pair): New function.
455 * powerpc.cc (Output_data_got_powerpc): Override all Output_data_got
456 methods used so as to first call reserve_ent().
457
679e4abf
RM
4582013-10-11 Roland McGrath <mcgrathr@google.com>
459
44dcb735
RM
460 * powerpc.cc (Output_data_got_powerpc): Remove unused methods
461 add_got_entry and add_got_entry_pair.
462
13323c49
RM
463 * configure.ac (TLS_GNU2_DIALECT): Use -Werror in test.
464 (HAVE_PUBNAMES): Likewise.
465 * configure: Regenerate.
466
1496b446
RM
467 * testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout.
468 * testsuite/Makefile.in: Regenerate.
469
cc84c10b
RM
470 * target.h (Target::adjust_elf_header, Target::do_adjust_elf_header):
471 Remove const from declaration.
472 * target.cc (Sized_target::do_adjust_elf_header): Update definition.
473 * sparc.cc (Target_sparc::do_adjust_elf_header): Likewise.
474 * output.h (Output_file_header): Remove const from member target_
475 and corresponding constructor argument.
476 * output.cc (Output_file_header::Output_file_header): Update prototype.
477 (Output_file_header::do_sized_write): Use this->target_ in place
478 of parameters()->target().
479
52f66a2c
RM
480 * testsuite/undef_symbol.cc (Foo::get_a): New method.
481
2b64b551
RM
482 * configure.ac (MERGE_CONSTANTS_FLAG): New check.
483 * configure: Regenerate.
484 * Makefile.in: Regenerate.
485 * testsuite/merge_string_literals_1.c: Renamed to have .cc suffix.
486 * testsuite/merge_string_literals_2.c: Likewise.
487 * testsuite/Makefile.am
488 (merge_string_literals_1.o, merge_string_literals_2.o): Update deps.
489 (AM_CFLAGS, AM_CXXFLAGS): Use $(MERGE_CONSTANTS_FLAG) in place of
490 literal -fmerge-constants.
491 * testsuite/Makefile.in: Regenerate.
492
43819297
RM
493 * i386.cc (Target_i386): Remove unused member dynbss_.
494 * arm.cc (Target_arm): Likewise.
495 * powerpc.cc (Target_powerpc): Likewise.
496 * sparc.cc (Target_sparc): Likewise.
497 * tilegx.cc (Target_tilegx): Likewise.
498 * x86_64.cc (Target_x86_64): Likewise.
499 * dwarf_reader.h (Dwarf_info_reader): Remove unused members
500 type_signature_, type_offset_.
501 * plugin.h (Plugin_hook): Remove unused member layout_.
502 * readsyms.h (Add_symbols): Remove unused members dirpath_, dirindex_,
503 mapfile_.
504 (Read_member): Remove unused members input_objects_, symtab_,
505 mapfile_, layout_.
506 (Check_library): Remove unused member symtab_.
507 * archive.h (Lib_group): Remove unused member lib_.
508 * archive.cc (Lib_group::Lib_group): Update initializer.
509 * incremental.h (Incremental_binary): Remove unused member target_.
510 (Incremental_script_entry): Removed unused member script_.
511 * layout.h (Write_symbols_task): Remove unused member input_objects_.
512 * icf.h (Icf): Remove unused member num_tracked_relocs.
513
39d9ead7
RM
514 * gold-threads.h (Once): Conditionalize member was_run_lock_ on
515 [ENABLE_THREADS && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4], matching
516 its only use.
517 * gold-threads.cc (Once::Once): Likewise conditionalize initializer.
518
679e4abf
RM
519 * archive.h: Use struct rather than class for forward declaration
520 of Read_symbols_data.
521
54de2ea6
CC
5222013-10-07 Cary Coutant <ccoutant@google.com>
523
524 PR gold/16010
525 * testsuite/Makefile.am (icf_test): Fix dependencies.
526 (icf_safe_test): Likewise.
527 (icf_safe_so_test): Likewise.
528 (large_symbol_alignment): Add empty _LDADD rule.
529 * testsuite/Makefile.in: Regenerate.
530
b14016f0
L
5312013-09-03 Pavel Chupin <pavel.v.chupin@intel.com>
532
533 PR gold/15927
534 * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative
535 relocation for R_X86_64_32 on x32.
536
eb426534
RM
5372013-08-27 Roland McGrath <mcgrathr@google.com>
538
539 * output.cc (Output_segment::set_section_addresses): Take new
540 Target* argument. If target->isolate_execinstr() and the segment
541 is executable and starts at a target->abi_pagesize() boundary,
542 pad its end out to a target->abi_pagesize() boundary with code fill.
543 * output.h (Output_segment::set_section_addresses): Update decl.
544 * layout.h (Layout::check_output_data_for_reset_values): Take new
545 argument RELAX_OUTPUTS.
546 (Layout): New member relax_output_list_.
547 (Layout::add_relax_output): New method.
548 * layout.cc (Layout::Layout): Update constructor.
549 (Layout::reset_relax_output): New method.
550 (Layout::clean_up_after_relaxation): Call it.
551 (Layout::prepare_for_relaxation): Update caller.
552 (Layout::set_segment_offsets): Update callers of set_section_addresses.
553 Call reset_relax_output before re-processing segments for
554 isolate_execinstr case.
555 (Layout::write_data): Handle relax_output_list_.
556 (Layout::Relaxation_debug_check::check_output_data_for_reset_values):
557 Take new argument RELAX_OUTPUTS. Assert it's an empty collection.
558
9aff4b7a
NC
5592013-08-23 Yuri Chornoivan <yurchor@ukr.net>
560
561 PR binutils/15834
562 * object.h: Fix typos.
563
93f8221c
RM
5642013-08-16 Roland McGrath <mcgrathr@google.com>
565
566 * i386.cc (Target_i386_nacl::do_code_fill): New virtual function.
567 * x86_64.cc (Target_x86_64_nacl::do_code_fill): New virtual function.
568
e44c3715
CC
5692013-08-07 Cary Coutant <ccoutant@google.com>
570
571 Revert support for v2 DWP files:
572
573 2013-03-01 Cary Coutant <ccoutant@google.com>
574
575 Add dwp support for v2 DWARF package file format.
576 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
577 tu_length parameter. Adjust all callers.
578 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
579 * dwp.cc: Include dwarf.h.
580 (Section_bounds): New struct type.
581 (Unit_set): New struct type.
582 (Dwo_file::Dwo_file): Initialize new data member.
583 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
584 Combine and rename to...
585 (Dwo_file::read_unit_index): ...this.
586 (Dwo_file::sized_read_compunit_index)
587 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
588 (Dwo_file::sized_read_unit_index): ...this.
589 (Dwo_file::copy_section): Remove section_name, is_str_offsets
590 parameters; add section_id parameter.
591 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
592 (Dwo_file::add_unit_set): ...this.
593 (Dwo_file::shndx_map_): Remove.
594 (Dwo_file::sect_offsets_): New data member.
595 (Dwp_output_file::Dwp_output_file): Initialize new data members.
596 (Dwp_output_file::add_section): Rename to...
597 (Dwp_output_file::add_contribution): ...this.
598 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
599 (Dwp_output_file::add_tu_set): Likewise.
600 (Dwp_output_file::Contribution): New type.
601 (Dwp_output_file::Section::contributions): New data member.
602 (Dwp_output_file::Cu_or_tu_set): Remove.
603 (Dwp_output_file::Section::Section): New ctor.
604 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
605 (Dwp_output_file::Dwp_index::Section_table): New type.
606 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
607 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
608 parameter.
609 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
610 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
611 (Dwp_output_file::Dwp_index::section_table): New member function.
612 (Dwp_output_file::Dwp_index::section_table_end): New member function.
613 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
614 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
615 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
616 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
617 (Dwp_output_file::Dwp_index::section_table_): New data member.
618 (Dwp_output_file::Dwp_index::section_mask_): New data member.
619 (Dwp_output_file::add_output_section): New member function.
620 (Dwp_output_file::write_new_section): New member function.
621 (Dwp_output_file::write_contributions): New member function.
622 (Dwp_output_file::section_id_map_): New data member.
623 (class Dwo_id_info_reader): Remove.
624 (class Unit_reader): New class.
625 (get_dwarf_section_name): New function.
626 (Dwo_file::read_executable): Adjust initializations of class data.
627 (Dwo_file::read): Add support for v2 package file format.
628 (Dwo_file::read_unit_index): Likewise.
629 (Dwo_file::sized_read_unit_index): Likewise.
630 (Dwo_file::copy_section): Likewise.
631 (Dwo_file::add_unit_set): Likewise.
632 (Dwp_output_file::add_output_section): Likewise.
633 (Dwp_output_file::add_contribution): Likewise.
634 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
635 for empty slot.
636 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
637 file format.
638 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
639 slot.
640 (Dwp_output_file::initialize): Remove unused function.
641 (Dwp_output_file::finalize): Add support for v2 package file format.
642 (Dwp_output_file::write_index): Likewise.
643 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
644 function prototype.
645
c6905c28
CC
6462013-07-31 Cary Coutant <ccoutant@google.com>
647
648 * object.cc (Sized_relobj::do_output_section_address): New function.
649 (Sized_relobj): Instantiate explicitly.
650 * object.h (Object::output_section_address): New function.
651 (Object::do_output_section_address): New function.
652 (Sized_relobj::do_output_section_address): New function.
653 * powerpc.cc (Target_powerpc::symval_for_branch): Use it.
654
6552013-07-30 Cary Coutant <ccoutant@google.com>
5cdb4d98 656 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
a67858e0
CC
657
658 * parameters.cc (Parameters::entry): Return target-specific entry
659 symbol name.
660 * target.h (Target::entry_symbol_name): New function.
661 (Target_info::entry_symbol_name): New data member.
662
663 * arm.cc (Target_arm::arm_info): Add entry_symbol_name.
664 * i386.cc (Target_i386::i386_info): Likewise.
665 (Target_i386_nacl::i386_nacl_info): Likewise.
666 * sparc.cc (Target_sparc::sparc_info): Likewise.
667 * tilegx.cc (Target_tilegx::tilegx_info): Likewise.
668 * x86_64.cc: (Target_x86_64::x86_64_info) Likewise.
669 (Target_x86_64_nacl::x86_64_nacl_info) Likewise.
670 * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
671
234d4ab8
SA
6722013-07-22 Sterling Augustine <saugustine@google.com>
673
674 * dwarf_reader.cc (Dwarf_pubnames_table::read_section):
675 Convert parameter shndx to local variable. Add parameters symtab
676 and symtab_size. Scan over section names. Find relocation
677 section corresponding to current section. Create and initialize
678 reloc_mapper_ and reloc_type_.
679 (Dwarf_pubnames_table::read_header): Add assertion. Change
680 unit_length to off_t. Initialize member unit_length_. Fill in field
681 cu_offset_.
682 * dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
683 Initialize new fields unit_length_ and cu_offset_.
684 (Dwarf_pubnames_table::read_section): Update prototype.
685 (Dwarf_pubnames_table::cu_offset): New member function.
686 (Dwarf_pubnames_table::subsection_size): Likewise.
687 (Dwarf_pubnames_table::cu_offset_, Dwarf_pubnames_table::unit_length):
688 New fields.
689 (Dwarf_info_reader::symtab, Dwarf_info_reader::symtab_size): Make
690 member functions public.
691 * gdb_index.cc (Gdb_index_info_reader::read_pubnames_and_pubtypes):
692 Update comment. Rework logic. Move repeated parts to...
693 (Gdb_index_info_reader::read_pubtable): ...here. New function.
694 (Gdb_index::Gdb_index): Initialize new fields, pubnames_table_,
695 pubtypes_table_, and stmt_list_offset.
696 (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
697 Gdb_index::find_pubtype_offset,
698 Gdb_index::map_pubnames_and_types_to_dies): Define new functions.
699 (Gdb_index::pubnames_read): Update prototype and rework logic.
700 * gdb_index.h (Gdb_index_info_reader, Dwarf_pubnames_table):
701 Forward declare.
702 (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
703 Gdb_index::find_pubtype_offset, Gdb_index::pubnames_table)
704 Gdb_index::pubtypes_table, Gdb_index::map_pubnames_and_types_to_dies,
705 Gdb_index::map_pubtable_to_dies):
706 Declare functions.
707 (Gdb_index::pubnames_read): Update declaration.
708 (Gdb_index::Pubname_offset_map): New type.
709 (Gdb_index::cu_pubname_map_, Gdb_index::cu_pubtype_map_,
710 Gdb_index::pubnames_table_, Gdb_index::pubtypes_table_,
711 Gdb_index::stmt_list_offset): Declare.
712 (Gdb_index::pubnames_shndx_, Gdb_index::pubnames_offet_,
713 Gdb_index::pubtypes_object_, Gdb_index::pubtypes_shndx_)
714 Gdb_index::pubtypes_offset_): Remove.
715
a3ed37d8
RM
7162013-07-19 Roland McGrath <mcgrathr@google.com>
717
718 * options.h (General_options): Add -Trodata-segment option.
719 * parameters.cc (Parameters::check_rodata_segment): New function.
720 (Parameters::set_target_once): Call it.
721 * parameters.h (Parameters): Declare it (private member function).
722 * layout.cc (load_seg_unusable_for_headers): New function, broken
723 out of Layout::relaxation_loop_body. If TARGET->isolate_execinstr()
724 then validate rodata segment rather than text segment.
725 (relaxation_loop_body): Call that.
726 (is_text_segment): New function. Don't admit a non-executable
727 segment if TARGET->isolate_execinstr().
728 (set_segment_offsets): Call it. Honor -Trodata-segment option.
729
eb5b4ded
CC
7302013-07-15 Shawn Landden <shawnlandden@gmail.com>
731
732 PR gold/15070
733 * fileread.h (File_read::get_view): Clarify comment about ALIGNED.
734 * nacl.h (Sniff_file::View::View): Request aligned view.
735
4d5effb9
CC
7362013-07-11 Cary Coutant <ccoutant@google.com>
737
738 * powerpc.cc (Target_powerpc::write_branch_lookup_table): Use
739 correct BRLT entry size.
740
ba8ca3e7
AM
7412013-07-03 Alan Modra <amodra@gmail.com>
742
743 * powerpc.cc (Target_powerpc::Relocate::relocate): Update self-call
744 comment.
745
267257d2
CC
7462013-07-01 Cary Coutant <ccoutant@google.com>
747
748 * dwarf_reader.cc (Dwarf_ranges_table::read_ranges_table): Save
749 reloc_type_.
750 (Dwarf_ranges_table::read_range_list): Call lookup_reloc.
751 (Dwarf_ranges_table::lookup_reloc): New function.
752 * dwarf_reader.h (Dwarf_ranges_table::Dwarf_ranges_table): Initialize
753 reloc_type_.
754 (Dwarf_ranges_table::lookup_reloc): New function.
755 (Dwarf_ranges_table::reloc_type_): New data member.
756
06f30c9d
CC
7572013-06-27 Jing Yu <jingyu@google.com>
758
759 PR gold/15662
760 * powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
761 function.
762 (Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
763 (Target_powerpc::do_relax): Call the above.
764
a2d7bf59
AM
7652013-06-27 Cary Coutant <ccoutant@google.com>
766
767 * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
768 on garbage collected .opd section.
769
7702013-06-27 Alan Modra <amodra@gmail.com>
771
772 * powerpc.cc (Target_powerpc::do_gc_add_reference): Test dst_shndx
773 is non-zero.
774 (Target_powerpc::do_gc_mark_symbols): Likewise for sym->shndx().
775 (Target_powerpc::do_function_location): Likewise for loc->shndx.
776
32364e50
CC
7772013-06-14 Cary Coutant <ccoutant@google.com>
778
779 * resolve.cc (Symbol::override_base): Don't override st_type
780 from plugin placeholder symbols.
781 (Symbol_table::resolve): Likewise.
782 (Symbol_table::should_override): Don't complain about TLS mismatch
783 if the TO symbol is a plugin placeholder.
784 * testsuite/Makefile.am (plugin_test_tls): New test.
785 * testsuite/Makefile.in: Regenerate.
786 * testsuite/plugin_test_tls.sh: New test script.
787 * testsuite/two_file_test_2_tls.cc: New test source.
788 * testsuite/two_file_test_tls.cc: New test source.
789
7fb47cc9
CC
7902013-06-05 Alexander Ivchenko <alexander.ivchenko@intel.com>
791
792 * layout.cc (Layout::set_segment_offsets): Taking care of the case when
793 the maximum segment alignment is larger than the page size.
794 * testsuite/Makefile.am (large_symbol_alignment): Test that Gold
795 correctly aligns the symbols with large alignemnt.
796 * testsuite/Makefile.in: Regenerate.
797 * testsuite/large_symbol_alignment.cc: New file.
798
6934001a
CC
7992013-05-30 Alexander Ivchenko <alexander.ivchenko@intel.com>
800 Sriraman Tallam <tmsriram@google.com>
801
802 * options.h (sort_section): New option.
803 * output.h (Input_section_sort_section_prefix_special_ordering_compare):
804 Rename from Input_section_sort_section_name_special_ordering_compare.
805 (Input_section_sort_section_name_compare): New struct.
806 * output.cc (Output_section::Input_section_sort_section_name_compare::
807 operator()): New function.
808 (Output_section::sort_attached_input_sections): Use new sort function
809 for .text if --sort-section=name is specified.
810 * layout.cc (Layout::make_output_section):
811 Add sorting by name when --sort-section=name is specified.
812 * testsuite/Makefile.am (text_section_grouping): Test option
813 --sort-section=name.
814 * testsuite/Makefile.in: Regenerate.
815 * testsuite/section_sorting_name.cc: New file.
816 * testsuite/section_sorting_name.sh: New file.
817
93acabad
CC
8182013-05-21 Cary Coutant <ccoutant@google.com>
819
820 * symtab.h (Symbol::is_cxx_vtable): New function.
821 * target-reloc.h (relocate_section): Check for vtable symbol.
822 * testsuite/Makefile.am (missing_key_func.sh): New test case.
823 * testsuite/Makefile.in: Regenerate.
824 * testsuite/missing_key_func.cc: New test source.
825 * testsuite/missing_key_func.sh: New test script.
826
60e8b3fc
CC
8272013-05-21 Cary Coutant <ccoutant@google.com>
828
2b64b551
RM
829 * object.cc (Sized_relobj_file::get_symbol_location_info): Set
830 type of enclosing symbol.
831 (Relocate_info::location): Check symbol type when describing symbol.
832 * object.h (Symbol_location_info): Remove unused line_number;
833 add enclosing_symbol_type.
834 * testsuite/debug_msg.sh: Adjust expected output.
60e8b3fc 835
9df9de2c
CC
8362013-05-13 Cary Coutant <ccoutant@google.com>
837
2b64b551
RM
838 * configure.ac: Export DEFAULT_TARGET.
839 * configure: Regenerate.
840 * Makefile.in: Regenerate.
841 * testsuite/Makefile.am: Add .EXPORT_ALL_VARIABLES.
842 * testsuite/Makefile.in: Regenerate.
843 * testsuite/debug_msg.sh: Delete duplicate tests.
844 Don't check undef_int error message match for powerpc where the
845 source file and line number aren't available.
9df9de2c 846
bbc5ae17
RM
8472013-05-10 Roland McGrath <mcgrathr@google.com>
848
849 * options.h (General_options): Add --rosegment-gap option.
850 * options.cc (finalize): --rosegment-gap implies --rosegment.
851 * layout.cc (set_segment_offsets): Let user option override
852 target->rosegment_gap().
853
0c6e6c39
RM
8542013-05-10 Roland McGrath <mcgrathr@google.com>
855
856 * options.h (General_options): Remove leading space from help
857 messages for -nostdlib and --rosegment.
858
cde7cb01
MR
8592013-05-03 Maciej W. Rozycki <macro@codesourcery.com>
860
861 PR ld/15365
862 * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
863
f31ae5b8
AM
8642013-05-03 Alan Modra <amodra@gmail.com>
865
866 * merge.cc (Output_merge_string::do_add_input_section): Correct
867 scan for number of strings. Rename vars to avoid shadowing.
868 Include missing terminator in input_size_.
869
d3a7cd45
L
8702013-05-01 H.J. Lu <hongjiu.lu@intel.com>
871
872 * merge.cc (Output_merge_string<Char_type>::do_add_input_section):
873 Restore empty string handling.
874
6ad3daba
CC
8752013-05-01 Cary Coutant <ccoutant@google.com>
876
877 * stringpool.cc (Stringpool_template::new_key_offset): Fix
878 uninitialized warning.
879
e31908b6
CC
8802013-04-29 Alexander Ivchenko <alexander.ivchenko@intel.com>
881
882 * output.cc (Output_section::add_merge_input_section): Allow
883 to merge sections if the alignment is more than character size.
884 * merge.h (Output_merge_string::Output_merge_string): Remove
885 assert.
886 * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count
887 only not-null strings. Check the alignment of strings.
888 * stringpool.h
889 (Stringpool_template<Stringpool_char>::Stringpool_template): Add
890 alignment as the argument.
891 (Stringpool_template<Stringpool_char>::addralign_): New class member.
892 * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset):
893 Align non-zero length strings according to the addralign_.
894 (Stringpool_template<Stringpool_char>::set_string_offsets):
895 Updating offsets according to the given alignment.
896 * testsuite/Makefile.am (text_section_grouping): Test if string
897 literals are getting merged.
898 * testsuite/Makefile.in: Regenerate.
899 * testsuite/merge_string_literals_1.c: New file.
900 * testsuite/merge_string_literals_2.c: Ditto.
901 * testsuite/merge_string_literals.sh: Ditto.
902
0e804863
ILT
9032013-04-26 Ian Lance Taylor <iant@google.com>
904
905 * target-reloc.h (relocate_section): If the reloc offset is out of
906 range, pass VIEW as NULL to relocate.relocate.
907 * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view.
908 * i386.cc (Target_i386::Relocate::relocate): Likewise.
909 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
910 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
911 * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise.
912 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
913
e7c5ea40
CC
9142013-04-26 Geoff Pike <gpike@chromium.org>
915
916 * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks().
917 * layout.cc (Hash_task): New class.
918 (Layout::queue_build_id_tasks): New function.
919 (Layout::write_build_id): Handle single-thread portion of build ID
920 computation. (In some cases, all of it is single-threaded.) Replace
921 {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same
922 functionality in fewer lines of code.
923 * layout.h (Layout::queue_build_id_tasks): New function declaration.
924 * options.h (General_options): make "--build-id" default to tree
925 rather than sha1. Add two new options related to --build-id=tree:
926 --build-id-chunk-size-for-treehash and
927 --build-id-min-file-size-for-treehash.
928 * Makefile.am: add testing of --build-id=tree and related new options
929 (these tests will be invoked by "make check").
930 * Makefile.in: Regenerate.
931
49926cd0
AM
9322013-04-25 Alan Modra <amodra@gmail.com>
933
934 * configure.tgt: Add powerpcle and powerpc64le.
935
a4034750
AM
9362013-04-22 Alan Modra <amodra@gmail.com>
937
938 PR gold/15355
939 * layout.cc (Layout::segment_precedes): Allow more than one
940 segment with the same type and flags.
941
e79c84aa
CC
9422013-04-15 Cary Coutant <ccoutant@google.com>
943
944 * layout.cc (Layout::set_relocatable_section_offsets): Don't
945 allocate space in file for BSS sections.
946
2199fbe7
CC
9472013-04-15 Cary Coutant <ccoutant@google.com>
948
949 * script-sections.cc (Orphan_output_section): Reset address
950 to zero after each orphaned section for relocatable links.
951
502e8a84
CC
9522013-04-15 Cary Coutant <ccoutant@google.com>
953
a4034750
AM
954 * symtab.cc (Symbol_table::sized_write_globals): Subtract
955 section starting address for relocatable link.
956 * testsuite/Makefile.am (script_test_11): New test.
957 * testsuite/Makefile.in: Regenerate.
958 * testsuite/script_test_11.c: New source file.
959 * testsuite/script_test_11.t: New linker script.
502e8a84 960
0cfdc767
AM
9612013-04-13 Alan Modra <amodra@gmail.com>
962
963 * powerpc.cc (Stub_control::can_add_to_stub_group): Don't set
964 owner when sections are not adjacent and exceed group size.
965 (Target_powerpc::group_sections): Handle corner case.
966 (Target_powerpc::Branch_info::make_stub): Handle case where
967 stub table doesn't exist due to branches in non-exec sections.
968 (Target_powerpc::Relocate::relocate): Likewise.
969
6830ee24
AM
9702013-04-11 Alan Modra <amodra@gmail.com>
971
972 PR gold/15354
973 * powerpc.cc (Target_powerpc::make_brlt_section): Name section
974 .branch_lt to match bfd ld. Adjust comments throughout file.
975
54a3d865
ILT
9762013-04-04 Ian Lance Taylor <iant@google.com>
977
978 GCC PR c++/56840
979 * object.cc (do_layout_deferred_sections): Handle .eh_frame
980 sections before checking whether they are included in the link.
981
9993ba11
ST
9822013-03-29 Sriraman Tallam <tmsriram@google.com>
983
984 * archive.cc (Archive::get_elf_object_for_member): Create the elf
985 object before calling the plugin claim_file handler. Pass the elf
986 object of the archive to the plugin. Delete the elf object if the
987 plugin claims the file.
988
ebacd51e
AM
9892013-03-21 Alan Modra <amodra@gmail.com>
990
991 * layout.cc (Layout::set_segment_offsets): Accept writable .text
992 segment when omagic.
993
117be58f
AM
9942013-03-21 Alan Modra <amodra@gmail.com>
995
996 * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsigned
997 comparison warning.
998 * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used
999 uninitialized" warning.
1000
32e2b61d
AM
10012013-03-20 Alan Modra <amodra@gmail.com>
1002
1003 * symtab.h (Symbol::clear_version): New function.
1004 * symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object
1005 is_needed by weak references. Clear version for symbols defined
1006 in as-needed objects that are not needed.
1007
b3ccdeb5
AM
10082013-03-15 Alan Modra <amodra@gmail.com>
1009
1010 * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Make
1011 static and public. Add report_err param. Return false for data refs.
1012 (Target_powerpc::rela_dyn_section): New overloaded function.
1013 (Target_powerpc::plt_, iplt_): Elucidate.
1014 (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0.
1015 (Output_data_plt_powerpc::do_write): Don't write .iplt.
1016 (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries.
1017 (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc
1018 calls. Put ifunc dynamic relocs in irela_dyn_section. Only
1019 push_branch and make_plt_entry for ifunc syms when
1020 reloc_needs_plt_for_ifunc.
1021 (Target_powerpc::Relocate::relocate): Don't use plt entry value
1022 for ifunc unless reloc_needs_plt_for_ifunc.
1023
ad3d8a2f
AM
10242013-03-15 Alan Modra <amodra@gmail.com>
1025
1026 * gc.h (gc_process_relocs): Don't look through function descriptors.
1027 * icf.cc (get_section_contents): Do so here instead.
1028
4d9aa155
AM
10292013-03-13 Alan Modra <amodra@gmail.com>
1030
1031 * powerpc.cc (is_branch_reloc): Forward declare.
1032 (Target_powerpc::do_can_check_for_function_pointers): New predicate.
1033 (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return
1034 false for 64-bit, true for 32-bit non-branch relocs.
1035 (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise.
1036 * testsuite/Makefile.am (icf_test): Use linker map file instead of
1037 nm output.
1038 (icf_safe_test): Generate linker map file as well as nm output.
1039 (icf_safe_so_test): Likewise.
1040 * testsuite/Makefile.in: Regenerate.
1041 * testsuite/icf_test.sh: Parse linker map file to determine
1042 section folding.
1043 * testsuite/icf_safe_test.sh: Likewise. Expect folding for PowerPC.
1044 * testsuite/icf_safe_so_test.sh: Likewise.
1045 (X86_32_or_ARM_specific_safe_fold): Merge into..
1046 (arch_specific_safe_fold): ..this.
1047 (X86_64_specific_safe_fold): Delete unused function.
1048
57420c20
AM
10492013-03-12 Alan Modra <amodra@gmail.com>
1050
1051 * gc.h (gc_process_relocs): Look through function descriptors
1052 to determine shndx, symvalue and addend used by ICF. Tidy
1053 variable duplication.
1054
dc3714f3
AM
10552013-03-11 Alan Modra <amodra@gmail.com>
1056
1057 * gold.cc (queue_middle_tasks): Move detect_odr_violations..
1058 * layout.cc (Layout_task_runner::run): ..to here.
1059 * symtab.h (struct Symbol_location): Extract from..
1060 (class Symbol_table): ..here.
1061 * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
1062 * target.h (class Target): Add function_location and
1063 do_function_location functions.
1064 (class Sized_target): Add do_function_location.
1065 * object.h (class Sized_relobj_file): Move find_shdr..
1066 (class Object): ..to here.
1067 * object.cc: Likewise. Update to suit. Instantiate.
1068 (Sized_relobj_file::find_eh_frame): Update find_shdr call.
1069 * powerpc.cc (class Powerpc_dynobj): New.
1070 (Target_powerpc::do_function_location): New function.
1071 (Powerpc_relobj::do_find_special_sections): Update find_shdr call.
1072 (Powerpc_dynobj::do_read_symbols): New function.
1073 (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
1074
956b03bb
ILT
10752013-03-08 Ian Lance Taylor <iant@google.com>
1076
1077 * options.cc (General_options::string_to_object_format): Accept
1078 "default".
1079
4bead2d5
AM
10802013-03-08 Alan Modra <amodra@gmail.com>
1081
1082 * ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
1083 pointer to Post_fde.
1084 (struct Post_fde): Move definition to here..
1085 * ehframe.cc (struct Post_fde): ..from here.
1086 (Cie::write): Don't alloc Post_fde.
1087 (Eh_frame::do_sized_write): Update. Don't free Post_fde.
1088
02e60bf7
AM
10892013-03-07 Alan Modra <amodra@gmail.com>
1090
1091 * testsuite/discard_locals_relocatable_test.c: Add a powerpc
1092 relocation referencing .LC0.
1093 * testsuite/discard_locals_test.sh: Remove FIXMEs.
1094
8343f03a
AM
10952013-03-07 Alan Modra <amodra@gmail.com>
1096
1097 * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
1098 always_inline. Add assembly for powerpc to avoid GOT.
1099
3366d57c
AM
11002013-03-07 Alan Modra <amodra@gmail.com>
1101
1102 * testsuite/script_test_10.sh: Don't test .bss section
1103 header number.
1104
6c77229c
AM
11052013-03-06 Alan Modra <amodra@gmail.com>
1106
1107 * powerpc.cc (class Powerpc_relobj): Move some member functions.
1108 (Target_powerpc::symval_for_branch): Add symtab param. Update
1109 all callers. Handle folded sections.
1110 (Target_powerpc::do_gc_add_reference): Don't cast dynamic object
1111 to Powerpc_relobj.
1112 (Global_symbol_visitor_opd::operator()): Likewise.
1113
a39e4af6
AM
11142013-03-04 Alan Modra <amodra@gmail.com>
1115
1116 * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.
1117 * testsuite/Makefile.in: Regenerate.
1118
d5834edb
CC
11192013-03-01 Cary Coutant <ccoutant@google.com>
1120
1121 Add dwp support for v2 DWARF package file format.
1122 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
1123 tu_length parameter. Adjust all callers.
1124 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
1125 * dwp.cc: Include dwarf.h.
1126 (Section_bounds): New struct type.
1127 (Unit_set): New struct type.
1128 (Dwo_file::Dwo_file): Initialize new data member.
1129 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
1130 Combine and rename to...
1131 (Dwo_file::read_unit_index): ...this.
1132 (Dwo_file::sized_read_compunit_index)
1133 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
1134 (Dwo_file::sized_read_unit_index): ...this.
1135 (Dwo_file::copy_section): Remove section_name, is_str_offsets
1136 parameters; add section_id parameter.
1137 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
1138 (Dwo_file::add_unit_set): ...this.
1139 (Dwo_file::shndx_map_): Remove.
1140 (Dwo_file::sect_offsets_): New data member.
1141 (Dwp_output_file::Dwp_output_file): Initialize new data members.
1142 (Dwp_output_file::add_section): Rename to...
1143 (Dwp_output_file::add_contribution): ...this.
1144 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
1145 (Dwp_output_file::add_tu_set): Likewise.
1146 (Dwp_output_file::Contribution): New type.
1147 (Dwp_output_file::Section::contributions): New data member.
1148 (Dwp_output_file::Cu_or_tu_set): Remove.
1149 (Dwp_output_file::Section::Section): New ctor.
1150 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
1151 (Dwp_output_file::Dwp_index::Section_table): New type.
1152 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
1153 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
1154 parameter.
1155 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
1156 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
1157 (Dwp_output_file::Dwp_index::section_table): New member function.
1158 (Dwp_output_file::Dwp_index::section_table_end): New member function.
1159 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
1160 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
1161 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
1162 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
1163 (Dwp_output_file::Dwp_index::section_table_): New data member.
1164 (Dwp_output_file::Dwp_index::section_mask_): New data member.
1165 (Dwp_output_file::add_output_section): New member function.
1166 (Dwp_output_file::write_new_section): New member function.
1167 (Dwp_output_file::write_contributions): New member function.
1168 (Dwp_output_file::section_id_map_): New data member.
1169 (class Dwo_id_info_reader): Remove.
1170 (class Unit_reader): New class.
1171 (get_dwarf_section_name): New function.
1172 (Dwo_file::read_executable): Adjust initializations of class data.
1173 (Dwo_file::read): Add support for v2 package file format.
1174 (Dwo_file::read_unit_index): Likewise.
1175 (Dwo_file::sized_read_unit_index): Likewise.
1176 (Dwo_file::copy_section): Likewise.
1177 (Dwo_file::add_unit_set): Likewise.
1178 (Dwp_output_file::add_output_section): Likewise.
1179 (Dwp_output_file::add_contribution): Likewise.
1180 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
1181 for empty slot.
1182 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
1183 file format.
1184 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
1185 slot.
1186 (Dwp_output_file::initialize): Remove unused function.
1187 (Dwp_output_file::finalize): Add support for v2 package file format.
1188 (Dwp_output_file::write_index): Likewise.
1189 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
1190 function prototype.
1191
a68a081d
CC
11922013-03-01 Cary Coutant <ccoutant@google.com>
1193
1194 * dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move
1195 function into class definition in header file.
1196 (Dwarf_info_reader::warn_corrupt_debug_section): New function.
1197 * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section):
1198 New function.
1199 (Dwarf_info_reader::check_buffer): Move here from .cc file.
1200
9d5781f8
AM
12012013-02-28 Alan Modra <amodra@gmail.com>
1202
1203 * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.
1204 * target.cc (Target::do_plt_fde_location): New function.
1205 * ehframe.h (class FDE): Add post_map field to u_.from_linker,
1206 accessor function, and constructor param.
1207 (struct Post_fde, Post_fdes): Declare.
1208 (Cie::write): Add post_fdes param.
1209 * ehframe.cc (Fde::write): Use plt_fde_location.
1210 (struct Post_fde): Define.
1211 (Cie::write): Stash FDEs added post merge mapping.
1212 (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping.
1213 Adjust Fde constructor call. Bump final_data_size_ for post map FDEs.
1214 (Eh_frame::do_sized_write): Arrange to write post map FDES after
1215 other FDEs.
1216 * powerpc.cc (Target_powerpc::do_plt_fde_location): New function.
1217 (Target_powerpc::has_glink): New function.
1218 (Target_powerpc::do_relax): Add eh_frame info for stubs.
1219 (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64,
1220 glink_eh_frame_fde_32, default_fde): New data.
1221 (Stub_table::eh_frame_added_): New var.
1222 (Stub_table::find_long_branch_entry, stub_address, stub_offset):
1223 Make const.
1224 (Stub_table::add_eh_frame): New function.
1225 (Output_data_glink::add_eh_frame): New function.
1226 (Target_powerpc::make_glink_section): Call add_eh_frame.
1227
214383dd
ILT
12282013-02-15 Ian Lance Taylor <iant@google.com>
1229
1230 * options.h (DEFINE_uint64_alias): Define.
1231 (class General_options): Add -Ttext-segment as an alias for
1232 -Ttext.
1233
91c2b899
AM
12342013-02-15 Alan Modra <amodra@gmail.com>
1235
1236 * powerpc.cc (Stub_table::plt_off): New function, extracted from..
1237 (Stub_table::do_write): ..here, two places.
1238 (Stub_table::plt_call_size): Use it here too.
1239
20e2a8aa
ILT
12402013-02-11 Ian Lance Taylor <iant@google.com>
1241
1242 * descriptors.cc (Descriptors::close_all): New function.
1243 * descriptors.h (class Descriptors): Declare close_all.
1244 (close_all_descriptors): New inline function.
1245 * plugin.cc: Include "descriptors.h".
1246 (Plugin_manager::cleanup): Call close_all_descriptors.
1247
8952bc69
AM
12482013-02-06 Alan Modra <amodra@gmail.com>
1249
1250 * README: Update coding style link.
1251
29bd8b6b
CC
12522013-01-28 Cary Coutant <ccoutant@google.com>
1253
a4034750
AM
1254 * dwp.cc (File_list): New typedef.
1255 (Dwo_name_info_reader): New class.
1256 (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
1257 (Dwo_id_info_reader::visit_top_die): Remove unused member function.
1258 (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
1259 (Dwo_file::read_executable): New function.
1260 (Dwo_file::read): Move common setup code to ...
1261 (Dwo_file::make_object): ... here.
1262 (dwp_options): Add --exec/-e.
1263 (usage): Likewise.
1264 (main): Likewise.
29bd8b6b 1265
c6ac678d
ST
12662013-01-24 Sriraman Tallam <tmsriram@google.com>
1267
1268 * layout.cc (Layout::layout): Check for option text_reorder.
1269 (Layout::make_output_section): Ditto.
1270 * options.h (text_reorder): New option.
1271 * output.cc (Input_section_sort_compare): Remove special ordering
1272 of section names.
1273 (Output_section::
1274 Input_section_sort_section_name_special_ordering_compare::
1275 operator()): New function.
1276 (Output_section::sort_attached_input_sections): Use new sort function
1277 for .text.
1278 * output.h (Input_section_sort_section_name_special_ordering_compare):
1279 New struct.
1280 * testsuite/Makefile.am (text_section_grouping): Test option
1281 --no-text-reorder
1282 * testsuite/Makefile.in: Regenerate.
1283 * testsuite/text_section_grouping.sh: Check order of functions without
1284 default text reordering.
1285
50701cc1
MF
12862013-01-18 Mike Frysinger <vapier@gentoo.org>
1287
1288 * options.h (General_options): Change default to true for new_dtags.
1289
b1b00fcc
MF
12902013-01-18 Mike Frysinger <vapier@gentoo.org>
1291
1292 * layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
1293 when enable_new_dtags is false. Only add DT_RUNPATH when
1294 enable_new_dtags is true.
1295
ec5b8187
AM
12962013-01-17 Serge Pavlov <serge.v.pavlov@gmail.com>
1297
1298 * powerpc.cc (Stub_table::find_plt_call_entry): Make types
1299 used in declaration and definition consistent.
1300 (Target_powerpc::symval_for_branch): Ditto.
1301
a880d4c4
ST
13022013-01-16 Sriraman Tallam <tmsriram@google.com>
1303
1304 * testsuite/plugin_final_layout.cc: Fix comment.
1305
7c381248
ST
13062013-01-16 Sriraman Tallam <tmsriram@google.com>
1307
1308 * layout.cc (Layout::layout): Do not do default sorting for
1309 text sections when section ordering is specified.
1310 (make_output_section): Ditto.
1311 * testsuite/plugin_final_layout.cc: Name the function sections
1312 to catch reordering issues.
1313
e2458743
AM
13142013-01-15 Alan Modra <amodra@gmail.com>
1315
1316 * powerpc.cc (Target_powerpc::do_relax): Default shared libs to
1317 plt-thread-safe.
1318
431ed302
AM
13192013-01-15 Alan Modra <amodra@gmail.com>
1320
1321 * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
1322 * testsuite/Makefile.in: Regenerate.
1323
0ec6429b
AM
13242013-01-14 Alan Modra <amodra@gmail.com>
1325
1326 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
1327 * testsuite/Makefile.in: Regenerate.
1328
0bf402d5
ILT
13292013-01-11 Pavel Chupin <pavel.v.chupin@intel.com>
1330
36af3926 1331 PR bfd/14430
0bf402d5
ILT
1332 Fix mingw gold build with plugins enabled
1333 * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
1334 * configure.ac: Export DLOPEN_LIBS and add headers check.
1335 * plugin.cc: Handle non-dlfcn case.
1336 * Makefile.in: Regenerate.
1337 * config.in: Regenerate.
1338 * configure: Regenerate.
1339 * testsuite/Makefile.in: Regenerate.
1340
9e9143bc
ST
13412013-01-09 Sriraman Tallam <tmsriram@google.com>
1342
1343 * output.h (sort_attached_input_sections): Change to be public.
1344 * script-sections.cc
1345 (Output_section_definition::set_section_addresses): Sort
1346 attached input sections according to section order before linker
1347 script assigns section addresses.
1348 (Orphan_output_section::set_section_addresses): Sort
1349 attached input sections according to section order before linker
1350 script assigns section addresses.
1351 * Makefile.am (final_layout.sh): Use a simple linker script to
1352 check if section ordering still works.
1353 * Makefile.in: Regenerate.
1354
679af368
ILT
13552013-01-09 Ben Cheng <bccheng@google.com>
1356
1357 * arm.cc (Target_arm::attributes_accept_div): New function.
1358 (Target_arm::attributes_forbid_div): New function.
1359 (Target_arm::merge_object_attributes): Merge the Tag_DIV_use
1360 attribute using the same new functions as what bfd/elf32_arm.c
1361 does.
1362
3136a00e
CC
13632013-01-07 Cary Coutant <ccoutant@google.com>
1364
1365 PR gold/14993
1366 * output.cc (Output_section::add_input_section): For incremental
1367 updates, don't track input sections that are allocated from patch
1368 space.
1369
f2a6224b
L
13702013-01-07 H.J. Lu <hongjiu.lu@intel.com>
1371 Ian Lance Taylor <iant@google.com>
1372
1373 PR gold/14897
1374 * configure.ac (--enable-ld): Removed.
1375 (install_as_default): Set to yes only for --enable-gold=default
1376 or --disable-ld.
1377 * configure: Regenerated.
1378
4f46f626
L
13792013-01-07 H.J. Lu <hongjiu.lu@intel.com>
1380
1381 * options.h (General_options): Add -fuse-ld= for GCC linker
1382 option compatibility.
1383
26e4ef59
CC
13842013-01-04 Cary Coutant <ccoutant@google.com>
1385
1386 * configure.ac: Fix typo restoring CXXFLAGS.
1387 * configure: Regenerate.
1388
3d587466
CC
13892013-01-04 Cary Coutant <ccoutant@google.com>
1390
4f46f626
L
1391 * testsuite/Makefile.am (CXXLINK_S): New macro.
1392 (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
1393 * testsuite/Makefile.in: Regenerate.
3d587466 1394
44db6695
L
13952013-01-02 H.J. Lu <hongjiu.lu@intel.com>
1396
1397 * version.cc (print_version): Update copyright year to 2013.
1398
edcac0c1
ILT
13992012-12-20 Ian Lance Taylor <iant@google.com>
1400
1401 * layout.cc (Layout::special_ordering_of_input_section): New
1402 function.
1403 (Layout::layout): If input section requires special ordering, must
1404 sort input sections.
1405 (Layout::make_output_section): May sort .text input sections.
1406 (Layout::is_section_name_prefix_grouped): Remove.
1407 * layout.h (class Layout): Declare
1408 special_ordering_of_input_section. Don't declare
1409 is_section_name_prefix_grouped.
1410 * output.cc (Output_section::add_input_section): Revert last
1411 change.
1412 (Output_section::Input_section_sort::match_file_name): Don't crash
1413 if called on output section data.
1414 (Output_section::Input_section_sort_compare): Sort based on
1415 special ordering.
1416 (Output_section::Input_section_sort_section_order_index_compare):
1417 Revert last patch.
1418 (Output_section::sort_attached_input_sections): Likewise.
1419
28f2a4ac
ST
14202012-12-18 Sriraman Tallam <tmsriram@google.com>
1421
edcac0c1 1422 * layout.cc (Layout::is_section_name_prefix_grouped): New function.
28f2a4ac
ST
1423 * layout.h (Layout::is_section_name_prefix_grouped): New function.
1424 * output.cc (Output_section::add_input_section): Check if section
1425 name contains special prefix. Keep input sections to sort such
1426 sections.
1427 (Output_section::Input_section_sort_section_order_index_compare
1428 ::operator()): Group sections according to prefixes.
edcac0c1
ILT
1429 (Output_section::sort_attached_input_sections): Add condition to
1430 Input_section_entry constructor call.
28f2a4ac
ST
1431 * testsuite/Makefile.am (text_section_grouping): New test.
1432 * testsuite/Makefile.in: Regenerate.
1433 * testsuite/text_section_grouping.cc: New file.
1434 * testsuite/text_section_grouping.sh: New file.
1435
5bf135a7
NC
14362012-12-17 Nick Clifton <nickc@redhat.com>
1437
1438 * Makefile.am: Add copyright notice.
1439 * NEWS: Likewise.
1440 * README: Likewise.
1441 * configure.ac: Likewise.
1442 * ftruncate.c: Likewise.
1443 * Makefile.in: Regenerate.
1444
59965708
CC
14452012-12-14 Cary Coutant <ccoutant@google.com>
1446
a4034750
AM
1447 * testsuite/Makefile.am (exception_separate_shared_12_test): Add
1448 --no-as-needed flag.
1449 (exception_separate_shared_12_test): Likewise.
1450 (incremental_copy_test): Likewise.
1451 * testsuite/Makefile.in: Regenerate.
59965708 1452
2a77e2ab
CC
14532012-12-14 Cary Coutant <ccoutant@google.com>
1454
1455 * dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
1456 (Dwp_output_file::Dwp_index::enter_set): Add assert.
1457
e3deeb9c
AM
14582012-12-12 Alan Modra <amodra@gmail.com>
1459
1460 * powerpc.cc (class Track_tls): New.
1461 (class Relocate, class Scan): Inherit Track_tls.
1462 (Target_powerpc::Scan::local, global): Track tls optimization
1463 and avoid creating plt entry for __tls_get_addr if all uses
1464 are optimized away.
1465 (Target_powerpc::Relocate::relocate): Update to use Track_tls.
1466
d8f5a274
AM
14672012-12-12 Alan Modra <amodra@gmail.com>
1468
1469 * options.h (General_options): Add --toc-sort/--no-toc-sort.
1470 Replace no_toc_optimize with toc_optimize.
1471 * output.h (Output_section::input_sections): Provide non-const variant.
1472 * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
1473 set_has_small_toc_reloc, has_small_toc_reloc): New variable and
1474 accessors.
1475 (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
1476 (class Sort_toc_sections): New.
1477 (Target_powerpc::do_finalize_sections): Sort toc sections.
1478 (Target_powerpc::Relocate::relocate): Update toc_optimize test.
1479
4c8a1de1
RM
14802012-12-10 Roland McGrath <mcgrathr@google.com>
1481
1482 * testsuite/binary_unittest.cc (read_all): New function.
1483 (Sized_binary_test): Use it instead of ::read.
1484 * fileread.cc (do_read): Don't assume pread always reads the whole
1485 amount in a single call.
1486
edc27beb
AM
14872012-12-10 Alan Modra <amodra@gmail.com>
1488
1489 * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
1490 Set EM_PPC64 or EM_PPC here.
1491 (Target_selector_powerpc::do_recognize): Delete.
1492
906b9150
AM
14932012-12-10 Alan Modra <amodra@gmail.com>
1494
1495 * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
1496 stub_table_.
1497 (Target_powerpc::Branch_info::make_stub): Don't omit addend.
1498
418c15ae
RM
14992012-12-07 Roland McGrath <mcgrathr@google.com>
1500
1501 * testsuite/binary_unittest.cc (Sized_binary_test):
1502 Use open_descriptor rather than ::open.
1503
decdd3bc
AM
15042012-12-07 Alan Modra <amodra@gmail.com>
1505
1506 * powerpc.cc (Stub_table::do_write): Delete redundant Address
1507 typedef and invalid_address constant.
1508 (Output_data_glink, Stub_table, Target_powerpc): Explicitly
1509 instantiate constants.
1510
db399005
ILT
15112012-12-06 Roland McGrath <mcgrathr@google.com>
1512
1513 * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
1514 Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
1515 * aclocal.m4: Regenerate.
1516 * configure: Regenerate.
1517 * Makefile.in: Regenerate.
1518 * testsuite/Makefile.in: Regenerate.
1519
aba6bc71
AM
15202012-12-07 Alan Modra <amodra@gmail.com>
1521
1522 * options.h (General_options): Add no_toc_optimize.
1523 * powerpc.cc (ok_lo_toc_insn): New function.
1524 (Target_powerpc::Relocate::relocate): Optimize toc access sequences.
1525
9e69ed50
AM
15262012-12-06 Alan Modra <amodra@gmail.com>
1527
1528 * options.h (General_options): Add plt_align, plt_static_chain,
1529 plt_thread_safe. Update stub_group_size help text.
1530 * powerpc.cc (Target_powerpc::plt_thread_safe): New access function
1531 for new plt_thread_safe_ var.
1532 (use_plt_offset): Correct comments.
1533 (Target_powerpc::do_relax): Look for thread creation symbols to
1534 determine default plt_thread_safe value. Clear plt call stubs
1535 as well as branch stubs each iteration.
1536 (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
1537 insn constants.
1538 (l, hi, ha, write_insn): Move earlier.
1539 (Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
1540 (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
1541 plt stubs too.
1542 (Stub_table::update_size): Adjust.
1543 (Stub_table::prev_size, set_prev_size): Delete.
1544 (Stub_table::stub_align): Let --plt-align affect result.
1545 (Stub_table::plt_call_size): Calculate sizes for various stubs.
1546 (Stub_table::branch_stub_size): Use last_plt_size in address calc.
1547 (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
1548 (Stub_table::do_write): Support more stub variants.
1549
f43ba157
AM
15502012-12-04 Alan Modra <amodra@gmail.com>
1551
1552 * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
1553 (Target_powerpc::do_define_standard_symbols): New function.
1554
34171bc5
AM
15552012-12-03 Alan Modra <amodra@gmail.com>
1556
1557 * output.h: Formatting, whitespace.
1558
dc9589e9 15592012-12-03 Alan Modra <amodra@gmail.com>
ec661b9d
AM
1560
1561 * layout.h (Layout::get_executable_sections): Declare.
1562 * layout.cc (Layout::get_executable_sections): New function.
1563 * arm.cc (Target_arm::group_sections): Use it.
1564 (Arm_output_section::group_sections): Delete now redundant test.
1565 * output.cc (Output_reloc::Output_reloc): Add is_relative.
1566 param to handle relative relocs.
1567 * output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
1568 (Output_data_reloc::add_absolute): Adjust.
1569 (Output_data_reloc::add_relative): New function.
1570 (Output_data::reset_data_size): New function.
1571 (Output_relaxed_input_section::set_relobj, set_shndx): New functions.
1572 (Output_section::set_addralign): New function.
1573 (Output_section::checkpoint_set_addralign): New function.
1574 (Output_section::clear_section_offsets_need_adjustment): New function.
1575 (Output_section::input_sections): Make public.
1576 * powerpc.cc (class Output_data_brlt_powerpc): New.
1577 (class Stub_table, class Stub_control): New.
1578 (Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
1579 stub_table_, set_stub_table, stub_table): New vectors and accessor
1580 functions.
1581 (Target_powerpc::do_may_relax, do_relax, push_branch,
1582 new_stub_table, stub_tables, brlt_section, group_sections,
1583 add_branch_lookup_table, find_branch_lookup_table,
1584 write_branch_lookup_table, make_brlt_section): New functions.
1585 (Target_powerpc::struct Sort_sections, class Branch_info): New.
1586 (Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
1587 branch_info_): New vars.
1588 (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
1589 make call stubs here.
1590 (Output_data_glink): Remove all call stub handling from this class.
1591 (Target_powerpc::Scan::local, global): Save interesting branch
1592 relocs and relocs for ifunc. Adjust calls to plt entry functions.
1593 (Target_powerpc::do_finalize_sections): Only make reg save/restore
1594 functions on final link.
1595 (Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
1596 Handle long branch destinations too.
1597 (Target_powerpc::do_dynsym_value, do_plt_address_for_global,
1598 do_plt_address_for_local): Adjust lookup of plt call stubs.
1599
627b30b7
AM
16002012-11-30 Alan Modra <amodra@gmail.com>
1601
1602 * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
1603 relocs against protected symbols when building 32-bit shared libs.
1604
40b469d7
AM
16052012-11-30 Alan Modra <amodra@gmail.com>
1606
1607 * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
1608 param. Call got_section() to make .got. Update all callers
1609 and their callers and so on.
1610
bb66a627
AM
16112012-11-30 Alan Modra <amodra@gmail.com>
1612
1613 * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
1614 _GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
1615 (Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
1616 value if it already exists.
1617
d2cf1c6c
L
16182012-11-19 H.J. Lu <hongjiu.lu@intel.com>
1619
1620 PR gold/14858
1621 * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
1622
edccdf7c
RM
16232012-11-14 Roland McGrath <mcgrathr@google.com>
1624
1625 * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
1626 than bfc instruction for data sandboxing.
1627
6febeb74
AM
16282012-11-08 Alan Modra <amodra@gmail.com>
1629
1630 * po/POTFILES.in: Regenerate.
1631
0a6f1bf2
AM
16322012-11-05 Alan Modra <amodra@gmail.com>
1633
1634 * configure.ac: Apply 2012-09-10 change to config.in here.
1635 * configure: Regenerate.
1636
26a4e9cb
AM
16372012-11-05 Alan Modra <amodra@gmail.com>
1638
1639 * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
1640 (struct Opd_ent): Use "Address" rather than "Offset".
1641 (Output_data_got_powerpc::got_base_offset): Return Valtype.
1642 (Target_powerpc::got_section): Make public.
1643 (Target_powerpc::scan_relocs): Move code setting symbols..
1644 (Powerpc_relobj::do_scan_relocs): ..to here, new function.
1645 Create _SDA_BASE_ only when referenced.
1646
cc928013
RM
16472012-11-02 Roland McGrath <mcgrathr@google.com>
1648
1649 * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
1650 from last change.
1651
50ed5eb1
RM
16522012-11-01 Roland McGrath <mcgrathr@google.com>
1653
62fe925a
RM
1654 * target.h (Sized_target::relocate_relocs): Use Elf_Off
1655 for offset_in_output_section parameter.
1656 (Sized_target::relocate_special_relocatable): Likewise.
1657 * arm.cc (Target_arm::relocate_relocs): Likewise.
1658 (Target_arm::relocate_special_relocatable): Likewise.
1659 * i386.cc (Target_i386::relocate_relocs): Likewise.
1660 * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
1661 * sparc.cc (Target_sparc::relocate_relocs): Likewise.
1662 * target-reloc.h (relocate_relocs): Likewise.
1663 * testsuite/testfile.cc (Target_test): Likewise.
1664 * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
1665 * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
1666
1667 * system.h: Move inclusion of <clocale> to after <libintl.h> in
1668 [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
1669
1670 * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
1671 parameter, which is unused in the [!F_SETFD] case.
1672
50ed5eb1
RM
1673 * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
1674 SYMNDX to off_t before comparing it to this->data_size().
1675 * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
1676 * incremental.cc (Output_section_incremental_inputs::do_write):
1677 Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
1678
2cadc0bf
RM
1679 * nacl.cc: Include "libiberty.h" for vasprintf declaration.
1680
3bfcb652
NC
16812012-10-30 Steve McIntyre <steve.mcintyre@linaro.org>
1682
1683 * gold.cc (Target_arm::do_adjust_elf_header): Add the
1684 hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
1685 in EABI_VER5.
1686
c1a8d56e
CC
16872012-10-29 Cary Coutant <ccoutant@google.com>
1688
1689 * dwp.cc (usage): Add file and exit status parameters;
1690 add --help and --version options.
1691 (print_version): New function.
1692 (main): Add --help and --version options.
1693
b2490a7b
L
16942012-10-25 H.J. Lu <hongjiu.lu@intel.com>
1695
1696 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
1697 final_layout_sequence.txt.
1698 * testsuite/Makefile.in: Regenerated.
1699
aa543512
L
17002012-10-25 H.J. Lu <hongjiu.lu@intel.com>
1701
1702 * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
1703 COMPILE generated by automake.
1704 (LINK1): Likewise.
1705 (CXXCOMPILE1): Likewise.
1706 (CXXLINK1): Likewise.
1707 (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
1708 (LINK): Likewise.
1709 (CXXCOMPILE): Likewise.
1710 (CXXLINK): Likewise.
1711 * testsuite/Makefile.in: Regenerated.
1712
d361fafb
L
17132012-10-25 H.J. Lu <hongjiu.lu@intel.com>
1714
1715 * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
1716 on bad fwrite return.
1717
598c7410
L
17182012-10-25 H.J. Lu <hongjiu.lu@intel.com>
1719
1720 * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
1721 on val.
1722
35c813e2
CC
17232012-10-23 Cary Coutant <ccoutant@google.com>
1724
1725 * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
1726 * testsuite/Makefile.in: Regenerate.
1727 * testsuite/dwp_test.h: New source file.
1728 * testsuite/dwp_test_1.cc: New source file.
1729 * testsuite/dwp_test_1.s: New source file.
1730 * testsuite/dwp_test_1.sh: New source file.
1731 * testsuite/dwp_test_1b.cc: New source file.
1732 * testsuite/dwp_test_1b.s: New source file.
1733 * testsuite/dwp_test_2.cc: New source file.
1734 * testsuite/dwp_test_2.s: New source file.
1735 * testsuite/dwp_test_2.sh: New source file.
1736 * testsuite/dwp_test_main.cc: New source file.
1737 * testsuite/dwp_test_main.s: New source file.
1738
77429909
CC
17392012-10-23 Cary Coutant <ccoutant@google.com>
1740
1741 * dwp.h: New header file.
1742 * dwp.cc: New source file.
1743 * gold.h: Move shared declarations to system.h.
1744 * system.h: New header file.
1745 * Makefile.am: Add dwp.
1746 * Makefile.in: Regenerate.
1747
ed5d6712
CC
17482012-10-23 Cary Coutant <ccoutant@google.com>
1749
1750 * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
1751 Dwarf_info_reader::read_from_pointer.
1752 (Dwarf_pubnames_table::read_header): Likewise.
1753 (Dwarf_pubnames_table::next_name): Likewise.
1754 (Dwarf_die::read_attributes): Likewise.
1755 (Dwarf_die::skip_attributes): Likewise.
1756 (Dwarf_info_reader::read_from_pointer): New function template.
1757 * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
1758 (Dwarf_pubnames_table): Likewise.
1759 (Dwarf_info_reader::read_from_pointer): New function template.
1760 * gdb-index.cc (Gdb_index_info_reader): Adjust call to
1761 Dwarf_pubnames_table ctor.
1762
8787852d
CC
17632012-10-23 Cary Coutant <ccoutant@google.com>
1764
1765 * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
1766 abbrev_shndx.
1767 * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
1768 abbrev_shndx_.
1769 (Dwarf_info_reader::set_abbrev_shndx): New method.
1770 (Dwarf_info_reader::abbrev_shndx_): New data member.
1771
9fc236f3
CC
17722012-10-23 Cary Coutant <ccoutant@google.com>
1773
1774 * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
1775 from object, not parameters.
1776 (Dwarf_info_reader::parse): Likewise.
1777 * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
1778 (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
1779 (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
1780 methods.
1781
effe8365
CC
17822012-10-23 Cary Coutant <ccoutant@google.com>
1783
1784 * fileread.cc (Input_file::Input_file): New constructor.
1785 * fileread.h (class Input_file): Add new constructor.
1786
1698990d
AM
17872012-10-18 Alan Modra <amodra@gmail.com>
1788
1789 PR gold/14727
1790 * object.cc (Relobj::is_section_name_included): Also match
1791 .sdata personality section.
1792
168a4726
AM
17932012-10-18 Alan Modra <amodra@gmail.com>
1794
1795 * target-reloc.h (class Default_comdat_behavior): New, package up..
1796 (get_comdat_behaviour): ..this.
1797 (relocate_section): Add Relocate_comdat_behavior template arg,
1798 adjust code to suit.
1799 * arm.cc (Target_arm::relocate_section): Adjust to suit.
1800 (Target_arm::scan_reloc_section): Likewise.
1801 * i386.cc (Target_i386::relocate_section): Likewise.
1802 * sparc.cc (Target_sparc::relocate_section): Likewise.
1803 * tilegx.cc (Target_tilegx::relocate_section): Likewise.
1804 * x86_64.cc (Target_x86_64::relocate_section): Likewise.
1805 * powerpc.cc (class Relocate_comdat_behavior): New.
1806 (Target_powerpc::relocate_section): Don't zap opd relocs. Supply
1807 gold::relocate_section with new template arg.
1808
acc276d8
AM
18092012-10-18 Alan Modra <amodra@gmail.com>
1810
1811 * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
1812 dynamic relocs for GOT_TPREL got entries, without symbol if
1813 resolving locally.
1814 (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
1815 (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
1816 (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
1817
e10f9870
AM
18182012-10-17 Alan Modra <amodra@gmail.com>
1819
1820 PR gold/14726
1821 * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
1822
ae034989
ST
18232012-10-16 Sriraman Tallam <tmsriram@google.com>
1824
1825 * layout.cc (Layout::include_section): Keep sections marked
1826 SHF_EXCLUDE when doing relocatable links.
1827
f3a0ed29
AM
18282012-10-16 Alan Modra <amodra@gmail.com>
1829
1830 * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
1831 (Target_powerpc::do_finalize_sections): Call it.
1832 (Output_data_save_res): New class and supporting functions.
1833 (Target_powerpc::symval_for_branch): Only look up .opd entry for
1834 normal symbols defined in object files.
1835
c6de8ed4
AM
18362012-10-12 Alan Modra <amodra@gmail.com>
1837
1838 * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
1839 (struct Opd_ent): Make "discard" a bit field. Add "gc_mark".
1840 (Target_powerpc::do_gc_mark_symbol): Delay marking function code
1841 section if scan_opd_relocs not yet called.
1842 (Target_powerpc::gc_process_relocs): Call process_gc_mark.
1843
03e25981
AM
18442012-10-12 Alan Modra <amodra@gmail.com>
1845
1846 * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
1847 add_local_ifunc_entry): Revert last change.
1848 (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
1849
c9824451
AM
18502012-10-05 Alan Modra <amodra@gmail.com>
1851
1852 * powerpc.cc (Target_powerpc::do_plt_address_for_local,
1853 do_plt_address_for_global): New functions.
1854 (Output_data_got_powerpc::do_write): Don't segfault when linking
1855 statically.
1856 (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
1857 add_local_ifunc_entry): Return true on adding entry..
1858 (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
1859 glink->add_entry call. Remove unused symtab param. Adjust calls.
1860 (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
1861 (Target_powerpc::make_iplt_section): Remove symtab param. Don't
1862 set up symbols here.
1863 (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
1864 syms here. Do so even when no .iplt. Don't segfault when linking
1865 statically.
1866 (Output_data_glink::add_entry, find_entry): Rearrange params. Add
1867 new variants without reloc param.
1868 (Glink_sym_ent::Glink_sym_ent): Likewise.
1869 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
1870 reloc when refs will resolve to plt call stub.
1871 (Target_powerpc::Scan::local): Correct ifunc handling. Allow
1872 R_PPC_PLTREL24 to resolve locally.
1873 (Target_powerpc::Scan::global): Correct ifunc handling.
1874 (Target_powerpc::Relocate::relocate): Correct local sym glink
1875 lookup. Don't destroy "value" when we have a plt call stub,
1876 and when checking plt call validity.
1877 (Target_powerpc::do_dynsym_value): Simplify.
1878
19fec8c1
AM
18792012-10-05 Alan Modra <amodra@gmail.com>
1880
1881 * i386.cc (Output_data_plt_i386::address_for_global,
1882 address_for_local): Add plt offset to returned value. Adjust uses.
1883 * sparc.cc (Output_data_plt_sparc::address_for_global,
1884 address_for_local): Likewise.
1885 * tilegx.cc (Output_data_plt_tilegx::address_for_global,
1886 address_for_local): Likewise.
1887 * x86_64.cc (Output_data_plt_x86_64::address_for_global,
1888 address_for_local): Likewise.
1889 * target.h (Target::plt_address_for_global, plt_address_for_local):
1890 Update comment.
1891 * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
1892 (Output_data_got::Got_entry::write): Nor here.
1893 * output.h: Comment fix.
1894
e867b647
WL
18952012-10-02 Jiong Wang <jiwang@tilera.com>
1896
1897 * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
1898 global_offset_table_ value for larget got.
1899 (Target_tilegx::Relocate::relocate): Handle adjusted got value.
1900
e5d5f5ed
AM
19012012-09-29 Alan Modra <amodra@gmail.com>
1902
1903 * powerpc.cc (Target_powerpc::iplt_): New output section.
1904 (Target_powerpc::iplt_section, make_iplt_section,
1905 reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
1906 (Target_powerpc::make_plt_entry): Handle ifunc syms.
1907 Target_powerpc::plt_entry_count): Count iplt entries too.
1908 (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
1909 reloc section in constructor. New params.
1910 (Target_powerpc::make_plt_section): Create reloc section here instead.
1911 (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
1912 functions.
1913 (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
1914 (Output_data_glink::add_entry, find_entry): New functions to
1915 deal with local syms.
1916 (Glink_sym_ent): Add support for local syms.
1917 (Output_data_glink::do_write): Handle ifunc plt entries.
1918 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
1919 (Target_powerpc::Scan::local, global): Handle ifunc syms.
1920 (Target_powerpc::Relocate::relocate): Likewise.
1921 (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
1922
ec4dbad3
AM
19232012-09-25 Alan Modra <amodra@gmail.com>
1924
1925 * object.h (Sized_relobj_file::adjust_local_symbol,
1926 do_adjust_local_symbol): New functions.
1927 * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
1928 * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
1929 (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
1930 and irregular opd entry spacing.
1931 (Powerpc_relobj::do_read_relocs): Add opd size checks.
1932 (Global_symbol_visitor_opd): New functor.
1933 (Target_powerpc::do_finalize_sections): Omit global symbols defined
1934 on deleted opd entries.
1935
5c0b3823
WL
19362012-09-15 Jiong Wang <jiwang@tilera.com>
1937
1938 * tilegx.cc: New file.
1939 * Makefile.am (TARGETSOURCES): Add tilegx.cc
1940 (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
1941 * configure.tgt: Add entries for tilegx*.
1942 * configure.ac: Likewise.
1943 * Makefile.in: Rebuild.
1944 * configure: Likewise.
1945 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
1946 tilegx.
1947
bfdfa4cd
AM
19482012-09-13 Alan Modra <amodra@gmail.com>
1949
1950 * target-reloc.h (scan_relocs): Call scan.local for relocs
1951 against symbols in discarded sections. Pass is_discarded
1952 param.
1953 * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
1954 Add is_discarded param.
1955 * powerpc (Target_powerpc::Scan::local): Likewise. Use
1956 is_discarded to flag opd entry as discarded. Don't emit dyn
1957 relocs on such entries.
1958 (Target_powerpc::Scan::global): Similarly detect and handle
1959 such opd entries.
1960 (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
1961 opd_ent_. Update all uses.
1962 (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
1963 (Target_powerpc::relocate_section): Zero out discarded opd
1964 entry relocs.
1965
d77a0555
ILT
19662012-09-12 Ian Lance Taylor <iant@google.com>
1967
1968 PR gold/14570
1969 * output.cc: Rename Output_data_got template parameter from size
1970 to got_size for all functions. Compile all variants of
1971 Output_data_got.
1972 (Output_data_got::Got_entry::write): Correct use of size for
1973 symbol value. Use local_is_tls rather than casting to
1974 Sized_relobj_file.
1975 * object.h (class Object): Add local_is_tls and do_local_is_tls.
1976 (class Sized_relobj_file): Add do_local_is_tls.
1977 * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
1978
815a1205
AM
19792012-09-11 Alan Modra <amodra@gmail.com>
1980
1981 PR gold/14566
1982 * layout.cc (Layout::set_segment_offsets): When using
1983 common-page-size alignment, ensure we are on a new max-page-size
1984 page.
1985 * output.cc (Output_segment::set_section_addresses): Use
1986 abi_pagesize, not common_pagesize for relro boundary.
1987 (Output_segment::set_offset): Likewise.
1988
bd73a62d
AM
19892012-09-11 Alan Modra <amodra@gmail.com>
1990
1991 * output.h (Output_data_got::add_global_tls, add_local_tls,
1992 add_local_tls_pair): New functions.
1993 (Output_data_got::add_local_pair_with_rel): Remove second
1994 reloc param. Expand comment.
1995 (Output_data_got::Got_entry): Rename use_plt_offset_ to
1996 use_plt_or_tls_offset_, similarly for constructor param.
1997 (Output_data_got::Got_entry::write): Add got_index param.
1998 * output.cc (Output_data_got::add_global_tls, add_local_tls,
1999 add_local_tls_pair): New functions.
2000 (Output_data_got::Got_entry::write): Handle tls symbols
2001 with use_plt_or_tls_offset_ set specially.
2002 (Output_data_got::add_local_pair_with_rel): Only one reloc.
2003 (Output_data_got::do_write): Replace iterator with index, pass
2004 index to entry write function.
2005 * target.h (Target::tls_offset_for_local, tls_offset_for_global,
2006 do_tls_offset_for_local, do_tls_offset_for_global): New functions.
2007 * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
2008 call.
2009 * i386.cc (Target_i386::Scan::local): Likewise.
2010 * sparc.cc (Target_sparc::Scan::local): Likewise.
2011 * x86_64.cc (Target_x86_64::Scan::local): Likewise.
2012 * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
2013 do_tls_offset_for_global): New functions.
2014 (Target_powerpc::Scan::local): Correct TLS relocations and got
2015 entry values.
2016 (Target_powerpc::Scan::global): Don't emit unnecessary
2017 dynamic relocations on TLS GOT entries.
2018
00716ab1
AM
20192012-09-10 Matthias Klose <doko@ubuntu.com>
2020
2021 * config.in: Disable sanity check for kfreebsd.
2022
c891b3f9
SA
20232012-09-10 Sterling Augustine <saugustine@google.com>
2024
2025 * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
2026 (Gdb_index::pubtypes_read): New parameter.
2027 (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
2028 to calls.
2029 * gdb-index.h (Gdb_index): New fields pubnames_object_ and
2030 pubtypes_object_.
2031
e81fea4d
AM
20322012-09-09 Alan Modra <amodra@gmail.com>
2033
2034 * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
2035 (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
2036 * gc.h (gc_process_relocs): Call target gc_add_reference.
2037 * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
2038 * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
2039 (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
2040 unnecessary cast.
2041 * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
2042 to cater for when we don't need code offset. Update use.
2043 (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
2044 (Powerpc_relobj::access_from_map, add_reference, opd_valid,
2045 set_opd_valid): New functions.
2046 (Target_powerpc::do_gc_add_reference): New function.
2047 (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
2048 stashed refs.
2049 (Target_powerpc::do_gc_mark_symbol): New function.
2050
d2d60eef
CC
20512012-09-06 Cary Coutant <ccoutant@google.com>
2052
2053 * dwarf_reader.cc (Dwarf_die::read_attributes): Add
2054 DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
2055 (Dwarf_die::skip_attributes): Likewise.
2056 * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
2057 * testsuite/gdb_index_test.cc (inline_func_1): New function.
2058 (main): Call it.
2059 * testsuite/gdb_index_test_comm.sh: Check index for inline function.
2060
32ed4573
L
20612012-09-05 H.J. Lu <hongjiu.lu@intel.com>
2062
2063 * testsuite/script_test_3.t: Add .got.plt output section
2064 statement.
2065 * testsuite/script_test_4.t: Likewise.
2066
f4baf0d4
AM
20672012-09-05 Alan Modra <amodra@gmail.com>
2068
2069 * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
2070 update all uses and lose "enum" when using type.
2071
864a1b56
AM
20722012-09-05 Alan Modra <amodra@gmail.com>
2073
2074 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
2075 * configure: Regenerate.
2076 * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
2077 (plugin_final_layout.stdout): Likewise.
2078 (memory_test): Set page sizes to 0x1000.
2079 * testsuite/Makefile.in: Regenerate.
2080 * testsuite/discard_locals_test.sh: Add FIXME comment.
2081 * testsuite/justsyms_exec.c: Disable function test for powerpc64.
2082 * testsuite/pr14265.t: Add .got output section statement.
2083 * testsuite/script_test_2.t: Likewise.
2084 * testsuite/script_test_3.t: Likewise.
2085 * testsuite/script_test_4.t: Likewise.
2086 * testsuite/script_test_5.t: Likewise.
2087 * testsuite/script_test_6.t: Likewise.
2088 * testsuite/script_test_7.t: Likewise.
2089 * testsuite/script_test_9.t: Likewise.
2090
3ea0a085
AM
20912012-09-05 Alan Modra <amodra@gmail.com>
2092
2093 * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
2094 (Powerpc_relocate_functions::Status): New typedef.
2095 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2096 (Target_powerpc::Scan::local): Handle REL64.
2097 (Target_powerpc::Scan::global): Likewise, and dynamic relocs
2098 for REL32 and REL64.
2099 (Target_powerpc::symval_for_branch): New function, extracted from..
2100 (Target_powerpc::Relocate::relocate): ..here. Correct plt call
2101 checks. Report overflow errors.
2102
7404fe1b
AM
21032012-09-05 Alan Modra <amodra@gmail.com>
2104
2105 * object.h (Sized_relobj_file::emit_relocs): Delete.
2106 (Sized_relobj_file::emit_relocs_reltype): Delete.
2107 * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
2108 relocate_relocs for --emit-relocs.
2109 (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
2110 * output.h: Update comment.
2111 (Output_segment::first_section): New function.
2112 (Output_segment::first_section_load_address): Use first_section.
2113 * output.cc (Output_segment::first_section): New function extracted..
2114 (Output_segment::first_section_load_address): ..from here. Delete.
2115 * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
2116 * target.h (Sized_target::relocate_for_relocatable): Likewise.
2117 * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
2118 adjust call to target.h function.
2119 * i386.cc (Target_i386): Likewise.
2120 * sparc.cc (Target_sparc): Likewise.
2121 * x86_64.cc (Target_x86_64): Likewise.
2122 * powerpc.cc (Target_powerpc): Likewise.
2123 (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS. Ensure
2124 first tls section has section symbol for optimised local dynamic
2125 output relocs.
2126 (Target_powerpc::Relocate::relocate): Correct local dynamic value.
2127 (Target_powerpc::relocate_relocs): Adjust relocs emitted for
2128 optimised tls code.
2129 * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
2130 Rename to relocate_relocs. Update error message.
2131
957564c9
AS
21322012-09-04 Andreas Schwab <schwab@linux-m68k.org>
2133
2134 * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
2135 --just-symbols.
2136
dd93cd0a
AM
21372012-08-31 Alan Modra <amodra@gmail.com>
2138
2139 * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
2140 (Powerpc_relobj::toc_base_offset): New stub function.
2141 (Target_powerpc): Add tp_offset, dtp_offset. Rename
2142 got_mod_index_offset to tlsld_got_offset. Update all refs.
2143 (Target_powerpc::Relocate::enum skip_tls): New.
2144 (Target_powerpc::call_tls_get_addr_): New var.
2145 (Target_powerpc::is_branch_reloc): Move to file scope.
2146 (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
2147 (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
2148 New functions.
2149 (Target_powerpc::enum Got_type): Delete old values, add new ones.
2150 (powerpc_info): Correct common_pagesize for ppc64.
2151 (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
2152 (Powerpc_relocate_functions): Add overflow check enums and functions.
2153 Add non-shift version of rela, rela_ua. Delete all rel public
2154 functions. Delete addr16_lo. Add addr64, addr64_u, addr32,
2155 addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
2156 addr16_ha3, addr14 functions.
2157 (Output_data_got_powerpc::add_constant_pair): New function.
2158 (Output_data_got_powerpc::got_base_offset): Likewise.
2159 (Output_data_got_powerpc::do_write): Correct 64-bit got header.
2160 (instruction constants): Sort, add some more.
2161 (Output_data_glink::do_write): Add and use Address typedef. Use
2162 object->toc_base_offset() stub for 64-bit.
2163 (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
2164 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2165 (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
2166 for R_PPC64_TOC. Handle more relocs. Generate got entries for TLS.
2167 Always treat .opd relocs as against locally defined symbol.
2168 Correct condition for RELATIVE relocs.
2169 (Target_powerpc::do_finalize_sections): Test for NULL sections.
2170 (Target_powerpc::Relocate::relocate): Use plt call stub as value
2171 for 32-bit syms with a plt entry. Correct ppc64 toc base
2172 calculations. Handle TLS relocs, and more. Add overflow
2173 checking and adjust for Powerpc_relocate_functions changes.
2174 (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
2175 Reinstate --emit-relocs code with FIXME.
2176
a1373b60
AM
21772012-08-30 Alan Modra <amodra@gmail.com>
2178
2179 * layout.cc (Layout::set_segment_offsets): Set p_align to
2180 abi_pagesize, not common_pagesize.
2181 (Layout::relaxation_loop_body): Similarly use abi_pagesize
2182 to determine whether file header can go in segment.
2183
703d02da
AM
21842012-08-30 Alan Modra <amodra@gmail.com>
2185
2186 * output.h (Output_reloc::Output_reloc <output section>): Add
2187 is_relative param. Adjust calls.
2188 (Output_reloc::add_output_section_relative): New functions.
2189 * output.cc (Output_reloc::Output_reloc <output section>): Handle
2190 is_relative.
2191 (Output_reloc::symbol_value): Handle SECTION_CODE.
2192
16164a6b
ST
21932012-08-24 Sriraman Tallam <tmsriram@google.com>
2194
2195 * gold.cc (queue_middle_tasks): Call layout again when unique
2196 segments for sections is desired.
2197 * layout.cc (Layout::Layout): Initialize new members.
2198 (Layout::get_output_section_flags): New function.
2199 (Layout::choose_output_section): Call get_output_section_flags.
2200 (Layout::layout): Make output section for mapping to a unique segment.
2201 (Layout::insert_section_segment_map): New function.
2202 (Layout::attach_allocated_section_to_segment): Make unique segment for
703d02da 2203 output sections marked so.
16164a6b
ST
2204 (Layout::segment_precedes): Check for unique segments when sorting.
2205 * layout.h (Layout::Unique_segment_info): New struct.
2206 (Layout::Section_segment_map): New typedef.
2207 (Layout::insert_section_segment_map): New function.
2208 (Layout::get_output_section_flags): New function.
2209 (Layout::is_unique_segment_for_sections_specified): New function.
2210 (Layout::set_unique_segment_for_sections_specified): New function.
2211 (Layout::unique_segment_for_sections_specified_): New member.
2212 (Layout::section_segment_map_): New member.
2213 * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
2214 Rename is_gc_pass_one to is_pass_one.
2215 Rename is_gc_pass_two to is_pass_two.
2216 Rename is_gc_or_icf to is_two_pass.
2217 Check for which pass based on whether symbols data is present.
2218 Make it two pass when unique segments for sections is desired.
2219 * output.cc (Output_section::Output_section): Initialize new
2220 members.
2221 * output.h (Output_section::is_unique_segment): New function.
2222 (Output_section::set_is_unique_segment): New function.
2223 (Output_section::is_unique_segment_): New member.
2224 (Output_section::extra_segment_flags): New function.
2225 (Output_section::set_extra_segment_flags): New function.
2226 (Output_section::extra_segment_flags_): New member.
2227 (Output_section::segment_alignment): New function.
2228 (Output_section::set_segment_alignment): New function.
2229 (Output_section::segment_alignment_): New member.
2230 (Output_segment::Output_segment): Initialize is_unique_segment_.
2231 (Output_segment::is_unique_segment): New function.
2232 (Output_segment::set_is_unique_segment): New function.
2233 (Output_segment::is_unique_segment_): New member.
2234 * plugin.cc (allow_unique_segment_for_sections): New function.
2235 (unique_segment_for_sections): New function.
2236 (Plugin::load): Add new functions to transfer vector.
2237 * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
2238 * Makefile.in: Regenerate.
2239 * testsuite/plugin_final_layout.sh: Check if unique segment
2240 functionality works.
2241 * testsuite/plugin_section_order.c (onload): Check if new interfaces
2242 are available.
2243 (allow_unique_segment_for_sections): New global.
2244 (unique_segment_for_sections): New global.
2245 (claim_file_hook): Call allow_unique_segment_for_sections.
2246 (all_symbols_read_hook): Call unique_segment_for_sections.
16164a6b 2247
1e2bee4f
CC
22482012-08-22 Cary Coutant <ccoutant@google.com>
2249
2250 * layout.cc (Layout::include_section): Don't assert on GROUP
2251 sections with --emit-relocs.
2252
1d5dfe78
CC
22532012-08-21 Cary Coutant <ccoutant@google.com>
2254
2255 * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
2256 if --export-dynamic-symbol names an undef symbol.
2257
c9269dff
AM
22582012-08-18 Alan Modra <amodra@gmail.com>
2259
2260 * powerpc.cc: Formatting and white space.
2261 (Powerpc_relobj): Rename got2_section_ to special_.
2262 Add opd_ent_shndx_ and opd_ent_off_ vectors.
2263 (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
2264 scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
2265 (Target_powerpc): Add Address typedef and invalid_address. Use
2266 throughout.
2267 (Target_powerpc::is_branch_reloc): New function.
2268 (Powerpc_relocate_functions): Add Address typedef, use throughout.
2269 (Powerpc_relocate_functions:rela, rela_ua): Correct type used
2270 for dst_mask, value and addend.
2271 (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
2272 (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
2273 (Output_data_glink::do_write): Correct toc base. Don't try to use
2274 uint16_t for 24-bit offset. Use get_output_section_offset and
2275 check return.
2276 (Target_powerpc::Scan::local): Handle more relocs.
2277 (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
2278 (Target_powerpc::Relocate::relocate): Correct toc base calculation.
2279 Plug in toc restoring insn after plt calls. Translate branches
2280 to function descriptor symbols to corresponding entry point.
2281 (Target_powerpc::relocate_for_relocatable): Check return from
2282 get_output_section_offset.
2283 * symtab.h: Comment typo.
2284
b1759dce
ILT
22852012-08-14 Ian Lance Taylor <iant@google.com>
2286
2287 * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
2288 unsupported_relocal_local to call unsupported_reloc_global.
2289
b9b2ae8b
NC
22902012-08-14 Nick Clifton <nickc@redhat.com>
2291
2292 PR ld/14265
2293 * script-sections.cc (Sections_element::output_section_name): Add
2294 keep return parameter.
2295 (Output_section_element::match_name): Add keep return parameter.
2296 Return the value of the keep_ member.
2297 * script-sections.h (class Output_section): Update
2298 output_section_name prototype.
2299 * layout.cc (Layout::keep_input_section): New public member
2300 function.
2301 (Layout::choose_output_section): Pass keep parameter to
2302 output_section_name.
2303 * layout.h (class Layout): Add keep_input_section.
2304 * object.cc (Sized_relobj_file::do_layout): Check for kept input
2305 sections.
2306 * testsuite/Makefile.am: Add a test.
2307 * testsuite/Makefile.in: Regenerate.
2308 * testsuite/pr14265.c: Source file for the test.
2309 * testsuite/pr14265.t: Linker script for the test.
2310 * testsuite/pr14265.sh: Shell script for the test.
2311
921b5322
AM
23122012-08-14 Alan Modra <amodra@gmail.com>
2313
2314 * target.h (Target::output_section_name): New function.
2315 (Target::do_output_section_name): New function.
2316 * layout.cc (Layout::choose_output_section): Call the above.
2317 * powerpc.cc (Target_powerpc::do_output_section_name): New function.
2318
6ce78956
AM
23192012-08-14 Alan Modra <amodra@gmail.com>
2320
2321 * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
2322 (Output_data_got_powerpc::do_write): Don't rely on base class lookup
2323 for replace_constant call.
2324 (Output_data_plt_powerpc::do_print_to_mapfile): New function.
2325 (Output_data_glink::do_print_to_mapfile): New function.
2326 (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
2327 (Target_powerpc::Relocate::relocate): Likewise.
2328
d1a8cabd
AM
23292012-08-14 Alan Modra <amodra@gmail.com>
2330
2331 * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
2332 (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
2333 (Output_data_glink::add_entry,find_entry): Remove shndx param.
2334 (class Glink_sym_ent): Rename from struct Glink_sym_ent. Remove
2335 all references to shndx_. Handle special case for R_PPC_PLTREL24
2336 here.
2337 (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
2338 (Output_data_glink::do_write): Retrieve got2_shdnx from object.
2339 (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
2340 here.
2341 (Target_powerpc::Scan::global): Nor on make_plt_entry call.
2342 (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
2343
d83ce4e3
AM
23442012-08-12 Alan Modra <amodra@gmail.com>
2345
2346 * powerpc.cc: Whitespace fixes. Wrap overly long lines.
2347 (glink insn constants): Use uint32_t.
2348 (Output_data_glink::add_entry): Use insert, not [] operator.
2349
cf43a2fe
AM
23502012-08-11 Alan Modra <amodra@gmail.com>
2351
2352 * object.h (Sized_relobj_file::find_shdr): New function.
2353 (Sized_relobj_file::find_special_sections): New function.
2354 * object.cc (Sized_relobj_file::find_shdr): New function.
2355 (Sized_relobj_file::find_eh_frame): Use find_shdr.
2356 (Sized_relobj_file::find_special_sections): New function, split out..
2357 (Sized_relobj_file::do_read_symbols): ..from here.
2358 * output.h (Output_data_got::replace_constant): New function.
2359 (Output_data_got::num_entries): New function.
2360 (Output_data_got::last_got_offset,set_got_size): Use num_entries.
2361 (Output_data_got::got_offset): Protected rather than private.
2362 (Output_data_got::replace_got_entry): New function.
2363 * output.cc (Output_data_got::replace_got_entry): New function.
2364 * powerpc.cc (class Powerpc_relobj): New.
2365 (class Powerpc_relocate_functions): Delete all psymval variants or
2366 convert to value,addend type. Delete pcrela, pcrela_unaligned.
2367 Implement _ha functions using corresponding _hi function.
2368 (Powerpc_relobj::find_special_sections): New function.
2369 (Target_powerpc::do_make_elf_object): New function.
2370 (class Output_data_got_powerpc): New.
2371 (class Output_data_glink): New.
2372 (class Powerpc_scan_relocatable_reloc): New.
2373 Many more changes througout file.
2374
3c892704
NC
23752012-08-09 Nick Clifton <nickc@redhat.com>
2376
2377 * po/vi.po: Updated Vietnamese translation.
2378
82435b3b
ILT
23792012-08-07 Ian Lance Taylor <iant@google.com>
2380
2381 * layout.cc (Layout::add_target_dynamic_tags): If
2382 dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
2383 plt_rel.
2384
a6dc81d2
NC
23852012-07-30 Nick Clifton <nickc@redhat.com>
2386
2387 * po/gold.pot: Updated template.
2388 * po/es.po: Updated Spanish translation.
2389
f1415016
CC
23902012-07-18 Cary Coutant <ccoutant@google.com>
2391
2392 PR gold/14344
2393 * configure.ac: Add check for -gpubnames support.
2394 * configure: Regenerate.
2395 * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
2396 support; force -gno-pubnames.
2397 (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
2398 support.
2399 (gdb_index_test_4): New test.
2400 * testsuite/Makefile.in: Regenerate.
2401 * testsuite/gdb_index_test_1.sh: Refactor code into common file.
2402 * testsuite/gdb_index_test_2.sh: Likewise.
2403 * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
2404 * testsuite/gdb_index_test_4.sh: New script.
2405 * testsuite/gdb_index_test_comm.sh: New script with common code;
2406 don't look for space after colon.
2407
b7fd7c37
ST
24082012-07-16 Sriraman Tallam <tmsriram@google.com>
2409
2410 * gold.cc (queue_middle_tasks): Update function order only after
2411 deferred objects due to plugins are processed.
2412
1f3212db
ILT
24132012-07-11 Ian Lance Taylor <iant@google.com>
2414
2415 * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
2416 (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
2417 (Target_arm::scan_reloc_for_stub): Likewise.
2418 * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
2419 * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
2420 * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
2421 * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
2422 * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
2423
81c82a68
ILT
24242012-07-10 Dodji Seketeli <dodji@redhat.com>
2425 Ian Lance Taylor <iant@google.com>
2426
2427 PR gold/14309
2428 * configure.ac: Test whether std::tr1::hash<off_t> works.
2429 * gold.h: Add a specialization for std::tr1::hash<off_t> if
2430 needed.
2431 * output.h (class Output_fill): Add virtual destructor.
2432 * configure, config.in: Rebuild.
2433
eabc84f4
RM
24342012-06-22 Roland McGrath <mcgrathr@google.com>
2435
2436 * layout.cc (finalize): Define __ehdr_start symbol if applicable.
2437
370e30b6
RÁE
24382012-06-12 Rafael Ávila de Espíndola <respindola@mozilla.com>
2439
2440 * plugin.cc (Plugin::load): Handle position independent executables.
2441
fb1b895d
CC
24422012-06-06 Cary Coutant <ccoutant@google.com>
2443
2444 * layout.cc (gdb_sections): Remove ".debug_" prefixes,
2445 add .debug_macro.
2446 (lines_only_debug_sections): Likewise.
2447 (gdb_fast_lookup_sections): New static array.
2448 (is_gdb_debug_section): Rename formal parameter.
2449 (is_lines_only_debug_section): Likewise.
2450 (is_gdb_fast_lookup_section): New function.
2451 (Layout::include_section): Check for ".zdebug_" prefix; pass
2452 section name suffix to is_gdb_debug_section, et al.; check for
2453 fast-lookup sections when building .gdb_index.
2454 * options.h (--strip-debug-gdb): Update GDB version number.
2455
7c0640fa
CC
24562012-06-06 Cary Coutant <ccoutant@google.com>
2457
2458 * configure.ac: Add check for fallocate.
2459 * configure: Regenerate.
2460 * config.in: Regenerate.
2461
2462 * options.h (class General_options): Add --mmap-output-file and
2463 --posix-fallocate options.
2464 * output.cc: (posix_fallocate): Remove; replace with...
2465 (gold_fallocate): New function.
2466 (Output_file::map_no_anonymous): Call gold_fallocate.
2467 (Output_file::map): Check --mmap-output-file option.
2468
2a49eb69
DK
24692012-06-05 Jing Yu <jingyu@google.com>
2470
2471 * gold.h (textdomain): Add do {} to empty while(0).
2472 (bindtextdomain): Likewise.
2473
fad072ac
CC
24742012-06-04 Cary Coutant <ccoutant@google.com>
2475
2476 * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
2477 has_dynsym_index.
2478
8cc69fb6
ST
24792012-05-25 Sriraman Tallam <tmsriram@google.com>
2480
2481 * symtab.cc (Symbol_table::define_special_symbol):
2482 Initialize *poldsym to prevent uninitialized variable errors.
2483
1be75daa
CC
24842012-05-23 Cary Coutant <ccoutant@google.com>
2485
2486 * layout.cc (Layout::section_name_mapping): Add rules to handle
2487 exact match on .data.rel.ro.local or .data.rel.ro.
2488 (Layout::output_section_name): Check for exact matches.
2489
9b689de0
CC
24902012-05-23 Cary Coutant <ccoutant@google.com>
2491
2492 * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
2493 more carefully.
2494
b24fdbf5
CC
24952012-05-22 Cary Coutant <ccoutant@google.com>
2496
2497 * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
2498 object before exporting symbol.
2499
e550e1a2
L
25002012-05-21 H.J. Lu <hongjiu.lu@intel.com>
2501
2502 * testsuite/tls_test.cc: Include "config.h" first.
2503 * testsuite/tls_test_c.c: Likewise.
2504
df7b86aa
NC
25052012-05-17 Daniel Richard G. <skunk@iskunk.org>
2506 Nick Clifton <nickc@redhat.com>
2507
2508 PR 14072
2509 * configure.in: Add check that sysdep.h has been included before
2510 any system header files.
2511 * configure: Regenerate.
2512 * config.in: Regenerate.
2513
1007b503
CC
25142012-05-14 Cary Coutant <ccoutant@google.com>
2515
2516 * layout.cc (Layout::make_output_section): Mark .tdata section
2517 as RELRO.
2518 * testsuite/relro_test.cc: Add a TLS variable.
2519
fd885f3a
L
25202012-05-10 H.J. Lu <hongjiu.lu@intel.com>
2521
2522 PR gold/14091
2523 * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
2524 R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
2525 R_X86_64_64.
2526
80f5885c
CC
25272012-05-08 Cary Coutant <ccoutant@google.com>
2528
2529 * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
2530 (lines_only_debug_sections): Likewise.
2531
2e702c99
RM
25322012-05-02 Roland McGrath <mcgrathr@google.com>
2533
2534 * nacl.cc: New file.
2535 * nacl.h: New file.
2536 * Makefile.am (CCFILES, HFILES): Add them.
2537 * Makefile.in: Regenerate.
2538 * i386.cc (Output_data_plt_i386_nacl): New class.
2539 (Output_data_plt_i386_nacl_exec): New class.
2540 (Output_data_plt_i386_nacl_dyn): New class.
2541 (Target_i386_nacl): New class.
2542 (Target_selector_i386_nacl): New class.
2543 (target_selector_i386): Use it instead of Target_selector_i386.
2544 * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
2545 (Target_x86_64_nacl): New class.
2546 (Target_selector_x86_64_nacl): New class.
2547 (target_selector_x86_64, target_selector_x32): Use it instead of
2548 Target_selector_x86_64.
2549 * arm.cc (Output_data_plt_arm_nacl): New class.
2550 (Target_arm_nacl): New class.
2551 (Target_selector_arm_nacl): New class.
2552 (target_selector_arm, target_selector_armbe): Use it instead of
2553 Target_selector_arm.
2554
2555 * target-select.cc (select_target): Take new Input_file* and off_t
2556 arguments, pass them on to recognize method of selector.
2557 * object.cc (make_elf_sized_object): Update caller.
2558 * parameters.cc (parameters_force_valid_target): Likewise.
2559 * incremental.cc (make_sized_incremental_binary): Likewise.
2560 * target-select.h: Update decl.
2561 (Target_selector::recognize): Take new Input_file* argument,
2562 pass it on to do_recognize.
2563 (Target_selector::do_recognize): Take new Input_file* argument.
2564 * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
2565 * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
2566 * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
2567 * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
2568
2569 * target.h (Target::Target_info): New members isolate_execinstr
2570 and rosegment_gap.
2571 (Target::isolate_execinstr, Target::rosegment_gap): New methods.
2572 * arm.cc (Target_arm::arm_info): Update initializer.
2573 * i386.cc (Target_i386::i386_info): Likewise.
2574 * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
2575 * sparc.cc (Target_sparc::sparc_info): Likewise.
2576 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
2577 * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
2578 * layout.cc (Layout::attach_allocated_section_to_segment):
2579 Take new const Target* argument. If target->isolate_execinstr(), act
2580 like --rosegment.
2581 (Layout::find_first_load_seg): Take new const Target* argument;
2582 if target->isolate_execinstr(), reject PF_X segments.
2583 (Layout::relaxation_loop_body): Update caller.
2584 (Layout::set_segment_offsets): If target->isolate_execinstr(),
2585 reset file offset to zero when we hit LOAD_SEG, and then do a second
2586 loop over the segments before LOAD_SEG to reassign offsets after
2587 addresses have been determined. Handle target->rosegment_gap().
2588 (Layout::attach_section_to_segment): Take new const Target* argument;
2589 pass it to attach_allocated_section_to_segment.
2590 (Layout::make_output_section): Update caller.
2591 (Layout::attach_sections_to_segments): Take new const Target* argument;
2592 pass it to attach_section_to_segment.
2593 * gold.cc (queue_middle_tasks): Update caller.
2594 * layout.h (Layout): Update method decls with new arguments.
2595
2596 * arm.cc (Target_arm::Target_arm): Take optional argument for the
2597 Target_info pointer to use.
2598 (Target_arm::do_make_data_plt): New virtual method.
2599 (Target_arm::make_data_plt): New method that calls it.
2600 (Target_arm::make_plt_entry): Use it.
2601 (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
2602 for the section alignment.
2603 (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
2604 method.
2605 (Output_data_plt_arm::first_plt_entry_offset): Call it.
2606 (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
2607 method.
2608 (Output_data_plt_arm::get_plt_entry_size): Call it.
2609 (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
2610 (Output_data_plt_arm::fill_plt_entry): New method that calls it.
2611 (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
2612 method.
2613 (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
2614 (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
2615 method instead of sizeof(plt_entry).
2616 (Output_data_plt_arm::add_entry): Likewise.
2617 Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
2618 (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
2619 than static method.
2620 (Target_arm::plt_entry_size): Likewise.
2621 (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
2622 Move to ...
2623 (Output_data_plt_arm_standard): ... here, new class.
2624 (Output_data_plt_arm::do_write): Move guts of PLT filling to...
2625 (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
2626 (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
2627
2628 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
2629 Take additional argument for the PLT entry size.
2630 (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
2631 Use get_plt_entry_size method rather than plt_entry_size variable.
2632 (Output_data_plt_x86_64::reserve_slot): Likewise.
2633 (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
2634 (Output_data_plt_x86_64::add_entry): Likewise.
2635 (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
2636 (Output_data_plt_x86_64::address_for_global): Likewise.
2637 (Output_data_plt_x86_64::address_for_local): Likewise.
2638 (Output_data_plt_x86_64::set_final_data_size): Likewise.
2639 (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
2640 Make method non-static.
2641 (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
2642 method.
2643 (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
2644 (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
2645 (Output_data_plt_x86_64::add_eh_frame): New method to call it.
2646 (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
2647 virtual method.
2648 (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
2649 (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
2650 virtual method.
2651 (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
2652 (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
2653 virtual method.
2654 (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
2655 (Output_data_plt_x86_64::plt_entry_size)
2656 (Output_data_plt_x86_64::first_plt_entry)
2657 (Output_data_plt_x86_64::plt_entry)
2658 (Output_data_plt_x86_64::tlsdesc_plt_entry)
2659 (Output_data_plt_x86_64::plt_eh_frame_fde_size)
2660 (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
2661 (Output_data_plt_x86_64_standard): ... here, new class.
2662 (Target_x86_64::Target_x86_64): Take optional argument for the
2663 Target_info pointer to use.
2664 (Target_x86_64::do_make_data_plt): New virtual method.
2665 (Target_x86_64::make_data_plt): New method to call it.
2666 (Target_x86_64::init_got_plt_for_update): Use that.
2667 Call this->plt_->add_eh_frame method here.
2668 (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
2669 (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
2670 rather than static method.
2671 (Target_x86_64::plt_entry_size): Likewise.
2672 (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
2673 rather than plt_entry_size variable. Move guts of PLT filling to...
2674 (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
2675 (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
2676 (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
2677
2678 * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
2679 additional argument for the section alignment.
2680 Don't do add_eh_frame_for_plt here.
2681 (Output_data_plt_i386::first_plt_entry_offset): Make the method
2682 non-static. Use get_plt_entry_size method rather than plt_entry_size
2683 variable.
2684 (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
2685 method.
2686 (Output_data_plt_i386::get_plt_entry_size): Call it.
2687 (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
2688 (Output_data_plt_i386::add_eh_frame): New method to call it.
2689 (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
2690 method.
2691 (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
2692 (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
2693 method.
2694 (Output_data_plt_i386::fill_plt_entry): New method to call it.
2695 (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
2696 method instead of plt_entry_size.
2697 (Output_data_plt_i386::plt_entry_size)
2698 (Output_data_plt_i386::plt_eh_frame_fde_size)
2699 (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
2700 (Output_data_plt_i386_standard): ... here, new class.
2701 (Output_data_plt_i386_exec): New class.
2702 (Output_data_plt_i386::exec_first_plt_entry): Move to ...
2703 (Output_data_plt_i386_exec::first_plt_entry): ... here.
2704 (Output_data_plt_i386::exec_plt_entry): Move to ...
2705 (Output_data_plt_i386_exec::plt_entry): ... here.
2706 (Output_data_plt_i386_dyn): New class.
2707 (Output_data_plt_i386::first_plt_entry): Move to ...
2708 (Output_data_plt_i386_dyn::first_plt_entry): ... here.
2709 (Output_data_plt_i386::dyn_plt_entry): Move to ...
2710 (Output_data_plt_i386_dyn::plt_entry): ... here.
2711 (Target_i386::Target_i386): Take optional argument for the Target_info
2712 pointer to use.
2713 (Target_i386::do_make_data_plt): New virtual method.
2714 (Target_i386::make_data_plt): New method to call it.
2715 (Target_i386::make_plt_section): Use that.
2716 Call this->plt_->add_eh_frame method here.
2717 (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
2718 rather than plt_entry_size variable.
2719 (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
2720 (Output_data_plt_i386::address_for_local): Likewise.
2721 (Output_data_plt_i386::do_write): Likewise.
2722 Move guts of PLT filling to...
2723 (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
2724 (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
2725 (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
2726 (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
2727
b9b9f2ee
CC
27282012-05-01 Cary Coutant <ccoutant@google.com>
2729
2730 * dwarf_reader.cc (Dwarf_die::read_attributes)
2731 (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
2732 (Dwarf_die::uint_attribute): Remove DW_FORM_null.
2733 * reduced_debug_output.cc
2734 (Output_reduced_debug_info_section::get_die_end): Remove
2735 DW_FORM_GNU_ref_index. Add default case.
2736
57923f48
MW
27372012-04-26 Mark Wielaard <mjw@redhat.com>
2738
2739 * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
2740 * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
2741 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
2742 DW_AT_high_pc as offset from DW_AT_low_pc.
2743
2744 * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
2745 * testsuite/Makefile.in: Regenerate.
2746 * testsuite/gdb_index_test_3.c: New test source file.
2747 * testsuite/gdb_index_test_3.sh: New test source file.
2748
2c54b4f4
ILT
27492012-04-25 Ian Lance Taylor <iant@google.com>
2750
2751 * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
2752 pointer.
2753 (Stub_addend_reader::operator()): Declare Arm_relocate_functions
2754 as a class, not a struct.
2755 (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
2756 (Target_arm::apply_cortex_a8_workaround): Likewise.
2757 * gc.h: Declare Reloc_types as a struct, not a class.
2758 * object.h: Declare Symbols_data as a struct.
2759 * reloc.h: Declare Read_relocs_data as a struct.
2760 * target.h: Declare Relocate_info as a struct.
2761
a5a5f7a3
DM
27622012-04-24 David S. Miller <davem@davemloft.net>
2763
2764 * sparc.cc (Target_sparc::Relocate::relax_call): New function.
2765 (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
2766 and R_SPARC_WPLT30.
2767
f038d496
CC
27682012-04-24 Cary Coutant <ccoutant@google.com>
2769
2770 * incremental-dump.cc (find_input_containing_global): Replace
2771 magic number with symbolic constant.
2772 (dump_incremental_inputs): Update version number.
2773 * incremental.cc (Output_section_incremental_inputs): Update version
2774 number; import symbolic constants from Incremental_inputs_reader.
2775 (Incremental_inputs::create_data_sections): Align relocations
2776 section correctly for 64-bit targets.
2777 (Output_section_incremental_inputs::set_final_data_size): Use symbolic
2778 constants; add padding.
2779 (Output_section_incremental_inputs::write_header): Add assert for
2780 header_size.
2781 (Output_section_incremental_inputs::write_input_files): Add assert
2782 for input_entry_size.
2783 (Output_section_incremental_inputs::write_info_blocks): Add padding;
2784 add assert for object_info_size, input_section_entry_size,
2785 global_sym_entry_size.
2786 * incremental.h (Incremental_inputs_reader): Add symbolic constants
2787 for data structure sizes; use them.
2788 (Incremental_input_entry_reader): Import symbolic constants from
2789 Incremental_inputs_reader; use them.
2790
a4d85145
DM
27912012-04-23 David S. Miller <davem@davemloft.net>
2792
2793 * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
2794 and elf_flags_set_.
2795 (Target_sparc::Target_sparc): Initialize new fields.
2796 (Target_sparc::do_make_elf_object): New function.
2797 (Target_sparc::do_adjust_elf_header): New function.
2798
1d509098
CC
27992012-04-23 Cary Coutant <ccoutant@google.com>
2800
2801 * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
2802 CU range table of gdb index.
2803
7ebeff7f
DM
28042012-04-20 David S. Miller <davem@davemloft.net>
2805
2806 * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
2807 instead of false.
2808
13cf9988
DM
28092012-04-16 David S. Miller <davem@davemloft.net>
2810
2a1079e8
DM
2811 * sparc.cc (Target_sparc::got_address): New function.
2812 (Sparc_relocate_functions::gdop_hix22): New function.
2813 (Sparc_relocate_functions::gdop_lox10): New function.
2814 (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
2815 relocs.
2816 (Target_sparc::Scan::local): Likewise if the global symbol is not
2817 preemptible and is not IFUNC.
2818 (Target_sparc::Relocate::relocate): Perform GOTDATA code
2819 transformations for local and non-preemptible non-IFUNC global
2820 symbols.
2821
0bc964fc
DM
2822 * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
2823 writing out 64-bit part of ranges.
2824
661d7a80
DM
2825 * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
2826 -fpic and -fpie respectively.
2827 * Makefile.in: Regenerate.
2828
8c2bf391
DM
2829 * sparc.cc (class Target_sparc): Add rela_ifunc_.
2830 (Target_sparc::Target_sparc): Initialize new field.
2831 (Target_sparc::do_plt_section_for_global): New function.
2832 (Target_sparc::do_plt_section_for_local): New function.
2833 (Target_sparc::reloc_needs_plt_for_ifunc): New function.
2834 (Target_sparc::make_plt_section): New function, broken out of
2835 make_plt_entry. Use ORDER_NON_RELRO_FIRST for ".plt".
2836 (Target_sparc::make_plt_entry): Call make_plt_section.
2837 (Target_sparc::make_local_ifunc_plt_entry): New function.
2838 (Target_sparc::rela_ifunc_section): New function.
2839 (Target_sparc::plt_section): Remove const.
2840 (Output_data_plt_sparc): Update declarations. Define Global_ifunc
2841 and Local_ifunc types. Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
2842 and ifunc_count_ fields.
2843 (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
2844 (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
2845 (Output_data_plt_sparc::add_local_ifunc_entry): New function.
2846 (Output_data_plt_sparc::rela_ifunc): New function.
2847 (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
2848 (Output_data_plt_sparc::has_ifunc_section): New function.
2849 (Output_data_plt_sparc::entry_count): Include ifunc_count_.
2850 (Output_data_plt_sparc::address_for_global): New function.
2851 (Output_data_plt_sparc::address_for_local): New function.
2852 (Output_data_plt_sparc::plt_index_to_offset): New function.
2853 (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
2854 and entry_count.
2855 (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
2856 entry_count.
2857 (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
2858 R_SPARC_JMP_IREL to switch.
2859 (Target_sparc::Scan::check_non_pic): Likewise.
2860 (Target_sparc::Scan::local): Handle IFUNC symbols.
2861 (Target_sparc::Scan::local): Likewise.
2862 (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
2863 and plt_address_for_local.
2864 (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
2865 Define __rel_iplt_start and __rel_iplt_end if doing a static link.
2866
13cf9988
DM
2867 * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
2868 (class Output_data_reloc): Adjust calls to Output_reloc_type.
2869 (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
2870 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
2871 global relocs too.
2872 (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
2873 * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
2874 calls.
2875 * sparc.cc (Target_sparc::Scan::global): Likewise.
2876 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
2877
31821be0
CC
28782012-04-16 Cary Coutant <ccoutant@google.com>
2879
2880 * archive.cc (Library_base::should_include_member): Check for
2881 --export-dynamic-symbol.
2882 * options.h (class General_options): Add --export-dynamic-symbol.
2883 * symtab.cc (Symbol::should_add_dynsym_entry): Check for
2884 --export-dynamic-symbol.
2885 (Symbol_table::gc_mark_undef_symbols): Likewise.
2886 (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
2887
2615994e
DM
28882012-04-12 David S. Miller <davem@davemloft.net>
2889
2890 * sparc.cc (Reloc::wdisp10): New relocation method.
2891 (Reloc::h34): Likewise.
2892 (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
2893 (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
2894 R_SPARC_WDISP10.
2895 (Target_sparc::Scan::local): Likewise.
2896 (Target_sparc::Scan::global): Likewise.
2897 (Target_sparc::Relocate::relocate): Likewise.
2898
6782735d
CC
28992012-04-09 Cary Coutant <ccoutant@google.com>
2900
2901 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
2902 low_pc == 0.
2903
8c7a0b00
ILT
29042012-04-06 Ian Lance Taylor <iant@google.com>
2905
2906 * timer.cc: #include <unistd.h>.
2907
58797674
RM
29082012-04-06 Roland McGrath <mcgrathr@google.com>
2909
2910 * configure.in (AC_CHECK_HEADERS): Add locale.h.
2911 * config.in: Regenerate.
2912 * configure: Regenerate.
2913
44350750
NC
29142012-04-05 Nick Clifton <nickc@redhat.com>
2915
2916 * configure.ac (AC_CHECK_FUNCS): Add setlocale.
2917 (AM_LC_MESSAGES): Add.
2918 * aclocal.m4: Regenerate.
2919 * config.in: Regenerate.
2920 * configure: Regenerate.
2921
c1027032
CC
29222012-03-21 Cary Coutant <ccoutant@google.com>
2923
2924 * Makefile.am: Add gdb-index.cc, gdb-index.h.
2925 * Makefile.in: Regenerate.
2926 * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
2927 (Sized_elf_reloc_mapper::symbol_section): New function.
2928 (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
2929 (make_elf_reloc_mapper): New function.
2930 (Dwarf_abbrev_table::clear_abbrev_codes): New function.
2931 (Dwarf_abbrev_table::do_read_abbrevs): New function.
2932 (Dwarf_abbrev_table::do_get_abbrev): New function.
2933 (Dwarf_ranges_table::read_ranges_table): New function.
2934 (Dwarf_ranges_table::read_range_list): New function.
2935 (Dwarf_pubnames_table::read_section): New function.
2936 (Dwarf_pubnames_table::read_header): New function.
2937 (Dwarf_pubnames_table::next_name): New function.
2938 (Dwarf_die::Dwarf_die): New function.
2939 (Dwarf_die::read_attributes): New function.
2940 (Dwarf_die::skip_attributes): New function.
2941 (Dwarf_die::set_name): New function.
2942 (Dwarf_die::set_linkage_name): New function.
2943 (Dwarf_die::attribute): New function.
2944 (Dwarf_die::string_attribute): New function.
2945 (Dwarf_die::int_attribute): New function.
2946 (Dwarf_die::uint_attribute): New function.
2947 (Dwarf_die::ref_attribute): New function.
2948 (Dwarf_die::child_offset): New function.
2949 (Dwarf_die::sibling_offset): New function.
2950 (Dwarf_info_reader::check_buffer): New function.
2951 (Dwarf_info_reader::parse): New function.
2952 (Dwarf_info_reader::do_parse): New function.
2953 (Dwarf_info_reader::do_read_string_table): New function.
2954 (Dwarf_info_reader::lookup_reloc): New function.
2955 (Dwarf_info_reader::get_string): New function.
2956 (Dwarf_info_reader::visit_compilation_unit): New function.
2957 (Dwarf_info_reader::visit_type_unit): New function.
2958 (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
2959 Sized_elf_reloc_mapper.
2960 (Sized_dwarf_line_info::symbol_section): Remove function.
2961 (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
2962 (Sized_dwarf_line_info::read_line_mappings): Remove object
2963 parameter, adjust callers.
2964 (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
2965 * dwarf_reader.h: Include <sys/types.h>.
2966 (class Track_relocs): Remove forward declaration.
2967 (class Elf_reloc_mapper): New class.
2968 (class Sized_elf_reloc_mapper): New class.
2969 (class Dwarf_abbrev_table): New class.
2970 (class Dwarf_range_list): New class.
2971 (class Dwarf_ranges_table): New class.
2972 (class Dwarf_pubnames_table): New class.
2973 (class Dwarf_die): New class.
2974 (class Dwarf_info_reader): New class.
2975 (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
2976 (Sized_dwarf_line_info::symbol_section): Remove member function.
2977 * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
2978 base class.
2979 * gdb-index.cc: New source file.
2980 * gdb-index.h: New source file.
2981 * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
2982 and .debug_types sections, call Layout::add_to_gdb_index.
2983 (Sized_relobj_incr::do_section_name): Implement.
2984 (Sized_relobj_incr::do_section_contents): Adjust parameter list and
2985 return type; Implement.
2986 (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
2987 return type.
2988 * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
2989 parameter list and return type.
2990 (Sized_incr_dynobj::do_section_contents): Likewise.
2991 * layout.cc: Include gdb-index.h.
2992 (Layout::Layout): Initialize gdb_index_data_.
2993 (Layout::init_fixed_output_section): Check for .gdb_index section.
2994 (Layout::add_to_gdb_index): New function. Instantiate.
2995 * layout.h: Add forward declaration for class Gdb_index.
2996 (Layout::add_to_gdb_index): New member function.
2997 (Layout::gdb_index_data_): New data member.
2998 * main.cc: Include gdb-index.h.
2999 (main): Print statistics for gdb index.
3000 * object.cc (Object::section_contents): Move code into
3001 do_section_contents.
3002 (need_decompressed_section): Check for sections needed when building
3003 gdb index.
3004 (build_compressed_section_map): Likewise.
3005 (Sized_relobj_file::do_read_symbols): Need local symbols when building
3006 gdb index.
3007 (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
3008 sections; call Layout::add_to_gdb_index.
3009 (Sized_relobj_file::do_decompressed_section_contents): Call
3010 do_section_contents directly.
3011 * object.h (Object::do_section_contents): Adjust parameter list and
3012 return type.
3013 (Object::do_decompressed_section_contents): Call do_section_contents
3014 directly.
3015 (Sized_relobj_file::do_section_contents): Adjust parameter list and
3016 return type.
3017 * options.h (class General_options): Add --gdb-index option.
3018 * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
3019 list and return type.
3020 * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
3021 * reloc.h (Track_relocs::checkpoint): New function.
3022 (Track_relocs::reset): New function.
3023
3024 * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
3025 New test cases.
3026 * testsuite/Makefile.in: Regenerate.
3027 * testsuite/gdb_index_test.cc: New test source file.
3028 * testsuite/gdb_index_test_1.sh: New test source file.
3029 * testsuite/gdb_index_test_2.sh: New test source file.
3030
647f1574
DK
30312012-03-19 Doug Kwan <dougkwan@google.com>
3032
3033 * arm.cc (Target_arm::do_define_standard_symbols): New method.
2e702c99 3034 (Target_arm::do_finalize_sections): Remove code which defines
647f1574
DK
3035 __exidx_start and __exidx_end. Make symbol table parameter
3036 anonymous as it is not used.
3037 * gold.cc (queue_middle_tasks): Call target hook to define any
3038 target-specific symbols.
3039 * target.h (Target::define_standard_symbols): New method.
3040 (Target::do_define_standard_symbols): Same.
3041 * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
3042 * testsuite/Makefile.in: Regenerate.
3043 * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
3044 and __exidx_end.
3045 * testsuite/arm_exidx_test.sh: Check that no unused dynamic
3046 relocations are generated for __exidx_start and __exidx_end.
3047
7c6109da
DK
30482012-03-16 Doug Kwan <dougkwan@google.com>
3049
3050 * testsuite/Makefile.am: Disable test initpri3b.
3051 * testsuite/Makefile.in: Regenerate.
3052
7b8957f8
DK
30532012-03-15 Doug Kwan <dougkwan@google.com>
3054
3055 * arm.cc (Target_arm::got_section): Make .got section read-only
3056 if -z now is given.
3057
14dc9ef7
ILT
30582012-03-15 Ian Lance Taylor <iant@google.com>
3059
3060 PR gold/13850
3061 * layout.cc (Layout::make_output_section): Correctly mark
3062 SHT_INIT_ARRAY, et. al., as relro.
3063
fa40b62a
DK
30642012-03-14 Doug Kwan <dougkwan@google.com>
3065
3066 * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
3067 dynamic relocations for protected symbols in shared objects.
3068
fd325007
ILT
30692012-03-13 Ian Lance Taylor <iant@google.com>
3070
3071 * resolve.cc (Symbol_table::resolve): When merging common symbols,
3072 keep the larger alignment.
3073
e8dd54e1
CC
30742012-03-12 Cary Coutant <ccoutant@google.com>
3075
3076 * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
3077 handling of DW_LNE_define_file.
3078
feb5f3b0
CC
30792012-03-12 Cary Coutant <ccoutant@google.com>
3080
3081 * reduced_debug_output.cc
3082 (Output_reduced_debug_info_section::get_die_end): Add new FORM
3083 codes to switch.
3084
a1fb4256
CC
30852012-02-29 Cary Coutant <ccoutant@google.com>
3086
3087 * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
3088
5dd8762a
CC
30892012-02-29 Cary Coutant <ccoutant@google.com>
3090
3091 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
3092 Call Object::decompressed_section_contents.
3093 * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
3094 New dtor.
3095 (Sized_dwarf_line_info::buffer_start_): New data member.
3096 * merge.cc (Output_merge_data::do_add_input_section): Call
3097 Object::decompressed_section_contents.
3098 (Output_merge_string::do_add_input_section): Likewise.
3099 * object.cc (need_decompressed_section): New function.
3100 (build_compressed_section_map): Decompress sections needed later.
3101 (Sized_relobj_file::do_decompressed_section_contents): New function.
3102 (Sized_relobj_file::do_discard_decompressed_sections): New function.
3103 * object.h (Object::decompressed_section_contents): New function.
3104 (Object::discard_decompressed_sections): New function.
3105 (Object::do_decompressed_section_contents): New function.
3106 (Object::do_discard_decompressed_sections): New function.
3107 (Compressed_section_info): New type.
3108 (Compressed_section_map): Include decompressed section contents.
3109 (Sized_relobj_file::do_decompressed_section_contents): New function.
3110 (Sized_relobj_file::do_discard_decompressed_sections): New function.
3111
7b5de7ee
CC
31122012-02-16 Cary Coutant <ccoutant@google.com>
3113
3114 * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
3115 * testsuite/Makefile.in: Regenerate.
3116
f9fa4a63
CC
31172012-02-14 Cary Coutant <ccoutant@google.com>
3118
3119 * options.cc (General_options::finalize): Disallow -pie and -static.
3120
2c175ebc
DK
31212012-02-03 Doug Kwan <dougkwan@google.com>
3122
3123 * arm.cc (Arm_relocate_functions::abs8,
3124 Arm_relocate_functions::abs16): Use
3125 Bits::has_signed_unsigned_overflow32.
3126 (Arm_relocate_functions::thm_abs8): Correct range of
3127 overflow check.
3128 * reloc.h (Bits class): Change minimum number of bits from 0 to 1
3129 in assertions.
3130
90cff06f
DK
31312012-02-02 Doug Kwan <dougkwan@google.com>
3132
3133 * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
3134 position independent outputs, not just shared objects.
3135
63887f3d
L
31362012-01-30 H.J. Lu <hongjiu.lu@intel.com>
3137
3138 * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
3139 * configure: Regenerated.
3140
bef2b434
ILT
31412012-01-27 Ian Lance Taylor <iant@google.com>
3142
3143 * reloc.h (Bits): New class with static functions, copied from
3144 namespace utils in arm.cc.
3145 * arm.cc (namespace utils): Remove. Rewrite all uses to use Bits
3146 instead.
3147
c335b55d
L
31482012-01-27 H.J. Lu <hongjiu.lu@intel.com>
3149
3150 * incremental.cc (write_info_blocks): Correct relocation offset.
3151
41194d9f
L
31522012-01-27 H.J. Lu <hongjiu.lu@intel.com>
3153
3154 * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
3155 (Relocate::tls_gd_to_le): Likewise.
3156
1bae613c
L
31572012-01-27 H.J. Lu <hongjiu.lu@intel.com>
3158
3159 * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
3160
24482ca0
L
31612012-01-27 H.J. Lu <hongjiu.lu@intel.com>
3162
3163 * configure.ac: Check if -mcmodel=medium works.
3164 * configure: Regenerated.
3165
c2c7840a
CC
31662012-01-24 Cary Coutant <ccoutant@google.com>
3167
3168 * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
3169 definition and ...
3170 (read_unsigned_LEB_128_x): ... this new function.
3171 (read_signed_LEB_128): Replaced with inline definition and ...
3172 (read_signed_LEB_128_x): ... this new function.
3173 * int_encoding.h (read_unsigned_LEB_128_x): New function.
3174 (read_unsigned_LEB_128): Add inline definition.
3175 (read_signed_LEB_128_x): New function.
3176 (read_signed_LEB_128): Add inline definition.
3177 * testsuite/Makefile.am (leb128_unittest): New unit test.
3178 * testsuite/Makefile.in: Regenerate.
3179 * testsuite/leb128_unittest.cc: New unit test.
3180
833de760 31812012-01-23 Ian Lance Taylor <iant@google.com>
9dee3b3c
ILT
3182
3183 PR gold/13617
3184 * i386.cc (Target_i386::do_code_fill): When using a jmp
3185 instruction, pad with nop instructions.
3186 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
3187
618d6666
L
31882012-01-22 H.J. Lu <hongjiu.lu@intel.com>
3189
3190 * x86_64.cc (gc_process_relocs): Add typename on types used in
3191 template.
3192 (scan_relocs): Likewise.
3193 (relocate_section): Likewise.
3194 (apply_relocation): Likewise.
3195
3660ff06
L
31962012-01-10 H.J. Lu <hongjiu.lu@intel.com>
3197
3198 * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
3199 (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
3200 under x32.
3201
fc51264f
L
32022012-01-09 H.J. Lu <hongjiu.lu@intel.com>
3203
3204 * x86_64.cc: Initial support for x32.
3205
dd74ae06
CC
32062012-01-03 Cary Coutant <ccoutant@google.com>
3207
3208 * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
3209 Use abstract base class for GOT.
3210 * gold/output.h (class Output_data_got_base): New abstract base class.
3211 (class Output_data_got): Derive from new base class, adjust ctors.
3212 (Output_data_got::reserve_slot): Make virtual; rename to
3213 do_reserve_slot; Adjust callers.
3214 * gold/target.h (Sized_target::init_got_plt_for_update): Return
3215 pointer to abstract base class.
3216 * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
3217
83896202
ILT
32182011-12-18 Ian Lance Taylor <iant@google.com>
3219
3220 * object.h (Relobj::local_symbol_value): New function.
3221 (Relobj::local_plt_offset): New function.
3222 (Relobj::local_has_got_offset): New function.
3223 (Relobj::local_got_offset): New function.
3224 (Relobj::set_local_got_offset): New function.
3225 (Relobj::do_local_symbol_value): New pure virtual function.
3226 (Relobj::do_local_plt_offset): Likewise.
3227 (Relobj::do_local_has_got_offset): Likewise.
3228 (Relobj::do_local_got_offset): Likewise.
3229 (Relobj::do_set_local_got_offset): Likewise.
3230 (Sized_relobj::do_local_has_got_offset): Rename from
3231 local_has_got_offset.
3232 (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
3233 (Sized_relobj::do_set_local_got_offset): Rename from
3234 set_local_got_offset.
3235 (Sized_relobj_file::do_local_plt_offset): Rename from
3236 local_plt_offset.
3237 (Sized_relobj_file::do_local_symbol_value): New function.
3238 * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
3239 local_plt_offset.
3240 * output.cc (Output_data_got::Got_entry::write): Change object to
3241 Relobj. Use local_symbol_value.
3242 (Output_data_got::add_global_with_rel): Change rel_dyn to
3243 Output_data_reloc_generic*. Use add_global_generic.
3244 (Output_data_got::add_global_with_rela): Remove. Change all
3245 callers to use add_global_with_rel.
3246 (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
3247 Output_data_reloc_generic*. Use add_global_generic.
3248 (Output_data_got::add_global_pair_with_rela): Remove. Change all
3249 callers to use add_global_pair_with_rel.
3250 (Output_data_got::add_local): Change object to Relobj*.
3251 (Output_data_got::add_local_plt): Likewise.
3252 (Output_data_got::add_local_with_rel): Change object to Relobj*,
3253 change rel_dyn to Output_data_reloc_generic*. Use
3254 add_local_generic.
3255 (Output_data_got::add_local_with_rela): Remove. Change all
3256 callers to use all_local_with_rel.
3257 (Output_data_got::add_local_pair_with_rel): Change object to
3258 Relobj*, change rel_dyn to Output_data_reloc_generic*. Use
3259 add_output_section_generic.
3260 (Output_data_got::add_local_pair_with_rela): Remove. Change all
3261 callers to use add_local_pair_with_rel.
3262 (Output_data_got::reserve_local): Change object to Relobj*.
3263 * output.h: (class Output_data_reloc_generic): Add pure virtual
3264 declarations for add_global_generic, add_local_generic,
3265 add_output_section_generic.
3266 (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
3267 functions for Output_data_reloc_generic. Update declarations for
3268 changes listed in output.cc.
3269 (class Output_data_got): Change template parameter to got_size.
3270 Don't define Rel_dyn or Rela_dyn. Update declarations per above.
3271 * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
3272 function.
3273 (Sized_relobj_incr::do_local_plt_offset): New function.
3274 * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
3275 add_global_generic.
3276
76677ad0
CC
32772011-12-17 Cary Coutant <ccoutant@google.com>
3278
3279 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
3280 * resolve.cc (Symbol_table::resolve): Likewise.
3281 * i386.cc (Target_i386::do_code_fill): Use char constants for nop
3282 arrays.
3283 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
3284
8b8dd8d5
ILT
32852011-12-16 Ian Lance Taylor <iant@google.com>
3286
3287 * output.h (Output_data_reloc_generic::add): Only call
3288 add_dynamic_reloc if this is a dynamic reloc section.
3289
d55525b9
L
32902011-12-15 H.J. Lu <hongjiu.lu@intel.com>
3291
3292 PR gold/13505
3293 * target-reloc.h (apply_relocation): Replace <64, false> with
3294 <size, big_endian>.
3295
ff81c7c1
NC
32962011-11-25 Nick Clifton <nickc@redhat.com>
3297
3298 * po/it.po: New Italian translation.
3299
628f39be
SA
33002011-11-17 Sterling Augustine <saugustine@google.com>
3301
3302 * script.cc (script_include_directive): Implement.
3303 (read_script_file): New local variables name and search_path. Update
3304 comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
3305 * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
3306 * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
3307
98ef3ea4
SA
33082011-11-11 Sterling Augustine <saugustine@google.com>
3309
3310 * yyscript.y (section_cmd): Add support for INCLUDE directive.
3311 (file_or_sections_cmd): Likewise.
3312
f4a8b6d7
DK
33132011-11-11 Doug Kwan <dougkwan@google.com>
3314
3315 * arm.cc (Target_arm::do_make_elf_object): Allow executable also
3316 if --just-symbols is given.
3317
29ab395d
DK
33182011-11-10 Doug Kwan <dougkwan@google.com>
3319
3320 PR gold/13362
3321 * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
3322 when processing data relocs.
3323 * reloc.h (Relocate_functions::rel_unaligned): New method.
3324 (Relocate_functions::pcrel_unaligned): Ditto.
3325 (Relocate_functions::rel32_unaligned): Ditto.
3326 (Relocate_functions::pcrel32_unaligned): Ditto.
3327
2c339f71
DK
33282011-11-09 Doug Kwan <dougkwan@google.com>
3329
3330 PR gold/13362
3331 * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
3332 Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
3333 * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
3334 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
3335 (Relocate_functions::rel_unaligned): New.
3336 (Relocate_functions::rel32_unaligned): New.
3337 * target-reloc.h (relocate_for_relocatable): Add code to handle
3338 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
3339 * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
3340 arm_unaligned_reloc_r): New targets.
3341 * testsuite/Makefile.in: Regenerate.
3342 * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
3343 linking.
3344
3f3cddf1
ILT
33452011-11-02 Ian Lance Taylor <iant@google.com>
3346
3347 * configure.ac: Add --with-lib-path option. Define LIB_PATH and
3348 NATIVE_LINKER.
3349 * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
3350 * options.cc (General_options::finalize): Use library search path
3351 from configure script if specified. If not native and no sysroot,
3352 only search TOOLLIBDIR.
3353 * options.h (Search_directory::Search_directory): Change name to
3354 const std::string&.
3355 (General_options::add_to_library_path_with_sysroot): Change arg to
3356 const std::string&.
3357 * configure, Makefile.in, config.in: Rebuild.
3358
a8e2273b
ILT
33592011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
3360
3361 * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
3362 we are working around the ARM1176 Erratum.
3363 * options.h (General_options::fix_arm1176): Add option.
3364 * testsuite/Makefile.am: Add testcases, and keep current ones
3365 working.
3366 * testsuite/Makefile.in: Regenerate.
3367 * testsuite/arm_fix_1176.s: New file.
3368 * testsuite/arm_fix_1176.sh: Likewise.
3369
cd6eab1c
ILT
33702011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
3371
3372 * arm.cc (Target_arm::Target_arm): Remove initialisation of
3373 may_use_blx_.
3374 (Target_arm::may_use_blx): Remove method.
3375 (Target_arm::set_may_use_blx): Likewise.
3376 (Target_arm::may_use_v4t_interworking): New method.
3377 (Target_arm::may_use_v5t_interworking): Likewise.
3378 (Target_arm::may_use_blx_): Remove member variable.
3379 (Arm_relocate_functions::arm_branch_common): Check for v5T
3380 interworking.
3381 (Arm_relocate_functions::thumb_branch_common): Likewise.
3382 (Reloc_stub::stub_type_for_reloc): Likewise.
3383 (Target_arm::do_finalize_sections): Correct interworking checks.
3384 * testsuite/Makefile.am: Add new tests.
3385 * testsuite/Makefile.in: Regenerate.
3386 * testsuite/arm_farcall_arm_arm.s: New test.
3387 * testsuite/arm_farcall_arm_arm.sh: Likewise.
3388 * testsuite/arm_farcall_arm_thumb.s: Likewise.
3389 * testsuite/arm_farcall_arm_thumb.sh: Likewise.
3390 * testsuite/arm_farcall_thumb_arm.s: Likewise.
3391 * testsuite/arm_farcall_thumb_arm.sh: Likewise.
3392 * testsuite/arm_farcall_thumb_thumb.s: Likewise.
3393 * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
3394
286adcf4
CC
33952011-10-31 Cary Coutant <ccoutant@google.com>
3396
3397 PR gold/13023
3398 * expression.cc (Expression::eval_with_dot): Add
3399 is_section_dot_assignment parameter.
3400 (Expression::eval_maybe_dot): Likewise. Adjust value when rhs is
3401 absolute and assigning to dot within a section.
3402 * script-sections.cc
3403 (Output_section_element_assignment::set_section_addresses): Pass
3404 dot_section to set_if_absolute.
3405 (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
3406 as is_section_dot_assignment flag to eval_with_dot.
3407 (Output_section_element_dot_assignment::set_section_addresses):
3408 Likewise.
3409 * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
3410 parameter. Also set value if relative to dot_section; set the
3411 symbol's output_section.
3412 * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
3413 parameter. Adjust all callers.
3414 (Expression::eval_maybe_dot): Likewise.
3415 (Symbol_assignment::set_if_absolute): Add dot_section parameter.
3416 Adjust all callers.
3417 * testsuite/script_test_2.t: Test assignment of an absolute value
3418 to dot within an output section element.
3419
9634ed06
CC
34202011-10-31 Cary Coutant <ccoutant@google.com>
3421
3422 * options.h (class General_options): Add --[no-]gnu-unique options.
3423 * symtab.cc (Symbol_table::sized_write_globals): Convert
3424 STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
3425
de4101c7
CC
34262011-10-31 Cary Coutant <ccoutant@google.com>
3427
3428 PR gold/13359
3429 * i386.cc (Target_i386::Relocate::relocate_tls): Remove
3430 unnecessary assertion.
3431 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
3432
7257cc92
ST
34332011-10-31 Sriraman Tallam <tmsriram@google.com>
3434
3435 * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
3436 gc_mark_symbol.
3437 * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
3438 gc_mark_symbol.
3439 Change to just keep the section associated with symbol.
3440 (Symbol_table::add_from_relobj): Mark symbols as not garbage when
3441 they are externally visible and --export-dynamic is turned on.
3442 (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
3443
bfc34b3f
ILT
34442011-10-19 Ian Lance Taylor <iant@google.com>
3445
3446 PR gold/13163
3447 * script-sections.cc
3448 (Output_section_element_dot_assignment::needs_output_section): New
3449 function.
3450
ea0d8c47
ILT
34512011-10-19 Ian Lance Taylor <iant@google.com>
3452
3453 PR gold/13204
3454 * layout.cc (Layout::segment_precedes): Don't assert failure if a
3455 --section-start option was seen.
3456 * options.h (General_options::any_section_start): New function.
3457
abd242a9
DM
34582011-10-18 David S. Miller <davem@davemloft.net>
3459
3460 PR binutils/13301
3461 * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
3462 member to track relocation locations that have moved during TLS
3463 reloc optimizations.
3464 (Target_sparc::Relocate::Relocate): Initialize to NULL.
3465 (Target_sparc::Relocate::relocate): Adjust view down by 4
3466 bytes if it matches reloc_adjust_addr_.
3467 (Target_sparc::Relocate::relocate_tls): Always move the
3468 __tls_get_addr call delay slot instruction forward 4 bytes when
3469 performing relaxation.
3470
bab9090f
CC
34712011-10-18 Cary Coutant <ccoutant@google.com>
3472
3473 * output.cc (posix_fallocate): Return 0 on success, errno on failure.
3474 (Output_file::map_no_anonymous): Check for non-zero
3475 return code from posix_fallocate.
3476
f7c5b166
CC
34772011-10-17 Cary Coutant <ccoutant@google.com>
3478
3479 PR gold/13245
3480 * plugin.cc (is_visible_from_outside): Check for symbols
3481 referenced from dynamic objects.
3482 * resolve.cc (Symbol_table::resolve): Don't count references
3483 from dynamic objects as references from real ELF files.
3484 * testsuite/plugin_test_2.sh: Adjust expected result.
3485
b490c0bb
CC
34862011-10-17 Cary Coutant <ccoutant@google.com>
3487
3488 * gold.cc: Include timer.h.
3489 (queue_middle_tasks): Stamp time.
3490 (queue_final_tasks): Likewise.
3491 * main.cc (main): Store timer in parameters. Print timers
3492 for each pass.
3493 * parameters.cc (Parameters::Parameters): Initialize timer_.
3494 (Parameters::set_timer): New function.
3495 (set_parameters_timer): New function.
3496 * parameters.h (Parameters::set_timer): New function.
3497 (Parameters::timer): New function.
3498 (Parameters::timer_): New data member.
3499 (set_parameters_timer): New function.
3500 * timer.cc (Timer::stamp): New function.
3501 (Timer::get_pass_time): New function.
3502 * timer.h (Timer::stamp): New function.
3503 (Timer::get_pass_time): New function.
3504 (Timer::pass_times_): New data member.
3505
f475cf7b
CC
35062011-10-17 Cary Coutant <ccoutant@google.com>
3507
3508 * readsyms.cc (Read_symbols::run): Don't queue an unblocker
3509 task for members of lib groups.
3510
cdd7e244
CC
35112011-10-17 Cary Coutant <ccoutant@google.com>
3512
3513 PR gold/13288
4f95c8b4 3514 * fileread.cc (File_read::find_view): Add assert.
cdd7e244
CC
3515 (File_read::make_view): Move bounds check (replace with assert)...
3516 (File_read::find_or_make_view): ... to here.
3517
dfb45471
CC
35182011-10-12 Cary Coutant <ccoutant@google.com>
3519
4f95c8b4 3520 * output.cc (Output_file::open_base_file): Handle case where
dfb45471
CC
3521 ::read returns less than requested size.
3522
53bbcc1b
CC
35232011-10-10 Cary Coutant <ccoutant@google.com>
3524
4f95c8b4 3525 * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
53bbcc1b
CC
3526 Initialize defined_count_.
3527 (Sized_relobj_incr::do_add_symbols): Count defined symbols.
3528 (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
3529 (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
3530 (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
3531 (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
4f95c8b4 3532 * incremental.h (Sized_relobj_incr::defined_count_): New data
53bbcc1b
CC
3533 member.
3534 (Sized_incr_dynobj::defined_count_): New data member.
4f95c8b4 3535 * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
53bbcc1b
CC
3536 Return zeroes instead of internal error.
3537
397b129b
CC
35382011-10-10 Cary Coutant <ccoutant@google.com>
3539
3540 PR gold/13249
4f95c8b4 3541 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
397b129b 3542 (Output_reloc::symbol_value): Return PLT offset if flag is set.
4f95c8b4 3543 * output.h (class Output_reloc): Add use_plt_offset flag.
397b129b
CC
3544 (Output_reloc::type_): Adjust size of bit field.
3545 (Output_reloc::use_plt_offset_): New bit field.
3546 (class Output_data_reloc): Adjust all calls to Output_reloc_type.
3547 (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
3548 flag. Adjust all callers.
4f95c8b4 3549 * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
397b129b
CC
3550 creating RELATIVE relocations.
3551
d5698657
NC
35522011-10-10 Nick Clifton <nickc@redhat.com>
3553
3554 * po/es.po: Updated Spanish translation.
3555 * po/fi.po: Updated Finnish translation.
3556
6a59a5c2
DN
35572011-10-03 Diego Novillo <dnovillo@google.com>
3558
3559 * options.cc (parse_uint): Fix dereference of RETVAL.
3560
f0558624
ST
35612011-09-29 Sriraman Tallam <tmsriram@google.com>
3562
3563 * layout.h (section_order_map_): New member.
3564 (get_section_order_map): New member function.
3565 * output.cc (Output_section::add_input_section): Check for patterns
3566 only when --section-ordering-file is specified.
3567 * gold.cc (queue_middle_tasks): Delay updating order of sections till
3568 output_sections have been formed.
3569 * layout.cc (Layout_Layout): Initialize section_order_map_.
3570 * plugin.cc (update_section_order): Store order in order_map. Do not
3571 update the order.
3572 * testsuite/Makefile.am: Add test case for plugin_final_layout.
3573 * testsuite/Makefile.in: Regenerate.
3574 * testsuite/plugin_section_order.c: New file.
3575 * testsuite/plugin_final_layout.cc: New file.
3576 * testsuite/plugin_final_layout.sh: New file.
3577
a7dac153
CC
35782011-09-29 Cary Coutant <ccoutant@google.com>
3579
4f95c8b4 3580 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
a7dac153 3581 Check for NULL.
4f95c8b4 3582 * symtab.cc (Symbol_table::add_from_relobj): Ignore version
a7dac153
CC
3583 symbols during incremental update.
3584 (Symbol_table::add_from_dynobj): Likewise.
3585
eebd87a5
ILT
35862011-09-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3587 Ian Lance Taylor <iant@google.com>
3588
3589 * symtab.cc (Symbol_table::define_special_symbol): Always
3590 canonicalize version string.
3591
403a3331
CC
35922011-09-26 Cary Coutant <ccoutant@google.com>
3593
4f95c8b4
CC
3594 * gold.cc (queue_initial_tasks): Move option checks ...
3595 * options.cc (General_options::finalize): ... to here. Disable
403a3331
CC
3596 some options; make others fatal.
3597
235061c2
CC
35982011-09-26 Cary Coutant <ccoutant@google.com>
3599
3600 gcc PR lto/47247
3601 * plugin.cc (get_symbols_v2): New function.
3602 (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
3603 (is_referenced_from_outside): New function.
3604 (Pluginobj::get_symbol_resolution_info): Add version parameter, return
3605 LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
3606 (get_symbols): Pass version parameter.
3607 (get_symbols_v2): New function.
3608 * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
3609 parameter.
3610 * testsuite/plugin_test.c (get_symbols_v2): New static variable.
3611 (onload): Add LDPT_GET_SYMBOLS_V2.
3612 (all_symbols_read_hook): Use get_symbols_v2; check for
3613 LDPR_PREVAILING_DEF_IRONLY_EXP.
3614 * testsuite/plugin_test_3.sh: Update expected results.
3615
dc87f620
ILT
36162011-09-23 Simon Baldwin <simonb@google.com>
3617
3618 * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
3619 configuration options.
3620 * configure: Regenerate.
3621 * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
3622 * Makefile.in: Regenerate.
3623 * testsuite/Makefile.in: Regenerate.
3624
a8279f82
ST
36252011-09-19 Sriraman Tallam <tmsriram@google.com>
3626
3627 * plugin.h (should_defer_layout): Modify to check for any_claimed_.
3628
0c9350c8
CC
36292011-09-19 Cary Coutant <ccoutant@google.com>
3630
3631 * incremental.cc (can_incremental_update): Fix typo in comment.
3632 * incremental.h (can_incremental_update): Likewise.
3633
aa06ae28
CC
36342011-09-18 Cary Coutant <ccoutant@google.com>
3635
3636 * incremental.cc (can_incremental_update): New function.
3637 * incremental.h (can_incremental_update): New function.
3638 * layout.cc (Layout::init_fixed_output_section): Call it.
3639 (Layout::make_output_section): Don't allow patch space in .eh_frame.
3640 * object.cc (Sized_relobj_file::do_layout): Call
3641 can_incremental_update.
3642
ebb300b2
CC
36432011-09-13 Cary Coutant <ccoutant@google.com>
3644
3645 * configure.ac: Check for glibc support for gnu_indirect_function
3646 support with static linking, setting automake conditional
3647 IFUNC_STATIC.
3648 * Makefile.in: Regenerate.
3649 * configure: Regenerate.
3650
3651 * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
3652 (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
3653 for IFUNC_STATIC.
3654 * testsuite/Makefile.in: Regenerate.
3655
1206d0d5
CC
36562011-09-13 Cary Coutant <ccoutant@google.com>
3657
3658 * incremental.cc (Sized_relobj_incr::do_layout): Call
3659 report_comdat_group for kept comdat sections.
3660 * testsuite/Makefile.am (incremental_comdat_test_1): New test.
3661 * testsuite/Makefile.in: Regenerate.
3662 * testsuite/incr_comdat_test_1.cc: New source file.
3663 * testsuite/incr_comdat_test_2_v1.cc: New source file.
3664 * testsuite/incr_comdat_test_2_v2.cc: New source file.
3665 * testsuite/incr_comdat_test_2_v3.cc: New source file.
3666
40b29874
ILT
36672011-09-13 Ian Lance Taylor <iant@google.com>
3668
3669 * object.cc (Sized_relobj_file::do_layout): Remove unused local
3670 variable external_symbols_offset.
3671
1b045aac
ILT
36722011-09-12 Ian Lance Taylor <iant@google.com>
3673
3674 * object.cc (Sized_relobj_file::do_layout): Remove assertion which
3675 triggered if object has no symbols.
3676
24c6c55a
DM
36772011-09-09 David S. Miller <davem@davemloft.net>
3678
3679 * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
3680 (Output_fill_debug_line::do_write): Likewise.
3681
66570254
CC
36822011-08-29 Cary Coutant <ccoutant@google.com>
3683
3684 * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
3685 casts to match formatting specs.
3686 (Output_fill_debug_line::do_minimum_hole_size): Likewise.
3687
8ea8cd50
CC
36882011-08-26 Cary Coutant <ccoutant@google.com>
3689
3690 * layout.cc (Free_list::allocate): Provide guarantee of minimum
3691 remaining hole size when allocating.
3692 (Layout::make_output_section): Set fill methods for debug sections.
3693 * layout.h (Free_list::Free_list_node): Move from private to
3694 public.
3695 (Free_list::set_min_hole_size): New function.
3696 (Free_list::begin, Free_list::end): New functions.
3697 (Free_list::min_hole_): New data member.
3698 * output.cc: Include dwarf.h.
3699 (Output_fill_debug_info::do_minimum_hole_size): New function.
3700 (Output_fill_debug_info::do_write): New function.
3701 (Output_fill_debug_line::do_minimum_hole_size): New function.
3702 (Output_fill_debug_line::do_write): New function.
3703 (Output_section::Output_section): Initialize new data member.
3704 (Output_section::set_final_data_size): Ensure patch space is larger
3705 than minimum hole size.
3706 (Output_section::do_write): Fill holes in debug sections.
3707 * output.h (Output_fill): New class.
3708 (Output_fill_debug_info): New class.
3709 (Output_fill_debug_line): New class.
3710 (Output_section::set_free_space_fill): New function.
3711 (Output_section::free_space_fill_): New data member.
3712 * testsuite/Makefile.am (incremental_test_3): Add
3713 --incremental-patch option.
3714 (incremental_test_4): Likewise.
3715 (incremental_test_5): Likewise.
3716 (incremental_test_6): Likewise.
3717 (incremental_copy_test): Likewise.
3718 (incremental_common_test_1): Likewise.
3719 * testsuite/Makefile.in: Regenerate.
3720
7cf80422
NC
37212011-08-26 Nick Clifton <nickc@redhat.com>
3722
3723 * po/es.po: Updated Spanish translation.
3724
c3f7b0e5
CC
37252011-08-01 Cary Coutant <ccoutant@google.com>
3726
3727 * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
3728 * gold/testsuite/Makefile.in: Regenerate.
3729 * gold/testsuite/justsyms_exec.c: New source file.
3730 * gold/testsuite/justsyms_lib.c: New source file.
3731
9590bf25
CC
37322011-08-01 Cary Coutant <ccoutant@google.com>
3733
3734 * layout.cc (Layout::set_segment_offsets): Don't realign text
3735 segment if -Ttext was specified.
3736 * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
3737 file type.
3738 * object.h (Sized_relobj_file::e_type): New function.
3739 (Sized_relobj_file::e_type_): New data member.
3740 * symtab.cc (Symbol_table::add_from_relobj): Don't add section
3741 base address for ET_EXEC files.
3742 * target.cc (Target::do_make_elf_object_implementation): Allow
3743 ET_EXEC files with --just-symbols option.
3744
dcd8d12e
CC
37452011-07-28 Cary Coutant <ccoutant@google.com>
3746
3747 * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
3748 Add thread_number parameter.
3749 (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
3750 * workqueue-threads.cc
3751 (Workqueue_threader_threadpool::should_cancel_thread): Cancel
3752 current thread if its thread number is greater than desired thread
3753 count.
3754 * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
3755 Add thread_number parameter.
3756 (Workqueue::should_cancel_thread): Likewise.
3757 (Workqueue::find_runnable_or_wait): Pass thread_number to
3758 should_cancel_thread.
3759 * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
3760 parameter.
3761
804eb480
ST
37622011-07-22 Sriraman Tallam <tmsriram@google.com>
3763
3764 * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
3765 only after checking if it cannot be forced local.
3766 * symtab.h (is_externally_visible): Check if the symbol is not forced
3767 local.
3768
f1ddb600
ILT
37692011-07-15 Ian Lance Taylor <iant@google.com>
3770
3771 * options.h (class General_options): Add --print-output-format.
3772 Move -EL next to -EB, for better --help output.
3773 * target-select.cc: Include <cstdio>, "options.h", and
3774 "parameters.h".
3775 (Target_selector::do_target_bfd_name): New function.
3776 (print_output_format): New function.
3777 * target-select.h (class Target_selector): Update declarations.
3778 (Target_selector::target_bfd_name): New function.
3779 (print_output_format): Declare.
3780 * main.cc: Include "target-select.h".
3781 (main): Handle --print-output-format.
3782 * gold.cc: Include "target-select.h".
3783 (queue_initial_tasks): Handle --print-output-format when there are
3784 no input files.
3785 * parameters.cc (parameters_force_valid_target): Give a better
3786 error message if -EB/-EL does not match target.
3787 * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
3788 function.
3789
7d172687
ILT
37902011-07-15 Ian Lance Taylor <iant@google.com>
3791
3792 * i386.cc (class Output_data_plt_i386): Add layout_ field.
3793 (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
3794 (Output_data_plt_i386::do_write): Write address of .dynamic
3795 section to first entry in .got.plt section.
3796 * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
3797 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
3798 Initialize layout_.
3799 (Output_data_plt_x86_64::do_write): Write address of .dynamic
3800 section to first entry in .got.plt section.
3801 * layout.h (Layout::dynamic_section): New function.
3802
e9552f7e
ST
38032011-07-13 Sriraman Tallam <tmsriram@google.com>
3804
3805 * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
3806 to claim_file call.
3807 * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
3808 input_section_position_, and input_section_glob_.
3809 (read_layout_from_file): Call function section_ordering_specified.
3810 * layout.h (is_section_ordering_specified): New function.
3811 (section_ordering_specified): New function.
3812 (section_ordering_specified_): New boolean member.
3813 * main.cc(main): Call load_plugins after layout object is defined.
3814 * output.cc (Output_section::add_input_section): Use
3815 function section_ordering_specified to check if section ordering is
3816 needed.
3817 * output.cc (Output_section::add_relaxed_input_section): Use
3818 function section_ordering_specified to check if section ordering is
3819 needed.
3820 (Output_section::update_section_layout): New function.
3821 (Output_section::sort_attached_input_sections): Check if input section
3822 must be reordered.
3823 * output.h (Output_section::update_section_layout): New function.
3824 * plugin.cc (get_section_count): New function.
3825 (get_section_type): New function.
3826 (get_section_name): New function.
3827 (get_section_contents): New function.
3828 (update_section_order): New function.
58797674 3829 (allow_section_ordering): New function.
e9552f7e
ST
3830 (Plugin::load): Add the new interfaces to the transfer vector.
3831 (Plugin_manager::load_plugins): New parameter.
3832 (Plugin_manager::all_symbols_read): New parameter.
3833 (Plugin_manager::claim_file): New parameter. Save the elf object for
3834 unclaimed objects.
3835 (Plugin_manager::get_elf_object): New function.
3836 (Plugin_manager::get_view): Change to directly use the bool to check
3837 if get_view is called from claim_file_hook.
3838 * plugin.h (input_objects): New function
3839 (Plugin__manager::load_plugins): New parameter.
3840 (Plugin_manager::claim_file): New parameter.
3841 (Plugin_manager::get_elf_object): New function.
3842 (Plugin_manager::in_claim_file_handler): New function.
3843 (Plugin_manager::in_claim_file_handler_): New member.
3844 (layout): New function.
3845 * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
3846 handler with an extra parameter. Make the elf object before calling
3847 claim_file handler.
3848 * testsuite/plugin_test.c (get_section_count): New function pointer.
3849 (get_section_type): New function pointer.
3850 (get_section_name): New function pointer.
3851 (get_section_contents): New function pointer.
3852 (update_section_order): New function pointer.
3853 (allow_section_ordering): New function pointer.
3854 (onload): Check if the new interfaces exist.
3855
9446efde
ILT
38562011-07-13 Ian Lance Taylor <iant@google.com>
3857
3858 * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
3859 relro section.
3860 * x86_64.cc (Target_x86_64::got_section): Likewise.
3861 * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
3862 (relro_now_test_SOURCES): New variable.
3863 (relro_now_test_DEPENDENCIES): New variable.
3864 (relro_now_test_LDFLAGS): New variable.
3865 (relro_now_test_LDADD): New variable.
3866 (relro_now_test.so): New target.
3867 * testsuite/Makefile.in: Rebuild.
3868
07aa62f2
ILT
38692011-07-12 Ian Lance Taylor <iant@google.com>
3870
3871 PR gold/12980
3872 * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
3873 GLOB_DAT relocation rather than a RELATIVE relocation for a
3874 protected symbol when creating a shared library.
3875 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
3876 * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
3877 * testsuite/protected_main_1.cc (main): Test that protected
3878 function has same address.
3879
e2153196
ILT
38802011-07-11 Ian Lance Taylor <iant@google.com>
3881
3882 PR gold/12979
3883 * options.h (class General_options): Add -Bgroup.
3884 * options.cc (General_options::finalize): If -Bgroup is set,
3885 default to --unresolved-symbols=report-all.
3886 * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
3887 * target-reloc.h (issue_undefined_symbol_error): Handle
3888 --unresolved-symbols=report-all.
3889
6daf5215
ILT
38902011-07-08 Ian Lance Taylor <iant@google.com>
3891
3892 PR gold/11985
3893 * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
3894 if linker script discards key sections.
3895 (Layout::create_dynamic_symtab): Likewise.
3896 (Layout::assign_local_dynsym_offsets): Likewise.
3897 (Layout::sized_create_version_sections): Likewise.
3898 (Layout::create_interp): Likewise.
3899 (Layout::finish_dynamic_section): Likewise.
3900 (Layout::set_dynamic_symbol_size): Likewise.
3901
beabb2c6
ILT
39022011-07-08 Ian Lance Taylor <iant@google.com>
3903
3904 PR gold/12386
3905 * options.h (class General_options): Add --unresolved-symbols.
3906 * target-reloc.h (issue_undefined_symbol_error): Check
3907 --unresolved-symbols. Add comments.
3908
9c16daf1
ILT
39092011-07-08 Ian Lance Taylor <iant@google.com>
3910
3911 * testsuite/odr_violation2.cc (Ordering::operator()): Make
3912 expression more complex.
3913
191f1a2d
ILT
39142011-07-08 Ian Lance Taylor <iant@google.com>
3915
3916 PR gold/11317
3917 * target-reloc.h (issue_undefined_symbol_error): New inline
3918 function, broken out of relocate_section.
3919 (relocate_section): Call issue_undefined_symbol_error.
3920 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
3921 there is no TLS segment if we are about to issue an undefined
3922 symbol error.
3923 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
3924
62855347
ILT
39252011-07-08 Ian Lance Taylor <iant@google.com>
3926
3927 PR gold/12279
3928 * resolve.cc (Symbol_table::should_override): Add fromtype
3929 parameter. Change all callers. Give error when linking together
3930 TLS and non-TLS symbol.
3931 (Symbol_table::should_override_with_special): Add fromtype
3932 parameter. Change all callers.
3933 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
3934 there is no TLS segment if we have reported some errors.
3935 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
3936
67181c72
ILT
39372011-07-08 Ian Lance Taylor <iant@google.com>
3938
3939 PR gold/12372
3940 * target.h (Target::plt_address_for_global): New function.
3941 (Target::plt_address_for_local): New function.
3942 (Target::plt_section_for_global): Remove.
3943 (Target::plt_section_for_local): Remove.
3944 (Target::do_plt_address_for_global): New virtual function.
3945 (Target::do_plt_address_for_local): New virtual function.
3946 (Target::do_plt_section_for_global): Remove.
3947 (Target::do_plt_section_for_local): Remove.
3948 (Target::register_global_plt_entry): Add Symbol_table and Layout
3949 parameters.
3950 * output.cc (Output_data_got::Got_entry::write): Use
3951 plt_address_for_global and plt_address_for_local.
3952 * layout.cc (Layout::add_target_dynamic_tags): Use size and
3953 address of output section.
3954 * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
3955 got_irelative_, and irelative_count_ fields. Update
3956 declarations.
3957 (Output_data_plt_i386::has_irelative_section): New function.
3958 (Output_data_plt_i386::entry_count): Add irelative_count_.
3959 (Output_data_plt_i386::set_final_data_size): Likewise.
3960 (class Target_i386): Add got_irelative_ and rel_irelative_
3961 fields. Update declarations.
3962 (Target_i386::Target_i386): Initialize new fields.
3963 (Target_i386::do_plt_address_for_global): New function replacing
3964 do_plt_section_for_global.
3965 (Target_i386::do_plt_address_for_local): New function replacing
3966 do_plt_section_for_local.
3967 (Target_i386::got_section): Create got_irelative_.
3968 (Target_i386::rel_irelative_section): New function.
3969 (Output_data_plt_i386::Output_data_plt_i386): Initialize new
3970 fields. Don't define __rel_iplt_{start,end}.
3971 (Output_data_plt_i386::add_entry): Add symtab and layout
3972 parameters. Change all callers. Use different PLT and GOT for
3973 IFUNC symbols.
3974 (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
3975 layout parameters. Change all callers. Use different PLT and
3976 GOT.
3977 (Output_data_plt_i386::rel_tls_desc): Fix formatting.
3978 (Output_data_plt_i386::rel_irelative): New function.
3979 (Output_data_plt_i386::address_for_global): New function.
3980 (Output_data_plt_i386::address_for_local): New function.
3981 (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use
3982 IRELATIVE GOT when changing IFUNC GOT entries.
3983 (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
3984 reloc.
3985 (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
3986 if we didn't create an IRELATIVE GOT.
3987 (Target_i386::Relocate::relocate): Use plt_address_for_global and
3988 plt_address_for_local.
3989 (Target_i386::do_dynsym_value): Use plt_address_for_global.
3990 * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
3991 got_irelative_, and irelative_count_ fields. Update
3992 declarations.
3993 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
3994 Initialize new fields. Remove symtab parameter. Change all
3995 callers.
3996 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
3997 irelative_count_.
3998 (Output_data_plt_x86_64::has_irelative_section): New function.
3999 (Output_data_plt_x86_64::entry_count): Add irelative_count_.
4000 (class Target_x86_64): Add got_irelative_ and rel_irelative_
4001 fields. Update declarations.
4002 (Target_x86_64::Target_x86_64): Initialize new fields.
4003 (Target_x86_64::do_plt_address_for_global): New function replacing
4004 do_plt_section_for_global.
4005 (Target_x86_64::do_plt_address_for_local): New function replacing
4006 do_plt_section_for_local.
4007 (Target_x86_64::got_section): Create got_irelative_.
4008 (Target_x86_64::rela_irelative_section): New function.
4009 (Output_data_plt_x86_64::init): Remove symtab parameter. Change
4010 all callers. Don't create __rel_iplt_{start,end}.
4011 (Output_data_plt_x86_64::add_entry): Add symtab and layout
4012 parameters. Change all callers. Use different PLT and GOT for
4013 IFUNC symbols.
4014 (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
4015 layout parameters. Change all callers. Use different PLT and
4016 GOT.
4017 (Output_data_plt_x86_64::add_relocation): Add symtab and layout
4018 parameters. Change all callers. Use different PLT and GOT for
4019 IFUNC symbols.
4020 (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
4021 (Output_data_plt_x86_64::rela_irelative): New function.
4022 (Output_data_plt_x86_64::address_for_global): New function.
4023 (Output_data_plt_x86_64::address_for_local): New function.
4024 (Output_data_plt_x86_64::set_final_data_size): Likewise.
4025 (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
4026 (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
4027 (Target_x86_64::register_global_plt_entry): Add symtab and layout
4028 parameters.
4029 (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
4030 reloc.
4031 (Target_x86_64::do_finalize_sections): Create the __rela_iplt
4032 symbols if we didn't create an IRELATIVE GOT.
4033 (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
4034 plt_address_for_local.
4035 (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
4036 * testsuite/ifuncvar1.c: New test file.
4037 * testsuite/ifuncvar2.c: New test file.
4038 * testsuite/ifuncvar3.c: New test file.
4039 * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
4040 (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
4041 (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
4042 (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
4043 * testsuite/Makefile.in: Rebuild.
4044
33c15b45
CC
40452011-07-07 Cary Coutant <ccoutant@google.com>
4046
4047 * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
4048 (two_file_test_1_ndebug.o): Likewise.
4049 (two_file_test_1b_ndebug.o): Likewise.
4050 (two_file_test_2_ndebug.o): Likewise.
4051 (two_file_test_main_ndebug.o): Likewise.
4052 (incremental_test_2): Link with no-debug versions.
4053
f48b5fb7
CC
40542011-07-06 Cary Coutant <ccoutant@google.com>
4055
4056 * gold/incremental.cc
4057 (Output_section_incremental_inputs::write_info_blocks): Check for
4058 hidden and internal symbols.
4059
221597a5
CC
40602011-07-06 Cary Coutant <ccoutant@google.com>
4061
4062 * incremental.cc (Sized_incremental_binary::do_file_has_changed):
4063 Check disposition for startup file.
4064 (Incremental_inputs::report_command_line): Ignore
4065 --incremental-startup-unchanged option.
4066 * options.cc (General_options::parse_incremental_startup_unchanged):
4067 New function.
4068 (General_options::General_options): Initialize new data member.
4069 * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
4070 (General_options): Add --incremental-startup-unchanged option.
4071 (General_options::incremental_startup_disposition): New function.
4072 (General_options::incremental_startup_disposition_): New data member.
4073
e24719f6
CC
40742011-07-06 Cary Coutant <ccoutant@google.com>
4075
4076 * incremental.cc (Sized_incremental_binary::setup_readers): Pass
4077 input file index to Script_info ctor.
4078 (Sized_incremental_binary::do_file_has_changed): Find the
4079 command-line argument for files named in scripts.
4080 * incremental.h (Script_info::Script_info): New ctor
4081 with input file index.
4082 (Script_info::input_file_index): New function.
4083 (Script_info::input_file_index_): New data member.
4084 (Incremental_binary::get_library): Add const.
4085 (Incremental_binary::get_script_info): Add const.
4086 * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
4087 * testsuite/Makefile.am (incremental_test_5): New test case.
4088 (incremental_test_6): New test case.
4089 * testsuite/Makefile.in: Regenerate.
4090
8f7c81e8
CC
40912011-07-06 Cary Coutant <ccoutant@google.com>
4092
4093 * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
4094 debug output when command lines differ.
4095
9fbd3822
CC
40962011-07-06 Cary Coutant <ccoutant@google.com>
4097
4098 * incremental.cc (Incremental_inputs::report_command_line): Ignore
4099 --incremental-patch option.
4100 * layout.cc (Free_list::allocate): Extend allocation beyond original
4101 end if enabled.
4102 (Layout::make_output_section): Mark sections that should get
4103 patch space.
4104 * options.cc (parse_percent): New function.
4105 * options.h (parse_percent): New function.
4106 (DEFINE_percent): New macro.
4107 (General_options): Add --incremental-patch option.
4108 * output.cc (Output_section::Output_section): Initialize new data
4109 members.
4110 (Output_section::add_input_section): Print section name when out
4111 of patch space.
4112 (Output_section::add_output_section_data): Likewise.
4113 (Output_section::set_final_data_size): Add patch space when
4114 doing --incremental-full.
4115 (Output_section::do_reset_address_and_file_offset): Remove patch
4116 space.
4117 (Output_segment::set_section_list_addresses): Print debug output
4118 only if --incremental-update.
4119 * output.h (Output_section::set_is_patch_space_allowed): New function.
4120 (Output_section::is_patch_space_allowed_): New data member.
4121 (Output_section::patch_space_): New data member.
4122 * parameters.cc (Parameters::incremental_full): New function.
4123 * parameters.h (Parameters::incremental_full): New function
4124 * testsuite/Makefile.am (incremental_test_2): Add test for
4125 --incremental-patch option.
4126 * testsuite/Makefile.in: Regenerate.
4127 * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
4128 (t18): Remove function body.
4129
f6cccc2c
DK
41302011-07-05 Doug Kwan <dougkwan@google.com>
4131
4132 PR gold/12771
4133 * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
4134 Arm_Address type for relocation result.
4135 (Arm_relocate_functions::abs16): Use unaligned access. Also fix
4136 overflow check.
4137 (Arm_relocate_functions::abs32): Use unaligned access.
4138 (Arm_relocate_functions::rel32): Ditto.
4139 (Arm_relocate_functions::prel31): Ditto.
4140 (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
4141 * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
4142 static data relocations.
4143 * testsuite/Makefile.in: Regnerate.
4144 * testsuite/arm_unaligned_reloc.{s,sh}: New files.
4145
28a13fec
ILT
41462011-07-05 Ian Lance Taylor <iant@google.com>
4147
4148 PR gold/12392
4149 * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
4150 symbols if necessary.
4151 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4152
24d47b34
ILT
41532011-07-05 Ian Lance Taylor <iant@google.com>
4154
4155 PR gold/12952
4156 * resolve.cc (Symbol::override_base_with_special): Simply override
4157 version with special symbol version, ignoring previous version.
4158
41f9cbbe
ILT
41592011-07-05 Ian Lance Taylor <iant@google.com>
4160
4161 * object.cc (Sized_relobj_file::include_section_group): Add
4162 information to comment about signature location.
4163
886288f1
ILT
41642011-07-02 Ian Lance Taylor <iant@google.com>
4165
4166 PR gold/12957
4167 * options.h (class General_options): Add -f and -F.
4168 * options.cc (General_options::finalize): Fatal error if -f/-F
4169 are used without -shared.
4170 * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
4171
ae3a6d4f
ILT
41722011-07-02 Ian Lance Taylor <iant@google.com>
4173
4174 * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
4175
21131061
ILT
41762011-07-01 Ian Lance Taylor <iant@google.com>
4177
4178 PR gold/12525
4179 PR gold/12952
4180 * resolve.cc (Symbol::override_base_with_special): Don't override
4181 the version if the overriding symbol has a different name.
4182 * dynobj.cc (Versions::add_def): Add dynpool parameter. Change
4183 all callers. If we give an error about an undefined version,
4184 define the base version if necessary.
4185 * dynobj.h (class Versions): Update declaration.
4186 * testsuite/weak_alias_test_5.cc: New file.
4187 * testsuite/weak_alias_test.script: New file.
4188 * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
4189 and versioned_alias have the right value, and call t2.
4190 * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
4191 weak_alias_test_5.so.
4192 (weak_alias_test_LDADD): Likewise.
4193 (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
4194 * testsuite/Makefile.in: Rebuild.
4195
611062c0
ILT
41962011-07-01 Ian Lance Taylor <iant@google.com>
4197
4198 PR gold/12525
4199 * options.h (class General_options): Support -z notext.
4200 * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
4201 -Wl,-z,notext.
4202 (two_file_shared_nonpic.so): Likewise.
4203 (two_file_shared_mixed.so): Likewise.
4204 (two_file_shared_mixed_1.so): Likewise.
4205 (weak_undef_lib_nonpic.so): Likewise.
4206 (alt/weak_undef_lib_nonpic.so): Likewise.
4207 (tls_test_shared_nonpic.so): Likewise.
4208 * testsuite/Makefile.in: Rebuild.
4209
328c7c2f
ILT
42102011-07-01 Ian Lance Taylor <iant@google.com>
4211
4212 PR gold/12525
4213 * configure.ac: Test whether static linking works, setting
4214 the automake conditional HAVE_STATIC.
4215 * testsuite/Makefile.am: Disable tests using -static if
4216 HAVE_STATIC is not true.
4217 * configure, testsuite/Makefile.in: Rebuild.
4218
02d7cd44
ILT
42192011-07-01 Ian Lance Taylor <iant@google.com>
4220
4221 PR gold/12525
4222 * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
4223 Assert if we see DW_EH_PE_indirect.
4224 * target.h (Target::ehframe_datarel_base): New function.
4225 (Target::do_ehframe_datarel_base): New target function.
4226 * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
4227 * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
4228 function.
4229
07a60597
ILT
42302011-07-01 Ian Lance Taylor <iant@google.com>
4231
4232 PR gold/12571
4233 * options.h (class General_options): Add
4234 --ld-generated-unwind-info.
4235 * ehframe.cc (Fde::write): Add address parameter. Change all
4236 callers. If associated with PLT, fill in address and size.
4237 (Cie::set_output_offset): Only add merge mapping if there is an
4238 object.
4239 (Cie::write): Add address parameter. Change all callers.
4240 (Eh_frame::add_ehframe_for_plt): New function.
4241 * ehframe.h (class Fde): Update declarations. Move shndx_ and
4242 input_offset_ fields into union u_, with new plt field.
4243 (Fde::Fde): Adjust for new union field.
4244 (Fde::Fde) [Output_data version]: New constructor.
4245 (Fde::add_mapping): Only add merge mapping if there is an object.
4246 (class Cie): Update declarations.
4247 (class Eh_frame): Declare add_ehframe_for_plt.
4248 * layout.cc (Layout::layout_eh_frame): Break out code into
4249 make_eh_frame_section, and call it.
4250 (Layout::make_eh_frame_section): New function.
4251 (Layout::add_eh_frame_for_plt): New function.
4252 * layout.h (class Layout): Update declarations.
4253 * merge.cc (Merge_map::add_mapping): Add assertion.
4254 * i386.cc: Include "dwarf.h".
4255 (class Output_data_plt_i386): Make first_plt_entry,
4256 dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add
4257 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
4258 and plt_eh_frame_fde.
4259 (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
4260 boundary. Call add_eh_frame_for_plt if appropriate.
4261 * x86_64.cc: Include "dwarf.h".
4262 (class Output_data_plt_x86_64): Align to 16-byte boundary. Make
4263 first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add
4264 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
4265 and plt_eh_frame_fde.
4266 (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
4267 appropriate.
4268
14788a3f
ILT
42692011-06-29 Ian Lance Taylor <iant@google.com>
4270
4271 PR gold/12629
4272 * object.cc (Sized_relobj_file::layout_section): Change shdr
4273 parameter to be const.
4274 (Sized_relobj_file::layout_eh_frame_section): New function, broken
4275 out of do_layout.
4276 (Sized_relobj_file::do_layout): Defer .eh_frame sections if
4277 appropriate. Call layout_eh_frame_section.
4278 (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
4279 sections.
4280 * object.h (class Sized_relobj_file): Update declarations.
4281
6c21fce1
ILT
42822011-06-29 Ian Lance Taylor <iant@google.com>
4283
37e41b03 4284 PR gold/12652
6c21fce1
ILT
4285 * script.cc (Token::integer_value): Accept trailing M/m/K/k
4286 modifier.
4287 (Lex::gather_token): Accept trailing M/m/K/k for integers.
4288
4d5e4e62
ILT
42892011-06-29 Ian Lance Taylor <iant@google.com>
4290
4291 PR gold/12675
4292 * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
4293 SHT_X86_64_UNWIND.
4294 * layout.cc (Layout::layout_eh_frame): Likewise.
4295
886f533a
ILT
42962011-06-29 Ian Lance Taylor <iant@google.com>
4297
4298 PR gold/12695
4299 * layout.cc (Layout::symtab_section_shndx): New function.
4300 * layout.h (class Layout): Declare symtab_section_shndx.
4301 * output.cc (Output_section::write_header): Call it.
4302
f3ae1b28
ILT
43032011-06-29 Ian Lance Taylor <iant@google.com>
4304
4305 PR gold/12818
4306 * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
4307 symbols which are not used in a relocation.
4308
aecf301f
ILT
43092011-06-28 Ian Lance Taylor <iant@google.com>
4310
4311 PR gold/12898
4312 * layout.cc (Layout::segment_precedes): Don't crash if a linker
4313 script create indistinguishable segments.
4314 (Layout::set_segment_offsets): Use stable_sort when sorting
4315 segments. Pass this to Compare_segments constructor.
4316 * layout.h (class Layout): Make segment_precedes non-static.
4317 (class Compare_segments): Change from struct to class. Add
4318 layout_ field. Add constructor.
4319 * script-sections.cc
4320 (Script_sections::attach_sections_using_phdrs_clause): Rename
4321 local orphan to is_orphan. Don't report failure to put empty
4322 section in segment. On attachment failure, report name of
4323 section, and attach to first PT_LOAD segment.
4324
03ef7571
ILT
43252011-06-28 Ian Lance Taylor <iant@google.com>
4326
4327 PR gold/12934
4328 * target-select.cc (Target_selector::Target_selector): Add
4329 emulation parameter. Change all callers.
4330 (select_target_by_bfd_name): Rename from select_target_by_name.
4331 Change all callers.
4332 (select_target_by_emulation): New function.
4333 (supported_emulation_names): New function.
4334 * target-select.h (class Target_selector): Add emulation_ field.
4335 Update declarations.
4336 (Target_selector::recognize_by_bfd_name): Rename from
4337 recognize_by_name. Change all callers.
4338 (Target_selector::supported_bfd_names): Rename from
4339 supported_names. Change all callers.
4340 (Target_selector::recognize_by_emulation): New function.
4341 (Target_selector::supported_emulations): New function.
4342 (Target_selector::emulation): New function.
4343 (Target_selector::do_recognize_by_bfd_name): Rename from
4344 do_recognize_by_name. Change all callers.
4345 (Target_selector::do_supported_bfd_names): Rename from
4346 do_supported_names. Change all callers.
4347 (Target_selector::do_recognize_by_emulation): New function.
4348 (Target_selector::do_supported_emulations): New function.
4349 (select_target_by_bfd_name): Change name in declaration.
4350 (select_target_by_emulation): Declare.
4351 (supported_emulation_names): Declare.
4352 * parameters.cc (parameters_force_valid_target): Try to find
4353 target based on emulation from -m option.
4354 * options.h (class General_options): Change doc string for -m.
4355 * options.cc (help): Print emulations.
4356 (General_options::parse_V): Likewise.
4357 * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
4358 Add emulation parameter. Change all callers.
4359
200b2bb9
ILT
43602011-06-28 Ian Lance Taylor <iant@google.com>
4361
4362 * target.h (class Target): Add osabi_ field.
4363 (Target::osabi): New function.
4364 (Target::set_osabi): New function.
4365 (Target::Target): Initialize osabi_.
4366 (Target::do_adjust_elf_header): Make pure virtual.
4367 (Sized_target::do_adjust_elf_header): Declare.
4368 * target.cc (Sized_target::do_adjust_elf_header): New function.
4369 (class Sized_target): Instantiate all versions.
4370 * freebsd.h (class Target_freebsd): Remove.
4371 (Target_selector_freebsd::do_recognize): Call set_osabi on
4372 Target.
4373 (Target_selector_freebsd::do_recognize_by_name): Likewise.
4374 (Target_selector_freebsd::set_osabi): Remove.
4375 * i386.cc (class Target_i386): Inherit from Sized_target rather
4376 than Target_freebsd.
4377 * x86_64.cc (class Target_x86_64): Likewise.
4378
b3ce541e
ILT
43792011-06-28 Ian Lance Taylor <iant@google.com>
4380
4381 * target.h (Target::can_check_for_function_pointers): Rewrite.
4382 Make non-virtual.
4383 (Target::can_icf_inline_merge_sections): Likewise.
4384 (Target::section_may_have_icf_unsafe_poineters): Likewise.
4385 (Target::Target_info): Add can_icf_inline_merge_sections field.
4386 (Target::do_can_check_for_function_pointers): New virtual
4387 function.
4388 (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
4389 * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
4390 from can_check_for_function_pointers, move in file.
4391 (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
4392 section_may_have_icf_unsafe_poineters, move in file.
4393 (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
4394 * i386.cc (Target_i386::do_can_check_for_function_pointers):
4395 Rename from can_check_for_function_pointers, move in file.
4396 (Target_i386::can_icf_inline_merge_sections): Remove.
4397 (Target_i386::i386_info): Initialize
4398 can_icf_inline_merge_sections.
4399 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
4400 Initialize can_icf_inline_merge_sections.
4401 * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
4402 * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
4403 Rename from can_check_for_function_pointers, move in file.
4404 (Target_x86_64::can_icf_inline_merge_sections): Remove.
4405 (Target_x86_64::x86_64_info): Initialize
4406 can_icf_inline_merge_sections.
4407 * testsuite/testfile.cc (Target_test::test_target_info):
4408 Likewise.
4409 * icf.cc (get_section_contents): Correct formatting.
4410
6d1c4efb
ILT
44112011-06-27 Ian Lance Taylor <iant@google.com>
4412
4413 * symtab.cc (Symbol::versioned_name): New function.
4414 (Symbol_table::add_to_final_symtab): Use versioned_name when
4415 appropriate.
4416 (Symbol_table::sized_write_symbol): Likewise.
4417 * symtab.h (class Symbol): Declare versioned_name.
4418 * stringpool.h (class Stringpool_template): Add variant of add
4419 which takes a std::basic_string.
4420 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
4421 (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
4422 (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
4423 (ver_test_12.o): New target.
4424 * testsuite/Makefile.in: Rebuild.
4425
57eb9b50
DK
44262011-06-27 Doug Kwan <dougkwan@google.com>
4427
4428 * arm.cc (Arm_relocate_functions::thm_jump8,
4429 Arm_relocate_functions::thm_jump11): Use a wider signed
4430 type to compute offset.
4431 * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
4432 arm_thm_jump8.
4433 * testsuite/Makefile.in: Regenerate.
4434 * testsuite/arm_branch_in_range.sh: Check test results of
4435 arm_thm_jump11 and arm_thm_jump8.
4436 * testsuite/arm_thm_jump11.s: New test source file.
4437 * testsuite/arm_thm_jump11.t: New linker script.
4438 * testsuite/arm_thm_jump8.s: New test source file.
4439 * testsuite/arm_thm_jump8.t: New linker script.
4440
487b39df
ILT
44412011-06-24 Ian Lance Taylor <iant@google.com>
4442
4443 * layout.cc: Include "object.h".
4444 (ctors_sections_in_init_array): New static variable.
4445 (Layout::is_ctors_in_init_array): New function.
4446 (Layout::layout): Add entry to ctors_sections_in_init_array if
4447 appropriate.
4448 * layout.h (class Layout): Declare is_ctors_in_init_array.
4449 * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
4450 is_ctors_reverse_view is set.
4451 (Sized_relobj_file::write_sections): Add layout parameter. Change
4452 all callers. Set is_ctors_reverse_view field of View_size.
4453 (Sized_relobj_file::reverse_words): New function.
4454 * object.h (Sized_relobj_file::View_size): Add
4455 is_ctors_reverse_view field.
4456 (class Sized_relobj_file): Update declarations.
4457 * testsuite/initpri3.c: New test.
4458 * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
4459 initpri3b.
4460 (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
4461 (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
4462 (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
4463 (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
4464 * testsuite/Makefile.in: Rebuild.
4465
472076e4
CC
44662011-06-24 Cary Coutant <ccoutant@google.com>
4467
4468 * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
4469 (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
4470 (debug_msg_cdebug.err): New targets.
4471 * testsuite/Makefile.in: Regenerate.
4472 * testsuite/debug_msg.sh: Check output of link with compressed debug.
4473 Fix checks for link with shared library.
4474
a60af0db
DK
44752011-06-24 Doug Kwan <dougkwan@google.com>
4476
4477 * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
4478 skip empty text sections.
4479 * testsuite/arm_exidx_test.s: Test handling of an empty text section.
4480
5393d741
ILT
44812011-06-22 Ian Lance Taylor <iant@google.com>
4482
4483 PR gold/12910
4484 * options.h (class General_options): Add --ctors-in-init-array.
4485 * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
4486 friends as SHT_PROGBITS for merging sections.
4487 (Layout::layout): Remove special handling of .init_array and
4488 friends. Don't sort if doing relocatable link. Sort for .ctors
4489 and .dtors if ctors_in_init_array.
4490 (Layout::make_output_section): Force correct section types for
4491 .init_array and friends. Don't sort if doing relocatable link,
4492 Don't sort .ctors and .dtors if ctors_in_init_array.
4493 (Layout::section_name_mapping): Remove .ctors. and .dtorso.
4494 (Layout::output_section_name): Add relobj parameter. Change all
4495 callers. Handle .ctors. and .dtors. in code rather than table.
4496 Handle .ctors and .dtors if ctors_in_init_array.
4497 (Layout::match_file_name): New function, moved from output.cc.
4498 * layout.h (class Layout): Update declarations.
4499 * output.cc: Include "layout.h".
4500 (Input_section_sort_entry::get_priority): New function.
4501 (Input_section_sort_entry::match_file_name): Just call
4502 Layout::match_file_name.
4503 (Output_section::Input_section_sort_init_fini_compare::operator()):
4504 Handle .ctors and .dtors. Sort by explicit priority rather than
4505 by name.
4506 * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
4507 * testsuite/initpri2.c: New test.
4508 * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
4509 (check_PROGRAMS): Add initpri2.
4510 (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
4511 (initpri2_LDFLAGS, initpri2_LDADD): New variables.
4512 * configure, testsuite/Makefile.in: Rebuild.
4513
e1f74f98
ILT
45142011-06-19 Ian Lance Taylor <iant@google.com>
4515
4516 PR gold/12880
4517 * layout.cc (Layout::attach_allocated_section_to_segment): Add a
4518 .interp section to a PT_INTERP segment even if we have seen a
4519 --dynamic-linker option. Don't do it if we have seen a PHDRS
4520 clause in a linker script.
4521 (Layout::finalize): Don't create a .interp section if we've
4522 already create a PT_INTERP segment.
4523 (Layout::create_interp): Always call choose_output_section (revert
4524 patch of 2011-06-17). Don't create PT_INTERP segment.
4525 * script-sections.cc
4526 (Script_sections::create_note_and_tls_segments): Add a .interp
4527 section to a PT_INTERP segment even if we have seen a
4528 --dynamic-linker option.
4529
766f91bb
ILT
45302011-06-18 Ian Lance Taylor <iant@google.com>
4531
4532 * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
4533 merely because a non-PT_LOAD segment has a dynamic reloc.
4534
0d212c3a
ILT
45352011-06-18 Ian Lance Taylor <iant@google.com>
4536
4537 * layout.cc (Layout::finish_dynamic_section): Don't create
4538 DT_FLAGS entry if not needed.
4539
911a5072
ILT
45402011-06-18 Ian Lance Taylor <iant@google.com>
4541
4542 PR gold/12745
4543 * layout.cc (Layout::layout_eh_frame): Correct handling of
4544 writable .eh_frame section.
4545
534b4e5f
ILT
45462011-06-17 Ian Lance Taylor <iant@google.com>
4547
4548 PR gold/12893
4549 * resolve.cc (Symbol_table::resolve): Don't give an error if a
4550 symbol is redefined with the exact same object and value.
4551
10b4f102
ILT
45522011-06-17 Ian Lance Taylor <iant@google.com>
4553
4554 PR gold/12880
4555 * layout.h (class Layout): Add interp_segment_ field.
4556 * layout.cc (Layout::Layout): Initialize interp_segment_ field.
4557 (Layout::attach_allocated_section_to_segment): If making shared
4558 library, put .interp section in PT_INTERP segment.
4559 (Layout::finalize): Also call create_interp if -dynamic-linker
4560 option was used.
4561 (Layout::create_interp): Assert that there is no PT_INTERP
4562 segment. If not using a SECTIONS clause, use make_output_section.
4563 (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
4564 * script-sections.cc
4565 (Script_sections::create_note_and_tls_segments): If making shared
4566 library, put .interp section in PT_INTERP segment.
4567
a29b0dad
ILT
45682011-06-17 Ian Lance Taylor <iant@google.com>
4569
e588ea8d
ILT
4570 * object.cc (Sized_relobj_file::do_layout): Keep warning sections
4571 when making a shared library.
4572
45732011-06-17 Ian Lance Taylor <iant@google.com>
4574
4575 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
4576 parameter. Change all callers. Don't issue warning about PC32
4577 against locally defined symbol.
a29b0dad 4578
9d3b0698
ILT
45792011-06-16 Ian Lance Taylor <iant@google.com>
4580
4581 * symtab.cc (Warnings::issue_warning): Don't warn if relocation
4582 occurs in same object.
4583
85b0f90c
AM
45842011-06-14 Alan Modra <amodra@gmail.com>
4585
4586 * po/POTFILES.in: Regenerate.
4587
a94907d9
ILT
45882011-06-09 Ian Lance Taylor <iant@google.com>
4589
4590 * script-sections.cc
4591 (Orphan_output_section::set_section_addresses): For a relocatable
4592 link set address to 0.
4593
4fb3a1c3
CC
45942011-06-09 Cary Coutant <ccoutant@google.com>
4595
4596 PR gold/12804
4597 * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
4598 used with --compress-debug-sections.
4599 * gold/object.cc (Sized_relobj_file::do_layout): Report
4600 uncompressed size of compressed input sections.
4601
61220854
CC
46022011-06-08 Cary Coutant <ccoutant@google.com>
4603
4604 PR gold/12804
4605 * testsuite/two_file_test_2_v1.cc: Change initialization of
4606 v2 to keep it in .data.
4607
e6455dfb
CC
46082011-06-07 Cary Coutant <ccoutant@google.com>
4609
4610 * common.cc (Symbol_table::do_allocate_commons_list): Call
4611 gold_fallback.
4612 * errors.cc (Errors::fatal): Adjust call to gold_exit.
4613 (Errors::fallback): New function.
4614 (gold_fallback): New function.
4615 * errors.h (Errors::fallback): New function.
4616 * gold.cc (gold_exit): Change status parameter to enum; adjust
4617 all callers.
4618 (queue_initial_tasks): Call gold_fallback.
4619 * gold.h: Include cstdlib.
4620 (Exit_status): New enum type.
4621 (gold_exit): Change status parameter to enum.
4622 (gold_fallback): New function.
4623 * layout.cc (Layout::set_section_offsets): Call gold_fallback.
4624 (Layout::create_symtab_sections): Likewise.
4625 (Layout::create_shdrs): Likewise.
4626 * main.cc (main): Adjust call to gold_exit.
4627 * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
4628 (Output_data_got::add_got_entry_pair): Likewise.
4629 (Output_section::add_input_section): Likewise.
4630 (Output_section::add_output_section_data): Likewise.
4631 (Output_segment::set_section_list_addresses): Likewise.
4632 * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
4633
fb0e076f
CC
46342011-06-07 Cary Coutant <ccoutant@google.com>
4635
4636 * layout.cc (Layout::set_segment_offsets): Don't adjust layout
4637 for incremental links.
4638 * output.cc (Output_segment::set_section_list_addresses): Remove
4639 FIXME and test for TLS or BSS.
4640
a5ee4d5d
CC
46412011-06-07 Cary Coutant <ccoutant@google.com>
4642
4643 * testsuite/Makefile.am: Add incremental_copy_test,
4644 incremental_common_test_1.
4645 * testsuite/Makefile.in: Regenerate.
4646 * testsuite/common_test_1_v1.c: New source file.
4647 * testsuite/common_test_1_v2.c: New source file.
4648 * testsuite/copy_test_v1.cc: New source file.
4649
5146f448
CC
46502011-06-07 Cary Coutant <ccoutant@google.com>
4651
4652 * common.cc (Symbol_table::do_allocate_commons_list): For incremental
4653 update, allocate common from bss section's free list.
4654 * incremental-dump.cc (dump_incremental_inputs): Print flag for
4655 linker-defined symbols.
4656 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
4657 Skip GOT and PLT entries that are no longer referenced.
4658 (Output_section_incremental_inputs::write_info_blocks): Mark
4659 linker-defined symbols.
4660 (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
4661 * output.cc (Output_section::allocate): New function.
4662 * output.h (Output_section::allocate): New function.
4663 * resolve.cc (Symbol_table::report_resolve_problem): Add case for
4664 linker-defined symbols.
4665 (Symbol::override_base_with_special): Copy is_predefined_ flag.
4666 * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
4667 (Symbol::init_base_output_data): Likewise.
4668 (Symbol::init_base_output_segment): Likewise.
4669 (Symbol::init_base_constant): Likewise.
4670 (Sized_symbol::init_output_data): Likewise.
4671 (Sized_symbol::init_output_segment): Likewise.
4672 (Sized_symbol::init_constant): Likewise.
4673 (Symbol_table::do_define_in_output_data): Likewise.
4674 (Symbol_table::do_define_in_output_segment): Likewise.
4675 (Symbol_table::do_define_as_constant): Likewise.
4676 * symtab.h (Symbol::is_predefined): New function.
4677 (Symbol::init_base_output_data): Add is_predefined parameter.
4678 (Symbol::init_base_output_segment): Likewise.
4679 (Symbol::init_base_constant): Likewise.
4680 (Symbol::is_predefined_): New data member.
4681 (Sized_symbol::init_output_data): Add is_predefined parameter.
4682 (Sized_symbol::init_output_segment): Likewise.
4683 (Sized_symbol::init_constant): Likewise.
4684 (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
4685
26d3c67d
CC
46862011-06-07 Cary Coutant <ccoutant@google.com>
4687
4688 * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
4689 instead of emit_copy_reloc.
4690 (Copy_relocs::emit_copy_reloc): Refactor.
4691 (Copy_relocs::make_copy_reloc): New function.
4692 (Copy_relocs::add_copy_reloc): Remove.
4693 * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
4694 section.
4695 (Copy_relocs::make_copy_reloc): New function.
4696 (Copy_relocs::add_copy_reloc): Remove.
4697 * gold.cc (queue_middle_tasks): Emit old COPY relocations from
4698 unchanged input files.
4699 * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
4700 * incremental.cc (Sized_incremental_binary::do_reserve_layout):
4701 Reserve BSS space for COPY relocations.
4702 (Sized_incremental_binary::do_emit_copy_relocs): New function.
4703 (Output_section_incremental_inputs::write_info_blocks): Record
4704 whether a symbol is copied from a shared object.
4705 (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
4706 * incremental.h (enum Incremental_shlib_symbol_flags): New type.
4707 (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
4708 (Incremental_input_entry_reader::get_output_symbol_index): Add
4709 is_copy parameter.
4710 (Incremental_binary::emit_copy_relocs): New function.
4711 (Incremental_binary::do_emit_copy_relocs): New function.
4712 (Sized_incremental_binary::Sized_incremental_binary): Initialize
4713 new data member.
4714 (Sized_incremental_binary::add_copy_reloc): New function.
4715 (Sized_incremental_binary::do_emit_copy_relocs): New function.
4716 (Sized_incremental_binary::Copy_reloc): New struct.
4717 (Sized_incremental_binary::Copy_relocs): New typedef.
4718 (Sized_incremental_binary::copy_relocs_): New data member.
4719 * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
4720 * symtab.h (Symbol_table::add_from_incrobj): Change return type.
4721 * target.h (Sized_target::emit_copy_reloc): New function.
4722 * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
4723
7cdb37d9
CC
47242011-06-02 Cary Coutant <ccoutant@google.com>
4725
4726 PR gold/12163
4727 * gold/archive.cc (Archive::Archive): Initialize new data member.
4728 (Archive::include_all_members): Return if archive has already been
4729 included.
4730 * gold/archive.h (Archive::include_all_members_): New data member.
4731
cc643b88
NC
47322011-06-02 Nick Clifton <nickc@redhat.com>
4733
4734 * dynobj.h: Fix spelling mistake in comment.
4735 * output.cc: Likewise.
4736
f62a3ca7 47372011-05-31 Doug Kwan <dougkwan@google.com>
2e702c99 4738 Asier Llano
f62a3ca7
DK
4739
4740 PR gold/12826
cc643b88 4741 * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
f62a3ca7
DK
4742 arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
4743 * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up. Remove
4744 redundant arm_exidx_test.so.
4745 * testsuite/Makefile.in: Regenerate.
4746 (check_SCRIPTS): Add pr12826.sh
4747 (check_DATA): Add pr12826.stdout
4748 (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
4749 * testsuite/pr12826.sh: New file.
4750 * testsuite/pr12826_1.s: Ditto.
4751 * testsuite/pr12826_1.s: Ditto.
4752
8dbe1edc
ILT
47532011-05-30 Ian Lance Taylor <iant@google.com>
4754
4755 * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
4756 sections.
4757
c49875be
ILT
47582011-05-29 Ian Lance Taylor <iant@google.com>
4759
4760 PR gold/12804
4761 * testsuite/Makefile.am: Use different file name for two_file_test
4762 temporary file for each incremental test.
4763 * testsuite/Makefile.in: Rebuild.
4764
69d53f7a
ILT
47652011-05-29 Ian Lance Taylor <iant@google.com>
4766
4767 * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
4768 binary input file is empty.
4769
41d0ab5f
ILT
47702011-05-27 Ian Lance Taylor <iant@google.com>
4771
4772 * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
4773 (ver_test_9.so): Likewise.
4774 * testsuite/Makefile.in: Rebuild.
4775
89d8a36b
CC
47762011-05-26 Cary Coutant <ccoutant@google.com>
4777
4778 * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
4779 * incremental.cc (Incremental_inputs::report_input_section): Fix
4780 comment, indentation.
4781 (Incremental_inputs::report_comdat_group): New function.
4782 (Output_section_incremental_inputs::set_final_data_size): Adjust size
4783 of data for incremental input file entry.
4784 (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
4785 group count, COMDAT group signatures.
4786 (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
4787 an unchanged input file.
4788 * incremental.h (Incremental_object_entry::Incremental_object_entry):
4789 Initialize new data member.
4790 (Incremental_object_entry::add_comdat_group): New function.
4791 (Incremental_object_entry::get_comdat_group_count): New function.
4792 (Incremental_object_entry::get_comdat_signature_key): New function.
4793 (Incremental_object_entry::groups_): New data member.
4794 (Incremental_inputs::report_comdat_group): New function.
4795 (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
4796 data for incremental input file entry.
4797 (Incremental_input_entry_reader::get_comdat_group_count): New function.
4798 (Incremental_input_entry_reader::get_input_section): Adjust size of
4799 data for incremental input file entry.
4800 (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
4801 (Incremental_input_entry_reader::get_comdat_group_signature): New
4802 function.
4803 * object.cc (Sized_relobj::include_section_group): Report kept
4804 COMDAT groups for incremental links.
4805
1706a06f
ILT
48062011-05-24 David Meyer <pdox@google.com>
4807
4808 * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
4809 with name parameter. Add found_name parameter.
4810 * fileread.cc (Input_file::find_file): Adjust code accordingly.
4811 * dirsearch.h (class Dirsearch): Update declaration.
4812
a10ae760
ILT
48132011-05-24 Ian Lance Taylor <iant@google.com>
4814
4815 * archive.cc (Library_base::should_include_member): Pull in object
4816 from archive if it defines the entry symbol.
4817 * parameters.cc (Parameters::entry): New function.
4818 * parameters.h (class Parameters): Declare entry.
4819 * output.h (class Output_file_header): Remove entry_ field.
4820 * output.cc (Output_file_header::Output_file_header): Remove entry
4821 parameter. Change all callers.
4822 (Output_file_header::entry): Use parameters->entry.
4823 * gold.cc (queue_middle_tasks): Likewise.
4824 * plugin.cc (Plugin_hook::run): Likewise.
4825
aa92d6ed
CC
48262011-05-24 Cary Coutant <ccoutant@google.com>
4827
4828 * gold.cc (queue_initial_tasks): Pass incremental base filename
4829 to Output_file::open_base_file; don't print error message.
4830 * incremental-dump.cc (main): Adjust call to
4831 Output_file::open_for_modification.
4832 * incremental-dump.cc (main): Likewise.
4833 * incremental.cc (Incremental_inputs::report_command_line):
4834 Ignore --incremental-base option when comparing command lines.
4835 Ignore parameter when given as separate argument.
4836 * options.h (class General_options): Add --incremental-base.
4837 * output.cc (Output_file::Output_file):
4838 (Output_file::open_base_file): Add base_name and writable parameters;
4839 read base file into new file; print error message here.
4840 (Output_file::map_no_anonymous): Add writable parameter; adjust all
4841 callers.
4842 * output.h (Output_file::open_for_modification): Rename to...
4843 (Output_file::open_base_file): ...this; add base_name and
4844 writable parameters; adjust all callers.
4845 (Output_file::map_no_anonymous): Add writable parameter; adjust all
4846 callers.
4847 * testsuite/Makefile.am (incremental_test_4): Test
4848 --incremental-base.
4849 * testsuite/Makefile.in: Regenerate.
4850
2eedd706
CC
48512011-05-24 Cary Coutant <ccoutant@google.com>
4852
4853 * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
4854 incremental_test_4.
4855 * testsuite/Makefile.in: Regenerate.
4856 * testsuite/two_file_test_1_v1.cc: New test source file.
4857 * testsuite/two_file_test_1b_v1.cc: New test source file.
4858 * testsuite/two_file_test_2_v1.cc: New test source file.
4859
0f1c85a6
CC
48602011-05-24 Cary Coutant <ccoutant@google.com>
4861
4862 * dynobj.h (Dynobj::do_dynobj): New function.
4863 * incremental-dump.cc (dump_incremental_inputs): Print as_needed
4864 flag and soname for shared objects.
4865 * incremental.cc (Incremental_inputs::report_object): Make
4866 either Incremental_object_entry or Incremental_dynobj_entry; add
4867 soname to string table.
4868 (Incremental_inputs::report_input_section): Add assertion.
4869 (Output_section_incremental_inputs::set_final_data_size): Adjust
4870 type of input file entry for shared libraries; adjust size of
4871 shared library info entry.
4872 (Output_section_incremental_inputs::write_input_files): Write
4873 as_needed flag for shared libraries.
4874 (Output_section_incremental_inputs::write_info_blocks): Adjust type
4875 of input file entry for shared libraries; write soname.
4876 (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
4877 soname from incremental info.
4878 * incremental.h (enum Incremental_input_flags): Add
4879 INCREMENTAL_INPUT_AS_NEEDED.
4880 (Incremental_input_entry::Incremental_input_entry): Initialize new
4881 data member.
4882 (Incremental_input_entry::set_as_needed): New function.
4883 (Incremental_input_entry::as_needed): New function.
4884 (Incremental_input_entry::do_dynobj_entry): New function.
4885 (Incremental_input_entry::as_needed_): New data member.
4886 (Incremental_object_entry::Incremental_object_entry): Don't check
4887 for shared library.
4888 (Incremental_object_entry::do_type): Likewise.
4889 (class Incremental_dynobj_entry): New class.
4890 (Incremental_input_entry_reader::as_needed): New function.
4891 (Incremental_input_entry_reader::get_soname): New function.
4892 (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
4893 (Incremental_input_entry_reader::get_output_symbol_index): Adjust
4894 size of shared library info entry.
58797674 4895 * layout.cc (Layout::finish_dynamic_section): Don't test for
0f1c85a6
CC
4896 incremental link when adding DT_NEEDED entries.
4897 * object.h (Object::Object): Initialize new data member.
4898 (Object::dynobj): New function.
4899 (Object::set_as_needed): New function.
4900 (Object::as_needed): New function.
4901 (Object::do_dynobj): New function.
4902 (Object::as_needed_): New data member.
4903
6fa2a40b
CC
49042011-05-24 Cary Coutant <ccoutant@google.com>
4905
4906 * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
4907 info; adjust display of GOT entries.
4908 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
4909 vector of input objects; remove file_status_.
4910 (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
4911 (Sized_incremental_binary::do_process_got_plt): Adjust calls to
4912 got_plt reader; call target hooks to reserve GOT entries.
4913 (Output_section_incremental_inputs::set_final_data_size): Adjust size
4914 of input file info header and GOT info entry.
4915 (Output_section_incremental_inputs::write_info_blocks): Write dynamic
4916 relocation info.
4917 (Got_plt_view_info::got_descriptor): Remove.
4918 (Got_plt_view_info::sym_index): New data member.
4919 (Got_plt_view_info::input_index): New data member.
4920 (Local_got_offset_visitor::visit): Write input file index.
4921 (Global_got_offset_visitor::visit): Write 0 for input file index.
4922 (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
4923 with sym_index and input_index.
4924 (Output_section_incremental_inputs::write_got_plt): Adjust size of
4925 incremental info GOT entry; replace got_descriptor with input_index.
4926 (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
4927 map from input file index to object.
4928 (Sized_relobj_incr::do_layout): Replace direct data member reference
4929 with accessor function.
4930 (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
4931 * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
4932 Adjust size of input file info header.
4933 (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
4934 (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
4935 (Incremental_input_entry_reader::get_input_section): Adjust size of
4936 input file info header.
4937 (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
4938 of incremental info GOT entry.
4939 (Incremental_got_plt_reader::get_got_desc): Remove.
4940 (Incremental_got_plt_reader::get_got_symndx): New function.
4941 (Incremental_got_plt_reader::get_got_input_index): New function.
4942 (Sized_incremental_binary::Sized_incremental_binary): Remove
4943 file_status_; add input_objects_.
4944 (Sized_incremental_binary::~Sized_incremental_binary): Remove.
4945 (Sized_incremental_binary::set_file_is_unchanged): Remove.
4946 (Sized_incremental_binary::file_is_unchanged): Remove.
4947 (Sized_incremental_binary::set_input_object): New function.
4948 (Sized_incremental_binary::input_object): New function.
4949 (Sized_incremental_binary::file_status_): Remove.
4950 (Sized_incremental_binary::input_objects_): New data member.
4951 (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
4952 references.
4953 (Sized_relobj_incr::invalid_address): Move to base class.
4954 (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
4955 class.
4956 (Sized_relobj_incr::do_output_section_offset): Likewise.
4957 (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
4958 (Sized_relobj_incr::section_offsets_): Likewise.
4959 * object.cc (Sized_relobj::do_for_all_local_got_entries): New
4960 function.
4961 (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
4962 (Sized_relobj_file::layout_section): Replace refs to section_offsets_
4963 with accessor function.
4964 (Sized_relobj_file::do_layout): Likewise.
4965 (Sized_relobj_file::do_layout_deferred_sections): Likewise.
4966 (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
4967 (Sized_relobj_file::compute_final_local_value): Replace refs to
4968 section_offsets_ with accessor function.
4969 (Sized_relobj_file::do_finalize_local_symbols): Likewise.
4970 * object.h (Relobj::Relobj): Initialize new data members.
4971 (Relobj::add_dyn_reloc): New function.
4972 (Relobj::first_dyn_reloc): New function.
4973 (Relobj::dyn_reloc_count): New function.
4974 (Relobj::first_dyn_reloc_): New data member.
4975 (Relobj::dyn_reloc_count_): New data member.
4976 (Sized_relobj): Rename Sized_relobj_base to this; adjust all
4977 references.
4978 (Sized_relobj::Address): New typedef.
4979 (Sized_relobj::invalid_address): Move here from child class.
4980 (Sized_relobj::Sized_relobj): Initialize new data members.
4981 (Sized_relobj::sized_relobj): New function.
4982 (Sized_relobj::is_output_section_offset_invalid): Move here from
4983 child class.
4984 (Sized_relobj::get_output_section_offset): Likewise.
4985 (Sized_relobj::local_has_got_offset): Likewise.
4986 (Sized_relobj::local_got_offset): Likewise.
4987 (Sized_relobj::set_local_got_offset): Likewise.
4988 (Sized_relobj::do_for_all_local_got_entries): Likewise.
4989 (Sized_relobj::clear_got_offsets): New function.
4990 (Sized_relobj::section_offsets): Move here from child class.
4991 (Sized_relobj::do_output_section_offset): Likewise.
4992 (Sized_relobj::do_set_section_offset): Likewise.
4993 (Sized_relobj::Local_got_offsets): Likewise.
4994 (Sized_relobj::local_got_offsets_): Likewise.
4995 (Sized_relobj::section_offsets_): Likewise.
4996 (Sized_relobj_file): Rename Sized_relobj to this; adjust all
4997 references.
4998 (Sized_relobj_file::is_output_section_offset_invalid): Move to base
4999 class.
5000 (Sized_relobj_file::sized_relobj): New function
5001 (Sized_relobj_file::local_has_got_offset): Move to base class.
5002 (Sized_relobj_file::local_got_offset): Likewise.
5003 (Sized_relobj_file::set_local_got_offset): Likewise.
5004 (Sized_relobj_file::get_output_section_offset): Likewise.
5005 (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
5006 (Sized_relobj_file::do_output_section_offset): Likewise.
5007 (Sized_relobj_file::do_set_section_offset): Likewise.
5008 (Sized_relobj_file::Local_got_offsets): Likewise.
5009 (Sized_relobj_file::local_got_offsets_): Likewise.
5010 (Sized_relobj_file::section_offsets_): Likewise.
5011 * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
5012 (all constructors).
5013 (set_needs_dynsym_index): Convert relobj to derived class pointer.
5014 (Output_reloc::get_symbol_index): Likewise.
5015 (Output_reloc::local_section_offset): Likewise.
5016 (Output_reloc::get_address): Likewise.
5017 (Output_reloc::symbol_value): Likewise.
5018 (Output_data_got::reserve_slot): Move to class definition.
5019 (Output_data_got::reserve_local): New function.
5020 (Output_data_got::reserve_slot_for_global): Remove.
5021 (Output_data_got::reserve_global): New function.
5022 * output.h (Output_reloc::Output_reloc): Adjust type of relobj
5023 (all constructors, two instantiations).
5024 (Output_reloc::get_relobj): New function (two instantiations).
5025 (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
5026 (Output_data_reloc_base::add): Convert relobj to derived class pointer.
5027 (Output_data_reloc::add_global): Adjust type of relobj.
5028 (Output_data_reloc::add_global_relative): Likewise.
5029 (Output_data_reloc::add_symbolless_global_addend): Likewise.
5030 (Output_data_reloc::add_local): Likewise.
5031 (Output_data_reloc::add_local_relative): Likewise.
5032 (Output_data_reloc::add_symbolless_local_addend): Likewise.
5033 (Output_data_reloc::add_local_section): Likewise.
5034 (Output_data_reloc::add_output_section): Likewise.
5035 (Output_data_reloc::add_absolute): Likewise.
5036 (Output_data_reloc::add_target_specific): Likewise.
5037 (Output_data_got::reserve_slot): Move definition here.
5038 (Output_data_got::reserve_local): New function.
5039 (Output_data_got::reserve_global): New function.
5040 * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
5041 section_offsets_ with accessor function.
5042 (Sized_relobj_file::write_sections): Likewise.
5043 (Sized_relobj_file::do_relocate_sections): Likewise.
5044 * target.h (Sized_target::reserve_local_got_entry): New function.
5045 (Sized_target::reserve_global_got_entry): New function.
5046 * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
5047 (Target_x86_64::reserve_global_got_entry): New function.
5048 (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
5049
4829d394
CC
50502011-05-23 Cary Coutant <ccoutant@google.com>
5051
5052 * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
5053 * incremental-dump.cc (dump_incremental_inputs): Mask high-order
5054 bit when checking got_type.
5055 * incremental.cc (Sized_incremental_binary::setup_readers):
5056 Store symbol table and string table locations; initialize bit vector
5057 of file status flags.
5058 (Sized_incremental_binary::do_reserve_layout): Set bit flag for
5059 unchanged files.
5060 (Sized_incremental_binary::do_process_got_plt): New function.
5061 (Sized_incremental_binary::get_symtab_view): Use stored locations.
5062 (Output_section_incremental_inputs::set_final_data_size): Record
5063 file index for each input file.
5064 (Output_section_incremental_inputs::write_got_plt): Store file index
5065 instead of input entry offset for each GOT entry.
5066 * incremental.h
5067 (Incremental_input_entry::Incremental_input_entry): Initialize new
5068 data member.
5069 (Incremental_input_entry::set_offset): Store file index.
5070 (Incremental_input_entry::get_file_index): New function.
5071 (Incremental_input_entry::file_index_): New data member.
5072 (Incremental_binary::process_got_plt): New function.
5073 (Incremental_binary::do_process_got_plt): New function.
5074 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
5075 data members.
5076 (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
5077 (Sized_incremental_binary::set_file_is_unchanged): New function.
5078 (Sized_incremental_binary::file_is_unchanged): New function.
5079 (Sized_incremental_binary::do_process_got_plt): New function.
5080 (Sized_incremental_binary::file_status_): New data member.
5081 (Sized_incremental_binary::main_symtab_loc_): New data member.
5082 (Sized_incremental_binary::main_strtab_loc_): New data member.
5083 * output.cc (Output_data_got::Got_entry::write): Add case
5084 RESERVED_CODE.
5085 (Output_data_got::add_global): Call add_got_entry.
5086 (Output_data_got::add_global_plt): Likewise.
5087 (Output_data_got::add_global_with_rel): Likewise.
5088 (Output_data_got::add_global_with_rela): Likewise.
5089 (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
5090 (Output_data_got::add_global_pair_with_rela): Likewise.
5091 (Output_data_got::add_local): Call add_got_entry.
5092 (Output_data_got::add_local_plt): Likewise.
5093 (Output_data_got::add_local_with_rel): Likewise.
5094 (Output_data_got::add_local_with_rela): Likewise.
5095 (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
5096 (Output_data_got::add_local_pair_with_rela): Likewise.
5097 (Output_data_got::reserve_slot): New function.
5098 (Output_data_got::reserve_slot_for_global): New function.
5099 (Output_data_got::add_got_entry): New function.
5100 (Output_data_got::add_got_entry_pair): New function.
5101 (Output_section::add_output_section_data): Edit FIXME.
5102 * output.h
5103 (Output_section_data_build::Output_section_data_build): New
5104 constructor with size parameter.
5105 (Output_data_space::Output_data_space): Likewise.
5106 (Output_data_got::Output_data_got): Initialize new data member; new
5107 constructor with size parameter.
5108 (Output_data_got::add_constant): Call add_got_entry.
5109 (Output_data_got::reserve_slot): New function.
5110 (Output_data_got::reserve_slot_for_global): New function.
5111 (class Output_data_got::Got_entry): Add RESERVED_CODE.
5112 (Output_data_got::add_got_entry): New function.
5113 (Output_data_got::add_got_entry_pair): New function.
5114 (Output_data_got::free_list_): New data member.
5115 * target.h (Sized_target::init_got_plt_for_update): New function.
5116 (Sized_target::register_global_plt_entry): New function.
5117 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
5118 Initialize new data member; call init; add constructor with PLT count.
5119 (Output_data_plt_x86_64::init): New function.
5120 (Output_data_plt_x86_64::add_relocation): New function.
5121 (Output_data_plt_x86_64::reserve_slot): New function.
5122 (Output_data_plt_x86_64::free_list_): New data member.
5123 (Target_x86_64::init_got_plt_for_update): New function.
5124 (Target_x86_64::register_global_plt_entry): New function.
5125 (Output_data_plt_x86_64::add_entry): Allocate from free list for
5126 incremental updates.
5127 (Output_data_plt_x86_64::add_relocation): New function.
5128 * testsuite/object_unittest.cc (Object_test): Set default options.
5129
ec69d6da
ILT
51302011-05-16 Ian Lance Taylor <iant@google.com>
5131
5132 * options.h (class General_options): Make -i a synonym for -r.
5133
732e31de
ILT
51342011-05-16 Ian Lance Taylor <iant@google.com>
5135
5136 * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
5137
403676b5
CC
51382011-05-10 Cary Coutant <ccoutant@google.com>
5139
5140 * object.cc (Sized_relobj::do_count_local_symbols): Check for
5141 strip_all (-s).
5142
5b7b7d6e
ILT
51432011-05-06 Ian Lance Taylor <iant@google.com>
5144
5145 * layout.cc (Layout::layout): If the output section flags change,
5146 update the ordering.
5147
f0f9babf
CC
51482011-04-25 Cary Coutant <ccoutant@google.com>
5149
5150 * incremental-dump.cc (dump_incremental_inputs): Print local
5151 symbol info for each input file.
5152 * incremental.cc
5153 (Output_section_incremental_inputs::set_final_data_size): Add local
5154 symbol info to input file entries in incremental info.
5155 (Output_section_incremental_inputs::write_info_blocks): Likewise.
5156 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
5157 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
5158 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
5159 implementation.
5160 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
5161 (Sized_incr_relobj::do_relocate): Write the local symbols.
5162 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
5163 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
5164 Adjust size of input file header.
5165 (Incremental_inputs_reader::get_local_symbol_offset): New function.
5166 (Incremental_inputs_reader::get_local_symbol_count): New function.
5167 (Incremental_inputs_reader::get_input_section): Adjust size of input
5168 file header.
5169 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
5170 (Sized_incr_relobj::This): New typedef.
5171 (Sized_incr_relobj::sym_size): New const data member.
5172 (Sized_incr_relobj::Local_symbol): New struct.
5173 (Sized_incr_relobj::do_output_local_symbol_count): New function.
5174 (Sized_incr_relobj::do_local_symbol_offset): New function.
5175 (Sized_incr_relobj::local_symbol_count_): New data member.
5176 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
5177 (Sized_incr_relobj::local_symbol_index_): New data member.
5178 (Sized_incr_relobj::local_symbol_offset_): New data member.
5179 (Sized_incr_relobj::local_dynsym_offset_): New data member.
5180 (Sized_incr_relobj::local_symbols_): New data member.
5181 * object.h (Relobj::output_local_symbol_count): New function.
5182 (Relobj::local_symbol_offset): New function.
5183 (Relobj::do_output_local_symbol_count): New function.
5184 (Relobj::do_local_symbol_offset): New function.
5185 (Sized_relobj::do_output_local_symbol_count): New function.
5186 (Sized_relobj::do_local_symbol_offset): New function.
5187
d0a9ace3
ILT
51882011-04-22 Vladimir Simonov <sv@sw.ru>
5189
5190 * descriptors.cc (set_close_on_exec): New function.
5191 (Descriptors::open): Use set_close_on_exec.
5192 * output.cc (S_ISLNK): Define if not defined.
5193
94a3fc8b
CC
51942011-04-22 Cary Coutant <ccoutant@google.com>
5195
5196 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
5197 global symbol map.
5198 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
5199 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
5200 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
5201 relocations.
5202 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
5203 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
5204 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
5205 * incremental.h
5206 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
5207 function.
5208 (Incremental_binary::apply_incremental_relocs): New function.
5209 (Incremental_binary::do_apply_incremental_relocs): New function.
5210 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
5211 data member.
5212 (Sized_incremental_binary::add_global_symbol): New function.
5213 (Sized_incremental_binary::global_symbol): New function.
5214 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
5215 (Sized_incremental_binary::symbol_map_): New data member.
5216 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
5217 * target.h (Sized_target::apply_relocation): New function.
5218 * target-reloc.h (apply_relocation): New function.
5219 * x86_64.cc (Target_x86_64::apply_relocation): New function.
5220
c87e4302
DK
52212011-04-22 Doug Kwan <dougkwan@google.com>
5222
5223 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
5224 flag of a SHT_ARM_EXIDX section.
2e702c99 5225 * testsuite/Makefile.am (arm_exidx_test): New test rules.
c87e4302
DK
5226 * testsuite/Makefile.in: Regenerate.
5227 * testsuite/arm_exidx_test.s: New file.
5228 * testsuite/arm_exidx_test.sh: Same.
5229
e7782cf6
CC
52302011-04-20 Cary Coutant <ccoutant@google.com>
5231
5232 PR gold/12689
5233 * archive.h (Incremental_archive_entry::Archive_member):
5234 Initialize arg_serial_ (second constructor).
5235
308ecdc7
ILT
52362011-04-17 Ian Lance Taylor <iant@google.com>
5237
5238 * object.cc (Relocate_info::location): Simplify location string.
5239 * errors.cc (Errors::error_at_location): Don't print program
5240 name.
5241 (Errors::warning_at_location): Likewise.
5242 (Errors::undefined_symbol): Likewise.
5243 * testsuite/debug_msg.sh: Update accordingly.
5244
bec5b579
CC
52452011-04-14 Cary Coutant <ccoutant@google.com>
5246
5247 * gold/layout.cc (Layout::symtab_section_offset): New function.
5248 * gold/layout.h (Layout::symtab_section_offset): New function.
5249 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
5250
88597d34
ILT
52512011-04-12 Ian Lance Taylor <iant@google.com>
5252
5253 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
5254 with MREMAP_MAYMOVE.
5255 * output.h (class Output_file): Add map_is_allocated_ field.
5256 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
5257 not available, provide stubs. If mremap is not available, #define
5258 it to gold_mremap.
5259 (MREMAP_MAYMOVE): Define if not defined.
5260 (Output_file::Output_file): Initialize map_is_allocated_.
5261 (Output_file::resize): Check map_is_allocated_.
5262 (Output_file::map_anonymous): If mmap fails, use malloc.
5263 (Output_file::unmap): Don't do anything for an anonymous map.
5264 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
5265 is not available, provide stubs.
5266 (File_read::View::~View): Use free rather than delete[].
5267 (File_read::make_view): Use malloc rather than new[]. If mmap
5268 fails, use malloc.
5269 (File_read::find_or_make_view): Use malloc rather than new[].
5270 * gold.h: Remove HAVE_REMAP code.
5271 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
5272 exists. Rename mremap to gold_mremap. If mmap is not available
5273 don't do anything.
5274 * configure, config.in: Rebuild.
5275
11e361bc
ILT
52762011-04-11 Ian Lance Taylor <iant@google.com>
5277
5278 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
5279 initialize local variable v.
5280
cdc29364
CC
52812011-04-11 Cary Coutant <ccoutant@google.com>
5282
5283 * archive.cc (Archive::include_member): Adjust call to
5284 report_object.
5285 (Add_archive_symbols::run): Track argument serial numbers.
5286 (Lib_group::include_member): Likewise.
5287 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
5288 * archive.h (Incremental_archive_entry::Archive_member):
5289 Initialize arg_serial_.
5290 (Archive_member::arg_serial_): New data member.
5291 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
5292 (Sized_dynobj::do_add_symbols): Track symbols when doing an
5293 incremental link.
5294 (Sized_dynobj::do_for_all_local_got_entries): New function.
5295 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
5296 function.
5297 * fileread.cc (get_mtime): New function.
5298 * fileread.h (get_mtime): New function.
5299 * gold.cc (queue_initial_tasks): Check for incremental update.
5300 (process_incremental_input): New function.
5301 (queue_middle_tasks): Don't force valid target for incremental
5302 update.
5303 * incremental-dump.cc (find_input_containing_global): Adjust
5304 size of symbol info entry.
5305 (dump_incremental_inputs): Dump argument serial number and
5306 in_system_directory flag; bias shndx by 1; print symbol names
5307 when dumping per-file symbol lists; use new symbol info readers.
5308 * incremental.cc
5309 (Output_section_incremental_inputs:update_data_size): New function.
5310 (Sized_incremental_binary::setup_readers): Setup input readers
5311 for each input file; build maps for files added from libraries
5312 and scripts.
5313 (Sized_incremental_binary::check_input_args): New function.
5314 (Sized_incremental_binary::do_check_inputs): Build map of argument
5315 serial numbers to input arguments.
5316 (Sized_incremental_binary::do_file_has_changed): Rename
5317 do_file_is_unchanged to this; compare file modification times.
5318 (Sized_incremental_binary::do_init_layout): New function.
5319 (Sized_incremental_binary::do_reserve_layout): New function.
5320 (Sized_incremental_binary::do_get_input_reader): Remove.
5321 (Sized_incremental_binary::get_symtab_view): New function.
5322 (Incremental_checker::can_incrementally_link_output_file): Remove.
5323 (Incremental_inputs::report_command_line): Exclude --debug options.
5324 (Incremental_inputs::report_archive_begin): Add parameter; track
5325 argument serial numbers; don't put input file entry for archive
5326 before archive members.
5327 (Incremental_inputs::report_archive_end): Put input file entry
5328 for archive after archive members.
5329 (Incremental_inputs::report_object): Add parameter; track argument
5330 serial numbers and in_system_directory flag.
5331 (Incremental_inputs::report_script): Add parameter; track argument
5332 serial numbers.
5333 (Output_section_incremental_inputs::set_final_data_size): Adjust
5334 size of symbol info entry; check for forwarding symbols.
5335 (Output_section_incremental_inputs::write_input_files): Write
5336 in_system_directory flag and argument serial number.
5337 (Output_section_incremental_inputs::write_info_blocks): Map section
5338 indices between incremental info and original input file; store
5339 input section index for each symbol.
5340 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
5341 change operator() to visit().
5342 (class Global_got_offset_visitor): Likewise.
5343 (class Global_symbol_visitor_got_plt):
5344 (Output_section_incremental_inputs::write_got_plt): Use new visitor
5345 classes.
5346 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
5347 (Sized_incr_relobj::do_read_symbols): New function.
5348 (Sized_incr_relobj::do_layout): New function.
5349 (Sized_incr_relobj::do_layout_deferred_sections): New function.
5350 (Sized_incr_relobj::do_add_symbols): New function.
5351 (Sized_incr_relobj::do_should_include_member): New function.
5352 (Sized_incr_relobj::do_for_all_global_symbols): New function.
5353 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
5354 (Sized_incr_relobj::do_section_size): New function.
5355 (Sized_incr_relobj::do_section_name): New function.
5356 (Sized_incr_relobj::do_section_contents): New function.
5357 (Sized_incr_relobj::do_section_flags): New function.
5358 (Sized_incr_relobj::do_section_entsize): New function.
5359 (Sized_incr_relobj::do_section_address): New function.
5360 (Sized_incr_relobj::do_section_type): New function.
5361 (Sized_incr_relobj::do_section_link): New function.
5362 (Sized_incr_relobj::do_section_info): New function.
5363 (Sized_incr_relobj::do_section_addralign): New function.
5364 (Sized_incr_relobj::do_initialize_xindex): New function.
5365 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
5366 (Sized_incr_relobj::do_read_relocs): New function.
5367 (Sized_incr_relobj::do_gc_process_relocs): New function.
5368 (Sized_incr_relobj::do_scan_relocs): New function.
5369 (Sized_incr_relobj::do_count_local_symbols): New function.
5370 (Sized_incr_relobj::do_finalize_local_symbols): New function.
5371 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
5372 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
5373 (Sized_incr_relobj::do_relocate): New function.
5374 (Sized_incr_relobj::do_set_section_offset): New function.
5375 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
5376 (Sized_incr_dynobj::do_read_symbols): New function.
5377 (Sized_incr_dynobj::do_layout): New function.
5378 (Sized_incr_dynobj::do_add_symbols): New function.
5379 (Sized_incr_dynobj::do_should_include_member): New function.
5380 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
5381 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
5382 (Sized_incr_dynobj::do_section_size): New function.
5383 (Sized_incr_dynobj::do_section_name): New function.
5384 (Sized_incr_dynobj::do_section_contents): New function.
5385 (Sized_incr_dynobj::do_section_flags): New function.
5386 (Sized_incr_dynobj::do_section_entsize): New function.
5387 (Sized_incr_dynobj::do_section_address): New function.
5388 (Sized_incr_dynobj::do_section_type): New function.
5389 (Sized_incr_dynobj::do_section_link): New function.
5390 (Sized_incr_dynobj::do_section_info): New function.
5391 (Sized_incr_dynobj::do_section_addralign): New function.
5392 (Sized_incr_dynobj::do_initialize_xindex): New function.
5393 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
5394 (make_sized_incremental_object): New function.
5395 (Incremental_library::copy_unused_symbols): New function.
5396 (Incremental_library::do_for_all_unused_symbols): New function.
5397 * incremental.h (enum Incremental_input_flags): New type.
5398 (class Incremental_checker): Remove.
5399 (Incremental_input_entry::Incremental_input_entry): Add argument
5400 serial number.
5401 (Incremental_input_entry::arg_serial): New function.
5402 (Incremental_input_entry::set_is_in_system_directory): New function.
5403 (Incremental_input_entry::is_in_system_directory): New function.
5404 (Incremental_input_entry::arg_serial_): New data member.
5405 (Incremental_input_entry::is_in_system_directory_): New data member.
5406 (class Script_info): Move here from script.h.
5407 (Script_info::Script_info): Add filename parameter.
5408 (Script_info::filename): New function.
5409 (Script_info::filename_): New data member.
5410 (Incremental_script_entry::Incremental_script_entry): Add argument
5411 serial number.
5412 (Incremental_object_entry::Incremental_object_entry): Likewise.
5413 (Incremental_object_entry::add_input_section): Build list of input
5414 sections with map to original shndx.
5415 (Incremental_object_entry::get_input_section_index): New function.
5416 (Incremental_object_entry::shndx_): New data member.
5417 (Incremental_object_entry::name_key_): Rename; adjust all refs.
5418 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
5419 (Incremental_archive_entry::Incremental_archive_entry): Add argument
5420 serial number.
5421 (Incremental_inputs::report_archive_begin): Likewise.
5422 (Incremental_inputs::report_object): Likewise.
5423 (Incremental_inputs::report_script): Likewise.
5424 (class Incremental_global_symbol_reader): New class.
5425 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
5426 and store flags and input file type.
5427 (Incremental_input_entry_reader::arg_serial): New function.
5428 (Incremental_input_entry_reader::type): Extract type from flags.
5429 (Incremental_input_entry_reader::is_in_system_directory): New function.
5430 (Incremental_input_entry_reader::get_input_section_count): Call
5431 accessor function for type.
5432 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
5433 function for type; adjust size of global symbol entry.
5434 (Incremental_input_entry_reader::get_global_symbol_count): Call
5435 accessor function for type.
5436 (Incremental_input_entry_reader::get_object_count): Likewise.
5437 (Incremental_input_entry_reader::get_object_offset): Likewise.
5438 (Incremental_input_entry_reader::get_member_count): Likewise.
5439 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
5440 (Incremental_input_entry_reader::get_member_offset): Likewise.
5441 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
5442 (Incremental_input_entry_reader::Global_symbol_info): Remove.
5443 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
5444 (Incremental_input_entry_reader::get_global_symbol_reader): New
5445 function.
5446 (Incremental_input_entry_reader::get_output_symbol_index): New
5447 function.
5448 (Incremental_input_entry_reader::type_): Remove.
5449 (Incremental_input_entry_reader::flags_): New data member.
5450 (Incremental_inputs_reader::input_file_offset): New function.
5451 (Incremental_inputs_reader::input_file_index): New function.
5452 (Incremental_inputs_reader::input_file): Call input_file_offset.
5453 (Incremental_inputs_reader::input_file_at_offset): New function.
5454 (Incremental_relocs_reader::get_r_type): Reformat.
5455 (Incremental_relocs_reader::get_r_shndx): Reformat.
5456 (Incremental_relocs_reader::get_r_offset): Reformat.
5457 (Incremental_relocs_reader::data): New function.
5458 (Incremental_binary::Incremental_binary): Initialize new data members.
5459 (Incremental_binary::check_inputs): Add cmdline parameter.
5460 (Incremental_binary::file_is_unchanged): Remove.
5461 (Input_reader::arg_serial): New function.
5462 (Input_reader::get_unused_symbol_count): New function.
5463 (Input_reader::get_unused_symbol): New function.
5464 (Input_reader::do_arg_serial): New function.
5465 (Input_reader::do_get_unused_symbol_count): New function.
5466 (Input_reader::do_get_unused_symbol): New function.
5467 (Incremental_binary::input_file_count): New function.
5468 (Incremental_binary::get_input_reader): Change signature to use
5469 index instead of filename.
5470 (Incremental_binary::file_has_changed): New function.
5471 (Incremental_binary::get_input_argument): New function.
5472 (Incremental_binary::get_library): New function.
5473 (Incremental_binary::get_script_info): New function.
5474 (Incremental_binary::init_layout): New function.
5475 (Incremental_binary::reserve_layout): New function.
5476 (Incremental_binary::output_file): New function.
5477 (Incremental_binary::do_check_inputs): New function.
5478 (Incremental_binary::do_file_is_unchanged): Remove.
5479 (Incremental_binary::do_file_has_changed): New function.
5480 (Incremental_binary::do_init_layout): New function.
5481 (Incremental_binary::do_reserve_layout): New function.
5482 (Incremental_binary::do_input_file_count): New function.
5483 (Incremental_binary::do_get_input_reader): Change signature.
5484 (Incremental_binary::input_args_map_): New data member.
5485 (Incremental_binary::library_map_): New data member.
5486 (Incremental_binary::script_map_): New data member.
5487 (Sized_incremental_binary::Sized_incremental_binary): Initialize
5488 new data members.
5489 (Sized_incremental_binary::output_section): New function.
5490 (Sized_incremental_binary::inputs_reader): Add const.
5491 (Sized_incremental_binary::symtab_reader): Add const.
5492 (Sized_incremental_binary::relocs_reader): Add const.
5493 (Sized_incremental_binary::got_plt_reader): Add const.
5494 (Sized_incremental_binary::get_symtab_view): New function.
5495 (Sized_incremental_binary::Inputs_reader): New typedef.
5496 (Sized_incremental_binary::Input_entry_reader): New typedef.
5497 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
5498 (Sized_incremental_binary::do_file_is_unchanged): Remove.
5499 (Sized_incremental_binary::do_file_has_changed): New function.
5500 (Sized_incremental_binary::do_init_layout): New function.
5501 (Sized_incremental_binary::do_reserve_layout): New function.
5502 (Sized_input_reader::Inputs_reader): Remove.
5503 (Sized_input_reader::Input_entry_reader): Remove.
5504 (Sized_input_reader::do_arg_serial): New function.
5505 (Sized_input_reader::do_get_unused_symbol_count): New function.
5506 (Sized_input_reader::do_get_unused_symbol): New function.
5507 (Sized_incremental_binary::do_input_file_count): New function.
5508 (Sized_incremental_binary::do_get_input_reader): Change signature;
5509 use index instead of filename.
5510 (Sized_incremental_binary::section_map_): New data member.
5511 (Sized_incremental_binary::input_entry_readers_): New data member.
5512 (class Sized_incr_relobj): New class.
5513 (class Sized_incr_dynobj): New class.
5514 (make_sized_incremental_object): New function.
5515 (class Incremental_library): New class.
5516 * layout.cc (Free_list::num_lists): New static data member.
5517 (Free_list::num_nodes): New static data member.
5518 (Free_list::num_removes): New static data member.
5519 (Free_list::num_remove_visits): New static data member.
5520 (Free_list::num_allocates): New static data member.
5521 (Free_list::num_allocate_visits): New static data member.
5522 (Free_list::init): New function.
5523 (Free_list::remove): New function.
5524 (Free_list::allocate): New function.
5525 (Free_list::dump): New function.
5526 (Free_list::print_stats): New function.
5527 (Layout_task_runner::run): Resize output file for incremental updates.
5528 (Layout::Layout): Initialize new data members.
5529 (Layout::set_incremental_base): New function.
5530 (Layout::init_fixed_output_section): New function.
5531 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
5532 incremental updates.
5533 (Layout::create_gold_note): Do not create gold note section for
5534 incremental updates.
5535 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
5536 for incremental updates.
5537 (Layout::set_section_offsets): For incremental updates, allocate space
5538 from free list.
5539 (Layout::create_symtab_sections): Layout with offsets relative to
5540 start of section; for incremental updates, allocate space from free
5541 list.
5542 (Layout::create_shdrs): For incremental updates, allocate space from
5543 free list.
5544 (Layout::finish_dynamic_section): For incremental updates, do not
5545 check --as-needed (fixed in subsequent patch).
5546 * layout.h (class Free_list): New class.
5547 (Layout::set_incremental_base): New function.
5548 (Layout::incremental_base): New function.
5549 (Layout::init_fixed_output_section): New function.
5550 (Layout::allocate): New function.
5551 (Layout::incremental_base_): New data member.
5552 (Layout::free_list_): New data member.
5553 * main.cc (main): Print Free_list statistics.
5554 * object.cc (Relobj::finalize_incremental_relocs): Add
5555 clear_counts parameter; clear counts only when clear_counts is set.
5556 (Sized_relobj::Sized_relobj): Initialize new base class.
5557 (Sized_relobj::do_layout): Don't report special sections.
5558 (Sized_relobj::do_for_all_local_got_entries): New function.
5559 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
5560 symtab_off to all symbol table offsets.
5561 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
5562 * object.h (class Got_offset_list): Move to top of file.
5563 (Object::Object): Allow case where input_file == NULL.
5564 (Object::~Object): Likewise.
5565 (Object::input_file): Assert that input_file != NULL.
5566 (Object::lock): Allow case where input_file == NULL.
5567 (Object::unlock): Likewise.
5568 (Object::is_locked): Likewise.
5569 (Object::token): Likewise.
5570 (Object::release): Likewise.
5571 (Object::is_incremental): New function.
5572 (Object::get_mtime): New function.
5573 (Object::for_all_local_got_entries): New function.
5574 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
5575 (Object::set_is_in_system_directory): New function.
5576 (Object::is_in_system_directory): New function.
5577 (Object::do_is_incremental): New function.
5578 (Object::do_get_mtime): New function.
5579 (Object::do_for_all_local_got_entries): New function.
5580 (Object::is_in_system_directory_): New data member.
5581 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
5582 (class Sized_relobj_base): New class.
5583 (class Sized_relobj): Derive from Sized_relobj_base.
5584 (class Sized_relobj::Symbols): Redeclare from base class.
5585 (class Sized_relobj::local_got_offset_list): Remove.
5586 (class Sized_relobj::Output_sections): Redeclare from base class.
5587 (class Sized_relobj::do_for_all_local_got_entries): New function.
5588 (class Sized_relobj::write_local_symbols): Add offset parameter.
5589 (class Sized_relobj::local_symbol_offset_): Update comment.
5590 (class Sized_relobj::local_dynsym_offset_): Update comment.
5591 * options.cc (Input_arguments::add_file): Remove const.
5592 * options.h (Input_file_argument::Input_file_argument):
5593 Initialize arg_serial_ (all constructors).
5594 (Input_file_argument::set_arg_serial): New function.
5595 (Input_file_argument::arg_serial): New function.
5596 (Input_file_argument::arg_serial_): New data member.
5597 (Input_arguments::Input_arguments): Initialize file_count_.
5598 (Input_arguments::add_file): Remove const.
5599 (Input_arguments::number_of_input_files): New function.
5600 (Input_arguments::file_count_): New data member.
5601 (Command_line::number_of_input_files): Call
5602 Input_arguments::number_of_input_files.
5603 * output.cc (Output_segment_headers::Output_segment_headers):
5604 Set current size.
5605 (Output_section::Input_section::current_data_size): New function.
5606 (Output_section::Output_section): Initialize new data members.
5607 (Output_section::add_input_section): Don't do merge sections for
5608 an incremental link; allocate space from free list for an
5609 incremental update.
5610 (Output_section::add_output_section_data): Allocate space from
5611 free list for an incremental update.
5612 (Output_section::update_data_size): New function.
5613 (Output_section::set_fixed_layout): New function.
5614 (Output_section::reserve): New function.
5615 (Output_segment::set_section_addresses): Remove const.
5616 (Output_segment::set_section_list_addresses): Remove const; allocate
5617 space from free list for an incremental update.
5618 (Output_segment::set_offset): Adjust size of RELRO segment for an
5619 incremental update.
5620 * output.h (Output_data::current_data_size): Move here from
5621 child classes.
5622 (Output_data::pre_finalize_data_size): New function.
5623 (Output_data::update_data_size): New function.
5624 (Output_section_headers::update_data_size): new function.
5625 (Output_section_data_build::current_data_size): Move to Output_data.
5626 (Output_data_strtab::update_data_size): New function.
5627 (Output_section::current_data_size): Move to Output_data.
5628 (Output_section::set_fixed_layout): New function.
5629 (Output_section::has_fixed_layout): New function.
5630 (Output_section::reserve): New function.
5631 (Output_section::update_data_size): New function.
5632 (Output_section::has_fixed_layout_): New data member.
5633 (Output_section::free_list_): New data member.
5634 (Output_segment::set_section_addresses): Remove const.
5635 (Output_segment::set_section_list_addresses): Remove const.
5636 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
5637 New function.
5638 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
5639 New function.
5640 * readsyms.cc (Read_symbols::do_read_symbols): Add library
5641 parameter when calling Add_symbols constructor; store argument
5642 serial number for members of a lib group.
5643 (Add_symbols::locks): Allow case where token == NULL.
5644 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
5645 (Read_member::~Read_member): New function.
5646 (Read_member::is_runnable): New function.
5647 (Read_member::locks): New function.
5648 (Read_member::run): New function.
5649 (Check_script::~Check_script): New function.
5650 (Check_script::is_runnable): New function.
5651 (Check_script::locks): New function.
5652 (Check_script::run): New function.
5653 (Check_library::~Check_library): New function.
5654 (Check_library::is_runnable): New function.
5655 (Check_library::locks): New function.
5656 (Check_library::run): New function.
5657 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
5658 (Add_symbols::library_): New data member.
5659 (class Read_member): New class.
5660 (class Check_script): New class.
5661 (class Check_library): New class.
5662 * reloc.cc (Read_relocs::is_runnable): Allow case where
5663 token == NULL.
5664 (Read_relocs::locks): Likewise.
5665 (Scan_relocs::locks): Likewise.
5666 (Relocate_task::locks): Likewise.
5667 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
5668 to clear counters.
5669 (Sized_relobj::incremental_relocs_scan): Fix comment.
5670 (Sized_relobj::do_relocate): Pass output file offset to
5671 write_local_symbols.
5672 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
5673 from class declaration.
5674 * script.cc (read_input_script): Allocate Script_info; pass
5675 argument serial number to report_script.
5676 * script.h (class Script_info): Move to incremental.h.
5677 * symtab.cc (Symbol_table::add_from_incrobj): New function.
5678 * symtab.h (Symbol_table::add_from_incrobj): New function.
5679 (Symbol_table::set_file_offset): New function.
5680
b961d0d7
CC
56812011-04-05 Cary Coutant <ccoutant@google.com>
5682
5683 * incremental-dump.cc (dump_incremental_inputs): Change signature
5684 to take a Sized_incremental_binary; change caller. Use readers
5685 in Sized_incremental_binary.
5686 * incremental.cc
5687 (Sized_incremental_binary::find_incremental_inputs_sections):
5688 Rename do_find_incremental_inputs_sections to this.
5689 (Sized_incremental_binary::setup_readers): New function.
5690 (Sized_incremental_binary::do_check_inputs): Check
5691 has_incremental_info_ flag; move setup code to setup_readers;
5692 use input readers.
5693 (Sized_incremental_binary::do_file_is_unchanged): New function.
5694 (Sized_incremental_binary::do_get_input_reader): New function.
5695 * incremental.h (class Incremental_binary): Move to end of file.
5696 (Incremental_binary::file_is_unchanged): New function.
5697 (Incremental_binary::do_file_is_unchanged): New function.
5698 (Incremental_binary::Input_reader): New class.
5699 (Incremental_binary::get_input_reader): New function.
5700 (class Sized_incremental_binary): Move to end of file.
5701 (Sized_incremental_binary::Sized_incremental_binary): Setup the
5702 input section reader classes.
5703 (Sized_incremental_binary::has_incremental_info): New function.
5704 (Sized_incremental_binary::inputs_reader): New function.
5705 (Sized_incremental_binary::symtab_reader): New function.
5706 (Sized_incremental_binary::relocs_reader): New function.
5707 (Sized_incremental_binary::got_plt_reader): New function.
5708 (Sized_incremental_binary::do_file_is_unchanged): New function.
5709 (Sized_incremental_binary::Sized_input_reader): New class.
5710 (Sized_incremental_binary::get_input_reader): New function.
5711 (Sized_incremental_binary::find_incremental_inputs_sections):
5712 Rename do_find_incremental_inputs_sections to this.
5713 (Sized_incremental_binary::setup_readers): New function.
5714 (Sized_incremental_binary::has_incremental_info_): New data member.
5715 (Sized_incremental_binary::inputs_reader_): New data member.
5716 (Sized_incremental_binary::symtab_reader_): New data member.
5717 (Sized_incremental_binary::relocs_reader_): New data member.
5718 (Sized_incremental_binary::got_plt_reader_): New data member.
5719 (Sized_incremental_binary::current_input_file_): New data member.
5720
a869183f
PP
57212011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
5722
5723 PR gold/12640
5724 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
5725 violation.
5726
57272011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
5728
5729 * archive.cc (Archive::include_member): Adjust call to report_object.
5730 (Add_archive_symbols::run): Add script_info to call to
5731 report_archive_begin.
5732 (Lib_group::include_member): Adjust call to report_object.
5733 (Add_lib_group_symbols::run): Adjust call to report_object.
5734 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
5735 blocks. Add object count for script input files.
5736 * incremental.cc (Incremental_inputs::report_archive_begin): Add
5737 script_info parameter; change all callers.
5738 (Incremental_inputs::report_object): Add script_info parameter;
5739 change all callers.
5740 (Incremental_inputs::report_script): Store backpointer to
5741 incremental info entry.
5742 (Output_section_incremental_inputs::set_final_data_size): Record
5743 additional information for scripts.
5744 (Output_section_incremental_inputs::write_info_blocks): Likewise.
5745 * incremental.h (Incremental_script_entry::add_object): New function.
5746 (Incremental_script_entry::get_object_count): New function.
5747 (Incremental_script_entry::get_object): New function.
5748 (Incremental_script_entry::objects_): New data member; adjust
5749 constructor.
5750 (Incremental_inputs::report_archive_begin): Add script_info parameter.
5751 (Incremental_inputs::report_object): Add script_info parameter.
5752 (Incremental_inputs_reader::get_object_count): New function.
5753 (Incremental_inputs_reader::get_object_offset): New function.
5754 * options.cc (Input_arguments::add_file): Return reference to
5755 new input argument.
5756 * options.h (Input_argument::set_script_info): New function.
5757 (Input_argument::script_info): New function.
5758 (Input_argument::script_info_): New data member; adjust all
5759 constructors.
5760 (Input_file_group::add_file): Return reference to new input argument.
5761 (Input_file_lib::add_file): Likewise.
5762 (Input_arguments::add_file): Likewise.
5763 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
5764 * script.cc (Parser_closure::Parser_closure): Add script_info
5765 parameter; adjust all callers.
5766 (Parser_closure::script_info): New function.
5767 (Parser_closure::script_info_): New data member.
5768 (read_input_script): Report scripts earlier to incremental info.
5769 (script_add_file): Set script_info in Input_argument.
5770 (script_add_library): Likewise.
5771 * script.h (Script_options::Script_info): Rewrite class.
5772
a869183f 57732011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
5774
5775 * archive.cc (Library_base::should_include_member): Move
5776 method here from class Archive.
5777 (Archive::Archive): Initialize base class.
5778 (Archive::should_include_member): Move to base class.
5779 (Archive::do_for_all_unused_symbols): New function.
5780 (Add_archive_symbols::run): Remove redundant access to
5781 incremental_inputs.
5782 (Lib_group::Lib_group): Initialize base class.
5783 (Lib_group::do_filename): New function.
5784 (Lib_group::include_member): Pass pointer to Lib_group to
5785 report_object.
5786 (Lib_group::do_for_all_unused_symbols): New function.
5787 (Add_lib_group_symbols::run): Report archive information for
5788 incremental links.
5789 * archive.h (class Library_base): New base class.
5790 (class Archive): Derive from Library_base.
5791 (Archive::filename): Move to base class.
5792 (Archive::set_incremental_info): Likewise.
5793 (Archive::incremental_info): Likewise.
5794 (Archive::Should_include): Likewise.
5795 (Archive::should_include_member): Likewise.
5796 (Archive::Armap_entry): Remove.
5797 (Archive::Unused_symbol_iterator): Remove.
5798 (Archive::unused_symbols_begin): Remove.
5799 (Archive::unused_symbols_end): Remove.
5800 (Archive::do_filename): New function.
5801 (Archive::do_get_mtime): New function.
5802 (Archive::do_for_all_unused_symbols): New function.
5803 (Archive::task_): Move to base class.
5804 (Archive::incremental_info_): Likewise.
5805 (class Lib_group): Derive from Library_base.
5806 (Lib_group::do_filename): New function.
5807 (Lib_group::do_get_mtime): New function.
5808 (Lib_group::do_for_all_unused_symbols): New function.
5809 (Lib_group::task_): Move to base class.
5810 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
5811 function.
5812 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
5813 function.
5814 * incremental.cc (Incremental_inputs::report_archive_begin):
5815 Use Library_base; call library's get_mtime; add incremental inputs
5816 entry before members.
5817 (class Unused_symbol_visitor): New class.
5818 (Incremental_inputs::report_archive_end): Use Library_base; use
5819 visitor class to record unused symbols; don't add incremental inputs
5820 entry after members.
5821 (Incremental_inputs::report_object): Use Library_base.
5822 * incremental.h
5823 (Incremental_archive_entry::Incremental_archive_entry): Remove
5824 unused Archive parameter.
5825 (Incremental_inputs::report_archive_begin): Use Library_base.
5826 (Incremental_inputs::report_archive_end): Likewise.
5827 (Incremental_inputs::report_object): Likewise.
5828 * object.cc (Sized_relobj::do_for_all_global_symbols): New
5829 function.
5830 * object.h (Object::for_all_global_symbols): New function.
5831 (Object::do_for_all_global_symbols): New function.
5832 (Sized_relobj::do_for_all_global_symbols): New function.
5833 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
5834 function.
5835 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
5836 function.
5837
61ab3e40
ILT
58382011-03-27 Ian Lance Taylor <iant@google.com>
5839
5840 * archive.cc (Archive::interpret_header): Return -1 if something
5841 goes wrong. Change callers accordingly.
5842
30e1f9e6
CC
58432011-03-25 Cary Coutant <ccoutant@google.com>
5844
5845 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
5846 * testsuite/Makefile.in: Regenerate.
5847
9370ce59 58482011-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
9c793f14
RÁE
5849
5850 * plugin.cc (get_view): New.
5851 (Plugin::load): Pass get_view to the plugin.
5852 (Plugin_manager::get_view): New.
5853
9312bb0a
ILT
58542011-03-21 Ian Lance Taylor <iant@google.com>
5855
5856 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 5857 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 5858
7e12ba9e
ST
58592011-03-21 Sriraman Tallam <tmsriram@google.com>
5860
5861 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
5862 Change == to -eq.
5863 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
5864 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
5865 Change == to -eq.
5866 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
5867 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
5868
fd7a005d
ILT
58692011-03-14 Ian Lance Taylor <iant@google.com>
5870
5871 * script-sections.cc (Sort_output_sections::script_compare):
5872 Rename from is_before, change return type.
5873 (Sort_output_sections::operator()): Adjust accordingly.
5874
ed16fd1b
ILT
58752011-03-11 Jeffrey Yasskin <jyasskin@google.com>
5876
5877 PR gold/12572
5878 * testsuite/odr_violation2.cc: Add comment to make all error line
5879 numbers double digits.
5880 * testsuite/debug_msg.sh: Adjust expected errors.
5881
71ff8986
ILT
58822011-03-09 Jeffrey Yasskin <jyasskin@google.com>
5883
5884 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
5885 but mark earlier ones as non-canonical
5886 (offset_to_iterator): Update search target and example
5887 (do_addr2line): Return extra lines in a vector*
5888 (format_file_lineno): Extract from do_addr2line
5889 (one_addr2line): Add vector* out-param
5890 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
5891 when a lineno entry appeared last for its instruction
5892 (Dwarf_line_info): Add vector* out-param
5893 * object.cc (Relocate_info): Pass NULL for the vector* out-param
5894 * symtab.cc (Odr_violation_compare): Include the lineno in the
5895 comparison again.
5896 (linenos_from_loc): New. Combine the canonical line for an
5897 address with its other lines.
5898 (True_if_intersect): New. Helper functor to make
5899 std::set_intersection a query.
5900 (detect_odr_violations): Compare sets of lines instead of just
5901 one line for each function. This became less deterministic, but
5902 has fewer false positives.
5903 * symtab.h: Declarations.
5904 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
5905 mix an optimized and non-optimized object in the same binary
5906 (odr_violation2.so): Same.
5907 * testsuite/Makefile.in: Regenerate from Makefile.am.
5908 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
5909 * testsuite/debug_msg.sh: Update line numbers and add
5910 assertions.
5911 * testsuite/odr_violation1.cc: Use OdrDerived, in a
5912 non-optimized context.
5913 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
5914 isn't inlined, and use OdrDerived in an optimized context.
5915 * testsuite/odr_header1.h: Defines OdrDerived, where
5916 optimization will change the
5917 first-instruction-in-the-destructor's file and line number.
5918 * testsuite/odr_header2.h: Defines OdrBase.
5919
a19fefdc
ILT
59202011-03-09 Ian Lance Taylor <iant@google.com>
5921
5922 * fileread.cc (File_read::clear_views): Don't delete the whole
5923 file view.
5924
ecb351e9
ILT
59252011-03-08 Ian Lance Taylor <iant@google.com>
5926
5927 PR gold/12525
5928 * fileread.cc: #include <climits>.
5929 (GOLD_IOV_MAX): Define.
5930 (File_read::read_multiple): Limit number of entries by iov_max.
5931 * fileread.h (class File_read): Always set max_readv_entries to
5932 128.
5933
b821d13c
ILT
59342011-03-07 Ian Lance Taylor <iant@google.com>
5935
5936 PR gold/12525
5937 * options.h (class General_options): Add -dy and -dn.
5938
89243142
CC
59392011-03-02 Cary Coutant <ccoutant@google.com>
5940
5941 * testsuite/script_test_9.t: Add TLS segment.
5942
d0773f31
ILT
59432011-03-02 Simon Baldwin <simonb@google.com>
5944
5945 * configure.ac: Add check for gnu_indirect_function support in
5946 the toolchain building binutils.
5947 * configure: Rebuild.
5948
9370ce59 59492011-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
badc8139
RÁE
5950
5951 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
5952 plugin only symbols.
5953 (Symbol_table::sized_finalize_symbol) Mark symbol only present
5954 in plugin files as not needed in the symbol table.
5955
4cf7a849
ST
59562011-02-11 Sriraman Tallam <tmsriram@google.com>
5957
5958 * output.cc (Output_section::add_input_section): Delay fill
5959 generation for section ordering.
5960
b578bd7d
ILT
59612011-02-09 Ian Lance Taylor <iant@google.com>
5962
5963 PR gold/12316
5964 * object.h (class Sized_relobj): Remove clear_local_symbols.
5965 * reloc.cc (Sized_relobj::do_relocate): Don't call
5966 clear_local_symbols.
5967
9370ce59 59682011-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
84ced98a
RÁE
5969
5970 * plugin.cc (is_visible_from_outside): Return true for symbols
5971 in the -u option.
5972
55382fb7
ILT
59732011-02-04 Jeffrey Yasskin <jyasskin@google.com>
5974
5975 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
5976 filename.
5977
4e271fff
ST
59782011-02-02 Sriraman Tallam <tmsriram@google.com>
5979
5980 * icf.h (is_section_foldable_candidate): Change type of parameter
2e702c99 5981 to std::string.
4e271fff 5982 * icf.cc (Icf::find_identical_sections): Change type of local variable
2e702c99 5983 section_name to be std::string.
4e271fff
ST
5984 (is_function_ctor_or_dtor): Change type of parameter to std::string.
5985
d433c3ac
ILT
59862011-01-25 Ian Lance Taylor <iant@google.com>
5987
5988 * script.cc (script_add_extern): Rewrite to use
5989 add_symbol_reference.
5990
880473a6
DK
59912011-01-25 Doug Kwan <dougkwan@google.com>
5992
d433c3ac 5993 * icf.cc (get_section_contents): Always lock section's object.
880473a6 5994
f30f86fa
ILT
59952011-01-24 Ian Lance Taylor <iant@google.com>
5996
5997 * options.h (class General_options): Accept
5998 --no-detect-odr-violations.
5999
8e51a0b9
ILT
60002011-01-24 Ian Lance Taylor <iant@google.com>
6001
6002 * version.cc (version_string): Bump to 1.11.
6003
0f3b89d8
ILT
60042011-01-24 Ian Lance Taylor <iant@google.com>
6005
6006 * plugin.cc (class Plugin_rescan): Define new class.
6007 (Plugin_manager::claim_file): Set any_claimed_.
6008 (Plugin_manager::save_archive): New function.
6009 (Plugin_manager::save_input_group): New function.
6010 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
6011 necessary.
6012 (Plugin_manager::new_undefined_symbol): New function.
6013 (Plugin_manager::rescan): New function.
6014 (Plugin_manager::rescannable_defines): New function.
6015 (Plugin_manager::add_input_file): Set any_added_.
6016 * plugin.h (class Plugin_manager): define new fields rescannable_,
6017 undefined_symbols_, any_claimed_, and any_added_. Declare
6018 Plugin_rescan as friend. Declare new functions.
6019 (Plugin_manager::Rescannable): Define type.
6020 (Plugin_manager::Rescannable_list): Define type.
6021 (Plugin_manager::Undefined_symbol_list): Define type.
6022 (Plugin_manager::Plugin_manager): Initialize new fields.
6023 * archive.cc (Archive::defines_symbol): New function.
6024 (Add_archive_symbols::run): Pass archive to plugins if any.
6025 * archive.h (class Archive): Declare defines_symbol.
6026 * readsyms.cc (Input_group::~Input_group): New function.
6027 (Finish_group::run): Pass input_group to plugins if any.
6028 * readsyms.h (class Input_group): Declare destructor.
6029 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
6030 any.
6031
3bb951e5
ILT
60322011-01-10 Ian Lance Taylor <iant@google.com>
6033
6034 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
6035 section as relro.
6036 (Layout::set_segment_offsets): Reset increase_relro before calling
6037 set_section_addresses a second time.
6038
0aa45fac
CC
60392011-01-04 Cary Coutant <ccoutant@google.com>
6040
6041 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
6042 sections before NOBITS sections.
6043
0db46eb4
L
60442011-01-01 H.J. Lu <hongjiu.lu@intel.com>
6045
6046 * version.cc (print_version): Update copyright to 2011.
6047
829c9745
CC
60482010-12-23 Cary Coutant <ccoutant@google.com>
6049
6050 * output.h (Output_data_reloc::add_output_section): Pass OD instead
6051 of OS to this->add. Add OD parameter to second form of the function.
6052
7500420b
ILT
60532010-12-20 Ian Lance Taylor <iant@google.com>
6054
6055 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
6056 second of two consecutive entries with same offset.
6057
f8e9a930
RW
60582010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6059
6060 * testsuite/Makefile.am (ifuncmain2static_LDADD)
6061 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
6062 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
6063 to avoid unneeded links against $(LDADD).
6064 * testsuite/Makefile.in: Regenerate.
6065
2fbb4320
ILT
60662010-12-15 Ian Lance Taylor <iant@google.com>
6067
6068 PR gold/12324
6069 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
6070 for R_X86_64_32 and R_X86_64_PC32.
6071 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
6072 ver_matching_def_pic.o.
6073 (ver_matching_def_pic.o): New target.
6074
fedb228d
RW
60752010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6076
6077 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
6078 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
6079 Move definition before File_read::View member definitions.
6080 (File_read::View::~View): Initialize and hold lock before
6081 updating current_mapped_bytes.
6082
9b547ce6
RW
60832010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6084
6085 * dwarf_reader.cc: Remove outdated comment.
6086 * gold-threads.cc: Fix typo in error message.
6087 * archive.cc: Fix typos in comments.
6088 * archive.h: Likewise.
6089 * arm-reloc-property.cc: Likewise.
6090 * arm-reloc-property.h: Likewise.
6091 * arm-reloc.def: Likewise.
6092 * arm.cc: Likewise.
6093 * attributes.h: Likewise.
6094 * cref.cc: Likewise.
6095 * ehframe.cc: Likewise.
6096 * fileread.h: Likewise.
6097 * gold.h: Likewise.
6098 * i386.cc: Likewise.
6099 * icf.cc: Likewise.
6100 * incremental.h: Likewise.
6101 * int_encoding.cc: Likewise.
6102 * layout.h: Likewise.
6103 * main.cc: Likewise.
6104 * merge.h: Likewise.
6105 * object.cc: Likewise.
6106 * object.h: Likewise.
6107 * options.cc: Likewise.
6108 * readsyms.cc: Likewise.
6109 * reduced_debug_output.cc: Likewise.
6110 * reloc.cc: Likewise.
6111 * script-sections.cc: Likewise.
6112 * sparc.cc: Likewise.
6113 * symtab.h: Likewise.
6114 * target-reloc.h: Likewise.
6115 * target.cc: Likewise.
6116 * target.h: Likewise.
6117 * timer.cc: Likewise.
6118 * timer.h: Likewise.
6119 * x86_64.cc: Likewise.
6120
83e17bd5
CC
61212010-12-09 Cary Coutant <ccoutant@google.com>
6122
6123 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
6124 stack.
6125 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
6126 parameter; change all callers.
6127 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
6128 * options.h (warn_execstack): New option.
6129
017257f8
DK
61302010-12-07 Doug Kwan <dougkwan@google.com>
6131
6132 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
6133 like function call relocations.
6134
c20cbc06
ILT
61352010-12-07 Ian Lance Taylor <iant@google.com>
6136
6137 * archive.cc (Archive::get_elf_object_for_member): Permit
6138 punconfigured to be NULL.
6139 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
6140 (Archive::include_member): Pass NULL to get_elf_object_for_member
6141 if we searched for the archive and this is the first included
6142 object.
6143
4dbfafcc
ILT
61442010-12-01 Ian Lance Taylor <iant@google.com>
6145
6146 * dwarf_reader.h (class Sized_dwarf_line_info): Add
6147 track_relocs_type_ field.
6148 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6149 Set track_relocs_type_.
6150 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
6151 contents when using RELA relocs.
6152 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
6153 reloc_map_.
6154 * reloc.cc (Track_relocs::next_addend): New function.
6155 * reloc.h (class Track_relocs): Declare next_addend.
6156
e5e19edd
ILT
61572010-12-01 Ian Lance Taylor <iant@google.com>
6158
6159 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
6160 virtual destructor.
6161
9a5ce24c
ILT
61622010-12-01 Ian Lance Taylor <iant@google.com>
6163
6164 * README: Update compilers known to work and fail.
6165
c7791212
NC
61662010-11-23 Matthias Klose <doko@ubuntu.com>
6167
6168 * configure.in: For --enable-gold, handle value `default' instead of
6169 `both*'. Always install ld as ld.bfd, install as ld if gold is
6170 not the default.
6171 * configure: Regenerate.
6172
0ad220c9
DK
61732010-11-18 Doug Kwan <dougkwan@google.com>
6174
6175 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
6176 and right_alignment to be zero. Store result alignment only if it is
6177 greater than existing alignment.
6178
ab8056e0
CC
61792010-11-16 Cary Coutant <ccoutant@google.com>
6180
6181 PR gold/12220
6182 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6183 Check for ".zdebug_line".
6184
fd064a5b
CC
61852010-11-16 Doug Kwan <dougkwan@google.com>
6186 Cary Coutant <ccoutant@google.com>
6187
6188 * output.h (Output_segment::set_section_addresses): Pass increase_relro
6189 by reference; adjust all callers.
6190 * output.cc (Output_segment::set_section_addresses): Adjust references
6191 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
6192 list is empty.
6193 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
6194 end at page boundary.
6195
6fc6ea19
CC
61962010-11-16 Cary Coutant <ccoutant@google.com>
6197
6198 PR gold/12220
6199 * layout.cc (Layout::choose_output_section): Transform names of
6200 compressed sections even when using a script with a SECTIONS clause.
6201 (Layout::output_section_name): Remove code to transform
6202 compressed debug section names.
6203 * output.cc (Output_section::add_input_section): Use uncompressed
6204 section size when tracking input sections.
6205
95a2c8d6
RS
62062010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
6207
6208 * symtab.h (Symbol::NON_PIC_REF): Remove.
6209 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
6210 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
6211 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
6212 (Symbol::use_plt_offset): Take a flags argument and pass it
6213 directly to needs_dynamic_reloc. Restrict check for undefined
6214 weak symbols to function calls.
6215 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
6216 (Target_arm::Scan::global): Use it.
6217 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
6218 (Target_arm::Relocate::relocate): Likewise.
6219 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
6220 parameter with an r_type parameter. Use get_reference_flags
6221 to get the flags.
6222 (Target_arm::Relocate::relocate): Update accordingly.
6223 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
6224 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
6225 (Target_i386::Scan::global): Likewise.
6226 (Target_i386::Relocate::relocate): Likewise.
6227 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
6228 parameter with an r_type parameter. Use get_reference_flags
6229 to get the flags.
6230 (Target_i386::Relocate::relocate): Update accordingly.
6231 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
6232 (Target_powerpc::Scan::global): Use it.
6233 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
6234 (Target_powerpc::Relocate::relocate): Likewise.
6235 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
6236 (Target_sparc::Scan::global): Use it.
6237 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
6238 (Target_sparc::Relocate::relocate): Likewise.
6239 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
6240 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
6241 (Target_x86_64::Scan::global): Likewise.
6242 (Target_x86_64::Relocate::relocate): Likewise.
6243
f625ae50
DK
62442010-11-08 Doug Kwan <dougkwan@google.com>
6245 Cary Coutant <ccoutant@google.com>
6246
6247 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
6248 (Arm_exidx_merge_section::section_contents_): New data member.
6249 (Arm_input_section::Arm_input_section): Initialize original_contents_.
6250 (Arm_input_section::~Arm_input_section): De-allocate memory.
58797674 6251 (Arm_input_section::original_contents_): New data member.
f625ae50
DK
6252 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
6253 in parameters instead of calling Object::section_contents without
6254 locking.
6255 (Arm_output_section::group_section): New parameter TASK. Pass it
6256 to callees that need locking objects.
6257 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
6258 to lock EXIDX input sections. Fix a formatting issue. Call
6259 Arm_exidx_merged_section::build_contents to create merged section
6260 contents.
6261 (Arm_output_section::create_stub_group): New parameter TASK. Use it
6262 to lock object of stub table owner.
6263 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
6264 TEXT_SIZE to initialize data member TEXT_SIZE_.
6265 (Arm_exidx_input_section::addralign): Fix typo in comment.
6266 (Arm_exidx_input_section::text_size): New method.
6267 (Target_arm::do_relax): New parameter TASK. Pass it to callees
6268 that require locking objects. Lock objects before scanning for stubs
6269 and updating local symbols.
6270 (Arm_input_section<big_endian>::init): Copy contents of original
6271 input section.
2e702c99 6272 (Arm_input_section<big_endian>::do_write): Use saved contents of
f625ae50
DK
6273 original input section instead of calling Object::section_contents
6274 without locking.
6275 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
6276 size without calling Object::section_size().
6277 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
6278 for size. Allocate a buffer for merged EXIDX entries.
6279 (Arm_exidx_merged_section::build_contents): New method.
2e702c99 6280 (Arm_exidx_merged_section::do_write): Move merge section contents
f625ae50
DK
6281 building code to Arm_exidx_merged_section::build_contetns. Write
6282 out contetns in buffer instead of building it on the fly.
6283 (Arm_relobj::make_exidx_input_section): Also pass text section size
6284 to Arm_exidx_input_section constructor.
6285 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
6286 (Arm_dynobj::do_read_symbols): Fix memory leak.
6287 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
6288 * target.h: (class Task): Add forward declaration.
6289 (Target::relax): Add new parameter TASK and pass it to
6290 Target::do_relax().
6291 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
6292
5f9bcf58
CC
62932010-11-05 Cary Coutant <ccoutant@google.com>
6294
6295 PR gold/10708
6296 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
6297 object when reading from the file.
6298 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
6299 second layout pass.
6300 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
6301 when reading section contents.
6302 (get_section_contents): Likewise.
6303 (icf::find_identical_sections): Likewise.
6304 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
6305 object when reading from the file.
6306 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
6307 the object when doing deferred section layout.
6308
e597fa08
NC
63092010-11-03 Nick Clifton <nickc@redhat.com>
6310
6311 PR gold/12001
6312 * script.h (class Symbol_assignment: name): New member. Returns
6313 the name of the symbol.
6314 * scrfipt.cc (Script_options::is_pending_assignment): New member.
6315 Returns true if the given symbol name is on the list of
6316 assignments wating to be processed.
6317 * archive.cc (should_incldue_member): If the symbol is undefined,
6318 check to see if it is on the list of symbols pending assignment.
6319
3f9a3278
ILT
63202010-11-03 Ryan Mansfield <rmansfield@qnx.com>
6321
6322 * script-sections.cc (Script_sections::find_memory_region): Check
6323 for a NULL output section pointer.
6324
d06fb4d1
DK
63252010-10-29 Doug Kwan <dougkwan@google.com>
6326
6327 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
6328 Output_section::add_relaxed_input_section.
6329 * output.cc (Output_section::add_relaxed_input_section): Add new
6330 arguments LAYOUT and NAME. Set section order index.
6331 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
6332 Copy section order index.
6333 * output.h (Output_section::add_relaxed_input_section): Add new
6334 arguments LAYOUT and NAME.
6335
90e24de5
ILT
63362010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6337
6338 * testsuite/Makefile.am: Move gcctestdir/ld rule to
2e702c99 6339 NATIVE_OR_CROSS_LINKER.
90e24de5
ILT
6340 * testsuite/Makefile.in: Regenerate.
6341
c9484ea5
DK
63422010-10-20 Doug Kwan <dougkwan@google.com>
6343
6344 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
6345 without SHF_LINK_ORDER flags.
6346 * layout.cc (Layout::choose_output_section): Do not filter
6347 SHF_LINK_ORDER flag in a relocatable link.
6348
5bc2f5be
CC
63492010-10-17 Cary Coutant <ccoutant@google.com>
6350
6351 * output.h (Output_segment::set_section_addresses): Change function
6352 signature. Update all callers.
6353 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
6354 sections.
6355 (Output_segment::set_section_addresses): Align after last TLS
6356 section. Add padding before last relro section instead of after.
6357
0c91cf04
DK
63582010-10-17 Doug Kwan <dougkwan@google.com>
6359
6360 * gold/arm.cc (Target_arm::got_section): Use correct order and set
6361 GOT output section to be writable.
6362
8c21d9d3
CC
63632010-10-14 Cary Coutant <ccoutant@google.com>
6364
6365 * debug.h (DEBUG_INCREMENTAL): New flag.
2e702c99
RM
6366 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
6367 * gold.cc (queue_initial_tasks): Check parameters for incremental link
6368 mode.
6369 * incremental.cc (report_command_line): Ignore all forms of
6370 --incremental.
6371 * layout.cc (Layout::Layout): Check parameters for incremental link
6372 mode.
6373 * options.cc (General_options::parse_incremental): New function.
6374 (General_options::parse_no_incremental): New function.
6375 (General_options::parse_incremental_full): New function.
6376 (General_options::parse_incremental_update): New function.
6377 (General_options::incremental_mode_): New data member.
6378 (General_options::finalize): Check incremental_mode_.
6379 * options.h (General_options): Update help text for --incremental.
6380 Add --no-incremental, --incremental-full, --incremental-update.
6381 (General_options::Incremental_mode): New enum type.
6382 (General_options::incremental_mode): New function.
6383 (General_options::incremental_mode_): New data member.
6384 * parameters.cc (Parameters::incremental_mode_): New data member.
6385 (Parameters::set_options): Set incremental_mode_.
6386 (Parameters::set_incremental_full): New function.
6387 (Parameters::incremental): New function.
6388 (Parameters::incremental_update): New function.
6389 (set_parameters_incremental_full): New function.
6390 * parameters.h (Parameters::set_incremental_full): New function.
6391 (Parameters::incremental): New function.
6392 (Parameters::incremental_update): New function.
6393 (Parameters::incremental_mode_): New data member.
6394 (set_parameters_incremental_full): New function.
6395 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
6396 incremental link mode.
6397 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
6398 (Sized_relobj::do_relocate_sections): Likewise.
6399 * testsuite/Makefile.am (incremental_test): Use --incremental-full
6400 option.
6401 * testsuite/Makefile.in: Regenerate.
6402 * testsuite/incremental_test.sh: Filter all forms of --incremental.
8c21d9d3 6403
bb32aa18 64042010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
6405
6406 * script-sections.h (class Script_sections): Make
6407 Sections_elements typedef public.
6408 * script-sections.cc (class Sort_output_sections): Add elements_
6409 field. Add constructor which sets it; change all callers.
6410 (Sort_output_sections::is_before): New function.
6411 (Sort_output_sections::operator()): Call is_before.
6412 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
6413 conditional.
6414 * testsuite/script_test_10.sh: New test. Test script section
6415 order.
6416 * testsuite/script_test_10.t: Likewise.
6417 * testsuite/script_test_10.s: Likewise.
6418 * testsuite/Makefile.am: Wrap the cross linker tests and the
6419 common tests into NATIVE_OR_CROSS_LINKER.
6420 (check_SCRIPTS): Add script_test_10.sh.
6421 (check_DATA): Add script_test_10.stdout.
6422 (script_test_10.o, script_test_10): New targets.
6423 (script_test_10.stdout): New target.
6424 * configure, testsuite/Makefile.in: Regenerate.
6425
3cef7179
ILT
64262010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6427
6428 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
6429 error for the deprecated relocations.
6430 (Target_arm::Scan::global): Likewise.
6431 (Target_arm::Relocate::relocate): Likewise.
6432
7411e9a8
RS
64332010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
6434
6435 * fileread.cc (Input_file::find_file): Initialize *found_name
6436 and *namep when using the fallback search for case 4.
6437
6a9da32a
CC
64382010-10-11 Cary Coutant <ccoutant@google.com>
6439
6440 * options.h (class General_options): Redefine -z lazy as an alias for
6441 the negation of -z now.
6442
ac897c20
ILT
64432010-10-11 Ian Lance Taylor <iant@google.com>
6444
6445 * resolve.cc (symbol_to_bits): Report the value of the unsupported
6446 binding.
6447
ea5cae92
NC
64482010-10-06 Nick Clifton <nickc@redhat.com>
6449
6450 * script-sections.cc(class Memory_region): Remove
6451 current_lma_offset_ field. Rename current_vma_offset_ to
6452 current_offset_. Add last_section_ field.
6453 (Memory_region::get_current_vma_address): Rename to
6454 get_current_address.
6455 (Memory_region::get_current_lma_address): Delete.
6456 (Memory_region::increment_vma_offset): Rename to
6457 increment_offset.
6458 (Memory_region::increment_lma_offset): Delete.
6459 (Memory_region::attributes_compatible): New method. Returns
6460 true if the provided section is compatible with the region.
6461 (Memory_region::get_last_section): New method. Returns the last
6462 section to use the region.
6463 (Memory_region::set_last_section): New method. Stores the last
6464 section to use the region.
6465 (Script_sections::block_in_region): New method. Returns true if
6466 a block of memory is contained within a region.
6467 (Script_sections::find_memory_region): New method. Locates a
6468 memory region to be used to set a VMA or LMA address.
6469 (Output_section_definition::set_section_addresses): Add code to
6470 check for addresses set by memory regions.
6471 (Output_segment::set_section_addresses): Remove memory region
6472 walking code.
6473 (Script_sections::create_segment): Add a warning if a header
6474 segment is created outside of any region.
6475 * script-sections.h (class Script_sections): Add prototypes for
6476 find_memory_region and block_in_region methods.
6477 * testsuite/memory_test.s: Use .long instead of .word.
6478 * testsuite/memory_test.t: Add some more output sections.
6479 * testsuite/memory_test.sh: Update expected output.
6480
a9bfd952
DK
64812010-10-02 Doug Kwan <dougkwan@google.com>
6482
6483 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
6484 defintion to symtab.h
6485 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
6486 declaration to defintion.
6487
bacff3ab
NC
64882010-10-01 Nick Clifton <nickc@redhat.com>
6489
6490 * expression.cc (eval): Replace dummy argument with NULL.
6491 (eval_maybe_dot): Check for a NULL result section pointer.
6492 (Symbol_expression::value): Likewise.
6493 (Dot_expression::value): Likewise.
6494 (BINARY_EXPRESSION): Likewise.
6495 (Max_expression::value): Likewise.
6496 (Min_expression::value): Likewise.
6497 (Absolute_expression::value): Likewise.
6498 (Addr_expression::value_from_output_section): Likewise.
6499 (Loaddddr_expression::value_from_output_section): Likewise.
6500 (Segment_start_expression::value): Likewise.
6501 * script-sections.cc
6502 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
6503 argument with NULL.
6504 (Sections_elememt_dot_assignment::set_section_addresses):
6505 Likewise.
6506 (Output_data_expression::do_write_to_buffer): Likewise.
6507 (Output_section_definition::finalize_symbols): Likewise.
6508 (Output_section_definition::set_section_addresses): Likewise.
6509
f81bc8b5
DK
65102010-09-30 Doug Kwan <dougkwan@google.com>
6511
6512 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
6513
c95e9f27
ST
65142010-09-28 Sriraman Tallam <tmsriram@google.com>
6515
6516 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 6517 function.
c95e9f27
ST
6518 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
6519 virtual function.
6520 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
6521 virtual function.
6522 * icf.cc (get_section_contents): Inline merge sections only when
6523 target allows it.
6524
3cac54d2
RW
65252010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6526
6527 * configure: Regenerate.
6528
2904037a
ILT
65292010-09-17 Ian Lance Taylor <iant@google.com>
6530
6531 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
6532 * testsuite/Makefile.am (memory_test.o): New target.
6533 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
6534 memory_test.t.
6535 * testsuite/Makefile.in: Rebuild.
2904037a 6536
bca7fb63
DK
65372010-09-17 Doug Kwan <dougkwan@google.com>
6538
6539 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
6540 defintion if relocation uses GOT entries of the symbol.
6541 * testsuite/icf_safe_test.sh: Fix test.
6542 * testsuite/icf_safe_so_test.sh: Fix test.
6543
4ef28648
CC
65442010-09-16 Cary Coutant <ccoutant@google.com>
6545
6546 * script_sections.cc (class Memory_region): Remove "NULL" from
6547 vector initializations.
6548
793990de
CC
65492010-09-15 Cary Coutant <ccoutant@google.com>
6550
6551 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
6552 Resolve forwarding symbols.
6553
81e015e2
DK
65542010-09-15 Doug Kwan <dougkwan@google.com>
6555
6556 * gold/testsuite/script_test_3.t: Add ARM special sections.
6557 * gold/testsuite/script_test_4.t: Same.
6558 * gold/testsuite/script_test_5.t: Same.
6559 * gold/testsuite/script_test_6.t: Same.
6560 * gold/testsuite/script_test_7.t: Same.
6561 * gold/testsuite/script_test_7.t: Same.
6562 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
6563
36171d64
CC
65642010-09-14 Cary Coutant <ccoutant@google.com>
6565
6566 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
6567 (Target_x86_64::Relocate::relocate_tls): Replace check for
6568 saw_tls_block_reloc_ with test for executable section.
6569
d89051bd
CC
65702010-09-12 Cary Coutant <ccoutant@google.com>
6571
6572 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
6573 position-independent executables to shared libraries need dynamic
6574 relocations.
6575 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
6576 position-independent executables.
6577 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
6578 * testsuite/Makefile.in: Regenerate.
6579
fca41f0f
NC
65802010-09-10 Nick Clifton <nickc@redhat.com>
6581
6582 PR gold/11997
6583 * testsuite/memory_test.t: Discard any sections that are not
6584 needed.
6585
6695e4b3
L
65862010-09-09 H.J. Lu <hongjiu.lu@intel.com>
6587
6588 PR gold/11996
6589 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
6590 "This::" to work around a bug in gcc 4.2.
6591
6592 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
6593
0f72bf6f
RÁE
65942010-09-09 Rafael Espindola <espindola@google.com>
6595
6596 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
6597 sections with different PF_X flags in the same segment.
6598 (Layout::find_first_load_seg): Search all segments to find the first
6599 one.
6600 * options.h (rosegment): New.
6601
66022010-09-08 Rafael Espindola <espindola@google.com>
a6577478 6603
05a79166 6604 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 6605
aa98ff75
DK
66062010-09-08 Doug Kwan <dougkwan@google.com>
6607
6608 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
6609 (Arm_relobj::do_relocate_sections): Add new parameter for output
6610 file to match the parent.
6611 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
6612 of local symbols instead of input values. Update code to track
6613 changes in gold::relocate_section.
6614 * object.cc (Sized_relobj::compute_final_local_value): New methods.
6615 (Sized_relobj::compute_final_local_value_internal): New methods.
6616 (Sized_relobj::do_finalize_local_symbols): Move code from loop
6617 body into private version of Sized_relobj::compute_final_local_value.
6618 Call the inline method.
6619 * object.h (Symbol_value::Symbol_value): Define destructor. Free
6620 merged symbol value if there is one.
6621 (Symbol_value::has_output_value): New method defintiion.
6622 (Sized_relobj::Compute_final_local_value_status): New enum type.
6623 (Sized_relobj::compute_final_local_value): New methods.
6624 (Sized_relobj::compute_final_local_value_internal): New methods.
6625 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
6626 and arm_cortex_a8.sh.
6627 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
6628 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
6629 New tests.
6630 * Makefile.in: Regenerate.
6631 * testsuite/arm_bl_out_of_range.s: Update test.
6632 * testsuite/thumb_bl_out_of_range.s: Ditto.
6633 * testsuite/thumb_blx_out_of_range.s: Ditto.
6634 * testsuite/arm_branch_out_of_range.sh: New file.
6635 * testsuite/arm_cortex_a8.sh: Ditto.
6636 * testsuite/arm_cortex_a8_b.s: Ditto.
6637 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
6638 * testsuite/arm_cortex_a8_b_local.s: Ditto.
6639 * testsuite/arm_cortex_a8_bl.s: Ditto.
6640 * testsuite/arm_cortex_a8_blx.s: Ditto.
6641 * testsuite/arm_cortex_a8_local.s: Ditto.
6642 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
6643 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
6644
05a79166
L
66452010-09-08 Rafael Espindola <espindola@google.com>
6646
6647 * Makefile.am (memory_test.stdout): Run readelf with -W.
6648 * Makefile.in: Regenerate.
6649 * testsuite/memory_test.sh: Make the regexps accept both 32 and
6650 64 bit output.
6651
33dbc701
RÁE
66522010-09-08 Rafael Espindola <espindola@google.com>
6653
6654 * script-sections.cc (Script_sections::add_memory_region): Convert
6655 field precision to int.
6656 * script.cc (script_set_section_region, script_set_section_region):
6657 Convert field precision to int.
6658
731ca54a
RÁE
66592010-09-08 Rafael Espindola <espindola@google.com>
6660
6661 * arm.cc (do_finalize_sections): Create the __exidx_start and
6662 __exdix_end symbols even when the section is missing.
6663
7f8cd844
NC
66642010-09-08 Nick Clifton <nickc@redhat.com>
6665
6666 * README: Remove claim that MEMORY is not supported.
6667 * expression.cc (script_exp_function_origin)
6668 (script_exp_function_length): Move from here to ...
6669 * script.cc: ... here.
6670 (script_set_section_region, script_add_memory)
6671 (script_parse_memory_attr, script_include_directive): New
6672 functions.
6673 * script-sections.cc
6674 (class Memory_region): New class.
6675 (class Output_section_definition): Add set_memory_region,
6676 set_section_vma, set_section_lma and get_section_name methods.
6677 (class Script_Sections): Add add_memory_region,
6678 find_memory_region, find_memory_region_origin,
6679 find_memory_region_length and set_memory_region methods.
6680 Have set_section_addresses method walk the list of set memory
6681 regions.
6682 Extend the print methos to display memory regions.
6683 * script-sections.h: Add prototypes for new methods.
6684 Add enum for MEMORY region attributes.
6685 * yyscript.y: Add support for parsing MEMORY regions.
6686 * script-c.h: Add prototypes for new functions.
6687 * testsuite/Makefile.am: Add test of MEMORY region functionality.
6688 * testsuite/Makefile.in: Regenerate.
6689 * testsuite/memory_test.sh: New script.
6690 * testsuite/memory_test.s: New assembler source file.
6691 * testsuite/memory_test.t: New linker script.
6692
a4649286
DK
66932010-08-27 Doug Kwan <dougkwan@google.com>
6694
6695 * gold/resolve.cc (Symbol_table::should_override): Let a weak
6696 reference override an existing dynamic weak reference.
6697 * testsuite/Makefile.am: Add new test dyn_weak_ref.
6698 * testsuite/Makefile.in: Regenerate.
6699 * testsuite/dyn_weak_ref.sh: New file.
6700 * testsuite/dyn_weak_ref_1.c: Ditto.
6701 * testsuite/dyn_weak_ref_2.c: Ditto.
6702
b56648ad
ILT
67032010-08-27 Ian Lance Taylor <iant@google.com>
6704
6705 * incremental.h (class Incremental_input_entry): Add virtual
6706 destructor.
6707
809313cb
ILT
67082010-08-27 Ian Lance Taylor <iant@google.com>
6709
6710 * testsuite/start_lib_test_3.c: Mark t3 as used.
6711
11e32464
NC
67122010-08-27 Nick Clifton <nickc@redhat.com>
6713
6714 * options.cc (version_script): Fix small typo in previous
6715 whitespace tidyup.
6716
ca09d69a
NC
67172010-08-25 Nick Clifton <nickc@redhat.com>
6718
6719 * archive.cc: Formatting fixes: Remove whitespace between
6720 typename and following asterisk. Remove whitespace between
6721 function name and opening parenthesis.
6722 * archive.h: Likewise.
6723 * arm.cc: Likewise.
6724 * attributes.cc: Likewise.
6725 * attributes.h: Likewise.
6726 * common.cc: Likewise.
6727 * copy-relocs.cc: Likewise.
6728 * dirsearch.h: Likewise.
6729 * dynobj.cc: Likewise.
6730 * ehframe.cc: Likewise.
6731 * ehframe.h: Likewise.
6732 * expression.cc: Likewise.
6733 * fileread.cc: Likewise.
6734 * fileread.h: Likewise.
6735 * gc.h: Likewise.
6736 * gold-threads.cc: Likewise.
6737 * gold.cc: Likewise.
6738 * i386.cc: Likewise.
6739 * icf.h: Likewise.
6740 * incremental-dump.cc: Likewise.
6741 * incremental.cc: Likewise.
6742 * layout.cc: Likewise.
6743 * layout.h: Likewise.
6744 * main.cc: Likewise.
6745 * merge.cc: Likewise.
6746 * merge.h: Likewise.
6747 * object.cc: Likewise.
6748 * object.h: Likewise.
6749 * options.cc: Likewise.
6750 * options.h: Likewise.
6751 * output.cc: Likewise.
6752 * output.h: Likewise.
6753 * plugin.cc: Likewise.
6754 * plugin.h: Likewise.
6755 * powerpc.cc: Likewise.
6756 * reloc.cc: Likewise.
6757 * script-c.h: Likewise.
6758 * script-sections.cc: Likewise.
6759 * script.cc: Likewise.
6760 * stringpool.cc: Likewise.
6761 * symtab.cc: Likewise.
6762 * symtab.h: Likewise.
6763 * target.cc: Likewise.
6764 * timer.cc: Likewise.
6765 * timer.h: Likewise.
6766 * version.cc: Likewise.
6767 * x86_64.cc: Likewise.
6768
b8fa8750
NC
67692010-08-24 Nick Clifton <nickc@redhat.com>
6770
6771 PR 11899
6772 * layout.cc (segment_precedes): Sort segments by their physical
6773 addresses, if they have been set.
6774
9919d93b
CC
67752010-08-23 Cary Coutant <ccoutant@google.com>
6776
6777 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
6778 symbols data.
6779 (Lib_group::include_member): Unlock object after deleting its
6780 symbols data.
6781 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
6782 the bug fixed here.
6783
97b4be1c
CC
67842010-08-19 Neil Vachharajani <nvachhar@google.com>
6785 Cary Coutant <ccoutant@google.com>
6786
6787 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
6788 constructor, and set_blocker.
6789 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
6790 readsyms_blocker_.
6791 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
6792 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
6793 * testsuite/Makefile.am (start_lib_test): New test case.
6794 * testsuite/Makefile.in: Regenerate.
6795 * testsuite/start_lib_test_main.c: New file.
6796 * testsuite/start_lib_test_1.c: New file.
6797 * testsuite/start_lib_test_2.c: New file.
6798 * testsuite/start_lib_test_3.c: New file.
6799
dd0b1884
ILT
68002010-08-19 Ian Lance Taylor <iant@google.com>
6801
6802 * Makefile.in: Rebuild with automake 1.11.1.
6803 * aclocal.m4: Likewise.
6804 * testsuite/Makefile.in: Likewise.
6805
7223e9ca
ILT
68062010-08-19 Ian Lance Taylor <iant@google.com>
6807
6808 PR 10893
6809 * i386.cc (class Output_data_plt_i386): Update declarations.
6810 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
6811 local_ifuncs_ fields.
6812 (Target_i386::do_plt_section_for_global): New function.
6813 (Target_i386::do_plt_section_for_local): New function.
6814 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
6815 parameter; change all callers. Initialize global_ifuncs_ and
6816 local_ifuncs_. If doing a static link define __rel_iplt_start and
6817 __rel_iplt_end.
6818 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
6819 (Output_data_plt_i386::add_local_ifunc_entry): New function.
6820 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
6821 symbols.
6822 (Target_i386::make_plt_section): New function, broken out of
6823 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
6824 (Target_i386::make_plt_entry): Call make_plt_section.
6825 (Target_i386::make_local_ifunc_plt_entry): New function.
6826 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
6827 (Target_i386::Scan::local): Handle IFUNC symbols. Add
6828 R_386_IRELATIVE to switch.
6829 (Target_i386::Scan::global): Likewise.
6830 (Target_i386::Relocate::relocate): Likewise.
6831 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
6832 switch.
6833 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
6834 (Target_x86_64::do_plt_section_for_global): New function.
6835 (Target_x86_64::do_plt_section_for_local): New function.
6836 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
6837 parameter; change all callers. If doing a static link define
6838 __rela_iplt_start and __rela_iplt_end.
6839 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
6840 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
6841 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
6842 to point to .plt.
6843 (Target_x86_64::make_local_ifunc_plt_entry): New function.
6844 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
6845 switch.
6846 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
6847 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
6848 R_X86_64_IRELATIVE to switch.
6849 (Target_x86_64::Scan::global): Likewise.
6850 (Target_x86_64::Relocate::relocate): Likewise.
6851 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
6852 switch.
6853 * target.h (class Target): Add plt_section_for_global and
6854 plt_section_for_local functions. Add do_plt_section_for_global
6855 and do_plt_section_for_local virtual functions.
6856 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
6857 clarifying comments.
6858 (Symbol::use_plt_offset): Handle IFUNC symbol.
6859 * object.cc (Sized_relobj::Sized_relobj): Initialize
6860 local_plt_offsets_.
6861 (Sized_relobj::local_has_plt_offset): New function.
6862 (Sized_relobj::local_plt_offset): New function.
6863 (Sized_relobj::set_local_plt_offset): New function.
6864 (Sized_relobj::do_count): Handle IFUNC symbol.
6865 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
6866 a bit away from input_shndx_ field. Add set_is_func_symbol and
6867 is_ifunc_symbol functions.
6868 (class Sized_relobj): Update declarations. Remove Tls_got_entry
6869 and Local_tls_got_offsets. Define Local_plt_offsets. Add
6870 local_plt_offsets_ field.
6871 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
6872 * output.h (class Output_section_data): Add non-const
6873 output_section function.
6874 (class Output_data_got): Update declarations.
6875 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
6876 Add use_plt_offset parameter to global and local constructors.
6877 Change all callers. Change local_sym_index_ field to 31 bits.
6878 Change GSYM_CODE and CONSTANT_CODE accordingly.
6879 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
6880 doing a static link don't set sh_link field.
6881 (Output_data_got::Got_entry::write): Use PLT offset if
6882 appropriate.
6883 (Output_data_got::add_global_plt): New function.
6884 (Output_data_got::add_local_plt): New function.
6885 * target-reloc.h (relocate_section): Handle IFUNC symbol.
6886 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
6887 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
6888 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
6889 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
6890 IFUNC conditional.
6891 * testsuite/ifunc-sel.h: New file.
6892 * testsuite/ifuncmain1.c: New file.
6893 * testsuite/ifuncmain1vis.c: New file.
6894 * testsuite/ifuncmod1.c: New file.
6895 * testsuite/ifuncdep2.c: New file.
6896 * testsuite/ifuncmain2.c: New file.
6897 * testsuite/ifuncmain3.c: New file.
6898 * testsuite/ifuncmod3.c: New file.
6899 * testsuite/ifuncmain4.c: New file.
6900 * testsuite/ifuncmain5.c: New file.
6901 * testsuite/ifuncmod5.c: New file.
6902 * testsuite/ifuncmain6pie.c: New file.
6903 * testsuite/ifuncmod6.c: New file.
6904 * testsuite/ifuncmain7.c: New file.
6905 * configure, testsuite/Makefile.in: Rebuild.
6906
56f75c03
ILT
69072010-08-18 Ian Lance Taylor <iant@google.com>
6908
6909 * incremental.cc
6910 (Output_section_incremental_inputs::write_input_files): Add cast
6911 to avoid signed/unsigned comparison warning.
6912 (Output_section_incremental_inputs::write_info_blocks): Likewise.
6913
55455f89
CC
69142010-08-12 Cary Coutant <ccoutant@google.com>
6915
6916 * common.cc (Sort_commons::operator()): Remove unnecessary code.
6917
e2054bcb
ILT
69182010-08-13 Ian Lance Taylor <iant@google.com>
6919
6920 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
6921
74f67560
DK
69222010-08-12 Cary Coutant <ccoutant@google.com>
6923 Doug Kwan <dougkwan@google.com>
6924
6925 * resolve.cc (Symbol_table::should_override): When a weak dynamic
6926 defintion overrides non-weak undef, remember that the original undef
6927 is not weak.
6928 * symtab.cc (Symbol_table::sized_write_global): For undef without
6929 an original weak binding, set binding to global in output.
6930 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
6931 * testsuite/Makefile.in: Regenerate.
6932 * testsuite/strong_ref_weak_def.sh: New file.
6933 * testsuite/strong_ref_weak_def_1.c: Ditto.
6934 * testsuite/strong_ref_weak_def_2.c: Ditto.
6935
d1238d12
CC
69362010-08-12 Cary Coutant <ccoutant@google.com>
6937
6938 * testsuite/incremental_test.sh: Rewrite.
6939 * testsuite/incremental_test_1.c: Rewrite.
6940 * testsuite/incremental_test_2.c: Rewrite.
6941
0e70b911
CC
69422010-08-12 Cary Coutant <ccoutant@google.com>
6943
6944 * arm.cc (Target_arm::got_size): Add const.
6945 (Target_arm::got_entry_count): New function.
6946 (Target_arm::plt_entry_count): New function.
6947 (Target_arm::first_plt_entry_offset): New function.
6948 (Target_arm::plt_entry_size): New function.
6949 (Output_data_plt_arm::entry_count): New function.
6950 (Output_data_plt_arm::first_plt_entry_offset): New function.
6951 (Output_data_plt_arm::get_plt_entry_size): New function.
6952 * i386.cc (Target_i386::got_size): Add const.
6953 (Target_i386::got_entry_count): New function.
6954 (Target_i386::plt_entry_count): New function.
6955 (Target_i386::first_plt_entry_offset): New function.
6956 (Target_i386::plt_entry_size): New function.
6957 (Output_data_plt_i386::entry_count): New function.
6958 (Output_data_plt_i386::first_plt_entry_offset): New function.
6959 (Output_data_plt_i386::get_plt_entry_size): New function.
6960 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
6961 find_incremental_inputs_sections. Dump incremental_got_plt section.
6962 * incremental.cc: Include target.h.
6963 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
6964 parameter. Adjust all callers. Find incremental_got_plt section.
6965 (Incremental_inputs::create_data_sections): Create incremental_got_plt
6966 section.
6967 (Output_section_incremental_inputs::set_final_data_size): Calculate
6968 size of incremental_got_plt section.
6969 (Output_section_incremental_inputs::do_write): Write the
6970 incremental_got_plt section.
6971 (Got_plt_view_info): New struct.
6972 (Local_got_offset_visitor): New class.
6973 (Global_got_offset_visitor): New class.
6974 (Global_symbol_visitor_got_plt): New class.
6975 (Output_section_incremental_inputs::write_got_plt): New function.
6976 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
6977 Add parameter. Adjust all callers.
6978 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
6979 (Incremental_inputs::got_plt_section): New function.
6980 (Incremental_inputs::got_plt_section_): New data member.
6981 (Incremental_got_plt_reader): New class.
6982 * layout.cc (Layout::create_incremental_info_sections): Add the
6983 incremental_got_plt section.
6984 * object.h (Got_offset_list::get_list): New function.
6985 (Got offset_list::for_all_got_offsets): New function.
6986 (Sized_relobj::local_got_offset_list): New function.
6987 * powerpc.cc (Target_powerpc::got_size): Add const.
6988 (Target_powerpc::got_entry_count): New function.
6989 (Target_powerpc::plt_entry_count): New function.
6990 (Target_powerpc::first_plt_entry_offset): New function.
6991 (Target_powerpc::plt_entry_size): New function.
6992 (Output_data_plt_powerpc::entry_count): New function.
6993 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
6994 (Output_data_plt_powerpc::get_plt_entry_size): New function.
6995 * sparc.cc (Target_sparc::got_size): Add const.
6996 (Target_sparc::got_entry_count): New function.
6997 (Target_sparc::plt_entry_count): New function.
6998 (Target_sparc::first_plt_entry_offset): New function.
6999 (Target_sparc::plt_entry_size): New function.
7000 (Output_data_plt_sparc::entry_count): New function.
7001 (Output_data_plt_sparc::first_plt_entry_offset): New function.
7002 (Output_data_plt_sparc::get_plt_entry_size): New function.
7003 * symtab.h (Symbol::got_offset_list): New function.
7004 (Symbol_table::for_all_symbols): New function.
7005 * target.h (Sized_target::got_entry_count): New function.
7006 (Sized_target::plt_entry_count): New function.
7007 (Sized_target::plt_entry_size): New function.
7008 * x86_64.cc (Target_x86_64::got_size): Add const.
7009 (Target_x86_64::got_entry_count): New function.
7010 (Target_x86_64::plt_entry_count): New function.
7011 (Target_x86_64::first_plt_entry_offset): New function.
7012 (Target_x86_64::plt_entry_size): New function.
7013 (Output_data_plt_x86_64::entry_count): New function.
7014 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
7015 (Output_data_plt_x86_64::get_plt_entry_size): New function.
7016
09ec0418
CC
70172010-08-12 Cary Coutant <ccoutant@google.com>
7018
7019 * archive.cc: Include incremental.h.
7020 (Archive::Archive): Initialize incremental_info_.
7021 (Archive::include_member): Record archive members in incremental info.
7022 (Add_archive_symbols::run): Record begin and end of an archive in
7023 incremental info.
7024 (Lib_group::include_member): Record objects in incremental info.
7025 * archive.h (Incremental_archive_entry): Forward declaration.
7026 (Archive::set_incremental_info): New member function.
7027 (Archive::incremental_info): New member function.
7028 (Archive::Unused_symbol_iterator): New class.
7029 (Archive::unused_symbols_begin): New member function.
7030 (Archive::unused_symbols_end): New member function.
7031 (Archive::incremental_info_): New data member.
7032 * incremental-dump.cc (find_input_containing_global): New function.
7033 (dump_incremental_inputs): Dump new incremental info sections.
7034 * incremental.cc: Include symtab.h.
7035 (Output_section_incremental_inputs): New class.
7036 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
7037 new incremental info sections.
7038 (Sized_incremental_binary::do_check_inputs): Likewise.
7039 (Incremental_inputs::report_archive): Remove.
7040 (Incremental_inputs::report_archive_begin): New function.
7041 (Incremental_inputs::report_archive_end): New function.
7042 (Incremental_inputs::report_object): New function.
7043 (Incremental_inputs::finalize_inputs): Remove.
7044 (Incremental_inputs::report_input_section): New function.
7045 (Incremental_inputs::report_script): Rewrite.
7046 (Incremental_inputs::finalize): Do nothing but finalize string table.
7047 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
7048 (Incremental_inputs::sized_create_inputs_section_data): Remove.
7049 (Incremental_inputs::create_data_sections): New function.
7050 (Incremental_inputs::relocs_entsize): New function.
7051 (Output_section_incremental_inputs::set_final_data_size): New function.
7052 (Output_section_incremental_inputs::do_write): New function.
7053 (Output_section_incremental_inputs::write_header): New function.
7054 (Output_section_incremental_inputs::write_input_files): New function.
7055 (Output_section_incremental_inputs::write_info_blocks): New function.
7056 (Output_section_incremental_inputs::write_symtab): New function.
7057 * incremental.h (Incremental_script_entry): Forward declaration.
7058 (Incremental_object_entry): Forward declaration.
7059 (Incremental_archive_entry): Forward declaration.
7060 (Incremental_inputs): Forward declaration.
7061 (Incremental_inputs_header_data): Remove.
7062 (Incremental_inputs_header): Remove.
7063 (Incremental_inputs_header_write): Remove.
7064 (Incremental_inputs_entry_data): Remove.
7065 (Incremental_inputs_entry): Remove.
7066 (Incremental_inputs_entry_write): Remove.
7067 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
7068 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
7069 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
7070 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
7071 Likewise.
7072 (Incremental_input_entry): New class.
7073 (Incremental_script_entry): New class.
7074 (Incremental_object_entry): New class.
7075 (Incremental_archive_entry): New class.
7076 (Incremental_inputs::Incremental_inputs): Initialize new data members.
7077 (Incremental_inputs::report_inputs): Remove.
7078 (Incremental_inputs::report_archive): Remove.
7079 (Incremental_inputs::report_archive_begin): New function.
7080 (Incremental_inputs::report_archive_end): New function.
7081 (Incremental_inputs::report_object): Change prototype.
7082 (Incremental_inputs::report_input_section): New function.
7083 (Incremental_inputs::report_script): Change prototype.
7084 (Incremental_inputs::get_reloc_count): New function.
7085 (Incremental_inputs::set_reloc_count): New function.
7086 (Incremental_inputs::create_data_sections): New function.
7087 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
7088 (Incremental_inputs::inputs_section): New function.
7089 (Incremental_inputs::symtab_section): New function.
7090 (Incremental_inputs::relocs_section): New function.
7091 (Incremental_inputs::get_stringpool): Add const.
7092 (Incremental_inputs::command_line): Add const.
7093 (Incremental_inputs::inputs): Remove.
7094 (Incremental_inputs::command_line_key): New function.
7095 (Incremental_inputs::input_file_count): New function.
7096 (Incremental_inputs::input_files): New function.
7097 (Incremental_inputs::relocs_entsize): New function.
7098 (Incremental_inputs::sized_create_inputs_section_data): Remove.
7099 (Incremental_inputs::finalize_inputs): Remove.
7100 (Incremental_inputs::Input_info): Remove.
7101 (Incremental_inputs::lock_): Remove.
7102 (Incremental_inputs::inputs_): Change type.
7103 (Incremental_inputs::inputs_map_): Remove.
7104 (Incremental_inputs::current_object_entry_): New data member.
7105 (Incremental_inputs::inputs_section_): New data member.
7106 (Incremental_inputs::symtab_section_): New data member.
7107 (Incremental_inputs::relocs_section_): New data member.
7108 (Incremental_inputs::reloc_count_): New data member.
7109 (Incremental_inputs_reader): New class.
7110 (Incremental_symtab_reader): New class.
7111 (Incremental_relocs_reader): New class.
7112 * layout.cc (Layout::finalize): Move finalization of incremental info
7113 and creation of incremental info sections to follow finalization of
7114 symbol table. Set offsets for postprocessing sections.
7115 (Layout::create_incremental_info_sections): Call
7116 Incremental_inputs::create_data_sections. Add incremental symtab
7117 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
7118 sections to layout after input sections.
7119 * layout.h (struct Timespec): Forward declaration.
7120 (Layout::incremental_inputs): Add const.
7121 (Layout::create_incremental_info_sections): Add parameter.
7122 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
7123 * object.cc: Include incremental.h.
7124 (Relobj::finalize_incremental_relocs): New function.
7125 (Sized_relobj::do_layout): Record input sections in incremental info.
7126 * object.h (Object::output_section): New function.
7127 (Object::output_section_offset): Moved from Relobj.
7128 (Object::get_incremental_reloc_base): New function.
7129 (Object::get_incremental_reloc_count): New function.
7130 (Object::do_output_section): New function.
7131 (Object::do_output_section_offset): Moved from Relobj.
7132 (Object::do_get_incremental_reloc_base): New function.
7133 (Object::do_get_incremental_reloc_count): New function.
7134 (Object::Object): Initialize new data members.
7135 (Relobj::output_section): Renamed do_output_section and moved to
7136 protected.
7137 (Relobj::output_section_offset): Moved to Object.
7138 (Relobj::do_get_incremental_reloc_base): New function.
7139 (Relobj::do_get_incremental_reloc_count): New function.
7140 (Relobj::allocate_incremental_reloc_counts): New function.
7141 (Relobj::count_incremental_reloc): New function.
7142 (Relobj::finalize_incremental_relocs): New function.
7143 (Relobj::next_incremental_reloc_index): New function.
7144 (Relobj::reloc_counts_): New data member.
7145 (Relobj::reloc_bases_): New data member.
7146 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
7147 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
7148 (Sized_relobj::incremental_relocs_scan): New function.
7149 (Sized_relobj::incremental_relocs_scan_reltype): New function.
7150 (Sized_relobj::incremental_relocs_write): New function.
7151 (Sized_relobj::incremental_relocs_write_reltype): New function.
7152 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
7153 incremental link.
7154 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
7155 archives and object files elsewhere.
7156 (Add_symbols::run): Report object files here.
7157 (Finish_group::run): Report end of archive at end of group.
7158 * reloc.cc: Include layout.h, incremental.h.
7159 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
7160 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
7161 (Sized_relobj::incremental_relocs_scan): New function.
7162 (Sized_relobj::incremental_relocs_scan_reltype): New function.
7163 (Sized_relobj::do_relocate_sections): Write incremental relocations.
7164 (Sized_relobj::incremental_relocs_write): New function.
7165 (Sized_relobj::incremental_relocs_write_reltype): New function.
7166 * script.cc (read_input_script): Rewrite test for incremental link.
7167 Change call to Incremental_inputs::report_script.
7168 * symtab.h (Symbol_table::first_global_index): New function.
7169 (Symbol_table::output_count): New function.
7170
ce0d1972
DK
71712010-08-12 Doug Kwan <dougkwan@google.com>
7172
7173 * arm.cc (Target_arm::merge_object_attributes): Check command line
7174 options --no-wchar-size-warning and --no-enum-size-warning.
7175 * options.h (General_options): Add ld-compatible options
7176 --no-enum-size-warning and --no-wchar-size-warning.
7177
6e5710ce
ILT
71782010-08-04 Ian Lance Taylor <iant@google.com>
7179
7180 * x86_64.cc (Target_x86_64::Scan::local): Use
7181 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
7182 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
7183 (Target_x86_64::Scan::global): Likewise.
7184 (Target_x86_64::Relocate::relocate): Likewise.
7185 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
7186 Likewise.
7187
fef830db
CC
71882010-08-03 Cary Coutant <ccoutant@google.com>
7189
7190 * merge.cc (Output_merge_string::do_add_input_section): Count strings
7191 to reserve space in merged_strings vector. Keep total input size
7192 for stats.
7193 (Output_merge_string::do_print_merge_stats): Print total input size.
7194 * merge.h (Output_merge_string): Add input_size_ field.
7195 * stringpool.cc (Stringpool_template::string_length): Move
7196 implementations out of Stringpool_template class and place in
7197 stringpool.h.
7198 * stringpool.h (string_length): Move out of Stringpool_template.
7199
1e3811b0
ILT
72002010-08-03 Ian Lance Taylor <iant@google.com>
7201
7202 PR 11712
7203 * layout.cc (relaxation_loop_body): If address of load segment is
7204 set, adjust address to include headers if possible.
7205
7af0c620
ILT
72062010-08-03 Ian Lance Taylor <iant@google.com>
7207
7208 * version.cc (version_string): Bump to 1.10.
7209
22f0da72
ILT
72102010-08-03 Ian Lance Taylor <iant@google.com>
7211
7212 PR 11805
7213 * layout.h (enum Output_section_order): Define.
7214 (class Layout): Update declarations.
7215 * layout.cc (Layout::get_output_section): Add order parameter.
7216 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
7217 is_first_non_relro parameters. Change all callers.
7218 (Layout::choose_output_section): Likewise.
7219 (Layout::add_output_section_data): Likewise.
7220 (Layout::make_output_section): Likewise. Set order.
7221 (Layout::default_section_order): New function.
7222 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
7223 * output.cc (Output_section::Output_section): Initialize order_.
7224 Don't initialize deleted fields.
7225 (Output_segment::Output_segment): Don't initialize deleted
7226 fields.
7227 (Output_segment::add_output_section_to_load): New function
7228 replacing add_output_section. Change all callers to call this or
7229 add_output_section_to_nonload.
7230 (Output_segment::add_output_section_to_nonload): New function.
7231 (Output_segment::remove_output_section): Rewrite.
7232 (Output_segment::add_initial_output_data): Likewise.
7233 (Output_segment::has_any_data_sections): Likewise.
7234 (Output_segment::is_first_section_relro): Likewise.
7235 (Output_segment::maximum_alignment): Likewise.
7236 (Output_segment::has_dynamic_reloc): New function replacing
7237 dynamic_reloc_count. Change all callers.
7238 (Output_segment::has_dynamic_reloc_list): New function replacing
7239 dynamic_reloc_count_list. Change all callers.
7240 (Output_segment::set_section_addresses): Rewrite.
7241 (Output_segment::set_offset): Rewrite.
7242 (Output_segment::find_first_and_last_list): Remove.
7243 (Output_segment::set_tls_offsets): Rewrite.
7244 (Output_segment::first_section_load_address): Likewise.
7245 (Output_segment::output_section_count): Likewise.
7246 (Output_segment::section_with_lowest_load_address): Likewise.
7247 (Output_segment::write_section_headers): Likewise.
7248 (Output_segment::print_sections_to_map): Likewise.
7249 * output.h (class Output_data): Remove dynamic_reloc_count_
7250 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
7251 (Output_data::add_dynamic_reloc): Rewrite.
7252 (Output_data::has_dynamic_reloc): New function.
7253 (Output_data::dynamic_reloc_count): Remove.
7254 (class Output_section): Add order_ field. Remvoe is_relro_local_,
7255 is_last_relro_, is_first_non_relro_, is_interp_,
7256 is_dynamic_linker_section_ fields. Add order and set_order
7257 functions. Remove is_relro_local, set_is_relro_local,
7258 is_last_relro, set_is_last_relro, is_first_non_relro,
7259 set_is_first_non_relro functions, is_interp, set_is_interp,
7260 is_dynamic_linker_section, and set_is_dynamic_linker_section
7261 functions.
7262 (class Output_segment): Change Output_data_list from std::list to
7263 std:;vector. Add output_lists_ field. Remove output_data_ and
7264 output_bss_ fields. Update declarations.
7265
3ff2ccb0
ILT
72662010-08-02 Ian Lance Taylor <iant@google.com>
7267
7268 * arm.cc (Target_arm::gc_process_relocs): Use typename.
7269 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
7270 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
7271
88a4108b
ILT
72722010-08-02 Ian Lance Taylor <iant@google.com>
7273
7274 PR 11855
7275 * script.cc (Script_options::Script_options): Initialize
7276 symbol_definitions_ and symbol_references_.
7277 (Script_options::add_symbol_assignment): Update
7278 symbol_definitions_ and symbol_references_.
7279 (Script_options::add_symbol_reference): New function.
7280 (script_symbol): New function.
7281 * script.h (class Script_options): Add symbol_definitions_ and
7282 symbol_references_ fields.
7283 (Script_options::referenced_const_iterator): New type.
7284 (Script_options::referenced_begin): New function.
7285 (Script_options::referenced_end): New function.
7286 (Script_options::is_referenced): New function.
7287 (Script_options::any_unreferenced): New function.
7288 * script-c.h (script_symbol): Declare.
7289 * yyscript.y (exp): Call script_symbol.
7290 * symtab.cc: Include "script.h".
7291 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
7292 Change all callers. Check symbols referenced by scripts.
7293 (Symbol_table::add_undefined_symbols_from_command_line): Add
7294 layout parameter. Change all callers.
7295 (Symbol_table::do_add_undefined_symbols_from_command_line):
7296 Likewise. Break out loop body. Check symbols referenced by
7297 scripts.
7298 (Symbol_table::add_undefined_symbol_from_command_line): New
7299 function broken out of
7300 do_add_undefined_symbols_from_command_line.
7301 * symtab.h (class Symbol_table): Update declarations.
7302 * archive.cc: Include "layout.h".
7303 (Archive::should_include_member): Add layout parameter. Change
7304 all callers. Check for symbol mentioned in expression.
7305 * archive.h (class Archive): Update declaration.
7306 * object.cc (Sized_relobj::do_should_include_member): Add layout
7307 parameter.
7308 * object.h (Object::should_include_member): Add layout parameter.
7309 Change all callers.
7310 (Object::do_should_include_member): Add layout parameter.
7311 (class Sized_relobj): Update declaration.
7312 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
7313 parameter.
7314 * dynobj.h (class Sized_dynobj): Update declaration.
7315 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
7316 layout parameter.
7317 * plugin.h (class Sized_pluginobj): Update declaration.
7318
5f1ab67a
ILT
73192010-08-02 Ian Lance Taylor <iant@google.com>
7320
7321 PR 11866
7322 * output.cc (Output_segment::set_offset): Search for the first and
7323 last sections rather than assuming that the list is in order.
7324 (Output_segment::find_first_and_last_list): New function.
7325 * output.h (class Output_segment): Update declarations.
7326 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
7327 (relro_strip_test_SOURCES): New variable.
7328 (relro_strip_test_DEPENDENCIES): New variable.
7329 (relro_strip_test_LDFLAGS): New variable.
7330 (relro_strip_test_LDADD): New variable.
7331 (relro_strip_test.so): New target.
7332
a8df5856
ILT
73332010-08-02 Ian Lance Taylor <iant@google.com>
7334
7335 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
7336 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
7337 (Target_i386::got_tlsdesc_section): New function.
7338 (Target_i386::got_section): Create space for GOT entries for
7339 TLSDESC relocations.
7340 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
7341 R_386_TLS_GOTDESC.
7342 (Target_i386::Scan::global): Likewise.
7343 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
7344 using TLSDESC GOT.
7345 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
7346 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
7347 (Target_x86_64::got_tlsdesc_section): New function.
7348 (Target_x86_64::got_section): Create space for GOT entries for
7349 TLSDESC relocations.
7350 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
7351 R_386_TLS_GOTDESC.
7352 (Target_x86_64::Scan::global): Likewise.
7353 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
7354 using TLSDESC GOT.
7355
0c10a0a6
ILT
73562010-08-02 Ian Lance Taylor <iant@google.com>
7357
7358 * testsuite/final_layout.sh: Use dc to convert from hex to
7359 decimal.
7360
41cbeecc
ST
73612010-07-29 Sriraman Tallam <tmsriram@google.com>
7362
7363 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
7364 paramter to the call to gold::gc_process_relocs.
7365 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
7366 paramter to the call to gold::gc_process_relocs.
7367 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
7368 parameter to the call to gold::gc_process_relocs.
7369 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
7370 template parameter to the call to gold::gc_process_relocs.
7371 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
7372 paramter to the call to gold::gc_process_relocs.
7373 * gc.h (get_embedded_addend_size): New function.
7374 (gc_process_relocs): Save the size of the reloc for use by ICF.
7375 * icf.cc (get_section_contents): Get the addend from the text section
7376 for SHT_REL relocation sections.
7377 * icf.h (Icf::Reloc_addend_size_info): New typedef.
7378 (Icf::Reloc_info): Add new member reloc_addend_size_info.
7379 * int_encoding.h (read_from_pointer): New overloaded function.
7380 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
7381 * testsuite/icf_sht_rel_addend_test.sh: New file.
7382 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
7383 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
7384
6ea55b82
RW
73852010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7386
7387 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
7388 * Makefile.in: Regenerate.
7389 * testsuite/Makefile.in: Regenerate.
7390
9691462b
ILT
73912010-07-27 Jeffrey Yasskin <jyasskin@google.com>
7392
7393 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
7394 * gold/testsuite/debug_msg.cc: Likewise.
7395 * gold/testsuite/odr_violation1.cc
7396 * gold/testsuite/odr_violation2.cc
7397
76897331
CC
73982010-07-21 Cary Coutant <ccoutant@google.com>
7399
7400 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
7401 string, and length fields.
7402 (Output_merge_string::Merged_strings_list): New type.
7403 (Output_merge_string::Merged_strings_lists): New typedef.
7404 (Output_merge_string): Replace merged_strings_ with
7405 merged_strings_lists_.
7406 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
7407 Merged_strings_list per input object and section. Don't store pointer
7408 to the string. Don't store length with each merged string entry.
7409 (Output_merge_string::finalize_merged_data): Loop over list of merged
7410 strings lists. Recompute length of each merged string.
7411
78384e8f
CC
74122010-07-15 Cary Coutant <ccoutant@google.com>
7413
7414 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
7415 here.
7416
783659f9
ILT
74172010-07-14 Ian Lance Taylor <iant@google.com>
7418
7419 * descriptors.cc (Descriptors::open): Report correct name in error
7420 message.
7421
131687b4
DK
74222010-07-13 Doug Kwan <dougkwan@google.com>
7423
7424 * arm.cc (Arm_input_section::Arm_input_section): For a
7425 SHT_ARM_EXIDX section, always keeps the input sections.
7426 (Arm_input_section::set_exidx_section_link): New method.
7427 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
7428 has_errors_ to false.
7429 (Arm_exidx_input_section::has_errors,
7430 Arm_exidx_input_section::set_has_errors): New methods.
7431 (Arm_exidx_input_section::has_errors_): New data member.
7432 (Arm_relobj::get_exidx_shndx_list): New method.
7433 (Arm_output_section::append_text_sections_to_list): Do not skip
7434 section without SHF_EXECINSTR.
7435 (Arm_output_section::fix_exidx_coverage): Skip input sections with
7436 errors.
2e702c99 7437 (Arm_relobj::make_exidx_input_section): Add new parameter for text
131687b4
DK
7438 section header. Make error messages more verbose. Check for
7439 a non-executable section linked to an EXIDX section.
7440 (Arm_relobj::do_read_symbols): Remove error checking, which has been
7441 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
7442 check that there is no deferred EXIDX section if we exit early.
7443 Instead of not making an EXIDX section in case of an error, make one
7444 and set the has_errors flag of it.
7445 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
7446 in a relocatable link.
7447 (Target_arm::do_relax): Look for the EXIDX output section instead of
7448 assuming that it is called .ARM.exidx.
2e702c99 7449 (Target_arm::fix_exidx_coverage): Add a new parameter for input
131687b4
DK
7450 section list. Do not check for SHF_EXECINSTR section flags but
7451 skip any input section with errors.
7452 * output.cc (Output_section::Output_section): Initialize
7453 always_keeps_input_sections_ to false.
7454 (Output_section::add_input_section): Check for
7455 always_keeps_input_sections_.
7456 * output.h (Output_section::always_keeps_input_sections,
7457 Output_section::set_always_keeps_input_sections): New methods.
7458 (Output_section::always_keeps_input_sections): New data member.
7459
69517287
RÁE
74602010-07-13 Rafael Espindola <espindola@google.com>
7461
7462 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
7463 * fileread.h (Input_file): Add try_extra_search_path and find_file.
7464
82742395
ILT
74652010-07-13 Philip Herron <herron.philip@googlemail.com>
7466 Ian Lance Taylor <iant@google.com>
7467
7468 * output.h (Output_section_lookup_maps::add_merge_section):
7469 Correct check of whether value was inserted.
7470 (Output_section_lookup_maps::add_merge_input_section): Likewise.
7471 (Output_section_lookup_maps::add_relaxed_input_section):
7472 Likewise.
7473 * arm.cc (Target_arm::got_section): Remove used local os.
7474 * i386.cc (Target_i386::got_section): Likewise.
7475 * x86_64.cc (Target_x86_64::got_section): Likewise.
7476 * sparc.cc (Target_sparc::got_section): Likewise.
7477 (Target_sparc::relocate): Remove unused local have_got_offset.
7478 * powerpc.cc (Target_powerpc::relocate): Likewise.
7479
f2d707b5
ILT
74802010-07-13 Ian Lance Taylor <iant@google.com>
7481
241531d6
ILT
7482 * compressed_output.cc (zlib_decompress): Fix signature in
7483 !HAVE_ZLIB_H case.
7484
f2d707b5
ILT
7485 * archive.cc (Archive::include_member): Unlock an external member
7486 of a thin archive. Don't bother to delete an object we know is
7487 NULL.
7488
a2e47362
CC
74892010-07-12 Cary Coutant <ccoutant@google.com>
7490
7491 * compressed_output.cc (zlib_decompress): New function.
7492 (get_uncompressed_size): New function.
7493 (decompress_input_section): New function.
7494 * compressed_output.h (get_uncompressed_size): New function.
7495 (decompress_input_section): New function.
7496 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
7497 Handle compressed debug sections.
7498 * layout.cc (is_compressed_debug_section): New function.
7499 (Layout::output_section_name): Map compressed section names to
7500 canonical names.
7501 * layout.h (is_compressed_debug_section): New function.
7502 (is_debug_info_section): Recognize compressed debug sections.
7503 * merge.cc: Include compressed_output.h.
7504 (Output_merge_data::do_add_input_section): Handle compressed
7505 debug sections.
7506 (Output_merge_string::do_add_input_section): Handle compressed
7507 debug sections.
7508 * object.cc: Include compressed_output.h.
7509 (Sized_relobj::Sized_relobj): Initialize new data members.
7510 (build_compressed_section_map): New function.
7511 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
7512 * object.h (Object::section_is_compressed): New method.
7513 (Object::do_section_is_compressed): New method.
7514 (Sized_relobj::Compressed_section_map): New type.
7515 (Sized_relobj::do_section_is_compressed): New method.
7516 (Sized_relobj::compressed_sections_): New data member.
7517 * output.cc (Output_section::add_input_section): Handle compressed
7518 debug sections.
7519 * reloc.cc: Include compressed_output.h.
7520 (Sized_relobj::write_sections): Handle compressed debug sections.
7521
ce279a62
CC
75222010-07-08 Cary Coutant <ccoutant@google.com>
7523
7524 * resolve.cc (Symbol_table::resolve): Remember whether undef was
7525 weak when resolving to a dynamic def.
7526 (Symbol_table::should_override): Add adjust_dyndef flag; set it
7527 for weak undef/dynamic def cases. Adjust callers.
7528 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
7529 undef_binding_weak_.
7530 (Symbol_table::sized_write_globals): Adjust symbol binding.
7531 (Symbol_table::sized_write_symbol): Add binding parameter.
7532 * symtab.h (Symbol::set_undef_binding): New method.
7533 (Symbol::is_undef_binding_weak): New method.
7534 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
7535 (Symbol_table::should_override): Add new parameter.
7536 (Symbol_table::sized_write_symbol): Add new parameter.
7537
7538 * testsuite/weak_undef_file1.cc: Add new test case.
7539 * testsuite/weak_undef_file2.cc: Fix header comment.
7540 * testsuite/weak_undef_test.cc: Add new test case.
7541
b2286c10
DK
75422010-06-29 Doug Kwan <dougkwan@google.com>
7543
7544 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
7545 Initialize USE_SYMBOL_.
7546 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
7547 definition.
7548 (Arm_reloc_property::uses_symbol_): New data member declaration.
7549 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
7550 uses symbol value and symbol is undefined but not weakly undefined.
7551
4802450a
RÁE
75522010-06-28 Rafael Espindola <espindola@google.com>
7553
7554 * plugin.cc (Plugin::load): Use dlerror.
7555
e5ca47ba
ILT
75562010-06-26 Jeffrey Yaskin <jyasskin@google.com>
7557
7558 * symtab.cc (detect_odr_violations): When reporting an ODR
7559 violation, report an object where the symbol is defined.
7560
8a75a161
DK
75612010-06-25 Doug Kwan <dougkwan@google.com>
7562
7563 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
7564 (Target_arm::section_may_have_icf_unsafe_pointers): New method
7565 definition.
7566 (Target_arm::Scan::local_reloc_may_be_function_pointer,
7567 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
7568 target hook to detect function points.
7569 (Target_arm::Scan::possible_function_pointer_reloc): New method.
7570 * icf.h (Icf::check_section_for_function_pointers): Change type of
7571 parameter SECTION_NAME to const reference to std::string. Use
7572 target hook to determine if section may have unsafe pointers.
7573 * target.h (Target::section_may_have_icf_unsafe_pointers): New
7574 method definition.
7575
42218b9f
RÁE
75762010-06-21 Rafael Espindola <espindola@google.com>
7577
7578 * fileread.cc (Input_file::find_fie): New
7579 (Input_file::open): Use Input_file::find_fie.
7580 * fileread.h (Input_file::find_fie): New
7581 * plugin.cc (set_extra_library_path): New.
7582 (Plugin::load): Add set_extra_library_path to the transfer vector.
7583 (Plugin_manager::set_extra_library_path): New.
7584 (Plugin_manager::add_input_file): Use the extra search path if set.
7585 (set_extra_library_path(): New.
7586 * plugin.h (Plugin_manager): Add set_extra_library_path and
7587 extra_search_path_.
7588
a0506cca
CC
75892010-06-19 Cary Coutant <ccoutant@google.com>
7590
7591 * layout.cc (gdb_sections): Add .debug_types.
7592 (lines_only_debug_sections): Likewise.
7593
6508b958
RÁE
75942010-06-18 Rafael Espindola <espindola@google.com>
7595
7596 * plugin.cc (add_input_file,add_input_library)
7597 (Plugin_manager::add_input_file): Make filename arguments const.
7598 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
7599 const.
7600
3e235302
DK
76012010-06-16 Doug Kwan <dougkwan@google.com>
7602
7603 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
7604 .ARM.attributes section if we have not merged any input
7605 attributes sections.
7606
106e8a6c
DK
76072010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7608
7609 * arm.cc: Allow combining objects with no EABI version
7610 information.
7611
91ff43fe
RÁE
76122010-06-15 Rafael Espindola <espindola@google.com>
7613
7614 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
7615
68ed838c
ILT
76162010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7617
7618 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
7619 (struct iovec): Correct !HAVE_READV definition.
7620
f3a2388f
CC
76212010-06-10 Cary Coutant <ccoutant@google.com>
7622
7623 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
7624 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
7625 reloc sections.
7626 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
7627
7628 PR 11683
7629 * symtab.h (Symbol::is_placeholder): New member function.
7630 * target-reloc.h (relocate_section): Check for placeholder symbols.
7631
7632 * testsuite/Makefile.am (plugin_test_8): New test.
7633 (plugin_test_9): New test.
7634 * testsuite/Makefile.in: Regenerate.
7635
e1df38aa
NC
76362010-06-09 Nick Clifton <nickc@redhat.com>
7637
7638 * yyscript.y (input_list_element): Allow strings prefixed with
7639 the '-' character. Treat these as libraries.
7640 * script.cc (script_add_library): New function. Adds a library
7641 specified by "-l<name>" found in an input script.
7642 * script-c.h: Add prototype for script_add_library.
7643
25bbe950
DK
76442010-06-07 Doug Kwan <dougkwan@google.com>
7645
7646 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
7647 Restrict stub-group size to be within long conditional branch
7648 range when working around cortex-A8 erratum.
7649
0f32ea4c
ILT
76502010-06-07 Damien Diederen <dd@crosstwine.com>
7651
7652 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
7653 #ifdef typo.
7654
8fe2a369
ST
76552010-06-03 Sriraman Tallam <tmsriram@google.com>
7656
7657 PR gold/11658
7658 * output.cc
7659 (Output_section::Input_section_sort_entry::compare_section_ordering):
7660 Change to return non-zero correctly.
7661 (Output_section::Input_section_sort_section_order_index_compare
7662 ::operator()): Change to fix ambiguity in comparisons.
7663
6e9ba2ca
ST
76642010-06-01 Sriraman Tallam <tmsriram@google.com>
7665
7666 * gold.h (is_wildcard_string): New function.
7667 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
7668 (Layout::layout_eh_frame): Ditto.
7669 (Layout::find_section_order_index): New method.
7670 (Layout::read_layout_from_file): New method.
7671 * layout.h (Layout::find_section_order_index): New method.
7672 (Layout::read_layout_from_file): New method.
7673 (Layout::input_section_position_): New private member.
7674 (Layout::input_section_glob_): New private member.
7675 * main.cc (main): Call read_layout_from_file here.
7676 * options.h (--section-ordering-file): New option.
7677 * output.cc (Output_section::input_section_order_specified_): New
7678 member.
7679 (Output_section::Output_section): Initialize new member.
7680 (Output_section::add_input_section): Add new parameter.
7681 Keep input sections when --section-ordering-file is used.
7682 (Output_section::set_final_data_size): Sort input sections when
7683 section ordering file is specified.
7684 (Output_section::Input_section_sort_entry): Add new parameter.
7685 Check sorting type.
7686 (Output_section::Input_section_sort_entry::compare_section_ordering):
7687 New method.
7688 (Output_section::Input_section_sort_compare::operator()): Change to
7689 consider section_order_index.
7690 (Output_section::Input_section_sort_init_fini_compare::operator()):
7691 Change to consider section_order_index.
7692 (Output_section::Input_section_sort_section_order_index_compare
7693 ::operator()): New method.
7694 (Output_section::sort_attached_input_sections): Change to sort
7695 according to section order when specified.
e1df38aa
NC
7696 (Output_section::add_input_section<32, true>): Add new parameter.
7697 (Output_section::add_input_section<64, true>): Add new parameter.
7698 (Output_section::add_input_section<32, false>): Add new parameter.
7699 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
7700 * output.h (Output_section::add_input_section): Add new parameter.
7701 (Output_section::input_section_order_specified): New
7702 method.
7703 (Output_section::set_input_section_order_specified): New method.
7704 (Input_section::Input_section): Initialize section_order_index_.
7705 (Input_section::section_order_index): New method.
7706 (Input_section::set_section_order_index): New method.
7707 (Input_section::section_order_index_): New member.
7708 (Input_section::Input_section_sort_section_order_index_compare): New
7709 struct.
7710 (Output_section::input_section_order_specified_): New member.
7711 * script-sections.cc (is_wildcard_string): Delete and move modified
7712 method to gold.h.
7713 (Output_section_element_input::Output_section_element_input): Modify
7714 call to is_wildcard_string.
7715 (Output_section_element_input::Input_section_pattern
7716 ::Input_section_pattern): Ditto.
7717 (Output_section_element_input::Output_section_element_input): Ditto.
7718 * testsuite/Makefile.am (final_layout): New test case.
7719 * testsuite/Makefile.in: Regenerate.
7720 * testsuite/final_layout.cc: New file.
7721 * testsuite/final_layout.sh: New file.
7722
3537c84b
RÁE
77232010-06-01 Rafael Espindola <espindola@google.com>
7724
7725 * plugin.cc (Plugin::load): Pass the output name to the plugin.
7726
105b6afd
RÁE
77272010-06-01 Rafael Espindola <espindola@google.com>
7728
7729 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
7730 visibility of symbols.
7731
29e11421
DK
77322010-05-27 Doug Kwan <dougkwan@google.com>
7733
7734 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
7735 from start of output section instead of address for a local symbol
7736 in a merged or relaxed section when doing a relocatable link.
7737
5e0f337e
RÁE
77382010-05-26 Rafael Espindola <espindola@google.com>
7739
703d02da 7740 PR 11604
5e0f337e
RÁE
7741 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
7742 adding sections the garbage collector removed.
7743 * gold/testsuite/Makefile.am: Add test.
7744 * gold/testsuite/Makefile.in: Regenerate.
7745 * gold/testsuite/plugin_test_7.sh: New.
7746 * gold/testsuite/plugin_test_7_1.c: New.
7747 * gold/testsuite/plugin_test_7_2.c: New.
7748
f4187277
RÁE
77492010-05-26 Rafael Espindola <espindola@google.com>
7750
7751 * script-sections.cc (Output_section_definition::set_section_addresses):
7752 Check for --section-start.
7753
5c388529
DK
77542010-05-26 Doug Kwan <dougkwan@google.com>
7755
7756 * arm.cc (Arm_scan_relocatable_relocs): New class.
7757 (Target_arm::relocate_special_relocatable): New method.
7758 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
7759 (Arm_relocate_functions::thumb_branch_common): Same.
7760 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
7761 instead of Default_scan_relocatable_relocs.
7762 * target-reloc.h (relocate_for_relocatable): Let target handle
7763 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
7764 * target.h (Sized_target::relocate_special_relocatable): New method.
7765
bca1c3ae
ILT
77662010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7767
7768 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
7769
0439c796
DK
77702010-05-23 Doug Kwan <dougkwan@google.com>
7771
7772 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
7773 instead of a cast.
7774 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
7775 with a direct branch, not a conditional branch, to a stub.
7776 * merge.cc (Output_merge_base::record_input_section): New method
7777 defintion.
7778 (Output_merge_data::do_add_input_section): Record input section if
7779 keeps-input-sections flag is set.
7780 (Output_merge_string::do_add_input_section): Ditto.
7781 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
7782 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
7783 INPUT_SECTIONS_.
7784 (Output_merge_base::keeps_input_sections,
7785 Output_merge_base::set_keeps_input_sections,
7786 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
7787 method definitions.
7788 (Output_merge_base::Input_sections): New type declaration.
7789 (Output_merge_base::input_sections_begin,
7790 Output_merge_base::input_sections_end,
7791 Output_merge_base::do_set_keeps_input_sections): New method definitions.
7792 (Output_merge_base::bool keeps_input_sections_,
7793 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
7794 Output_merge_base::input_sections_): New data members.
7795 (Output_merge_data::do_set_keeps_input_sections): New method
7796 defintion.
7797 (Output_merge_string::do_set_keeps_input_sections): Ditto.
7798 * output.cc (Output_section::Input_section::relobj): Move method
7799 defintion from class declaration to here and handle merge sections.
7800 (Output_section::Input_section::shndx): Ditto.
7801 (Output_section::Output_section): Remove initializations of removed
7802 data members and initialize new data member LOOKUP_MAPS_.
7803 (Output_section::add_input_section): Set keeps-input-sections flag
7804 for a newly created merge output section as appropriate. Adjust code
7805 to use Output_section_lookup_maps class.
7806 (Output_section::add_relaxed_input_section): Adjst code for lookup
7807 maps code refactoring.
2e702c99 7808 (Output_section::add_merge_input_section): Add a new parameter
0439c796
DK
7809 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
7810 class. If adding input section to a newly created merge output
7811 section fails, remove the new merge section.
7812 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 7813 Adjust code for use of the Output_section_lookup_maps class.
2e702c99 7814 (Output_section::find_merge_section): Ditto.
0439c796 7815 (Output_section::build_lookup_maps): New method defintion.
2e702c99 7816 (Output_section::find_relaxed_input_section): Adjust code to use
0439c796
DK
7817 Output_section_lookup_maps class.
7818 (Output_section::get_input_sections): Export merge sections. Adjust
7819 code to use Output_section_lookup_maps class.
7820 (Output_section:::add_script_input_section): Adjust code to use
7821 Output_section_lookup_maps class. Update lookup maps for merge
7822 sections also.
7823 (Output_section::discard_states): Use Output_section_lookup_maps.
7824 (Output_section::restore_states): Same.
7825 * output.h (Merge_section_properties): Move class defintion out of
7826 Output_section.
7827 (Output_section_lookup_maps): New class.
7828 (Output_section::Input_section::is_merge_section): New method
7829 defintion.
7830 (Output_section::Input_section::relobj): Move defintion out of class
7831 defintion. Declare method only.
7832 (Output_section::Input_section::shndx): Ditto.
7833 (Output_section::Input_section::output_merge_base): New method defintion.
2e702c99 7834 (Output_section::Input_section::u2_.pomb): New union field.
0439c796
DK
7835 (Output_section::Merge_section_by_properties_map,
7836 Output_section::Output_section_data_by_input_section_map,
7837 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
7838 Remove types.
2e702c99 7839 (Output_section::add_merge_input_section): Add new parameter
0439c796
DK
7840 KEEPS_INPUT_SECTIONS.
7841 (Output_section::build_lookup_maps): New method declaration.
7842 (Output_section::merge_section_map_,
7843 Output_section::merge_section_by_properties_map_,
7844 Output_section::relaxed_input_section_map_,
7845 Output_section::is_relaxed_input_section_map_valid_): Remove data
7846 members.
7847 (Output_section::lookup_maps_): New data member.
7848
76295588
L
78492010-05-21 Doug Kwan <dougkwan@google.com>
7850
7851 PR gold/11619
7852 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
7853 avoid a compilation error.
7854
d103a984
RÁE
78552010-05-19 Rafael Espindola <espindola@google.com>
7856
7857 * script-sections.cc (Output_section_definition::allocate_to_segment):
7858 Update the phdrs_list even when the output section is NULL.
7859 * testsuite/Makefile.am: Add test.
7860 * testsuite/Makefile.in: Regenerate.
7861 * testsuite/script_test_9.cc: New.
7862 * testsuite/script_test_9.sh: New.
7863 * testsuite/script_test_9.t: New.
7864
6625d24e
DK
78652010-05-19 Doug Kwan <dougkwan@google.com>
7866
7867 * arm.cc (Arm_input_section::original_size): New method.
7868 (Arm_input_section::do_addralign): Add a cast.
7869 (Arm_input_section::do_output_offset): Remove static cast.
7870 (Arm_input_section::original_addralign,
7871 Arm_input_section::original_size_): Change type to uint32_t.
7872 (Arm_input_section::init): Add safe casts for section alignment
7873 and size.
7874 (Arm_input_section::set_final_data_size): Do not set address and
7875 offset of stub table.
7876 (Arm_output_section::fix_exidx_coverage): Change use of of
7877 Output_section::Simple_input_section to that of
7878 Output_section::Input_section.
7879 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
7880 except for the first pass.
7881 * output.cc (Output_section::get_input_sections): Change type of
7882 input_sections to std::list<Input_section>.
7883 (Output_section::add_script_input_section): Rename from
7884 Output_section::add_simple_input_section. Change type of SIS
7885 parameter from Simple_input_section to Input_section.
7886 * output.h (Output_section::Simple_input_section): Remove class.
7887 (Output_section::Input_section): Change class visibility to public.
7888 (Output_section::Input_section::addralign): Use stored alignments
7889 for special input sections if set.
7890 (Output_section::Input_section::set_addralign): New method.
7891 (Output_section::get_input_sections): Change parameter type from
7892 list of Simple_input_section to list of Input_section.
7893 (Output_section::add_script_input_section): Rename from
7894 Output_section::add_simple_input_section. Change first parameter's
7895 type from Simple_input_section to Input_section and remove the
7896 second and third parameters.
7897 * script-sections.cc (Input_section::Input_section_list): Change
7898 type to list of Output_section::Input_section/
7899 (Input_section_info::Input_section_info): Change parameter type of
7900 INPUT_SECTION to Output_section::Input_section.
7901 (Input_section_info::input_section): Change return type.
7902 (Input_section_info::input_section_): Change type to
7903 Output_section::Input_section.
7904 (Output_section_element_input::set_section_addresses): Adjust code
7905 to use Output_section::Input_section instead of
7906 Output_section::Simple_input_section. Adjust code for renaming
7907 of Output_section::add_simple_input_section.
7908 (Orphan_output_section::set_section_addresses): Ditto.
7909
e1e82ea4
RW
79102010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7911
7912 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
7913 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
7914
91e75c8a
RÁE
79152010-05-18 Rafael Espindola <espindola@google.com>
7916
7917 * options.cc (General_options::finalize): Handle -nostdlib.
7918 * options.h (nostdlib): New option.
7919 * script.cc (script_add_search_dir): Handle -nostdlib.
7920
da59ad79
DK
79212010-05-12 Doug Kwan <dougkwan@google.com>
7922
7923 * arm.cc (Target_arm::do_finalize_sections): Create an empty
7924 attributes section only if there no attributes section after merging.
7925 (Target_arm::merge_object_attributes): Move value of
e1df38aa 7926 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
7927 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
7928 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
7929 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
7930 and arm_attr_merge_7.stdout.
7931 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
7932 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
7933 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
7934 arm_attr_merge_7b.o): New rules.
7935 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
7936 arm_attr_merge_7
7937 * testsuite/Makefile.in: Regenerate.
7938 * testsuite/arm_attr_merge.sh: New file.
7939 * testsuite/arm_attr_merge_[67][ab].s: Same.
7940
3e01a7fd
NC
79412010-05-05 Nick Clifton <nickc@redhat.com>
7942
7943 * po/es.po: Updated Spanish translation.
7944
7ad2014a
L
79452010-04-27 H.J. Lu <hongjiu.lu@intel.com>
7946
7947 * Makefile.am (install-exec-local): Properly install gold as
7948 default cross linker.
7949 * Makefile.in: Regenerated.
7950
4fda8867
NC
79512010-04-27 H.J. Lu <hongjiu.lu@intel.com>
7952 Nick Clifton <nickc@redhat.com>
7953
7954 * configure.ac (install_as_default): Define and set to false
7955 unless --enable-gold or --enable-gold=both/gold has been
7956 specified.
7957 * configure: Regenerate.
7958
7959 * Makefile.am (install-exec-local): Install the executable as
7960 'ld.gold'. If install_as_default is true then also install it as
7961 'ld'.
7962 * Makefile.in: Regenerated.
7963
bd288ea2
ILT
79642010-04-24 Ian Lance Taylor <iant@google.com>
7965
7966 * layout.cc (Layout::layout_reloc): In relocatable link don't
7967 combine reloc sections for grouped sections.
7968
ef38fd8a
ST
79692010-04-23 Sriraman Tallam <tmsriram@google.com>
7970
7971 * gc.h (gc_process_relocs): Pass information on relocs pointing to
7972 sections that are not ordinary to icf.
7973 * icf.cc (get_section_contents): Handle relocation pointing to section
7974 with no object or shndx information.
7975 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
7976 * testsuite/Makefile.in: Regenerate.
7977 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
7978 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
7979
f6973bdc
ILT
79802010-04-22 Ian Lance Taylor <iant@google.com>
7981
7982 * expression.cc (Expression::Expression_eval_info): Add
7983 result_alignment_pointer field.
7984 (Expression::eval_with_dot): Add result_alignment_pointer
7985 parameter. Change all callers.
7986 (Expression::eval_maybe_dot): Likewise.
7987 (class Binary_expression): Add alignment_pointer parameter to
7988 left_value and right_value. Change all callers.
7989 (BINARY_EXPRESSION): Set result alignment.
7990 (class Trinary_expression): Add alignment_pointer parameter to
7991 arg2_value and arg3_value. Change all callers.
7992 (Trinary_cond::value): Set result alignment.
7993 (Max_expression::value, Min_expression::value): Likewise.
7994 (Align_expression::value): Likewise.
7995 * script-sections.cc (class Sections_element): Add dot_alignment
7996 parameter to set_section_addresses virtual function. Update
7997 instantiations.
7998 (class Output_section_element): Likewise.
7999 (Script_sections::create_segments): Add dot_alignment parameter.
8000 Change all callers.
8001 (Script_sections::create_segments_from_phdrs_clause): Likewise.
8002 (Script_sections::set_phdrs_clause_addresses): Likewise.
8003 * script-sections.h: Update declarations.
8004 * script.h: Update declarations.
8005 * output.h (Output_segment::set_minimum_p_align): Don't decrease
8006 min_p_align.
8007 * testsuite/script_test_3.t: Set large alignment.
8008 * testsuite/script_test_3.sh: Make sure that at least one LOAD
8009 segment has expected alignment.
8010
9c9c98a5
NC
80112010-04-22 Nick Clifton <nickc@redhat.com>
8012
8013 * po/gold.pot: Updated by the Translation project.
8014 * po/vi.po: Updated Vietnamese translation.
8015
2253bfba
L
80162010-04-22 H.J. Lu <hongjiu.lu@intel.com>
8017
8018 * testsuite/Makefile.am (check_PROGRAMS): Add
8019 icf_virtual_function_folding_test.
8020 * testsuite/Makefile.in: Regenerated.
8021
85fdf906
AH
80222010-04-15 Andrew Haley <aph@redhat.com>
8023
8024 * options.h (merge_exidx_entries): New option.
8025 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
8026 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
8027 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
8028 (Target_arm::merge_exidx_entries): New function.
8029 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
8030 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
8031 to Arm_exidx_fixup constructor.
8032 Add new arg, merge_exidx_entries.
8033 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
8034 Arm_output_section::fix_exidx_coverage.
8035
ce97fa81
ST
80362010-04-18 Sriraman Tallam <tmsriram@google.com>
8037
8038 * icf.cc (get_section_contents): Check for preemptible functions.
8039 Ignore addend when appropriate.
8040 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
8041 section folded.
8042 (add_from_relobj): Check for section folded.
8043 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
8044 * symtab.h (should_add_dynsym_entry): Add new parameter.
8045 * target-reloc.h (scan_relocs): Check for section folded.
8046 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
8047 Check reloc types for function pointers in shared objects.
8048 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
8049 case.
8050 (icf_preemptible_functions_test): New test case.
8051 (icf_string_merge_test): New test case.
8052 * testsuite.Makefile.in: Regenerate.
8053 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
8054 bar_glob. Refactor code.
8055 * testsuite/icf_preemptible_functions_test.cc: New file.
8056 * testsuite/icf_preemptible_functions_test.sh: New file.
8057 * testsuite/icf_string_merge_test.cc: New file.
8058 * testsuite/icf_string_merge_test.sh: New file.
8059 * testsuite/icf_virtual_function_folding_test.cc: New file.
8060 * testsuite/icf_virtual_function_folding_test.sh: New file.
8061
04ceb17c
DK
80622010-04-14 Doug Kwan <dougkwan@google.com>
8063
8064 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
8065 for local symbol recounting if we remove a section due to ICF.
8066 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
8067 there are no regular objects in input.
8068
153e7da4
DK
80692010-04-13 Doug Kwan <dougkwan@google.com>
8070
8071 * arm.cc (Arm_input_section::set_final_data_size): Compute
8072 accurate final data size instead of using current data size.
8073
4dbd9faf
DK
80742010-04-09 Doug Kwan <dougkwan@google.com>
8075
8076 * layout.cc (Layout::choose_output_section): Handle script section
8077 types.
8078 (Layout::make_output_section_for_script): Add section type parameter.
8079 Handle script section types.
8080 * layout.h (Layout::make_output_section_for_script): Add section
8081 type parameter.
8082 * output.cc (Output_section::Output_section): Initialize data member
8083 is_noload_.
8084 (Output_section::do_reset_address_and_file_offset): Do not set address
8085 to 0 if section is a NOLOAD section.
8086 * output.h (Output_section::is_noload): New method.
8087 (Output_section::set_is_noload): Ditto.
8088 (Output_section::is_noload_): New data member.
8089 * script-c.h (Script_section_type): New enum type.
8090 (struct Parser_output_section_header): Add new file section_type.
8091 * script-sections.cc (Sections_element::output_section_name): Add
8092 parameter for returning script section type.
8093 (Output_section_definition::output_section_name): Ditto.
8094 (Output_section_definition::section_type)P; New method.
8095 (Output_section_definiton::script_section_type_name): Ditto.
8096 (Output_section_definition::script_section_type_): New data member.
8097 (Output_section_definition::Output_section_definition): Initialize
8098 data member Output_section_definition::script_section_type_.
8099 (Output_section_definition::create_sections): Pass script section type
8100 to Layout::make_output_section_for_script.
8101 (Output_section_definition::output_section_name): Return script
8102 section type to caller.
8103 (Output_section_definition::set_section_address): Do not advance
8104 dot value and load address if section type is NOLOAD. Set address
8105 of NOLOAD sections regardless of section flags.
8106 (Output_section_definition::print): Print section type if it is
8107 not SCRIPT_SECTION_TYPE_NONE.
8108 (Output_section_definition::section_type): New method.
8109 (Output_section_definition::script_section_type_name): Ditto.
8110 (Script_sections::output_section_name): Add new parameter
8111 PSECTION_TYPE for returning script section type. Pass it to
8112 section elements. Handle discard sections.
8113 (Sort_output_sections::operator()): Handle NOLOAD sections.
8114 * script-sections.h (Script_sections::Section_type): New enum type.
2e702c99 8115 (Script_sections::output_section_name): Add a new parameter for
4dbd9faf
DK
8116 returning script section type.
8117 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
8118 INFO and NOLOAD.
8119 * yyscript.y (union): Add new field SECTION_TYPE.
8120 (COPY, DSECT, INFO, NOLOAD): New tokens.
8121 (opt_address_and_section_type): Change type to output_section_header.
8122 (section_type): New non-terminal
8123 (section_header): Handle section type.
2253bfba 8124 (opt_address_and_section_type): Return section type value.
4dbd9faf 8125
721ea635
L
81262010-04-09 H.J. Lu <hongjiu.lu@intel.com>
8127
8128 * testsuite/plugin_common_test_1.c (foo): Add prototype.
8129 * testsuite/plugin_common_test_2.c (foo): Likewise.
8130
6bf924b0
DK
81312010-04-08 Doug Kwan <dougkwan@google.com>
8132
8133 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
8134 Output_merge_data.
8135 * output.cc (Output_section::add_merge_input_section): Simplify
8136 code and return status of Output_merge_base::add_input_section.
e1df38aa 8137 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
8138 returns true.
8139
24af6f92
DK
81402010-04-07 Doug Kwan <dougkwan@google.com>
8141
8142 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
8143 if section is marked as containing instructions but has no mapping
8144 symbols.
8145 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
8146 correct section index.
8147 (Arm_relobj::find_linked_text_section): Ditto.
8148
00698fc5
CC
81492010-04-07 Cary Coutant <ccoutant@google.com>
8150
8151 * archive.cc (include_member): Destroy Read_symbols_data object before
8152 releasing file.
8153 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
8154 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
8155 (Read_symbols_data::~Read_symbols_data) New destructor.
8156 (Section_relocs::Section_relocs) New constructor.
8157 (Section_relocs::~Section_relocs) New destructor.
8158 (Read_relocs_data::Read_relocs_data) New constructor.
8159 (Read_relocs_data::~Read_relocs_data) New destructor.
8160 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
8161 pointers to NULL after deleting.
8162
7296d933
DK
81632010-04-07 Doug Kwan <dougkwan@google.com>
8164
8165 * arm.cc: Replace "endianity" with "endianness" in comments.
8166 (Arm_exidx_cantunwind): Ditto.
8167 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
8168 (Arm_relobj::merge_flags_and_attributes): New method.
8169 (Arm_relobj::merge_flags_and_attributes_): New data member.
8170 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
8171 (Arm_relobj::scan_sections_for_stubs): Ditto.
8172 (Arm_relobj::do_read_symbols): Check to see if we really want to
8173 merge processor-specific flags and attributes. Exit early if
8174 an object is empty except for section names and the undefined symbol.
8175 (Target_arm::do_finalize_sections): Move check for ELF format to
8176 Arm_relobj::do_read_symbols. Merge processor specific flags and
8177 attributes from a regular object only when we have determined that
8178 it is aapropriate. Do not create an .ARM.attributes section in
8179 output if there is no regular input object.
8180 (Target_arm::merge_processor_specific_flags): Check
8181 --warn-mismatch before printing any error.
8182 (Target_arm::merge_object_attributes): Ditto.
8183 * gold.cc (queue_middle_tasks): Handle the case in which there is
8184 no regular object in input.
8185 * options.cc (General_options::parse_EB): New method.
8186 (General_options::parse_EL): Same.
8187 (General_options::General_options): Initialize endianness_.
8188 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
8189 New options.
8190 (General_options::Endianness): New enum.
8191 (General_options::endianness): New method.
8192 (General_options::endianness_): New data member.
8193 * parameters.cc (Parameters::set_options): Check target endianness.
8194 (Parameters::set_target_once): Ditto.
8195 (Parameters::check_target_endianness): New method.
8196 (parameters_force_valid_target): If either -EL or -EB is specified,
8197 use it to define endianness of default target.
8198 * parameters.h (Parameters::check_target_endianness): New method
8199 declaration.
8200 * target.h (class Target): Change "endianity" to "endianness"
8201 in comments.
8202
efc8d4f2
RW
82032010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8204
8205 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
8206 * configure: Regenerate.
8207 * Makefile.in: Regenerate.
8208 * testsuite/Makefile.in: Regenerate.
8209
be234d88
CC
82102010-04-06 Cary Coutant <ccoutant@google.com>
8211
8212 gcc PR lto/42757
8213 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
8214 prevailing definitions of common symbols.
8215 * testsuite/plugin_test_6.sh: New test case.
8216 * testsuite/plugin_common_test_1.c: New test case.
8217 * testsuite/plugin_common_test_2.c: New test case.
8218 * testsuite/Makefile.am (plugin_test_6): New test case.
8219 * testsuite/Makefile.in: Regenerate.
8220
bd32c6bd
NC
82212010-04-06 Nick Clifton <nickc@redhat.com>
8222
8223 * po/vi.po: New Vietnamese translation.
8224
323c532f
DK
82252010-03-30 Doug Kwan <dougkwan@google.com>
8226
8227 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
8228
4fcd97eb
DK
82292010-03-25 Doug Kwan <dougkwan@google.com>
8230
8231 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
8232 to avoid a conversion warning on a 32-bit host.
8233
4ebf39db
ILT
82342010-03-24 Ian Lance Taylor <iant@google.com>
8235
8236 * testsuite/script_test_3.t: Add a TLS segment.
8237 * testsuite/Makefile.am (check_PROGRAMS): Add
8238 tls_phdrs_script_test.
8239 (tls_phdrs_script_test_SOURCES): Define.
8240 (tls_phdrs_script_test_DEPENDENCIES): Define.
8241 (tls_phdrs_script_test_LDFLAGS): Define.
8242 (tls_phdrs_script_test_LDADD): Define.
8243 * testsuite/Makefile.in: Rebuild.
8244
4a599bdd
CC
82452010-03-23 Cary Coutant <ccoutant@google.com>
8246
8247 * fileread.cc (find_or_make_view): Fix comment.
8248
6c93b22c
ILT
82492010-03-23 Ian Lance Taylor <iant@google.com>
8250
8251 * script-sections.cc (class Orphan_section_placement): Define
8252 PLACE_TLS and PLACE_TLS_BSS.
8253 (Orphan_section_placement::Orphan_section_placement): Initialize
8254 new places.
8255 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
8256 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
8257 (tls_script_test_SOURCES): Define.
8258 (tls_script_test_DEPENDENCIES): Define.
8259 (tls_script_test_LDFLAGS): Define.
8260 (tls_script_test_LDADD): Define.
8261 * testsuite/Makefile.in: Rebuild.
8262
a2c7281b
DK
82632010-03-22 Doug Kwan <dougkwan@google.com>
8264
8265 * arm.cc (Arm_relocate_functions::abs8,
8266 Arm_relocate_functions::abs16): Use correct check for overflow
8267 specified in the ARM ELF specs.
8268 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
8269 target of a BLX instruction specially.
8270 (Reloc_stub::stub_type_for_reloc): Ditto.
8271 (Relocate::relocate): Use symbolic names instead of numeric relocation
8272 codes to report error.
8273 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
8274 workaround.
8275 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
8276 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
8277 thumb2_blx_out_of_range.stdout
8278 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
8279 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
8280 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
8281 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
8282 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
8283 thumb2_blx_in_range, thumb2_blx_in_range.o,
8284 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
8285 thumb2_blx_out_of_range.o): New rules.
2e702c99 8286 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
a2c7281b
DK
8287 thumb2_blx_in_range and thumb2_blx_out_of_range.
8288 * testsuite/Makefile.in: Regenerate.
8289 * arm_branch_in_range.sh: Add tests for THUMB BLX.
8290 * testsuite/thumb_blx_in_range.s: New file.
8291 * testsuite/thumb_blx_out_of_range.s: New file.
8292
b0193076
RÁE
82932010-03-22 Rafael Espindola <espindola@google.com>
8294
8295 * archive.cc (Should_include): Move to archive.h.
8296 (should_include_member): Make it a member of Archive.
8297 (Lib_group): New.
8298 (Add_lib_group_symbols): New.
8299 * archive.h: Include options.h.
8300 (Archive_member): Moved from Archive.
8301 (Should_include): Moved from archive.cc.
8302 (Lib_group): New.
8303 (Add_lib_group_symbols): New.
8304 * dynobj.cc (do_should_include_member): New.
8305 * dynobj.h (do_should_include_member): New.
8306 * gold.cc (queue_initial_tasks): Update call to queue.
8307 * main.cc (main): Print lib group stats.
8308 * object.cc (do_should_include_member): New.
8309 * object.h: Include archive.h.
8310 (Object::should_include_member): New.
8311 (Object::do_should_include_member): New.
8312 (Sized_relobj::do_should_include_member): New.
8313 * options.cc (General_options::parse_start_lib): New.
8314 (General_options::parse_end_lib): New.
8315 (Input_arguments::add_file): Handle lib groups.
8316 (Input_arguments::start_group): Check we are not in a lib.
8317 (Input_arguments::start_lib): New.
8318 (Input_arguments::end_lib): New.
8319 * options.h (General_options): Add start_lib and end_lib.
8320 (Input_argument::lib_): New.
8321 (Input_argument::lib): New.
8322 (Input_argument::is_lib): New.
8323 (Input_file_lib): New.
8324 (Input_arguments::in_lib_): New.
8325 (Input_arguments::in_lib): New.
8326 (Input_arguments::start_lib): New.
8327 (Input_arguments::end_lib_): New.
8328 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
8329 in unused members as preempted.
8330 (Sized_pluginobj::do_should_include_member): New.
8331 * plugin.h (Sized_pluginobj::do_should_include_member): New.
8332 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
8333 return the blocker.
8334 (Read_symbols::do_whole_lib_group): New.
8335 (Read_symbols::do_lib_group): New.
8336 (Read_symbols::do_read_symbols): Handle lib groups.
8337 (Read_symbols::get_name): Handle lib groups.
8338 * readsyms.h (Read_symbols): Add an archive member pointer.
8339 (Read_symbols::do_whole_lib_group): New.
8340 (Read_symbols::do_lib_group): New.
8341 (Read_symbols::member_): New.
8342 * script.cc (read_input_script): Update call to queue_soon.
8343
d099120c
DK
83442010-03-19 Doug Kwan <dougkwan@google.com>
8345
8346 * arm.cc (Stub_table::Stub_table): Initialize new data members
8347 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
8348 (Stub_table::add_reloc_stub): Assign stub offset and update
8349 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
8350 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
8351 New data members.
2e702c99 8352 (Stub_table::update_data_size_and_addralign): Use
d099120c
DK
8353 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
8354 instead of going over all reloc stubs.
2e702c99 8355 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
d099120c
DK
8356 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
8357 Stringpool_template::offset_ to size of Stringpool_char.
2e702c99 8358 (Stringpool_template::new_key_offset): Remove code to initialize
d099120c
DK
8359 Stringpool_template::offset_.
8360 * stringpool.h (Stringpool_template::set_no_zero_null): Set
8361 Stringpool_template::offset_ to zero.
8362
1aa37384
DK
83632010-03-15 Doug Kwan <dougkwan@google.com>
8364
8365 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
8366 offset_.
8367 (Stringpool_template::new_key_offset): New method.
8368 (Stringpool_template::add_string): Assign offsets when adding new
8369 strings.
8370 (Stringpool_template::set_string_offsets): Do not set string offsets
8371 when not optimizing.
8372 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
8373 member size_.
2e702c99
RM
8374 (Chunked_vector::clear): Clear size_.
8375 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
8376 (Chunked_vector::size): Return size_.
8377 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 8378 (Chunked_vector::size_): New data member.
1aa37384
DK
8379 (Stringpool_template::set_no_zero_null): Assert string set is empty.
8380 (Stringpool_template::new_key_offset): New method declaration.
8381 (Stringpool_template::offset_): New data member.
8382
b672b057
RÁE
83832010-03-15 Rafael Espindola <espindola@google.com>
8384
8385 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
8386 Add_symbols' constructor.
8387 * readsyms.h (Add_symbols): Remove the input_group member.
8388
b6848d3c
ILT
83892010-03-10 Ian Lance Taylor <iant@google.com>
8390
8391 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
8392 target to ask whether a reference to a symbol requires a stack
8393 split.
8394 * target.h (Target::is_call_to_non_split): New function.
8395 (Target::do_is_call_to_non_split): Declare virtual function.
8396 * target.cc: Include "symtab.h".
8397 (Target::do_is_call_to_non_split): New function.
8398 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
8399
a2a5469e
CC
84002010-03-10 Cary Coutant <ccoutant@google.com>
8401
8402 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
8403 (File_read::open[1]): Remove initial mapping of whole_file_view_.
8404 (File_read::open[2]): Add whole_file_view_ to list of views.
8405 (File_read::make_view): Remove test of whole_file_view_.
8406 (File_read::find_or_make_view): Create whole_file_view_ if
8407 necessary.
8408 (File_read::clear_views): Replace bool parameter with enum;
8409 adjust all callers. Don't delete views with permanent data;
8410 do delete cached views and views from archives if
8411 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
8412 if clearing the corresponding view.
8413 * fileread.h (File_read::Clear_views_mode): New enum.
8414 (File_read::View::is_permanent_view): New method.
8415 (File_read::clear_views): Replace bool parameter
8416 with enum; adjust all callers.
8417 * options.h (General_options): Change keep_files_mapped option;
8418 add map_whole_files.
8419 * readsyms.cc (Add_symbols::run): Delete sd_ object before
8420 releasing the file.
8421 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
8422 the file.
8423
8861f32b
DM
84242010-03-10 David S. Miller <davem@davemloft.net>
8425
8426 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
8427
d62d0f5f
ST
84282010-03-09 Sriraman Tallam <tmsriram@google.com>
8429
8430 * icf.cc (get_section_contents): Add '@' marker after processing the
8431 merge reloc.
8432
9177756d
DK
84332010-03-08 Doug Kwan <dougkwan@google.com>
8434
8435 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
8436 due to a conversion warning.
8437 (Arm_relobj::update_output_local_symbol_count): Check for local
8438 symbol with unset output index.
8439
9e9e071b
ILT
84402010-03-05 Ian Lance Taylor <iant@google.com>
8441
8442 * options.h (class General_options): Add --spare-dynamic-tags.
8443 * output.cc (Output_data_dynamic::set_final_data_size): Implement
8444 --spare-dynamic-tags.
8445
a81ee015
ILT
84462010-03-05 Ian Lance Taylor <iant@google.com>
8447
8448 * incremental.cc: Include "libiberty.h".
8449
44ec90b9
RO
84502010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8451
8452 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
8453 function, is_info_ member.
8454 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
8455 (Versions::Versions): Update caller.
8456 (Versions::define_base_version): Likewise.
8457 (Versions::add_def): Likewise.
8458
0897ed3b
ST
84592010-03-03 Sriraman Tallam <tmsriram@google.com>
8460
8461 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
8462 (Scan::possible_function_pointer_reloc): New function.
8463 (Scan::local_reloc_may_be_function_pointer): Change to call
8464 possible_function_pointer_reloc.
8465 (Scan::global_reloc_may_be_function_pointer): Ditto.
8466 * icf.h (Icf::check_section_for_function_pointers): Change to reject
8467 relocations in ".data.rel.ro._ZTV" section.
8468 * testsuite/icf_safe_so_test.sh: Change to pass i386.
8469 * testsuite/icf_safe_so_test.cc: Ditto.
8470 * testsuite/icf_safe_test.cc: Ditto.
8471 * testsuite/icf_safe_test.sh: Ditto.
8472
d3bbad62
ILT
84732010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8474 Ian Lance Taylor <iant@google.com>
8475
8476 * target-reloc.h (relocate_section): Check the symbol table index
8477 for -1U before setting the local symbol index.
8478 (scan_relocatable_relocs): If copying the relocation, record that
8479 the local symbol is required.
8480 * object.h (Symbol_value::is_output_symtab_index_set): New
8481 function.
8482 (Symbol_value::may_be_discarded_from_output_symtab): New
8483 function.
8484 (Symbol_value::has_output_symtab_entry): New function.
8485 (Symbol_value::needs_output_symtab_entry): Remove.
8486 (Symbol_value::output_symtab_index): Make sure the symbol index is
8487 set.
8488 (Symbol_value::set_output_symtab_index): Make sure the symbol
8489 index is not set. Make sure the new index is valid.
8490 (Symbol_value::set_must_have_output_symtab_entry): New function.
8491 (Symbol_value::has_output_dynsym_entry): New function.
8492 (Symbol_value::set_output_dynsym_index): Make sure the new index
8493 is valid.
8494 (Sized_relobj::set_must_have_output_symtab_entry): New function.
8495 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
8496 local symbol if permitted.
8497 (Sized_relobj::do_finalize_local_symbols): Call
8498 is_output_symtab_index_set rather than needs_output_symtab_entry.
8499 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
8500 rather than needs_output_symtab_entry. Call
8501 has_output_dynsym_entry rather than needs_output_dynsym_entry.
8502 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
8503 is_output_symtab_index_set rather than needs_output_symtab_entry.
8504 * testsuite/discard_locals_relocatable_test.c: New file.
8505 * testsuite/discard_locals_test.sh: Test -r.
8506 * testsuite/Makefile.am (check_DATA): Add
8507 discard_locals_relocatable_test1.syms,
8508 discard_local_relocatable_test2.syms.
8509 (MOSTLYCLEANFILES): Likewise. Also add
8510 discard_locals_relocatable_test1.lout and
8511 discard_locals_relocatable_test2.out.
8512 (discard_locals_relocatable_test1.syms): New target.
8513 (discard_locals_relocatable_test.o): New target.
8514 (discard_locals_relocatable_test1.out): New target.
8515 (discard_locals_relocatable_test2.syms): New target.
8516 (discard_locals_relocatable_test2.out): New target.
8517 (various): Add missing ../ld-new dependencies.
8518 * testsuite/Makefile.in: Rebuild.
8519
7e8ccf26
NC
85202010-03-03 Nick Clifton <nickc@redhat.com>
8521
8522 * po/fi.po: New Finnish translation.
8523
2a0ff005
DK
85242010-03-01 Doug Kwan <dougkwan@google.com>
8525
8526 * layout.cc (Layout::Layout): Force section types of .init_array*,
8527 .preinit_array* and .fini_array* sections.
8528 * output.cc (Output_section::Input_section_sort_entry::has_priority):
8529 Fix check of return value of std::string::find.().
8530 (Output_section::Input_section_sort_compare::operator()): Remove
8531 comment about .init_array.
8532 (Output_section::Input_section_sort_init_fini_compare::operator()):
8533 New method.
8534 (Output_section::sort_attached_input_sections): Handle .init_array
8535 and .fini_array specially.
8536 * output.h (Output_section::Inut_section_sort_compare): Update
8537 comment.
8538 (Output_section::Input_section_sort_init_fini_compare): New struct.
8539
c3e4ae29
DK
85402010-02-26 Doug Kwan <dougkwan@google.com>
8541
8542 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
8543 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
8544 * testsuite/debug_msg.sh: Avoid matching source line number for
8545 use of global variable undef_int.
8546
2fd9ae7a
DK
85472010-02-26 Doug Kwan <dougkwan@google.com>
8548
8549 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
8550 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
8551 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
8552 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
8553 * options.cc (General_options::General_options): Initialize member
8554 fix_v4bx_.
8555 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
8556 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
8557 and rm_no_fix_v4bx.stdout
8558 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
8559 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
8560 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
8561 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
8562 and arm_no_fix_v4bx.
8563 * Makefile.in: Regenerate.
8564 * testsuite/arm_fix_v4bx.s: New file.
8565 * testsuite/arm_fix_v4bx.sh: Ditto.
8566
67ec7d0b
DK
85672010-02-24 Doug Kwan <dougkwan@google.com>
8568
8569 * arm.cc (Target_arm::got_section): Make the .got section the first
8570 non RELRO section in the data segment.
8571 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
8572 suffixes of section names.
8573
10165461
DK
85742010-02-24 Doug Kwan <dougkwan@google.com>
8575
8576 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
8577 flags and attributes merging if an input file is a binary file.
8578 * fileread.cc (Input_file::open): Record format of original file.
8579 * fileread.h (Input_file::Format): New enum type.
2e702c99 8580 (Input_file::Input_file): Initialize data member format_.
10165461
DK
8581 (Input_file::format): New method definition.
8582 (Input_file::format_):: New data member.
8583
4a54abbb
DK
85842010-02-24 Doug Kwan <dougkwan@google.com>
8585
8586 * arm.cc (Arm_output_data_got): New class.
8587 (ARM_TCB_SIZE): New constant
8588 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
8589 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
8590 If user uses a script with a SECTIONS clause, issue only a warning
8591 for a misplaced EXIDX input section. Otherwise, issue an error.
2e702c99 8592 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
4a54abbb
DK
8593 garbage collection.
8594 (Target_arm::got_mode_index_entry): Handle static linking.
8595 (Target_arm::Scan::local): Ditto.
8596 (Target_arm::Scan::global): Ditto.
8597 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
8598 all incorrectly implemented relocations.
e1df38aa 8599 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
8600 Arm_output_section::fix_exidx_coverage.
8601 * layout.cc (Layout::section_name_mapping): Remove trailing dots
8602 from ".ARM.exidx." and ".ARM.extab.".
8603
ca419a6f
ILT
86042010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8605
8606 * arm.cc (Target_arm::do_finalize_sections): Create attribute
8607 section if it does not already exist.
8608 * attributes.cc (Attributes_section_data::Attributes_section_data):
8609 Don't crash if size is zero.
8610
135b9c78
ILT
86112010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8612 Ian Lance Taylor <iant@google.com>
8613
8614 * gold.cc (queue_middle_tasks): If no input files were opened,
8615 exit.
8616 * workqueue.h (Task_function::Task_function): Assert that there is
8617 a blocker.
8618
bb0bfe4f
DK
86192010-02-22 Doug Kwan <dougkwan@google.com>
8620
8621 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
8622 * icf.cc (get_section_contents): Cast snprintf arguments to long long
8623 types to avoid warnings due to different uint64_t implementations
8624 on different hosts.
8625
2a2b6d42
DK
86262010-02-21 Doug Kwan <dougkwan@google.com>
8627
8628 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
8629 handling of the maximum backward branch offset.
2e702c99 8630 (Arm_relocate_functions::thumb_branch_common): Ditto.
2a2b6d42
DK
8631 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
8632 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 8633 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
8634 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
8635 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
8636 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
8637 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
8638 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
8639 thumb_bl_out_of_range thumb_bl_out_of_range.o,
8640 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
8641 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
8642 thumb2_bl_out_of_range.o): New rules.
8643 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
8644 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
8645 thumb2_bl_out_of_range
8646 * testsuite/Makefile.in: Regenerate.
8647 * testsuite/arm_bl_in_range.s: New file.
8648 * testsuite/arm_bl_out_of_range.s: Ditto.
8649 * testsuite/arm_branch_in_range.sh: Ditto.
8650 * testsuite/arm_branch_range.t: Ditto.
8651 * testsuite/thumb2_branch_range.t: Ditto.
8652 * testsuite/thumb_bl_in_range.s: Ditto.
8653 * testsuite/thumb_bl_out_of_range.s: Ditto.
8654 * testsuite/thumb_branch_range.t: Ditto.
8655
b487ad64
ST
86562010-02-20 Sriraman Tallam <tmsriram@google.com>
8657
8658 * gc.h (gc_process_relocs): Change vectors to point to the new list.
8659 Add reloc offset information.
8660 * icf.cc (get_section_contents): Change iterators to point to the new
8661 vectors. Add reloc offset information to the contents.
8662 * icf.h (Icf::Sections_reachable_info): New typedef.
8663 (Icf::Sections_reachable_list): New typedef.
8664 (Icf::Offset_info): New typedef.
8665 (Icf::Reloc_info): New struct typedef.
8666 (Icf::Reloc_info_list): New typedef.
8667 (Icf::symbol_reloc_list): Delete method.
8668 (Icf::addend_reloc_list): Delete method.
8669 (Icf::section_reloc_list): Delete method.
8670 (Icf::reloc_info_list): New method.
8671 (Icf::reloc_info_list_): New member.
8672
f96accdf
DK
86732010-02-19 Doug Kwan <dougkwan@google.com>
8674
8675 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
8676 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
8677 * arm.cc (Arm_relocation_functions): New forward declaration.
8678 (Target_arm::Target_arm): Initialize new data members
8679 got_mod_index_offset_ and tls_base_symbol_defined_.
8680 (Target_arm::Relocate::relocate_tls): New method.
8681 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
8682 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
8683 New methods.
2e702c99 8684 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
f96accdf
DK
8685 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
8686 (Target_arm::got_mod_index_offset_,
8687 Target_arm::tls_base_symbol_defined_): New data members.
8688 (Target_arm::Scan::local, Target::Scan::global,
8689 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
8690 relocations.
8691
c8761b9a
DK
86922010-02-18 Doug Kwan <dougkwan@google.com>
8693
8694 * arm.cc (Arm_relobj::find_linked_text_section): New method.
8695 (Arm_relobj::make_exidx_input_section): Pass section index of linked
8696 text section as a parameter becuase some broken tools may not set
8697 the link in section header.
8698 (Target_arm::has_got_section): New method.
8699 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
8700 without any mapping symbol as data only. Remove warning.
8701 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
8702 link in its section header, try to discover the link by inspecting the
8703 REL31 relocation at the beginning of the section.
8704 (Target_arm::Scan::check_non_pic): Report name of offending relocation
8705 in error message.
8706 (Target_arm::Scan::global): Treat any reference to the symbol
8707 _GLOBAL_OFFSET_TABLE_ as a GOT access.
8708
21bb3914
ST
87092010-02-12 Sriraman Tallam <tmsriram@google.com>
8710
8711 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
8712 (Scan::global_reloc_may_be_function_pointer): New function.
8713 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
8714 (Scan::global_reloc_may_be_function_pointer): New function.
8715 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
8716 (Scan::global_reloc_may_be_function_pointer): New function.
8717 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
8718 (Scan::global_reloc_may_be_function_pointer): New function.
8719 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
8720 (Scan::global_reloc_may_be_function_pointer): New function.
8721 (Scan::possible_function_pointer_reloc): New function.
8722 (Target_x86_64::can_check_for_function_pointers): New function.
8723 * gc.h (gc_process_relocs): Scan relocation types to determine if
8724 function pointers were taken for targets that support it.
8725 * icf.cc (Icf::find_identical_sections): Include functions for
8726 folding in safe ICF whose pointer is not taken.
8727 * icf.h (Secn_fptr_taken_set): New typedef.
8728 (fptr_section_id_): New member.
8729 (section_has_function_pointers): New function.
8730 (set_section_has_function_pointers): New function.
8731 (check_section_for_function_pointers): New function.
8732 * options.h: Fix comment for safe ICF option.
8733 * target.h (can_check_for_function_pointers): New function.
8734 * testsuite/Makefile.am: Add icf_safe_so_test test case.
8735 Modify icf_safe_test for X86-64.
8736 * testsuite/Makefile.in: Regenerate.
8737 * testsuite/icf_safe_so_test.cc: New file.
8738 * testsuite/icf_safe_so_test.sh: New file.
8739 * testsuite/icf_safe_test.cc (kept_func_3): New function.
8740 (main): Change to take pointer to function kept_func_3.
8741 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
8742 folding is done correctly for X86-64.
8743
0da6fa6c
DM
87442010-02-12 David S. Miller <davem@davemloft.net>
8745
8746 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
8747 is_symbolless parameter.
8748 (Output_reloc<SHT_REL>::is_symbolless): New.
8749 (Output_reloc<SHT_REL>::is_symbolless_): New.
8750 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
8751 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
8752 (Output_reloc<SHT_RELA>::is_symbolless): New.
8753 (Output_data_reloc::add_global): Handle is_symbolless.
8754 (Output_data_reloc::add_global_relative): Likewise.
8755 (Output_data_reloc::add_local): Likewise.
8756 (Output_data_reloc::add_local_relative): Likewise.
8757 (Output_data_reloc::add_symbolless_global_addend): New.
8758 (Output_data_reloc::add_symbolless_local_addend): New.
8759 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
8760 is_symbolless.
8761 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
8762 instead of ->is_relative_
8763 (Output_reloc::write): Likewise.
8764 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
8765 (Output_reloc::write_rel): Simplify.
8766
8767 * sparc.cc (Target_sparc::Scan::local): Use
8768 ->add_symbolless_local_addend as needed.
8769 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
8770 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
8771 based upon relocation offset.
8772
e4782e83
DK
87732010-02-11 Doug Kwan <dougkwan@google.com>
8774
8775 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
8776 (Target_arm::Scan::global): Ditto. Also remove a comment before the
8777 beginning of function.
8778 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
8779 and MOVT_ABS relocations. Those are non issued in scanning. Fix
8780 parameter is_32bit in calls to should_apply_static_reloc.
8781 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
8782 (check_DATA): Add arm_abs_global.stdout.
8783 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
8784 arm_abs_global.stdout): New rules.
8785 (MOSTLLYCLEANFILES): Add arm_abs_global
8786 * Makefile.in: Regenerate.
8787 * testsuite/arm_abs_global.s: New file.
8788 * testsuite/arm_abs_global.sh: Ditto.
8789 * testsuite/arm_abs_lib.s: Ditto.
8790
93ceb764
ILT
87912010-02-11 Ian Lance Taylor <iant@google.com>
8792
8793 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
8794 Read_relocs task.
8795 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
8796 Allocate_commons_task first.
8797 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
8798 task, rather than symtab_lock_.
8799 (Gc_process_relocs::~Gc_process_relocs): New function.
8800 (Gc_process_relocs::is_runnable): Check this_blocker_.
8801 (Gc_process_relocs::locks): Use next_blocker_ rather than
8802 blocker_.
8803 (Scan_relocs::~Scan_relocs): New function.
8804 (Scan_relocs::is_runnable): Check this_blocker_ rather than
8805 symtab_lock_.
8806 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
8807 next_blocker_.
8808 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
8809 fields. Add this_blocker_ and next_blocker_ fields. Adjust
8810 constructor accordingly.
8811 (class Gc_process_relocs): Likewise.
8812 (class Scan_relocs): Likewise.
8813 * common.h (class Allocate_commons_task): Remove symtab_lock_
8814 field, and corresponding constructor parameter.
8815 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
8816 symtab_lock_.
8817 (Allocate_commons_task::locks): Likewise.
8818
114dfbe1
ILT
88192010-02-11 Ian Lance Taylor <iant@google.com>
8820
8821 * gold-threads.h (class Once): Define.
8822 (class Initialize_lock): Rewrite as child of Once.
8823 * gold-threads.cc (class Once_initialize): Define.
8824 (once_pointer_control): New static variable.
8825 (once_pointer, once_arg): New static variables.
8826 (c_run_once): New static function.
8827 (Once::Once, Once::run_once, Once::internal_run): New functions.
8828 (class Initialize_lock_once): Remove.
8829 (initialize_lock_control): Remove.
8830 (initialize_lock_pointer): Remove.
8831 (initialize_lock_once): Remove.
8832 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
8833 (Initialize_lock::initialize): Rewrite.
8834 (Initialize_lock::do_run_once): New function.
8835 * archive.cc (Archive::interpret_header): Only clear name if it is
8836 not already empty.
8837 * fileread.cc: Include "gold-threads.h"
8838 (file_counts_lock): New static variable.
8839 (file_counts_initialize_lock): Likewise.
8840 (File_read::release): Only increment counts when using --stats.
8841 Use a lock around the increment.
8842 * parameters.cc (class Set_parameters_target_once): Define.
8843 (set_parameters_target_once): New static variable.
8844 (Parameters::Parameters): Move here from parameters.h.
8845 (Parameters::set_target): Rewrite.
8846 (Parameters::set_target_once): New function.
8847 (Parameters::clear_target): Move here and rewrite.
8848 * parameters.h (class Parameters): Update declarations. Add
8849 set_parameters_target_once_ field.
8850 (Parameters::Parameters): Move to parameters.cc.
8851 (Parameters::clear_target): Likewise.
8852 * readsyms.cc (Read_symbols::do_group): Create a Start_group
8853 task.
8854 (Start_group::~Start_group): New function.
8855 (Start_group::is_runnable): New function.
8856 (Start_group::locks, Start_group::run): New functions.
8857 (Finish_group::run): Change saw_undefined to size_t.
8858 * readsyms.h (class Start_group): Define.
8859 (class Finish_group): Change saw_undefined_ field to size_t.
8860 (Finish_group::Finish_group): Remove saw_undefined and
8861 this_blocker parameters. Change all callers.
8862 (Finish_group::set_saw_undefined): New function.
8863 (Finish_group::set_blocker): New function.
8864 * symtab.h (class Symbol_table): Change saw_undefined to return
8865 size_t. Change saw_undefined_ field to size_t.
8866 * target-select.cc (Set_target_once::do_run_once): New function.
8867 (Target_selector::Target_selector): Initialize set_target_once_
8868 field. Don't initialize lock_ and initialize_lock_ fields.
8869 (Target_selector::instantiate_target): Rewrite.
8870 (Target_selector::set_target): New function.
8871 * target-select.h (class Set_target_once): Define.
8872 (class Target_selector): Update declarations. Make
8873 Set_target_once a friend. Remove lock_ and initialize_lock_
8874 fields. Add set_target_once_ field.
8875
fa17a3f4
ILT
88762010-02-10 Ian Lance Taylor <iant@google.com>
8877
8878 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
8879 queueing any tasks.
8880 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
8881 (queue_middle_tasks): Add all blockers before queueing any tasks.
8882 (queue_final_tasks): Likewise.
8883 * token.h (Task_token::add_blockers): New function.
8884 * object.h (Input_objects::number_of_relobjs): New function.
8885
c7177d31
ILT
88862010-02-10 Ian Lance Taylor <iant@google.com>
8887
5de0e392
ILT
8888 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
8889 shared, not if not position independent.
8890 * x86_64.cc (Relocate::relocate_tls): Likewise.
8891 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
8892 (tls_pie_pic_test): New target.
8893 * testsuite/Makefile.in: Rebuild.
8894
c7177d31
ILT
8895 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
8896 (tls_test_main_pie.o, tls_test_pie.o): New targets.
8897 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
8898 * testsuite/Makefile.in: Rebuild.
8899
684b268a
DM
89002010-02-09 David S. Miller <davem@davemloft.net>
8901
8902 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
8903 R_SPARC_RELATIVE using ->add_local_relative().
8904 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
8905
612a8d3d
DM
8906 * output.h (Output_data_dynamic::add_section_size): New method
8907 that takes two Output_data objects.
8908 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
8909 entry param. Handle it in initializers.
8910 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
8911 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
8912 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
8913 arg.
8914 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
8915 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
8916 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
8917 for dynrel_includes_plt.
8918 * i386.cc (Target_i386::do_finalize_sections): Likewise.
8919 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
8920 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
8921 before .rela.plt
8922 (Target_sparc::do_finalize_sections): Update to pass true for
8923 dynrel_includes_plt.
8924 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
8925 output before .rela.plt
8926 (Target_powerpc::do_finalize_sections): Update to pass true for
8927 dynrel_includes_plt when 32-bit.
8928
cb1be87e
DK
89292010-02-08 Doug Kwan <dougkwan@google.com>
8930
8931 * arm.cc (Arm_relobj::simple_input_section_output_address): New
8932 method.
8933 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
8934 Arm_relobj::scan_section_for_cortex_a8_stubs,
8935 Arm_relobj::do_relocation_section): Instead of calling
8936 Output_section::output_address, use faster
8937 Arm_relobj::simple_input_section_output_address.
8938
705b5121
DM
89392010-02-08 David S. Miller <davem@davemloft.net>
8940
8941 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
8942 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
8943 relocation helper function.
8944
024c4466
DM
8945 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
8946 just like R_SPARC_GOT{10,13,22}.
8947 (Target_sparc::Scan::local): Likewise.
8948 (Target_sparc::Relocate:relocate): Likewise.
8949
9109c078
ILT
89502010-02-06 Ian Lance Taylor <iant@google.com>
8951
8952 * configure.ac: Rewrite targetobjs duplicate removal code to use
8953 only shell constructs.
8954 * configure: Rebuild.
8955
cf846138
DK
89562010-02-05 Doug Kwan <dougkwan@google.com>
8957
8958 PR 11247
8959 * arm.cc (Arm_relobj::section_is_scannable): New method.
8960 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
8961 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
8962
6cfaf60b
DK
89632010-02-04 Doug Kwan <dougkwan@google.com>
8964
8965 PR 11247
8966 * arm-reloc-property.cc (cstdio): Include.
8967 * configure.ac (targetobjs): Remove duplicates.
8968 * configure: Regenerate.
8969 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
8970 big and little endian version for a given address size.
8971
5c57f1be
DK
89722010-02-03 Doug Kwan <dougkwan@google.com>
8973
8974 * arm-reloc-property.cc
8975 (Arm_reloc_property_table::reloc_name_in_error_message): New method
8976 definition.
8977 * arm-reloc-property.h
8978 (Arm_reloc_property_table::get_implemented_static_reloc_property):
8979 New method definition.
8980 (Arm_reloc_property_table::reloc_name_in_error_message): New method
8981 declaration.
8982 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
8983 overflow to N.
8984 (GOT_PREL): Change implemented to Y.
8985 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
8986 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
8987 (Arm_relocate_functions::movw_abs_nc): Remove method.
8988 (Arm_relocate_functions::movt_abs): Ditto.
8989 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
8990 (Arm_relocate_functions::thm_movt_abs): Ditto.
8991 (Arm_relocate_functions::movw_rel_nc): Ditto.
8992 (Arm_relocate_functions::movw_rel): Ditto.
8993 (Arm_relocate_functions::movt_rel): Ditto.
8994 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
8995 (Arm_relocate_functions:thm_movw_rel): Ditto.
8996 (Arm_relocate_functions:thm_movt_rel): Ditto.
8997 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
8998 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
8999 New method definitions.
9000 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
9001 (Arm_relocation_functions::arm_grp_ldr): Ditto.
9002 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
9003 (Arm_relocation_functions::arm_grp_ldc): Ditto.
9004 (Target_arm::Relocate::relocate): Check for non-static or
9005 unimplemented relocation code and exit early. Change calls to
9006 Target_arm::reloc_uses_thumb_bit and
9007 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
9008 instead. Refactor code to handle similar relocations to increase
9009 code sharing. Remove check for unsupported relocation code in switch
9010 statement.
9011 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
9012 relocation property table to find out size. Change error message to
9013 print out the name of a relocation code instead of the numeric value.
9014 (Target_arm::scan_reloc_for_stub): Use relocation property table
9015 instead of calling Target_arm::reloc_uses_thumb_bit().
9016
218c5831
DK
90172010-02-02 Doug Kwan <dougkwan@google.com>
9018
9019 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
9020 types of relaxed input section.
9021
0d31c79d
DK
90222010-02-02 Doug Kwan <dougkwan@google.com>
9023
9024 * Makefile.am (HFILES): Add arm-reloc-property.h.
9025 (DEFFILES): New.
2e702c99
RM
9026 (TARGETSOURCES): Add arm-reloc-property.cc
9027 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
0d31c79d
DK
9028 (libgold_a_SOURCES): $(DEFFILES)
9029 * Makefile.in: Regenerate.
9030 * arm-reloc-property.cc: New file.
9031 * arm-reloc-property.h: New file.
9032 * arm-reloc.def: New file.
9033 * arm.cc: Update comments.
9034 (arm-reloc-property.h): New included header.
9035 (arm_reloc_property_table): New global variable.
9036 (Target_arm::do_select_as_default_target): New method definition.
9037 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
9038 arm-reloc-property to targ_extra_obj.
9039 * parameters.cc (set_parameters_target): Call
9040 Target::select_as_default_target().
9041 * target.h (Target::select_as_default_target): New method definition.
9042 (Target::do_select_as_default_target): Same.
9043
546c7457
DK
90442010-02-01 Doug Kwan <dougkwan@google.com>
9045
9046 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
9047 first_output_text_section_.
9048 (Arm_exidx_fixup::first_output_text_section): New method definition.
9049 (Arm_exidx_fixup::first_output_text_section_): New data member.
9050 (Arm_exidx_fixup::process_exidx_section): Record the first text
9051 output section seen.
9052 (Arm_output_section::fix_exidx_coverage): Set correct linked section
9053 and entsize in output section header.
9054
11b861d5
DK
90552010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9056
9057 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
9058 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
9059 (Arm_relocate_functions::thm_alu11): New Method.
9060 (Arm_relocate_functions::thm_pc8): New Method.
9061 (Arm_relocate_functions::thm_pc12): New Method.
9062 (Target_arm::Scan::local): Handle the relocations.
9063 (Target_arm::Scan::global): Likewise.
9064 (Target_arm::Relocate::relocate): Likewise.
9065 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
9066
c9a2c125
DK
90672010-01-29 Doug Kwan <dougkwan@google.com>
9068
9069 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
9070 of relocation types as ld.
9071
1521477a
DK
90722010-01-29 Doug Kwan <dougkwan@google.com>
9073
9074 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
9075 to public.
9076 (Arm_relocate_functions::thumb_branch_common): Ditto.
9077 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
9078 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
9079 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
9080 Arm_relocate_functions::jump24): Remove.
9081 (Target_arm::Relocate::relocate): Adjust code to call
9082 Arm_relocation_functions::arm_branch_common and
9083 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 9084 wrappers. Merge switch-cases together to reduce source code size.
1521477a 9085
e7eca48c
DK
90862010-01-29 Doug Kwan <dougkwan@google.com>
9087
9088 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
9089 output_local_symbol_count_needs_update_.
9090 (Arm_relobj::output_local_symbol_count_needs_update,
9091 Arm_relobj::set_output_local_symbol_count_needs_update,
9092 Arm_relobj::update_output_local_symbol_count): New methods.
9093 (Arm_relobj::output_local_symbol_count_needs_update_): New data
9094 member.
9095 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
9096 of pointed function as in a R_ARM_PREL31 relocation.
9097 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
9098 for output local symbol count updating.
9099 (Target_arm::do_relax): Update output local symbol counts in objects
9100 if necessary.
9101 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
9102
02961d7e
ILT
91032010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9104
9105 * arm.cc: Added support for the ARM relocations:
9106 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
9107 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
9108 (Arm_relocate_functions::movw_rel_nc): Renamed (was
9109 movw_prel_nc).
9110 (Arm_relocate_functions::movw_rel): New method.
9111 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
9112 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
9113 thm_movw_prel_nc).
9114 (Arm_relocate_functions::thm_movw_rel): New method.
9115 (Arm_relocate_functions::thm_movt_rel): Renamed (was
9116 thm_movt_prel).
9117 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
9118 relocations.
9119 (Target_arm::Scan::global): Likewise.
9120 (Target_arm::Relocate::relocate): Likewise.
9121 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9122 Likewise.
9123
b10d2873
ILT
91242010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9125
9126 * arm.cc: Added support for ARM group relocations.
9127 (Target_arm::reloc_needs_sym_origin): New method.
9128 (Arm_relocate_functions::calc_grp_kn): New method.
9129 (Arm_relocate_functions::calc_grp_residual): New method.
9130 (Arm_relocate_functions::calc_grp_gn): New method.
9131 (Arm_relocate_functions::arm_grp_alu): New Method.
9132 (Arm_relocate_functions::arm_grp_ldr): New Method.
9133 (Arm_relocate_functions::arm_grp_ldrs): New Method.
9134 (Arm_relocate_functions::arm_grp_ldc): New Method.
9135 (Target_arm::Scan::local): Handle the ARM group relocations.
9136 (Target_arm::Scan::global): Likewise.
9137 (Target_arm::Relocate::relocate): Likewise.
9138 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9139 Likewise.
9140
2b328d4e
DK
91412010-01-26 Doug Kwan <dougkwan@google.com>
9142
9143 * arm.cc (set): Include.
9144 (class Arm_exidx_fixup): Change type of last_input_section_ to const
9145 pointer type.
2e702c99 9146 (Arm_output_section::Text_section_list): New type.
2b328d4e
DK
9147 (Arm_output_section::append_text_sections_to_list): New method.
9148 (Arm_output_section::fix_exidx_coverage): Ditto.
9149 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
2e702c99 9150 (Arm_relobj::convert_input_section_to_relaxed_section): Use
2b328d4e
DK
9151 Relobj::set_section_offset() instead of
9152 Sized_relobj::invalidate_section_offset().
2e702c99 9153 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
2b328d4e
DK
9154 parameter for section headers. Ignore relocation sections for
9155 unallocated sections and EXIDX sections.
9156 (Target_arm::fix_exidx_coverage): New method.
9157 (Target_arm::output_section_address_less_than): New type.
9158 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
9159 linked text section instead of the EXIDX section.
9160 (Arm_output_section::create_stub_group): Add an assertion to check
9161 that this is not an EXIDX output section.
9162 (Arm_output_section::append_text_sections_to_list): New method.
9163 (Arm_output_section::fix_exidx_coverage): Ditto.
9164 (Arm_relobj::scan_sections_for_stubs): Adjust call to
2e702c99 9165 Arm_relobj::section_needs_reloc_stub_scanning.
2b328d4e
DK
9166 (Target_arm::do_relax): Fix EXIDX output section coverage in the
9167 first pass.
9168 (Target_arm::fix_exidx_coverage): New method.
9169 * object.h (Relobj::set_output_section): New method.
9170 (Sized_relobj::invalidate_section_offset): Remove method.
9171 (Sized_relobj::do_invalidate_section_offset): Remove method.
9172 (Sized_relobj::do_set_section_offset): Handle offset value -1.
9173
c7f3c371
DK
91742010-01-25 Doug Kwan <dougkwan@google.com>
9175
9176 * arm.cc (Arm_exidx_merged_section::do_output_offset):
9177 Fix warning due to signed and unsigned comparison on a 32-bit host.
9178
8923b24c
DK
91792010-01-22 Doug Kwan <dougkwan@google.com>
9180
9181 * arm.cc (Target_arm::do_relax): Record an output section for section
9182 offset adjustment it contains any stub table that has changed.
9183 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
9184 offsets in an output section if necessary.
9185 * output.cc (Output_section::Output_section): Initialize
9186 section_offsets_need_adjustments_.
9187 (Output_section::add_input_section_for_script): Renamed to
9188 Output_section::add_simple_input_section.
9189 (Output_section::save_states): Add a comment.
9190 (Output_section::discard_states): New method defintion.
9191 (Output_section::adjust_section_offsets): Same.
9192 * output.h (Output_section::add_input_section_for_script): Renamed to
9193 Output_section::add_simple_input_section.
9194 (Output_section::discard_states): New method declaration.
9195 (Output_section::adjust_section_offsets): Same.
9196 (Output_section::section_offsets_need_adjustment,
9197 Output_section::set_section_offsets_need_adjustment): New method
9198 definitions.
9199 (Output_section::section_offsets_need_adjustment_): New data member.
9200 * script-sections.cc
9201 (Output_section_element_input::set_section_address): Adjust code for
9202 renaming of Output_section::add_input_section_for_script.
9203 (Orphan_output_section::set_section_address): Same.
9204
9b2fd367
DK
92052010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9206
9207 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
9208 Fix_v4bx enum values .
9209 * gold/options.h (General_options): New option definitions.
9210 (General_options::fix_v4bx): New method.
9211 (General_options::Fix_v4bx): New enum.
9212 * gold/options.cc (General_options::parse_fix_v4bx): New method.
9213 (General_options::parse_fix_v4bx_interworking): New method.
9214
80d0d023
DK
92152010-01-22 Doug Kwan <dougkwan@google.com>
9216
9217 * arm.cc (Arm_exidx_fixup): New class.
9218
af2cdeae
DK
92192010-01-21 Doug Kwan <dougkwan@google.com>
9220
9221 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
9222 classes.
9223 (Arm_exidx_section_offset_map): New type.
9224
993d07c1
DK
92252010-01-21 Doug Kwan <dougkwan@google.com>
9226
9227 * arm.cc (Arm_exidx_input_section): New class.
9228 (Arm_relobj::exidx_input_section_by_link,
9229 Arm_relobj::exidx_input_section_by_shndx,
9230 Arm_relobj::make_exidx_input_section): New methods.
9231 (read_arm_attributes_section): Remove.
9232 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
9233 information about them.
9234 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
9235 to here.
9236
5ac169d4
DK
92372010-01-20 Doug Kwan <dougkwan@google.com>
9238
9239 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
9240 Input_section_specifier to Section_id.
9241 (Target_arm::new_arm_input_section: Adjust code for change of key
9242 type.
9243 (Target_arm::find_arm_input_section): Ditto.
9244 * gc.h (object.h): Include for Section_id nand Section_id_hash.
9245 (Section_id): Remove.
9246 (Garbage_collection::Section_id_hash): Remove.
9247 * icf.h (object.h): Include for Section_id nand Section_id_hash.
9248 (Section_id): Remove.
9249 (Icf::Section_id_hash): Remove.
9250 * object.h (Section_id, Const_section_id, Section_id_hash,
9251 Const_section_id_hash): New type definitions.
9252 * output.cc (Output_section::add_relaxed_input_section): Change to
9253 use Const_section_id instead of Input_section_specifier as key type.
9254 (Output_section::add_merge_input_section): Ditto.
9255 (Output_section::build_relaxation_map): Change to use Section_id
9256 instead of Input_section_specifier as key type.
2e702c99 9257 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5ac169d4
DK
9258 Ditto.
9259 (Output_section::convert_input_sections_to_relaxed_sections): Change
9260 to use Const_section_id instead of Input_section_specifier as key type.
2e702c99 9261 (Output_section::find_merge_section): Ditto.
5ac169d4
DK
9262 (Output_section::find_relaxed_input_section): Ditto.
9263 * output.h (Input_section_specifier): Remove class.
9264 (Output_section::Output_section_data_by_input_section_map): Change
9265 key type to Const_section_id.
9266 (Output_section::Output_relaxed_input_section_by_input_section_map):
9267 Ditto.
9268 (Output_section::Relaxation_map): Change key type to Section_id.
9269
a2162063
ILT
92702010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9271
9272 * gold/arm.cc: Added support for R_ARM_V4BX relocation
9273 (class Arm_v4bx_stub): New class.
9274 (DEF_STUBS): Updated definition to support v4_veneer_bx.
9275 (Stub_factory::make_arm_v4bx_stub): New method.
9276 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
9277 (Stub_table::empty): Handle v4bx stubs.
9278 (Stub_table::add_arm_v4bx_stub): New method.
9279 (Stub_table::find_arm_v4bx_stub): New method.
9280 (Arm_relocate_functions::v4bx): New method.
9281 (Target_arm::fix_v4bx): New method.
9282 (Target_arm::Target_arm): Handle R_ARM_V4BX.
9283 (Stub_table::relocate_stubs): Likewise.
9284 (Stub_table::do_write): Likewise.
9285 (Stub_table::update_data_size_and_addralign): Likewise.
9286 (Stub_table::finalize_stubs): Likewise.
9287 (Target_arm::Scan::local): Likewise.
9288 (Target_arm::Scan::global): Likewise.
9289 (Target_arm::do_finalize_sections): Likewise.
9290 (Target_arm::Relocate::relocate): Likewise.
9291 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9292 Likewise.
9293 (Target_arm::scan_reloc_for_stub): Likewise.
9294 (Target_arm::scan_reloc_section_for_stubs): Likewise.
9295
5696ab0b
ILT
92962010-01-19 Ian Lance Taylor <iant@google.com>
9297
9298 * output.cc (Output_section_headers::do_sized_write): Write large
9299 segment count to sh_info field.
9300 (Output_file_header::do_sized_write): For large segment count,
9301 write PN_XNUM to e_phnum field.
9302
800d0f56
ILT
93032010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9304
9305 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
9306 (Arm_relocate_functions::thm_jump8): New function.
9307 (Arm_relocate_functions::thm_jump11): New function.
9308 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
9309 R_ARM_THM_JUMP11.
9310 (Target_arm::Scan::global): Likewise.
9311 (Target_arm::Relocate::relocate): Likewise.
9312 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9313 Likewise.
9314
41263c05
DK
93152010-01-14 Doug Kwan <dougkwan@google.com>
9316
9317 * arm.cc (map, utility): Include headers.
9318 (Target_arm::apply_cortex_a8_workaround): New method.
9319 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
9320 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
9321 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
9322 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
9323 the --[no-]fix-cortex-a8 command line options.
9324 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
9325 (Target_arm::relocate_stub): Use addend in instruction template.
9326 * options.h (DEFINE_bool): Set the user-set flag.
9327 (General_options): Add --[no-]-fix-cortex options.
9328 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 9329 : Update fast look-up map after conversion.
41263c05 9330
459e9b03
ST
93312010-01-14 Sriraman Tallam <tmsriram@google.com>
9332
9333 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
9334 in the first pass of do_layout.
9335
b521dfe4
DK
93362010-01-13 Doug Kwan <dougkwan@google.com>
9337
9338 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
9339 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
9340 apparent compiler problem of not folding static constant integral
9341 data members of elfcpp::Elf_sizes<32>.
9342
44272192
DK
93432010-01-13 Doug Kwan <dougkwan@google.com>
9344
9345 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
9346 Arm_relobj::section_needs_cortex_a8_stub_scanning,
9347 Arm_relobj::scan_section_for_cortex_a8_erratum,
9348 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
9349 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
9350 sections to scan for relocation stubs into a new method
9351 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
9352 relocation and Cortex-A8 stub scanning.
9353 (Target_arm::do_relax): Force stubs to be after stubbed sections
9354 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 9355 the beginning of a new relaxation pass. Update a comment.
44272192
DK
9356 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
9357
44b71ece
ILT
93582010-01-12 Ian Lance Taylor <iant@google.com>
9359
9360 * target-reloc.h (visibility_error): New inline function.
9361 (relocate_section): Call visibility_error.
9362 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
9363 (MOSTLYCLEANFILES): Likewise.
9364 (protected_4_pic.o, protected_3.err): New targets.
9365 * testsuite/protected_4.cc: New file.
9366
a120bc7f
DK
93672010-01-12 Doug Kwan <dougkwan@google.com>
9368
9369 * arm.cc (Cortex_a8_reloc): New class.
9370 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
9371 and cortex_a8_relocs_info_.
9372 (Target_arm::fix_cortex_a8): New method definition.
9373 (Target_arm::Cortex_a8_relocs_info): New type.
9374 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
9375 New data member declarations.
9376 (Target_arm::scan_reloc_for_stub): Record information about
9377 relocations for THUMB branches that might be exempted from the
9378 Cortex-A8 workaround.
9379 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
9380 at the beginning of a relaxation pass.
9381
20138696
DK
93822010-01-12 Doug Kwan <dougkwan@google.com>
9383
9384 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
9385 (Arm_relobj::Mapping_symbol_position,
9386 Arm_reloj::Mapping_symbol_position_less,
9387 Arm_relobj::Mapping_symbols_info): New types.
9388 (Target_arm::is_mapping_symbol_name): New method definition.
9389 (Arm_relobj::do_count_local_symbols): Save information about mapping
9390 symbols.
9391
089d69dc
DK
93922010-01-11 Doug Kwan <dougkwan@google.com>
9393
9394 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
9395 Arm_relocate_functions::thumb32_branch_upper,
9396 Arm_relocate_functions::thumb32_branch_lower,
9397 Arm_relocate_functions::thumb32_cond_branch_offset,
9398 Arm_relocate_functions::thumb32_cond_branch_upper,
9399 Arm_relocate_functions::thumb32_cond_branch_lower,
9400 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
9401 branch offset encoding.
9402 (Arm_relocate_functions::thumb_branch_common): Use new branch
9403 offset encoding methods to avoid code duplication.
9404 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
9405 (Stub_addend_reader::operator()): Use new branch encoding method
9406 to avoid code duplication.
9407
99e5bff2
DK
94082010-01-11 Doug Kwan <dougkwan@google.com>
9409
9410 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
9411 (Target_arm::do_finalize_sections): Define special EXIDX section
9412 symbols only if referenced.
9413 * gc.h (Garbage_collection::add_reference): New method.
9414 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
9415 code duplication.
9416
98e090bd
ILT
94172010-01-11 Ian Lance Taylor <iant@google.com>
9418
d0a91bd8
ILT
9419 * script.cc (Version_script_info::build_expression_list_lookup):
9420 Change complaing about duplicate wildcard match from error to
9421 warning.
9422
98e090bd
ILT
9423 * script.cc (class Lazy_demangler): Recreate--revert part of patch
9424 of 2009-12-30.
9425 (Version_script_info::Version_script_info): Initialize globs_,
9426 default_version_, default_is_global_, and exact_. Don't
9427 initialize globals_ or locals_.
9428 (Version_script_info::build_lookup_tables): Build local symbols
9429 first.
9430 (Version_script_info::unquote): New function.
9431 (Version_script_info::add_exact_match): New function.
9432 (Version_script_info::build_expression_list_lookup): Remove lookup
9433 parameter. Add is_global parameter. Change all callers. Handle
9434 wildcard pattern specially. Unquote pattern. Call
9435 add_exact_match.
9436 (Version_script_info::get_name_to_match): New function.
9437 (Version_script_info::get_symbol_version): New function.
9438 (Version_script_info::get_symbol_version_helper): Remove.
9439 (Version_script_info::check_unmatched_names): Call unquote.
9440 * script.h (class Version_script_info): Change get_symbol_version
9441 to be non-inline and add is_global parameter; change all callers.
9442 Rewrite symbol_is_local. Update declarations. Define struct
9443 Version_tree_match, Exact, Globs. Don't define struct Lookup.
9444 Remove globals_ and locals_ members. Add exact_, globs_,
9445 default_version_, is_global_.
9446 (Version_script_info::Glob): Remove pattern, add expression and
9447 is_global. Update constructor. Change all callers.
9448 * dynobj.cc (Versions::finalize): Mark the version symbol as the
9449 default version.
9450 (Versions::symbol_section_contents): If a symbol is undefined, or
9451 defined in a dynamic object, set the version index to
9452 VER_NDX_LOCAL.
9453 * symtab.cc (Symbol_table::add_from_relobj): Don't call
9454 symbol_is_local.
9455 (Symbol_table::add_from_pluginobj): Likewise.
9456 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
9457
d56962d3
DK
94582010-01-11 Doug Kwan <dougkwan@google.com>
9459
9460 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
9461 (incremental_dump_LDADD): Add linking option for libintl.
9462 * Makefile.in: Regenerate.
9463
94e6ee91
L
94642010-01-11 H.J. Lu <hongjiu.lu@intel.com>
9465
9466 PR gold/11144
9467 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
9468 instead of -Ds.
9469 * testsuite/Makefile.in: Regenerated.
9470
e96c574b
DK
94712010-01-10 Doug Kwan <dougkwan@google.com>
9472
9473 * options.h (DEFINE_var): Use parentheses around argument varname__
9474 in macro body to avoid any unintended subsequent substitutions.
9475
7198066b
ILT
94762010-01-10 Ian Lance Taylor <iant@google.com>
9477
ba4d53bf
ILT
9478 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
9479 candidates before doing symbol resolution.
9480
7198066b
ILT
9481 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
9482 ODR candidates if only one is weak.
9483
a2beed37
ILT
94842010-01-08 Ian Lance Taylor <iant@google.com>
9485
9486 * script.cc (Version_script_info::build_expression_list_lookup):
9487 Don't warn about ambiguous version, just record the ambiguity.
9488 (Version_script_info::get_symbol_version_helper): Give error if
9489 version is ambiguous.
9490
2fb7225c
DK
94912010-01-08 Doug Kwan <dougkwan@google.com>
9492
9493 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
703d02da
AM
9494 prev_data_size_ and prev_addralign_. Remove initializer for
9495 deleted data member has_been_changed_.
9496 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
9497 to determine if the table is empty.
9498 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
9499 Remove.
9500 (Stub_table::add_reloc_stub): Define method in class definition
9501 instead of just declaring it there.
9502 (Stub_table::add_cortex_a8_stub): New method definition.
9503 (Stub_table::update_data_size_and_addralign): Ditto.
9504 (Stub_table::finalize_stubs): Ditto.
9505 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
9506 (Stub_table::do_addralign_): Return address alignment in the
9507 (Stub_table::do_reset_address_and_file_offset): Define method in
9508 class definition instead of declaring it there. Set current data
9509 size to be the data size of the previous pass.
9510 (Stub_table::set_final_data_size): Use current data size as the
9511 final data size.
9512 (Stub_table::relocate_stub): Change parameter type of stub from
9513 Reloc_stub pointer to Stub pointer.
9514 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
9515 (Stub_table::Cortex_a8_stub_list): New typedef.
9516 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
9517 Stub_table::prev_addralign_): New data member.
9518 (Arm_relobj::Arm_relobj): Initialize data member
9519 section_has_cortex_a8_workaround_.
9520 (Arm_relobj::section_has_cortex_a8_workaround,
9521 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
9522 definitions.
9523 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
9524 declarations.
9525 (Target_arm::relocate_stub): Change parameter type of stub from
9526 Reloc_stub pointer to Stub pointer.
9527 (Insn_template::size, Insn_template::alignment): Handle
9528 THUMB16_SPECIAL_TYPE.
9529 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
9530 Stub_table::update_data_size_and_addralign,
9531 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
9532 definitions.
9533 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
9534 (Stub_table::do_write): Ditto.
9535 (Target_arm::do_relax): Adjust code for changes in Stub_table.
2fb7225c 9536
880cd20d
ILT
95372010-01-08 Ian Lance Taylor <iant@google.com>
9538
9539 PR 11108
9540 * symtab.h (class Symbol): Remove fields is_target_special_ and
9541 has_plt_offset_. Add field is_defined_in_discarded_section_.
9542 (Symbol::is_defined_in_discarded_section): New function.
9543 (Symbol::set_is_defined_in_discarded_section): New function.
9544 (Symbol::has_plt_offset): Rewrite.
9545 (Symbol::set_plt_offset): Verify that new offset is not -1U.
9546 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
9547 Don't initialize is_target_special_ or has_plt_offset_.
9548 Initialize is_defined_in_discarded_section_.
9549 (Symbol_table::add_from_relobj): If appropriate, set
9550 is_defined_in_discarded_section.
9551 * resolve.cc (Symbol::override_base_with_special): Don't test
9552 is_target_special_. Change has_plt_offset_ to has_plt_offset().
9553 * target-reloc.h (relocate_section): Do special handling for
9554 symbols defined in discarded sections for global symbols as well
9555 as local symbols.
9556
2703e3eb
ILT
95572010-01-08 Ian Lance Taylor <iant@google.com>
9558
9559 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
9560 the SHT_SYMTAB case.
9561
339d40a3
ILT
95622010-01-08 Ian Lance Taylor <iant@google.com>
9563
9564 * object.cc (Sized_relobj::do_layout): Don't get confused if
9565 layout_eh_frame returns NULL.
9566
abecea76
ILT
95672010-01-08 Ian Lance Taylor <iant@google.com>
9568
9569 PR 11084
9570 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
9571 dynamic symbol table, use the normal symbol table.
9572 (Sized_dynobj::do_read_symbols): Remove assertion about type of
9573 symbol table.
9574
6b7dd3f3
ILT
95752010-01-08 Ian Lance Taylor <iant@google.com>
9576
9577 PR 11072
9578 * layout.cc (Layout::include_section): Remove .gnu_debuglink
9579 sections.
9580
36c50e63
L
95812010-01-08 H.J. Lu <hongjiu.lu@intel.com>
9582
9583 * version.cc (print_version): Change to "Copyright 2010".
9584
e291e7b9
ILT
95852010-01-08 Ian Lance Taylor <iant@google.com>
9586
9587 PR 10287
9588 PR 11063
9589 * i386.cc (class Target_i386): Change return type of plt_section
9590 to be non-const.
9591 (class Output_data_plt_i386): Add tls_desc_rel_ field.
9592 (Output_data_plt_i386::Output_data_plt_i386): Initialize
9593 tls_desc_rel_ field.
9594 (Output_data_plt_i386::rel_tls_desc): New function.
9595 (Target_i386::rel_tls_desc_section): New function.
9596 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
9597 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
9598 R_386_TLS_DESC reloc in rel_tls_desc_section.
9599 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
9600 Define struct Tlsdesc_info.
9601 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
9602 (Target_x86_64::do_reloc_symbol_index): New function.
9603 (Target_x86_64::add_tlsdesc_info): New function.
9604 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
9605 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
9606 tlsdesc_rel_ field.
9607 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
9608 all callers.
9609 (Output_data_plt_x86_64::rela_tlsdesc): New function.
9610 (Target_x86_64::rela_tlsdesc_section): New function.
9611 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
9612 handling.
9613 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
9614 (Target_x86_64::do_reloc_addend): New function.
9615 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
9616 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
9617 declarations. Define TARGET_CODE. Add arg field to u1_ union.
9618 (Output_reloc::type): New function.
9619 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
9620 (Output_reloc::is_target_specific): New function.
9621 (Output_reloc::target_arg): New function.
9622 (class Output_reloc) [SHT_RELA]: Add four new constructors for
9623 absolute relocs and target specific relocs.
9624 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
9625 add_target_specific.
9626 (class Output_data_reloc) [SHT_RELA]: Likewise.
9627 * output.cc (Output_reloc::Output_reloc): Add four new versions
9628 for absolute relocs and target specific relocs.
9629 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
9630 (Output_reloc::get_symbol_index): Likewise.
9631 (Output_reloc::local_section_offset): Check that local_sym_index_
9632 is not TARGET_CODE or 0.
9633 (Output_reloc::symbol_value): Likewise.
9634 (Output_reloc::write) [SHT_RELA]: Call target for target specific
9635 reloc.
9636 * target.h (class Target): Add reloc_symbol_index and reloc_addend
9637 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
9638 functions.
9639 * layout.cc (add_target_dynamic_tags): Use output section for
9640 DT_PLTRELSZ and DT_JMPREL.
9641
3a44184e
ILT
96422010-01-07 Ian Lance Taylor <iant@google.com>
9643
9644 PR 11061
9645 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
9646 function.
9647 (class Output_data_reloc_generic): Define.
9648 (class Output_data_reloc_base): Change base class to
9649 Output_data_reloc_generic. Change add() method to call
9650 bump_relative_reloc_count for a relative reloc. Remove
9651 sort_relocs_ field.
9652 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
9653 to sort_relocs().
9654 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
9655 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
9656 appropriate.
9657 * layout.h (class Layout): Update declaration.
9658
ea715a34
ILT
96592010-01-07 Ian Lance Taylor <iant@google.com>
9660
9661 * output.h (class Output_data): Add const version of
9662 output_section and do_output_section.
9663 (class Output_section_data): Add const version of
9664 do_output_section.
9665 (class Output_section): Likewise.
9666 * layout.cc (Layout::add_target_dynamic_tags): New function.
9667 * layout.h (class Layout): Update declarations.
9668 * arm.cc (Target_arm::do_finalize_sections): Use
9669 add_target_dynamic_tags.
9670 * i386.cc (Target_i386::do_finalize_sections): Likewise.
9671 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
9672 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
9673 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
9674
659948a4
ILT
96752010-01-07 Ian Lance Taylor <iant@google.com>
9676
9677 PR 11042
9678 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
9679 object as needed.
9680
9d3b86f6
ILT
96812010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
9682 Ian Lance Taylor <iant@google.com>
9683
9684 PR 11019
9685 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
9686 Xindex::read_symtab_xindex.
9687
bb0d3eb0
DK
96882010-01-07 Doug Kwan <dougkwan@google.com>
9689
9690 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
9691 (Insn_template::thumb16_bcond_insn): New method declaration.
9692 (Insn_template): Fix spelling.
9693 (Stub::thumb16_special): New method declaration.
9694 (Stub::do_write): Define virtual method which was previously pure
9695 virtual.
9696 (Stub::do_thumb16_special): New method declaration.
9697 (Stub::do_fixed_endian_write): New template member.
9698 (Reloc_stub::do_write): Remove.
9699 (Reloc_stub::do_fixed_endian_write): Remove.
9700 (Cortex_a8_stub): New class definition.
9701 (Stub_factory::make_cortex_a8_stub): New method definition.
9702 (Stub_factory::Stub_factory): Add missing static storage class
9703 qualifier for elf32_arm_stub_a8_veneer_blx.
9704
ffeef7df
ILT
97052010-01-07 Ian Lance Taylor <iant@google.com>
9706
dc3f80fe
ILT
9707 PR 10980
9708 * options.h (class General_options): Add --warn-unresolved-symbols
9709 and --error-unresolved-symbols.
9710 * errors.cc (Errors::undefined_symbol): Implement
9711 --warn-unresolved-symbols.
9712
ffeef7df
ILT
9713 * options.h (class General_options): Add -z text and -z textoff.
9714 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
9715
f1ec9ded
ST
97162010-01-06 Sriraman Tallam <tmsriram@google.com>
9717
9718 * gc.h (Garbage_collection::Cident_section_map): New typedef.
9719 (Garbage_collection::cident_sections): New function.
9720 (Garbage_collection::add_cident_section): New function.
9721 (Garbage_collection::cident_sections_): New member.
9722 (gc_process_relocs): Add references to sections whose names are C
9723 identifiers.
9724 * gold.h (cident_section_start_prefix): New constant.
9725 (cident_section_stop_prefix): New constant.
9726 (is_cident): New function.
9727 * layout.cc (Layout::define_section_symbols): Replace string constants
9728 with the newly defined constants.
9729 * object.cc (Sized_relobj::do_layout): Track sections whose names are
9730 C identifiers.
9731 * testsuite/Makefile.am: Add gc_orphan_section_test.
9732 * testsuite/Makefile.in: Regenerate.
9733 * testsuite/gc_orphan_section_test.cc: New file.
9734 * testsuite/gc_orphan_section_test.sh: New file.
9735
6eda8c29
ILT
97362010-01-06 Ian Lance Taylor <iant@google.com>
9737
b9674e17
ILT
9738 PR 10980
9739 * options.h (class General_options): Add --warn-shared-textrel.
9740 * layout.cc (Layout::finish_dynamic_section): Implement
9741 --warn-shared-textrel.
9742
6eda8c29
ILT
9743 PR 10980
9744 * options.h (class General_options): Add --warn-multiple-gp.
9745
32dcd44e
ILT
97462010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9747
9748 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
9749 $(THREADSLIB) and $(LIBDL).
9750 * Makefile.in: Rebuild.
9751
a192ba05
ILT
97522010-01-06 Ian Lance Taylor <iant@google.com>
9753
9754 PR 10980
9755 * options.cc (General_options::parse_section_start): New function.
9756 (General_options::section_start): New function.
9757 (General_options::General_options): Initialize all members.
9758 * options.h: Include <map>
9759 (class General_options): Add --section-start. Add section_starts_
9760 member.
9761 * layout.cc (Layout::attach_allocated_section_to_segment): If
9762 --section-start was used, set the address of the segment. Remove
9763 local sort_sections.
9764 (Layout::relaxation_loop_body): If the address of the load segment
9765 has been set by --section-start, don't use it.
9766 * output.h (Output_segment::update_flags_for_output_section): New
9767 function.
9768 * output.cc (Output_segment::add_output_section): Call
9769 update_flags_for_output_section.
9770
dde3f402
ILT
97712010-01-05 Ian Lance Taylor <iant@google.com>
9772
62dfdd4d
ILT
9773 PR 10980
9774 * options.h (class General_options): Add --undefined-version.
9775 * script.cc (struct Version_expression): Add was_matched_by_symbol
9776 field.
9777 (Version_script_info::matched_symbol): New function.
9778 (Version_script_info::get_symbol_version_helper): Call
9779 matched_symbol.
9780 (Version_script_info::check_unmatched_names): New function.
9781 * script.h (class Version_script_info): Update declarations.
9782 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
9783
9c4ae156
ILT
9784 * options.h (class General_options): Use DEFINE_bool_alias for
9785 allow_multiple_definition.
9786 * resolve.cc (Symbol_table::should_override): Don't test
9787 allow_multiple_definition.
9788
dde3f402
ILT
9789 PR 10980
9790 * options.h (class General_options): Add --cref.
9791 * main.cc (main): Print cref table if --cref. Don't close mapfile
9792 until after printing cref table.
9793 * cref.cc: Include "symtab.h".
9794 (class Cref_inputs): Define Cref_table_compare and Cref_table.
9795 (Cref_table_compare::operator()): New function.
9796 (Cref_inputs::gather_cref): New function.
9797 (filecol): New static const.
9798 (Cref_inputs::print_cref): New function.
9799 (Cref::print_cref): New function.
9800 * cref.h: Include <cstdio>.
9801 (class Cref): Update declarations.
9802 * mapfile.h (Mapfile::file): New function.
9803 * object.h (class Object): Define Symbols. Declare virtual
9804 do_get_global_symbols.
9805 (Object::get_global_symbols): New function.
9806 * object.cc (Input_objects::add_object): Pass object to cref_ if
9807 --cref.
9808 (Input_objects::archive_start): Likewise.
9809 (Input_objects::archive_stop): Likewise.
9810 (Input_objects::print_cref): New function.
9811 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
9812 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
9813 --cref.
9814 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
9815 function.
9816 * plugin.h (class Sized_pluginobj): Update declarations.
9817
8781f709
ILT
98182010-01-05 Ian Lance Taylor <iant@google.com>
9819
9820 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
9821 to is_default_version. Rename insdef to insdefault.
9822 (Symbol_table::add_from_relobj): Rename def to is_default_version
9823 and local to is_forced_local.
9824 (Symbol_table::add_from_pluginobj): Likewise.
9825 (Symbol_table::add_from_dynobj): Likewise.
9826 (Symbol_table::define_special_symbol): Rename insdef to
9827 insdefault.
9828
fe35d28d
ILT
98292010-01-04 Ian Lance Taylor <iant@google.com>
9830
30bc8c46
ILT
9831 PR 10980
9832 * options.h (class General_options): Add
9833 --allow-multiple-definition and -z muldefs.
9834 * resolve.cc (Symbol_table::should_override): Don't warn about a
9835 multiple symbol definition if --allow-multiple-definition or -z
9836 muldefs.
9837
7eaea549
ILT
9838 PR 10980
9839 * options.h (class General_options): Add --add-needed and
9840 --copy-dt-needed-entries. Tweak --as-needed help entry.
9841 * object.cc (Input_objects::check_dynamic_dependencies): Give an
9842 error if --copy-dt-needed-entries aka --add-needed is used and
9843 would cause a change in behaviour.
9844
fe35d28d
ILT
9845 PR 10980
9846 * options.h (class General_options): Add -G as a short version of
9847 --shared. Add no-op options -assert, -g, and -i.
9848
55a2bb35
ST
98492010-01-04 Sriraman Tallam <tmsriram@google.com>
9850
9851 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
9852 check for .text or .gnu.linkonce.t sections.
9853 * icf.cc (Icf::find_identical_sections): Ditto.
9854 Change the detection for mangled function name within the section
9855 name.
9856 * icf.h (is_section_foldable_candidate): New function.
9857
719328e1
ILT
98582009-12-30 Ian Lance Taylor <iant@google.com>
9859
9860 PR 10980
9861 * options.h (class General_options): Permit two dashes with
9862 --retain-symbols-file.
9863
d7bb5745
ILT
98642009-12-30 Ian Lance Taylor <iant@google.com>
9865
403a15dd
ILT
9866 PR 10979
9867 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
9868 don't put the file header and segment headers in the text
9869 segment.
9870
eda294df
ILT
9871 PR 10979
9872 * common.cc (Sort_commons::operator()): Stabilize sort when both
9873 entries are NULL.
9874 (Symbol_table::do_allocate_commons_list): When allocating common
9875 symbols, skip a symbol which is no longer common.
9876 * symtab.h (Symbol::is_common): Test whether the symbol comes from
9877 an object before checking its type.
9878 * testsuite/common_test_2.c: New file.
9879 * testsuite/common_test_3.c: New file.
9880 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
9881 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
9882 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
9883 (common_test_2_pic.o, common_test_2.so): New targets.
9884 (common_test_3_pic.o, common_test_3.so): New targets.
9885 * testsuite/Makefile.in: Rebuild.
9886
d7bb5745
ILT
9887 PR 10979
9888 * script.cc (read_input_script): If we see a new SECTIONS clause,
9889 and we have added an input section, give an error.
9890 * layout.h (class Layout): Add have_added_input_section function.
9891 Add have_added_input_section_ field.
9892 * layout.cc (Layout::Layout): Initialize
9893 have_added_input_section_.
9894 (Layout::layout): Set have_added_input_section_.
9895 (Layout::layout_eh_frame): Likewise.
9896
fc59c572
ILT
98972009-12-30 Ian Lance Taylor <iant@google.com>
9898
9899 PR 10931
9900 * options.h (class General_options): Add --sort-common option.
9901 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
9902 * common.cc (Sort_common): Add sort_order parameter to
9903 constructor. Add sort_order_ field.
9904 (Sort_commons::operator): Check sort_order_.
9905 (Symbol_table::allocate_commons): Determine the sort order.
9906 (Symbol_table::do_allocate_commons): Add sort_order parameter.
9907 Change all callers.
9908 (Symbol_table::do_allocate_commons_list): Likewise.
9909
1c74fab0
ILT
99102009-12-30 Ian Lance Taylor <iant@google.com>
9911
9912 PR 10916
9913 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
9914 symbols from this object, don't change the visibility of an
9915 undefined symbol.
9916 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
9917
6affe781
ILT
99182009-12-30 Ian Lance Taylor <iant@google.com>
9919
9920 PR 10861
9921 * script.h (class Version_script_info): Define Language enum.
9922 Update declarations. Define Glob, Exact, and Lookup types. Add
9923 new fields globals_, locals_, and is_finalized_.
9924 * script.cc: Various formatting fixes.
9925 (class Parser_closure): Change language_stack_ from a vector of
9926 std::string to one of Version_script_info::Language. Adjust all
9927 uses accordingly.
9928 (class Lazy_demangler): Remove.
9929 (struct Version_expression): Change language from std::string to
9930 Version_script_info::Language.
9931 (Version_script_info::Version_script_info): New function.
9932 (Version_script_info::~Version_script_info): Don't call clear.
9933 (Version_script_info::finalize): New function.
9934 (Version_script_info::build_lookup_tables): New function.
9935 (Version_script_info::build_expression_list_lookup): New
9936 function.
9937 (Version_script_info::get_symbol_version_helper): Rewrite to use
9938 lookup tables.
9939 (Version_script_info::print_expression_list): Adjust to use
9940 Version_script_info::Language.
9941 (script_push_lex_into_version_mode): Check that the version script
9942 has not been finalized.
9943 (version_script_push_lang): Change language string to
9944 Version_script_info::Language.
9945 * options.cc (Command_line::version_script): New function.
9946 * options.h (class General_options): Add finalize_dynamic_list
9947 function. Change version_script from declaration to definition.
9948 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
9949 * testsuite/version_script.map: Remove duplicate def of foo.
9950 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
9951 version_script.map.
9952 * testsuite/Makefile.in: Rebuild.
9953
818bf354
ILT
99542009-12-30 Ian Lance Taylor <iant@google.com>
9955
9956 PR 10843
9957 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
9958 if the input symbol index is 0, make the output symbol index 0.
9959
ebcc8304
ILT
99602009-12-30 Ian Lance Taylor <iant@google.com>
9961
9962 PR 10670
9963 * options.h (class General_options): Add -x/--discard-all.
9964 * object.cc (Sized_relobj::do_count_local_symbols): Handle
9965 --discard-all. If the local symbol needs a dynamic entry, check
9966 that before handling --discard-locals.
9967
176fe33f
ILT
99682009-12-30 Ian Lance Taylor <iant@google.com>
9969
bb321bb1
ILT
9970 PR 10450
9971 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
9972 flags to PF_R.
9973 (Output_segment::add_output_section): Don't change the flags if
9974 the type is PT_TLS.
9975
176fe33f
ILT
9976 PR 10450
9977 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
9978 GNU hash table if they need a dynamic value. Otherwise, don't add
9979 them if they are defined in a dynamic object or are forced local.
9980
e8cd95c7
ILT
99812009-12-29 Ian Lance Taylor <iant@google.com>
9982
1b81fb71
ILT
9983 PR 10450
9984 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
9985 .gnu.hash table for a 32-bit target.
9986
8d6d383d
ILT
9987 PR 10450
9988 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
9989 regular and a dynamic object only needs a dynamic symbol table
9990 entry if it is externally visible.
9991
e785ec03
ILT
9992 PR 10450
9993 * i386.cc (class Target_i386): Initialize global_offset_table_ in
9994 constructor. Add global_offset_table_ field.
9995 (Target_i386::got_section): Set global_offset_table_.
9996 (Target_i386::do_finalize_sections): Set global_offset_table_
9997 size.
9998 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
9999 in constructor. Add global_offset_table_ field.
10000 (Target_x86_64::got_section): Set global_offset_table_.
10001 (Target_x86_64::do_finalize_sections): Set global_offset_table_
10002 size.
10003
1a2dff53
ILT
10004 * layout.cc (Layout::Layout): Initialize increase_relro_.
10005 (Layout::get_output_section): Add is_relro, is_last_relro, and
10006 is_first_non_relro parameters. Change all callers.
10007 (Layout::choose_output_section): Likewise.
10008 (Layout::add_output_section_data): Likewise.
10009 (Layout::make_output_section): Likewise.
10010 (Layout::set_segment_offsets): Clear increase_relro when using a
10011 linker script.
10012 * layout.h (class Layout): Add increase_relro method. Add
10013 increase_relro_ field. Update declarations.
10014 * output.cc (Output_section::Output_section): Initialize
10015 is_last_relro_ and is_first_non_relro_.
10016 (Output_segment::add_output_section): Group relro sections is
10017 do_sort is true. Handle is_last_relro and is_first_non_relro.
10018 (Output_segment::maximum_alignment): Remove relro handling.
10019 (Output_segment::set_section_addresses): Add increase_relro
10020 parameter. Change all callers. Add initial alignment to align
10021 relro sections on separate page. Remove old relro handling.
10022 (Output_segment::set_section_list_addresses): Remove in_relro
10023 parameter. Change all callers.
10024 (Output_segment::set_offset): Add increase parameter. Change all
10025 callers. Remove old relro handling.
10026 * output.h (class Output_section): Add new methods: is_last_relro,
10027 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
10028 Add is_last_relro_ and is_first_non_relro_ fields.
10029 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
10030 Create separate .got.plt section. Call increase_relro.
10031 * x86_64.cc (Target_x86_64::got_section): Likewise.
10032 * testsuite/relro_script_test.t: Add .got.plt.
10033
f0ba79e2
ILT
10034 PR 10450
10035 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
10036 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
10037 (Layout::finalize): Call set_dynamic_symbol_size.
10038 (Layout::set_dynamic_symbol_size): New function.
10039 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
10040 set_dynamic_symbol_size.
10041
e8cd95c7
ILT
10042 PR 10450
10043 * output.h (class Output_section): Add is_entsize_zero_ field.
10044 * output.cc (Output_section::Output_section): Initialize
10045 is_entsize_zero_.
10046 (Output_section::set_entsize): If two different entsizes are
10047 requested, force it to zero.
10048 (Output_section::add_input_section): Set flags for .debug_str
10049 before updating section flags. Set entsize.
10050 (Output_section::update_flags_for_input_section): Set SHF_MERGE
10051 and SHF_STRING if all input sections have those flags.
10052
3e1b9a8a
RÁE
100532009-12-29 Rafael Espindola <espindola@google.com>
10054
10055 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
10056 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
10057 reporting.
3e1b9a8a 10058
3dcad376
ST
100592009-12-29 Sriraman Tallam <tmsriram@google.com>
10060
10061 * options.cc (General_options::parse_version): Allow -v to exit
10062 without an error if there is nothing to link.
10063
084e2665
ILT
100642009-12-29 Ian Lance Taylor <iant@google.com>
10065
10066 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
10067 using a version of gcc before 4.1.
10068 * configure: Rebuild.
10069
250acde3
CD
100702009-12-28 Chris Demetriou <cgd@google.com>
10071
10072 * attributes.cc (Output_attributes_section_data::do_write): Use
10073 std::vector::front rather than std::vector::data.
10074
99fff23b
ILT
100752009-12-28 Ian Lance Taylor <iant@google.com>
10076
10077 * symtab.h (class Symbol_table): Add enum Defined.
10078 * resolve.cc (Symbol_table::should_override): Add defined
10079 parameter. Change all callers. Test whether object is NULL
10080 before calling a method on it.
10081 (Symbol_table::report_resolve_problem): Add defined parameter.
10082 Change all callers.
10083 (Symbol_table::should_override_with_special): Likewise.
10084 * symtab.cc (Symbol_table::define_in_output_data): Add defined
10085 parameter. Change all callers.
10086 (Symbol_table::do_define_in_output_data): Likewise.
10087 (Symbol_table::define_in_output_segment): Likewise.
10088 (Symbol_table::do_define_in_output_segment): Likewise.
10089 (Symbol_table::define_as_constant): Likewise.
10090 (Symbol_table::do_define_as_constant): Likewise.
10091 * script.h (class Symbol_assignment): Add is_defsym parameter to
10092 constructor; change all callers.
10093 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
10094 parameter. Change all callers. Add is_defsym_ field.
10095 (class Parser_closure): Add parsing_defsym parameter to
10096 constructor; change all callers. Add parsing_defsym accessor
10097 function. Add parsing_defsym_ field.
10098
556bd683
ILT
100992009-12-28 Ian Lance Taylor <iant@google.com>
10100
10101 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 10102 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 10103
1782c879
ILT
101042009-12-23 Ian Lance Taylor <iant@google.com>
10105
10106 * i386.cc (Target_i386::do_calls_non_split): Recognize
10107 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
10108 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
10109 -fsplit-stack prologue when using %r11.
1782c879 10110
329ca2b1
ST
101112009-12-21 Sriraman Tallam <tmsriram@google.com>
10112
10113 * options.cc (General_options::parse_version): Make -v continue and do
10114 the link like GNU ld does.
10115
d675ff46
RÁE
101162009-12-17 Rafael Avila de Espindola <espindola@google.com>
10117
10118 * Makefile.am (CCFILES): Add timer.cc.
10119 (HFILES): Add timer.h.
10120 * configure.ac: Check for sysconf and times.
10121 * main.cc: include timer.h.
10122 (main): Use Timer instead of get_run_time.
10123 * timer.cc: New.
10124 * timer.h: New.
10125 * workqueue.cc: include timer.h.
10126 (Workqueue::find_and_run_task):
10127 Report user, sys and wall time.
10128 * Makefile.in: Regenerate.
10129 * config.in: Regenerate.
10130 * configure: Regenerate.
10131
d6344fb5
DK
101322009-12-16 Doug Kwan <dougkwan@google.com>
10133
10134 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
10135 sections.
10136 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
10137 relaxed input sections.
10138 * output.cc (Output_section::find_relaxed_input_section): Change
10139 return type to Output_relaxed_input_section pointer. Adjust code
10140 for new type of relaxed_input_section_map_.
10141 * output.h (Output_section::find_relaxed_input_section): Change
10142 return type to Output_relaxed_input_section pointer.
10143 (Output_section::Output_relaxed_input_section_by_input_section_map):
10144 New type.
10145 (Output_section::relaxed_input_section_map_): Change type to
10146 Output_section::Output_relaxed_input_section_by_input_section_map.
10147 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
10148 input section.
10149
0e0d5469
ILT
101502009-12-15 Ian Lance Taylor <iant@google.com>
10151
10152 * layout.cc (Layout::create_shstrtab): Only write out after input
10153 sections if we are compressing debug sections.
10154
0649a889
ILT
101552009-12-15 Ian Lance Taylor <iant@google.com>
10156
10157 * archive.cc (Archive::add_symbols): Only look up a symbol without
10158 a version if there is, in fact, a version.
10159
2ea97941
ILT
101602009-12-14 Ian Lance Taylor <iant@google.com>
10161
10162 Revert -Wshadow changes, all changes from:
10163 2009-12-11 Doug Kwan <dougkwan@google.com>
10164 2009-12-11 Nick Clifton <nickc@redhat.com>
10165 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
10166
b0eec2cc
DK
101672009-12-11 Doug Kwan <dougkwan@google.com>
10168
10169 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
10170 due to -Wshadow.
10171 * attributes.cc (Object_attribute::size): Ditto.
10172 (Attributes_section_data::size): Ditto.
10173 (Attributes_section_data::Attributes_section_data): Ditto.
10174 (Output_attributes_section_data::do_write): Ditto.
10175 * attributes.h (Object_attribute::set_type): Ditto.
10176 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
10177
91d6fa6a
NC
101782009-12-11 Nick Clifton <nickc@redhat.com>
10179
10180 * archive.cc: Fix shadowed variable warnings.
10181 * arm.cc: Likewise.
10182 * compressed_output.cc: Likewise.
10183 * compressed_output.h: Likewise.
10184 * configure: Likewise.
10185 * dwarf_reader.cc: Likewise.
10186 * dynobj.cc: Likewise.
10187 * dynobj.h: Likewise.
10188 * ehframe.cc: Likewise.
10189 * ehframe.h: Likewise.
10190 * errors.cc: Likewise.
10191 * expression.cc: Likewise.
10192 * fileread.cc: Likewise.
10193 * fileread.h: Likewise.
10194 * freebsd.h: Likewise.
10195 * i386.cc: Likewise.
10196 * icf.cc: Likewise.
10197 * incremental.h: Likewise.
10198 * layout.cc: Likewise.
10199 * layout.h: Likewise.
10200 * mapfile.cc: Likewise.
10201 * merge.cc: Likewise.
10202 * merge.h: Likewise.
10203 * object.cc: Likewise.
10204 * object.h: Likewise.
10205 * options.h: Likewise.
10206 * output.cc: Likewise.
10207 * output.h: Likewise.
10208 * parameters.cc: Likewise.
10209 * plugin.cc: Likewise.
10210 * powerpc.cc: Likewise.
10211 * reduced_debug_output.cc: Likewise.
10212 * reduced_debug_output.h: Likewise.
10213 * reloc.cc: Likewise.
10214 * reloc.h: Likewise.
10215 * resolve.cc: Likewise.
10216 * script-sections.cc: Likewise.
10217 * script.cc: Likewise.
10218 * script.h: Likewise.
10219 * sparc.cc: Likewise.
10220 * symtab.cc: Likewise.
10221 * symtab.h: Likewise.
10222 * target-select.cc: Likewise.
10223 * target-select.h: Likewise.
10224 * token.h: Likewise.
10225 * workqueue.cc: Likewise.
10226 * workqueue.h: Likewise.
10227 * x86_64.cc: Likewise.
10228
a0351a69
DK
102292009-12-10 Doug Kwan <dougkwan@google.com>
10230
10231 * arm.cc (attributes.h): New include.
10232 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
10233 (Arm_relobj::~Arm_relobj): Delete object pointed by
10234 attributes_section_data_.
10235 (Arm_relobj::attributes_section_data): New method definition.
10236 (Arm_relobj::attributes_section_data_): New data member declaration.
10237 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
10238 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
10239 attributes_section_data_.
10240 (Arm_dynobj::attributes_section_data): New method definition.
10241 (Arm_dynobj::attributes_section_data_): New data member declaration.
10242 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
10243 initialization value of may_use_blx_ to false.
2e702c99 10244 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
a0351a69
DK
10245 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
10246 object attributes to compute results instead of hard-coding.
10247 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
10248 Target_arm::get_secondary_compatible_arch,
10249 Target_arm::set_secondary_compatible_arch
10250 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
10251 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
10252 New method declarations.
10253 (Target_arm::get_aeabi_object_attribute): New method definition.
10254 (Target_arm::attributes_section_data_): New data member declaration.
10255 (read_arm_attributes_section): New template definition.
10256 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
10257 (Arm_dynobj::do_read_symbols): Ditto.
10258 (Target_arm::do_finalize_sections): Merge attributes sections from
10259 input. Check for BLX use after attributes section merging.
10260 Fix __exidx_start and __exidx_end visibility. Create an
10261 .ARM.attributes section if necessary.
10262 (Target_arm::get_secondary_compatible_arch,
10263 Target_arm::set_secondary_compatible_arch,
10264 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
10265 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 10266 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
10267 New method definitions.
10268
b59befec
ILT
102692009-12-09 Ian Lance Taylor <iant@google.com>
10270
10271 * plugin.cc (Plugin::load): Don't cast from void* to a function
10272 pointer.
10273
1276bc89
ILT
102742009-12-09 Ian Lance Taylor <iant@google.com>
10275
10276 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
10277 information fields.
10278
2f2de248
L
102792009-12-09 H.J. Lu <hongjiu.lu@intel.com>
10280
10281 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
10282 Replace two_file_shared_1.so with two_file_shared_2.so.
10283 * testsuite/Makefile.in: Regenerated.
10284
4f787271
DK
102852009-12-08 Doug Kwan <dougkwan@google.com>
10286
10287 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
10288 (HFILES): Add attributes.h and int_encoding.h.
10289 * Makefile.in: Regenerate.
10290 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
10291 function definitions to int_encoding.cc
10292 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
10293 prototypes to int_encoding.h
10294 * reduced_debug_output.cc (int_encoding.h): New include.
10295 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
10296 function definitions to int_encoding.cc
10297 (insert_into_vector, read_from_pointer): Move template definitions to
10298 int_encoding.h
10299 * attributes.cc: New file.
10300 * attributes.h: New file.
10301 * int_encoding.cc: New file.
10302 * int_encoding.h: New file.
10303
20b52f1a
RÁE
103042009-12-07 Rafael Avila de Espindola <espindola@google.com>
10305
10306 PR gold/11055
10307 * incremental-dump.cc (dump_incremental_inputs): New.
10308 (main): Use dump_incremental_inputs.
10309
53d7974c
L
103102009-12-07 H.J. Lu <hongjiu.lu@intel.com>
10311
10312 PR gold/10893
10313 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
10314 checking elfcpp::STT_FUNC.
10315 (Target_i386::Relocate::relocate): Likewise.
10316 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
10317
10318 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
10319 symbols from shared libraries into normal FUNC symbols.
10320
10321 * symtab.h (Symbol): Add is_func and use it.
10322
05a352e6
DK
103232009-12-05 Doug Kwan <dougkwan@google.com>
10324
10325 * arm.cc (Target_arm::arm_info): Initialize new fields
10326 attributes_section and attributes_vendor.
10327 * i386.cc (Target_i386::i386_info): Same.
10328 * object.cc (Sized_relobj::do_layout): Skip attribute section.
10329 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
10330 fields attributes_section and attributes_vendor.
53d7974c 10331 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
10332 * target.h (Target::attributes_section, Target::attributes_vendor,
10333 Target::is_attributes_section, Target::attribute_arg_type,
10334 Target::attributes_order): New method definitions.
10335 (Target::Target_info::attributes_section,
10336 Target::Target_info::attributes_vendor): New fields.
10337 (Target::do_attribute_arg_type, Target::do_attributes_order): New
10338 virtual method definitions.
10339 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
10340 attributes_section and attributes_vendor.
10341 * testsuite/testfile.cc (Target_test::test_target_info): Same.
10342
f4e5969c
DK
103432009-12-05 Doug Kwan <dougkwan@google.com>
10344
10345 * arm.cc: Update comments about interworking and stub generation.
10346 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
10347 considered as non-PIC.
10348 (Arm_relocate_functions::base_abs): Fix formatting.
10349 (Arm_relocate_functions::got_prel): Fix comment. Change interface
10350 of function to use GOT entry address instead of offset.
10351 (Target_arm::Scan::global): Issue an error if a symbol would need a
10352 PLT does not get one because it is untyped. Remove code to create
10353 dynamic symbols for relative branches.
10354 (Target_arm::Relocate::relocate: Use 0 instead of false since function
10355 takes unsigned integer instead of boolean.
10356
1abce4a6
L
103572009-12-05 H.J. Lu <hongjiu.lu@intel.com>
10358
10359 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
10360 (two_file_test_LDADD): Likewise.
10361 (common_test_1_LDADD): Likewise.
10362 (exception_test_LDADD) Likewise.
10363 (weak_test_LDADD): Likewise.
10364 (many_sections_test_LDADD): Likewise.
10365 (initpri1_LDADD): Likewise.
10366 (script_test_1_LDADD): Likewise.
10367 (script_test_2_LDADD): Likewise.
10368 (justsyms_LDADD): Likewise.
10369 (binary_test_LDADD): Likewise.
10370 (large_LDADD): Likewise.
10371 * testsuite/Makefile.in: Regenerated.
10372
adcf2816 103732009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 10374
adcf2816
L
10375 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
10376 (Symbol_table::override_with_special): Likewise.
10377 (Symbol_table::add_from_object): Likewise.
10378
28e67f5d
RÁE
103792009-12-04 Rafael Avila de Espindola <espindola@google.com>
10380
10381 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
10382 Don't set the data_offset twice.
10383
ae10a101
RÁE
103842009-12-04 Rafael Avila de Espindola <espindola@google.com>
10385
10386 * testsuite/Makefile.in: Regenerate.
10387
f59f41f3
DK
103882009-12-03 Doug Kwan <dougkwan@google.com>
10389
10390 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
10391 (Target_arm::do_finalize_sections): Add parameter for symbol table
10392 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
10393 * i386.cc (Target_i386::do_finalize_sections): Add an additional
10394 parameter for symbol table pointer.
10395 * layout.cc (Layout::finalize): Call Target::finalize_sections with
10396 an additional parameter for a pointer to symbol table.
10397 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
10398 parameter for a symbol table pointer.
10399 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
10400 * target.h (Target::finalize_sections, Target::do_finalize_sections):
10401 Ditto.
10402 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
10403 parameter for a symbol table pointer.
10404
ca55d848
RÁE
104052009-12-03 Rafael Avila de Espindola <espindola@google.com>
10406
10407 * incremental.cc (Incremental_inputs_header)
10408 (Incremental_inputs_header_write, Incremental_inputs_entry)
10409 (Incremental_inputs_entry_write): Move ...
10410 * incremental.h (Incremental_inputs_header)
10411 (Incremental_inputs_header_write, Incremental_inputs_entry)
10412 (Incremental_inputs_entry_write): here.
10413
3aec4f9c
RÁE
104142009-12-02 Rafael Avila de Espindola <espindola@google.com>
10415
10416 * incremental.cc (make_sized_incremental_binary): Set the target.
10417 Error if it is incompatible.
10418 * output.h (Output_file): Add filename method.
10419
9c0ae74d
RÁE
104202009-12-02 Rafael Avila de Espindola <espindola@google.com>
10421
10422 * incremental.cc (Incremental_inputs_entry): Remove unused argument
10423 from the get_* methods.
10424
a45500ae
RÁE
104252009-12-02 Rafael Avila de Espindola <espindola@google.com>
10426
10427 * incremental-dump.cc (main): Check that the offeset of a script is 0.
10428 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
10429 Write 0 for the data_offset of scripts.
10430
325e6408
RÁE
104312009-12-02 Rafael Avila de Espindola <espindola@google.com>
10432
10433 * testsuite/Makefile.am: Add the incremental_test.sh test.
10434 * testsuite/incremental_test.sh: New.
10435 * testsuite/incremental_test_1.c: New.
10436 * testsuite/incremental_test_2.c: New.
10437
954c3e2e
RÁE
104382009-12-01 Rafael Avila de Espindola <espindola@google.com>
10439
703d02da 10440 * incremental-dump.cc (main): Fix typos.
954c3e2e 10441
f8086623
RÁE
104422009-11-27 Rafael Avila de Espindola <espindola@google.com>
10443
10444 PR gold/11025
10445 * incremental-dump.cc (main): Use llu to print 64 bit values.
10446
3b0dd6ac
L
104472009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
10448 H.J. Lu <hongjiu.lu@intel.com>
10449
10450 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
10451 $(LIBDL).
10452 (incremental_dump_LDADD): Likewise.
10453 * Makefile.in: Regenerated.
10454
a6d1ef57 104552009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 10456
a6d1ef57
DK
10457 Revert:
10458
10459 2009-11-25 Doug Kwan <dougkwan@google.com>
10460
10461 * arm.cc (Target_arm::Target_arm): Move method definition
10462 outside of class definition. Add code to handle
10463 --target1-rel, --target1-abs and --target2= options.
10464 (Target_arm::get_reloc_reloc_type): Change method to be
10465 non-static and const.
10466 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
10467 New data member declaration.
10468 (Target_arm::Scan::local, Target_arm::Scan::global,
10469 Target_arm::Relocate::relocate,
10470 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10471 Adjust call to Target_arm::get_real_reloc_type.
10472 (Target_arm::get_real_reloc_type): Use command line options
10473 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
10474 * options.h (--target1-rel, --target1-abs, --target2): New
10475 ARM-only options.
10476
50aeb7d4
DK
104772009-11-25 Doug Kwan <dougkwan@google.com>
10478
10479 * arm.cc (Target_arm::Target_arm): Move method definition outside of
10480 class definition. Add code to handle --target1-rel, --target1-abs
10481 and --target2= options.
10482 (Target_arm::get_reloc_reloc_type): Change method to be non-static
10483 and const.
10484 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
10485 member declaration.
10486 (Target_arm::Scan::local, Target_arm::Scan::global,
10487 Target_arm::Relocate::relocate,
10488 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
10489 call to Target_arm::get_real_reloc_type.
10490 (Target_arm::get_real_reloc_type): Use command line options to
10491 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
10492 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
10493 options.
10494
51938283
DK
104952009-11-25 Doug Kwan <dougkwan@google.com>
10496
10497 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
10498 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
10499 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
10500 formatting.
10501 (Arm_relocate_functions::thm_call): Replace body with a call to
10502 Arm_relocate_functions::thumb_branch_common.
10503 (Arm_relocate_functions::thm_jump24,
10504 Arm_relocate_functions::thm_xpc22): New method definitions.
10505 (Arm_relocate_functions::thumb_branch_common): New method definition.
10506 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
10507 operator.
10508 (Target_arm::Relocate::relocate): Adjust call to thm_call.
10509 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
10510
e2b8f3c4
RÁE
105112009-11-24 Rafael Avila de Espindola <espindola@google.com>
10512
10513 * Makefile.am: Build incremental-dump
10514 * Makefile.in: Regenerate.
10515 * incremental-dump.cc: New.
10516 * incremental.cc (Incremental_inputs_header_data,
10517 Incremental_inputs_entry_data): Move to incremental.h
10518 * incremental.h: (Incremental_inputs_header_data,
10519 Incremental_inputs_entry_data): Move from incremental.cc
10520
bcba9aec
RÁE
105212009-11-24 Rafael Avila de Espindola <espindola@google.com>
10522
10523 * incremental.cc (Incremental_inputs_header,
10524 Incremental_inputs_header_write, Incremental_inputs_entry,
10525 Incremental_inputs_entry_write): Add a typedef with the data type.
10526
7c3afe08
RÁE
105272009-11-24 Rafael Avila de Espindola <espindola@google.com>
10528
10529 * incremental.cc (Incremental_inputs_header,
10530 Incremental_inputs_header_write, Incremental_inputs_entry,
10531 Incremental_inputs_entry_write): Update comment about which
10532 type has the filed descriptions.
10533
d204b6e9
DK
105342009-11-15 Doug Kwan <dougkwan@google.com>
10535
10536 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
10537 (Arm_relocate_functions::arm_branch_common): Change method defintion
10538 in class definition to a method declaration and update list of formal
10539 parameters.
10540 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
10541 Arm_relocation_functions::jump24): Adjust call to
10542 Arm_relocate_functions::arm_branch_common. Update list of formal
10543 parameters.
10544 (Arm_relocate_functions::xpc25): New method definition.
10545 (Arm_relocate_functions::arm_branch_common): Move method defintion
10546 out from class definition. Use stubs for mode-switching and extending
10547 branch ranges.
10548 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
10549 specially. Change code to enable use of stubs in ARM branches.
10550
43d12afe
DK
105512009-11-10 Doug Kwan <dougkwan@google.com>
10552
10553 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
10554 in method declaration.
10555 (Target_arm::relocate_stub): New method declaration.
10556 (Target_arm::default_target): Change to return a pointer instead of
10557 a const reference.
10558 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
10559 Target_arm::default_target.
10560 (Arm_Relobj::do_relocate_sections): Remove options paramater in
10561 method definition.
10562 (Target_arm::relocate_section): Adjust view.
10563 (Target_arm::relocate_stub): New method definition.
10564
ac33a407
DK
105652009-11-10 Doug Kwan <dougkwan@google.com>
10566
10567 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
10568 a format warning.
10569 * incremental.cc (open_incremental_binary): Initialized local
10570 variables to avoid warnings.
10571 * object.cc (make_elf_object): Ditto.
10572 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
10573 a format warning.
e1df38aa 10574
88ee28e9
L
10575009-11-09 H.J. Lu <hongjiu.lu@intel.com>
10576
10577 PR gold/10930
10578 * testsuite/plugin_test.c: Include "config.h".
10579
2daedcd6
DK
105802009-11-09 Doug Kwan <dougkwan@google.com>
10581
10582 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
10583 (arm_symbol_value): Remove.
10584 (Arm_relocate_functions::arm_branch_common,
10585 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
10586 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
10587 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
10588 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
10589 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
10590 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
10591 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
10592 Arm_relocate_functions::thm_mobw_abs_nc,
10593 Arm_relocate_functions::thm_mov_abs,
10594 Arm_relocate_functions::movw_prel_nc,
10595 Arm_relocate_functions::thm_movt_abs,
10596 Arm_relocate_functions::movt_prel,
10597 Arm_relocate_functions::thm_movw_prel_nc,
10598 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
10599 (Target_arm::Relocate::relocate): Only decompose address into two
10600 parts if relocation type uses the thumb-bit and pass the actual
10601 bit instead of a flag indicating that the thumb-bit is used. Adjust
10602 calls to methods in Arm_relocate_functions for this change.
10603
1276bc89 106042009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
10605
10606 PR 10925
10607 * reloc.cc: Instantiate
10608 Sized_relobj::initialize_input_to_output_maps and
10609 Sized_relobj:free_input_to_output_maps.
10610
e53ad1b5
ILT
106112009-11-06 Ian Lance Taylor <iant@google.com>
10612
10613 PR 10876
10614 * defstd.cc (in_segment): Set only_if_ref true for "end".
10615
eb44217c
DK
106162009-11-06 Doug Kwan <dougkwan@google.com>
10617
10618 * arm.cc (class Reloc_stub): Correct a comment.
10619 (Target_arm::Target_arm): Initialize arm_input_section_map_.
10620 (Target_arm::scan_section_for_stubs): New method declaration.
10621 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
10622 Change methods from private to protected.
10623 (Target_arm::do_may_relax): New method definition.
10624 (Target_arm::do_relax, Target_arm::group_sections,
10625 Target_arm::scan_reloc_for_stub,
10626 Target_arm::scan_reloc_section_for_stubs): New method declarations.
10627 (Target_arm::arm_input_section_map_): New data member declaration.
10628 (Target_arm::scan_reloc_for_stub,
10629 Target_arm::scan_reloc_section_for_stubs,
10630 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
10631 Target_arm::do_relax): New method definitions.
10632
5d329b7d
ILT
106332009-11-06 Mikolaj Zalewski <mikolaj@google.com>
10634
10635 * configure.ac: Check for (struct stat)::st_mtim
10636 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
10637 * config.in: Regenerate.
10638 * configure: Regenerate.
10639
96a0d71b
ILT
106402009-11-05 Ian Lance Taylor <iant@google.com>
10641
10642 PR 10910
10643 * output.cc (Output_segment::add_output_section): Add missing
10644 return statement.
10645
594c8e5e
ILT
106462009-11-04 Ian Lance Taylor <iant@google.com>
10647
10648 PR 10880
10649 * object.h (class Object): Add is_needed and set_is_needed
10650 methods. Add is_needed_ field. Make bool fields into bitfields.
10651 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
10652 defined in a dynamic object and referenced by a regular object,
10653 set is_needed for the dynamic object.
10654 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
10655 if the file is marked with as_needed and it is not needed.
10656
22b127cc
ILT
106572009-11-04 Ian Lance Taylor <iant@google.com>
10658
10659 PR 10887
10660 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
10661 tags if data is discarded by linker script.
10662 * i386.cc (Target_i386::do_finalize_sections): Likewise.
10663 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
10664 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
10665 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
10666
f5c870d2
ILT
106672009-11-04 Ian Lance Taylor <iant@google.com>
10668
10669 * layout.cc (Layout::get_output_section): Add is_interp and
10670 is_dynamic_linker_section parameters. Change all callers.
10671 (Layout::choose_output_section): Likewise.
10672 (Layout::make_output_section): Likewise.
10673 (Layout::add_output_section_data): Add is_dynamic_linker_section
10674 parameter. Change all callers.
10675 * layout.h (class Layout): Update declarations.
10676 * output.h (class Output_section): Add is_interp, set_is_interp,
10677 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
10678 Add is_interp_, is_dynamic_linker_section_ fields. Change
10679 generate_code_fills_at_write_ to a bitfield.
10680 * output.cc (Output_section::Output_sections): Initialize new
10681 fields.
10682 (Output_segment::add_output_section): Add do_sort parameter.
10683 Change all callers.
10684
1ae4d23b
ILT
106852009-11-03 Ian Lance Taylor <iant@google.com>
10686
10687 PR 10860
10688 * options.h (class General_options): Add --warn-common.
10689 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
10690 merging two common symbols.
10691 (Symbol_table::should_override): Handle --warn-common when merging
10692 a common symbol with a defined symbol. Use report_resolve_problem
10693 for multiple definitions.
10694 (Symbol_table::report_resolve_problem): New function.
10695 * symtab.h (class Symbol_table): Declare report_resolve_problem.
10696
55da9579
DK
106972009-11-03 Doug Kwan <dougkwan@google.com>
10698
10699 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
10700 stub_factory_.
10701 (Target_arm::stub_factory): New method definition.
10702 (Target_arm::new_arm_input_section,
10703 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
10704 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 10705 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
10706 New type definitions.
10707 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
10708 member declarations.
10709 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
10710 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
10711 New method definitions.
10712
37a9ac43
ILT
107132009-11-03 Ian Lance Taylor <iant@google.com>
10714
10715 * options.h (class General_options): Add --warn_constructors.
10716
b3d6a3d4
ILT
107172009-11-03 Ian Lance Taylor <iant@google.com>
10718
10719 PR 10893
10720 * defstd.cc (in_section): Add entries for __rel_iplt_start,
10721 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
10722
934b01dd
ILT
107232009-11-03 Ian Lance Taylor <iant@google.com>
10724
10725 PR 10895
10726 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
10727 --msgid-bugs-address.
10728 (install-pdf): New target.
10729 (install-data_yes): Look up one directory to find mkinstalldirs.
10730
03c1939b
L
107312009-11-03 H.J. Lu <hongjiu.lu@intel.com>
10732
10733 * po/Make-in (.po.gmo): Don't generate .gmo files in source
10734 tree.
10735
ebd95253
DK
107362009-10-30 Doug Kwan <dougkwan@google.com>
10737
10738 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
10739
e9bbb538
DK
107402009-10-30 Doug Kwan <dougkwan@google.com>
10741
10742 * arm.cc (Stub_addend_reader): New struct template definition
10743 and partial specializations.
10744 (Stub_addend_reader::operator()): New method definition for a
10745 partially specialized template.
10746
d5b40221
DK
107472009-10-30 Doug Kwan <dougkwan@google.com>
10748
10749 * arm.cc (Arm_relobj::processor_specific_flags): New method
10750 definition.
10751 (Arm_relobj::do_read_symbols): New method declaration.
10752 (Arm_relobj::processor_specific_flags_): New data member declaration.
10753 (Arm_dynobj): New class definition.
10754 (Target_arm::do_finalize_sections): Add input_objects parameter.
10755 (Target_arm::do_adjust_elf_header): New method declaration.
10756 (Target_arm::are_eabi_versions_compatible,
10757 (Target_arm::merge_processor_specific_flags): New method declaration.
10758 (Target_arm::do_make_elf_object): New overloaded method definitions
10759 and declaration.
10760 (Arm_relobj::do_read_symbols): New method definition.
10761 (Arm_dynobj::do_read_symbols): Ditto.
10762 (Target_arm::do_finalize_sections): Add input_objects parameters.
10763 Merge processor-specific flags from all input objects.
10764 (Target_arm::are_eabi_versions_compatible,
10765 Target_arm::merge_processor_specific_flags,
10766 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
10767 New method definitions.
10768 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
10769 Input_objects pointer type parameter.
10770 * layout.cc (Layout::finalize): Pass input objects to target's.
10771 finalize_sections function.
10772 * output.cc (Output_file_header::do_sized_write): Set ELF file
10773 header's processor-specific flags.
10774 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
10775 Input_objects pointer type parameter.
10776 * sparc.cc (Target_sparc::do_finalize_sections): Same.
10777 * target.h (Input_objects): New forward class declaration.
10778 (Target::processor_specific_flags,
10779 Target::are_processor_specific_flags_sect): New method definitions.
10780 (Target::finalize_sections): Add input_objects parameter.
10781 (Target::Target): Initialize processor_specific_flags_ and
10782 are_processor_specific_flags_set_.
10783 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
10784 parameter.
10785 (Target::set_processor_specific_flags): New method definition.
10786 (Target::processor_specific_flags_,
10787 Target::are_processor_specific_flags_set_): New data member
10788 declarations.
10789 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
10790 Input_objects pointer type parameter.
10791
ebabffbd
DK
107922009-10-30 Doug Kwan <dougkwan@google.com>
10793
10794 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
10795
ad0f2072
ILT
107962009-10-28 Ian Lance Taylor <iant@google.com>
10797
10798 * object.h (class Relobj): Drop options parameter from
10799 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
10800 do_scan_relocs, do_relocate. Change all callers.
10801 (class Sized_relobj): Drop options parameters from
10802 do_gc_process_relocs, do_scan_relocs, do_relocate,
10803 do_relocate_sections, relocate_sections, emit_relocs_scan,
10804 emit_relocs_scan_reltype. Change all callers.
10805 (struct Relocate_info): Remove options field and all references to
10806 it.
10807 * reloc.h (class Read_relocs): Remove options constructor
10808 parameter and options_ field. Change all callers.
10809 (class Gc_process_relocs, class Scan_relocs): Likewise.
10810 (class Relocate_task): Likewise.
10811 * target-reloc.h (scan_relocs): Remove options parameter. Change
10812 all callers.
10813 (scan_relocatable_relocs): Likewise.
10814 * target.h (class Sized_target): Remove options parameter from
10815 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
10816 all callers.
10817 * gc.h (gc_process_relocs): Remove options parameter. Change all
10818 callers.
10819 * arm.cc: Update functions to remove options parameters.
10820 * i386.cc: Likewise.
10821 * powerpc.cc: Likewise.
10822 * sparc.cc: Likewise.
10823 * x86_64.cc: Likewise.
10824 * testsuite/testfile.cc: Likewise.
10825
8ffa3667
DK
108262009-10-28 Doug Kwan <dougkwan@google.com>
10827
10828 * arm.cc (Arm_relobj): New class definition.
e1df38aa 10829 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
10830 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
10831 New method definitions.
10832
40f36857
CC
108332009-10-28 Cary Coutant <ccoutant@google.com>
10834
10835 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
10836 (Plugin::cleanup_done_): New member.
10837 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
10838 (Plugin_manager::cleanup_done_): Remove.
10839 (Plugin_manager::add_input_file): Edit error message.
10840 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
10841 (Plugin_manager::cleanup): Remove use of cleanup_done_.
10842
2c849493
ILT
108432009-10-27 Mikolaj Zalewski <mikolajz@google.com>
10844
10845 * fileread.cc: (File_read::View::~View): Use the new
10846 data_ownership_ filed.
10847 (File_read::~File_read): Dispose the new whole_file_view_.
10848 (File_read::open): Mmap the whole file if needed.
10849 (File_read::open): Use whole_file_view_ instead of contents_.
10850 (File_read::find_view): Use whole_file_view_ if applicable.
10851 (File_read::do_read): Use whole_file_view_ instead of contents_.
10852 (File_read::make_view): Use whole_file_view_ instead of contents_,
10853 update File_read::View::View call.
10854 (File_read::find_or_make_view): Update File_read::View::View
10855 call.
10856 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
10857 remove contents_
10858 (File_read::View::Data_ownership): New enum.
10859 (File_read::View::View): Replace bool mapped_ with Data_ownership
10860 argument.
10861 (File_read::View::mapped_): Remove (replaced by data_ownership_).
10862 (File_read::View::data_ownership_): New field.
10863 (File_read::contents_): Remove (replaced by whole_file_view_).
10864 (File_read::whole_file_view_): New field.
10865 * options.h (class General_options): Add --keep-files-mapped.
10866
24998053
CC
108672009-10-27 Cary Coutant <ccoutant@google.com>
10868
10869 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
10870 * testsuite/Makefile.am (plugin_test_5): New test case.
10871 * testsuite/Makefile.in: Regenerate.
10872
72adc4fa
DK
108732009-10-25 Doug Kwan <dougkwan@google.com>
10874
10875 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
10876 from private to protected to allow access by child class.
10877 (Sized_relobj::do_relocate_sections): New method declaration.
10878 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 10879 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
10880 Sized_relobj::relocate_sections. Instantiate template explicitly
10881 for different target sizes and endianity.
10882
07f508a2
DK
108832009-10-24 Doug Kwan <dougkwan@google.com>
10884
10885 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
10886 (Arm_input_section::as_arm_input_section): New method.
10887 (Arm_output_section): New class definition.
10888 (Arm_output_section::create_stub_group,
10889 Arm_output_section::group_sections): New method definitions.
10890
10ad9fe5
DK
108912009-10-22 Doug Kwan <dougkwan@google.com>
10892
10893 * arm.cc (Arm_input_section): New class definition.
10894 (Arm_input_section::init, Arm_input_section:do_write,
10895 Arm_input_section::set_final_data_size,
10896 Arm_input_section::do_reset_address_and_file_offset): New method
10897 definitions.
10898
56ee5e00
DK
108992009-10-21 Doug Kwan <dougkwan@google.com>
10900
10901 * arm.cc (Stub_table, Arm_input_section): New forward class
10902 declarations.
10903 (Stub_table): New class defintion.
10904 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
10905 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
10906 New method definition.
10907
b569affa
DK
109082009-10-21 Doug Kwan <dougkwan@google.com>
10909
10910 * arm.cc: Update copyright comments.
10911 (Target_arm): New forward class template declaration.
10912 (Arm_address): New type.
10913 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
10914 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
10915 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
10916 constants.
10917 (Insn_template): Same.
10918 (DEF_STUBS): New macro.
10919 (Stub_type): New enum type.
10920 (Stub_template): New class definition.
10921 (Stub): Same.
10922 (Reloc_stub): Same.
10923 (Stub_factory): Same.
10924 (Target_arm::Target_arm): Initialize may_use_blx_ and
10925 should_force_pic_veneer_.
10926 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
10927 Target_arm::should_force_pic_veneer,
10928 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
10929 Target_arm::using_thumb_only, Target_arm:;default_target): New
10930 method defintions.
10931 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
10932 New data member declarations.
10933 (Insn_template::size, Insn_template::alignment): New method defintions.
10934 (Stub_template::Stub_template): New method definition.
10935 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
10936 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
10937 (Stub_factory::Stub_factory): New method definition.
10938 * gold.h (string_hash): New template.
10939 * output.h (Input_section_specifier::hash_value): Use
10940 gold::string_hash.
10941 (Input_section_specifier::string_hash): Remove.
10942 * stringpool.cc (Stringpool_template::string_hash): Use
10943 gold::string_hash.
10944
6c172549
DK
109452009-10-20 Doug Kwan <dougkwan@google.com>
10946
10947 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
10948 symbols of relaxed input sections.
10949 * output.h (Output_section::find_relaxed_input_section): Make
10950 method public.
10951
c5617f2f
DK
109522009-10-16 Doug Kwan <dougkwan@google.com>
10953
10954 * dynobj.cc (Versions::Versions): Initialize version_script_.
10955 Only insert base version symbol definition for a shared object
10956 if version script defines any version versions.
10957 (Versions::define_base_version): New method definition.
10958 (Versions::add_def): Check that base version is not needed.
10959 (Versions::add_need): Define base version lazily.
10960 * dynobj.h (Versions::define_base_version): New method declaration.
10961 (Versions::needs_base_version_): New data member declaration.
10962 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
10963 (check_DATA): Add no_version_test.stdout.
10964 (libno_version_test.so, no_version_test.o no_version_test.stdout):
10965 New make rules.
10966 * testsuite/Makefile.in: Regenerate.
10967 * testsuite/no_version_test.c: New file.
10968 * testsuite/no_version_test.sh: Ditto.
10969
3c12dcdb
DK
109702009-10-16 Doug Kwan <dougkwan@google.com>
10971
10972 * expression.cc (class Segment_start_expression): New class definition.
10973 (Segment_start_expression::value): New method definition.
10974 (script_exp_function_segment_start): Return a new
10975 Segment_start_expression.
10976 * gold/script-c.h (script_saw_segment_start_expression): New function
10977 prototype.
10978 * script-sections.cc (Script_sections::Script_sections): Initialize
10979 SAW_SEGMENT_START_EXPRESSION_ to false.
10980 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
10981 and -Tbbs options to specify section addresses if given in
10982 command line and no SEGMENT_START expression is seen in a script.
10983 * script-sections.h (Script_sections::saw_segment_start_expression,
10984 Script_sections::set_saw_segment_start_expression): New method
10985 definition.
10986 (Script_sections::saw_segment_start_expression_): New data member
10987 declaration.
10988 * script.cc (script_saw_segment_start_expression): New function.
10989 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
10990 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
10991 script_test_7.sh and script_test_8.sh.
10992 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
10993 script_test_8.stdout.
10994 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
10995 (script_test_6, script_test_6.stdout, script_test_7,
10996 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
10997 * Makefile.in: Regenerate.
10998 * testsuite/script_test_6.sh: New file.
10999 * testsuite/script_test_6.t: Same.
11000 * testsuite/script_test_7.sh: Same.
11001 * testsuite/script_test_7.t: Same.
11002 * testsuite/script_test_8.sh: Same.
11003
64b1ae37
DK
110042009-10-16 Doug Kwan <dougkwan@google.com>
11005
11006 * output.cc (Output_segment::set_section_list_address): Cast
11007 expressions to unsigned long long type to avoid format warnings.
11008
661be1e2
ILT
110092009-10-15 Ian Lance Taylor <iant@google.com>
11010
12edd763 11011 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 11012 dot assignment to script_sections_.
12edd763
ILT
11013 * script-sections.cc (Script_sections::add_dot_assignment):
11014 Initialize if necessary.
11015
68b6574b
ILT
11016 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
11017 program headers with no load segment if there is a linker script.
11018
661be1e2
ILT
11019 * layout.cc (Layout::set_segment_offsets): Align the file offset
11020 to the segment aligment for -N or -n with no load segment.
11021 * output.cc (Output_segment::add_output_section): Don't crash if
11022 the first section is a TLS section.
11023 (Output_segment::set_section_list_addresses): Print an error
11024 message if the address moves backward in a linker script.
11025 * script-sections.cc
11026 (Output_section_element_input::set_section_addresses): Don't
11027 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
11028 (Orphan_output_section::set_section_addresses): Likewise.
11029
f15f61a7
DK
110302009-10-15 Doug Kwan <dougkwan@google.com>
11031
11032 * layout.cc (Layout::finish_dynamic_section): Generate tags
11033 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
11034 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
11035 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
11036
82bb573a
ILT
110372009-10-14 Ian Lance Taylor <iant@google.com>
11038
11039 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
11040 fields.
11041 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
11042 data_shdr fields of relinfo.
11043 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
11044 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
11045 R_386_TLS_LDO_32, adjust based on section flags.
11046 (Target_i386::Relocate::fix_up_ldo): Remove.
11047
374ad285
ILT
110482009-10-13 Ian Lance Taylor <iant@google.com>
11049
11050 Add support for -pie.
11051 * options.h (class General_options): Add -pie and
11052 --pic-executable.
11053 (General_options::output_is_position_independent): Test -pie.
11054 (General_options::output_is_executable): Return true if not shared
11055 and not relocatable.
11056 (General_options::output_is_pie): Remove.
11057 * options.cc (General_options::finalize): Reject incompatible uses
11058 of -pie.
11059 * gold.cc (queue_middle_tasks): A -pie link is not static.
11060 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
11061 * symtab.cc (Symbol::final_value_is_known): Return false if
11062 output_is_position_independent.
11063 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
11064 output_is_position_independent.
11065 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
11066 output_is_position_independent.
11067 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
11068 output_is_position_independent.
11069 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
11070 two_file_pie_test.
11071 (basic_pie_test.o, basic_pie_test): New targets.
11072 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
11073 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
11074 (two_file_pie_test): New target.
11075 * testsuite/Makefile.in: Rebuild.
11076 * README: Remove note saying that -pie is not supported.
11077
c6585162
ILT
110782009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11079
11080 * options.h (class General_options): Add -init and -fini.
11081 * layout.cc (Layout::finish_dynamic_section): Emit
11082 given init and fini functions.
11083
032ce4e9
ST
110842009-10-13 Sriraman Tallam <tmsriram@google.com>
11085
11086 * gc.h (gc_process_relocs): Check if icf is enabled using new
11087 function.
11088 * gold.cc (queue_initial_tasks): Likewise.
11089 (queue_middle_tasks): Likewise.
11090 * object.cc (do_layout): Likewise.
11091 * symtab.cc (is_section_folded): Likewise.
11092 * main.cc (main): Likewise.
11093 * reloc.cc (Read_relocs::run): Likewise.
11094 (Sized_relobj::do_scan_relocs): Likewise.
11095 * icf.cc (is_function_ctor_or_dtor): New function.
11096 (Icf::find_identical_sections): Check if function is ctor or dtor when
11097 safe icf is chosen.
11098 * options.h (General_options::icf): Change option to be an enum.
11099 (Icf_status): New enum.
11100 (icf_enabled): New method.
11101 (icf_safe_folding): New method.
11102 (set_icf_status): New method.
11103 (icf_status_): New variable.
11104 * (options.cc) (General_options::finalize): Set icf_status_.
11105 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
11106 icf_test and icf_keep_unique_test to use the --icf enum flag.
11107 * testsuite/icf_safe_test.sh: New file.
e1df38aa 11108 * testsuite/icf_safe_test.cc: New file.
032ce4e9 11109
f345227a
ST
111102009-10-12 Sriraman Tallam <tmsriram@google.com>
11111
11112 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
11113 includes to gc.h and icf.h.
11114 * arm.cc: Include gc.h.
11115 * gold.cc: Likewise.
11116 * i386.cc: Likewise.
11117 * powerpc.cc: Likewise.
11118 * sparc.cc: Likewise.
11119 * x86_64.cc: Likewise.
11120 * gc.h: Include icf.h.
11121
1c7814ed
ILT
111222009-10-11 Ian Lance Taylor <iant@google.com>
11123
11124 * plugin.cc: Include "gold.h" before other header files.
11125
ae3b5189
CD
111262009-10-10 Chris Demetriou <cgd@google.com>
11127
11128 * options.h (Input_file_argument::Input_file_type): New enum.
11129 (Input_file_argument::is_lib_): Replace with...
11130 (Input_file_argument::type_): New member.
11131 (Input_file_argument::Input_file_argument): Take Input_file_type
11132 'type' rather than boolean 'is_lib' as second argument.
11133 (Input_file_argument::is_lib): Use type_.
11134 (Input_file_argument::is_searched_file): New function.
11135 (Input_file_argument::may_need_search): Handle is_searched_file.
11136 * options.cc (General_options::parse_library): Support -l:filename.
11137 (General_options::parse_just_symbols): Update for Input_file_argument
11138 changes.
11139 (Command_line::process): Likewise.
11140 * archive.cc (Archive::get_file_and_offset): Likewise.
11141 * plugin.cc (Plugin_manager::release_input_file): Likewise.
11142 * script.cc (read_script_file, script_add_file): Likewise.
11143 * fileread.cc (Input_file::Input_file): Likewise.
11144 (Input_file::will_search_for): Handle is_searched_file.
11145 (Input_file::open): Likewise.
11146 * readsyms.cc (Read_symbols::get_name): Likewise.
11147 * testsuite/Makefile.am (searched_file_test): New test.
11148 * testsuite/Makefile.in: Regenerate.
11149 * testsuite/searched_file_test.cc: New file.
11150 * testsuite/searched_file_test_lib.cc: New file.
11151
f3048a1d
ILT
111522009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
11153 Ian Lance Taylor <iant@google.com>
11154
11155 * descriptor.cc: Include <cstdio> and "binary-io.h".
11156 (Descriptors::open): Open the files in binary mode always.
11157 * script.cc (Lex::get_token): Treat \r as whitespace.
11158
d4780e57
ILT
111592009-10-09 Ian Lance Taylor <iant@google.com>
11160
11161 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
11162
d9a893b8
ILT
111632009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
11164 Ian Lance Taylor <iant@google.com>
11165
11166 * configure.ac: Check for readv function also.
11167 * fileread.cc (readv): Define if not HAVE_READV.
11168 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
11169 does not exist.
11170 * config.in: Regenerate.
11171 * configure: Regenerate.
11172
c0a62865
DK
111732009-10-09 Doug Kwan <dougkwan@google.com>
11174
11175 * layout.cc (Layout::make_output_section): Call target hook to make
11176 ordinary output section.
11177 (Layout::finalize): Adjust parameter list of call the
11178 Target::may_relax().
11179 * layout.h (class Layout::section_list): New method.
11180 * merge.h (Output_merge_base::entsize): Change visibility to public.
11181 (Output_merge_base::is_string, Output_merge_base::do_is_string):
11182 New methods.
11183 (Output_merge_string::do_is_string): New method.
11184 * object.cc (Sized_relobj::do_setup): renamed from
11185 Sized_relobj::set_up.
11186 * object.h (Sized_relobj::adjust_shndx,
11187 Sized_relobj::initializ_input_to_output_maps,
11188 Sized_relobj::free_input_to_output_maps): Change visibilities to
11189 protected.
11190 (Sized_relobj::setup): Virtualize.
11191 (Sized_relobj::do_setup): New method declaration.
11192 (Sized_relobj::invalidate_section_offset,
11193 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
11194 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
11195 * options.cc (parse_int): New function.
11196 * options.h (parse_int): New declaration.
11197 (DEFINE_int): New macro.
11198 (stub_group_size): New option.
11199 * output.cc (Output_section::Output_section): Initialize memebers
11200 merge_section_map_, merge_section_by_properties_map_,
11201 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
11202 (Output_section::add_input_section): Handled deferred code-fill
11203 generation and remove an old comment.
11204 (Output_section::add_relaxed_input_section): New method definition.
11205 (Output_section::add_merge_input_section): Use merge section by
11206 properties map to speed to search. Update merge section maps
11207 as appropriate.
11208 (Output_section::build_relaxation_map): New method definition.
11209 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
11210 Same.
11211 (Output_section::relax_input_section): Renamed to
11212 Output_section::convert_input_sections_to_relaxed_sections and change
11213 interface to take a vector of pointers to relaxed sections.
11214 (Output_section::find_merge_section,
11215 Output_section::find_relaxed_input_section): New method definitions.
11216 (Output_section::is_input_address_mapped,
11217 Output_section::output_offset, Output_section::output_address):
11218 Use output section data maps to speed up searching.
11219 (Output_section::find_starting_output_address): Add comments.
11220 (Output_section::do_write,
11221 Output_section::write_to_postprocessing_buffer): Do code-fill
11222 generation as appropriate.
11223 (Output_section::get_input_sections): Invalidate relaxed input section
11224 map.
11225 (Output_section::restore_states): Adjust type of checkpoint .
11226 Invalidate relaxed input section map.
11227 * output.h (Output_merge_base): New class declaration.
11228 (Input_section_specifier): New class defintion.
11229 (class Output_relaxed_input_section) Change base class to
11230 Output_section_data_build.
11231 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
11232 base class initializer.
11233 (Output_section::add_relaxed_input_section): New method declaration.
11234 (Output_section::Input_section): Change visibility to protected.
2e702c99 11235 (Output_section::Input_section::relobj,
c0a62865
DK
11236 Output_section::Input_section::shndx): Handle relaxed input sections.
11237 Output_section::input_sections) Change visibility to protected. Also
11238 define overload to return a non-const pointer.
11239 (Output_section::Merge_section_properties): New class defintion.
11240 (Output_section::Merge_section_by_properties_map,
11241 Output_section::Output_section_data_by_input_section_map,
11242 Output_section::Relaxation_map): New types.
11243 (Output_section::relax_input_section): Rename method to
11244 Output_section::convert_input_sections_to_relaxed_sections and change
11245 interface to take a vector of relaxed section pointers.
11246 (Output_section::find_merge_section,
11247 Output_section::find_relaxed_input_section,
11248 Output_section::build_relaxation_map,
11249 Output_section::convert_input_sections_in_list_to_relaxed_sections):
11250 New method declarations.
11251 (Output_section::merge_section_map_
11252 Output_section::merge_section_by_properties_map_,
11253 Output_section::relaxed_input_section_map_,
11254 Output_section::is_relaxed_input_section_map_valid_,
11255 Output_section::generate_code_fills_at_write_): New data members.
11256 * script-sections.cc
11257 (Output_section_element_input::set_section_addresses): Call
11258 current_data_size and addralign methods of relaxed input sections.
11259 (Orphan_output_section::set_section_addresses): Call current_data_size
11260 and addralign methods of relaxed input sections.
11261 * symtab.cc (Symbol_table::compute_final_value): Extract template
11262 from the body of Symbol_table::sized_finalize_symbol.
11263 (Symbol_table::sized_finalized_symbol): Call
11264 Symbol_table::compute_final_value.
11265 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
11266 (Symbol_table::compute_final_value): New templated method declaration.
11267 * target.cc (Target::do_make_output_section): New method defintion.
11268 * target.h (Target::make_output_section): New method declaration.
11269 (Target::relax): Add more parameters for input objects, symbol table
11270 and layout. Adjust call to do_relax.
11271 (Target::do_make_output_section): New method declaration.
11272 (Target::do_relax): Add parameters for input objects, symbol table
11273 and layout.
11274
d446d6c4
ILT
112752009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
11276
11277 * pread.c: Include stdio.h.
11278
bc06c745
ILT
112792009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
11280
11281 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
11282 defined.
11283
75aea3d0
ILT
112842009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
11285
11286 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
11287 Change read_shndx type to unsigned int.
11288 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
11289 int.
11290 (Sized_dwarf_line_info::read_line_mappings): Likewise.
11291 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
11292 Change read_shndx type to unsigned int.
11293 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
11294 int.
11295 (Sized_dwarf_line_info::read_line_mappings): Likewise.
11296 * layout.cc (Layout::create_symtab_sections): Cast the result of
11297 local_symcount * symsize to off_t in the gold_assert.
11298
be8fcb75
ILT
112992009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11300
11301 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
11302 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
11303 R_ARM_BASE_ABS.
11304 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
11305 (Arm_relocate_functions::thm_abs5): New function.
11306 (Arm_relocate_functions::abs12): New function.
11307 (Arm_relocate_functions::abs16): New function.
11308 (Arm_relocate_functions::base_abs): New function.
11309 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
11310 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
11311 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
11312 R_ARM_BASE_ABS.
11313 (Scan::global): Likewise.
11314 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
11315 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
11316 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
11317 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
11318 R_ARM_BASE_ABS.
11319
c2a122b6
ILT
113202009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11321
11322 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
11323 (Arm_relocate_functions::movt_prel): New function.
11324 (Arm_relocate_functions::thm_movw_prel_nc): New function.
11325 (Arm_relocate_functions::thm_movt_prel): New function.
11326 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
11327 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
11328 (Scan::global, Relocate::relocate): Likewise.
11329 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11330
c4aa1e2d
ILT
113312009-10-09 Mikolaj Zalewski <mikolajz@google.com>
11332
11333 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
11334 Incremental_checker.
11335 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
11336 unsigned int.
11337 (class Incremental_inputs_header): New class.
11338 (Incremental_inputs_header_writer): Edit comment.
11339 (Incremental_inputs_entry): New class.
11340 (Incremental_inputs_entry_writer): Edit comment.
11341 (Sized_incremental_binary::do_find_incremental_inputs_section):
11342 Add *strtab_shndx parameter, fill it.
11343 (Sized_incremental_binary::do_check_inputs): New method.
11344 (Incremental_checker::can_incrementally_link_output_file): Use
11345 Sized_incremental_binary::check_inputs.
11346 (Incremental_inputs::report_command_line): Save command line in
11347 command_line_.
11348 * incremental.h:
11349 (Incremental_binary::find_incremental_inputs_section): New
11350 method.
11351 (Incremental_binary::do_find_incremental_inputs_section): Add
11352 strtab_shndx parameter.
11353 (Incremental_binary::do_check_inputs): New pure virtual method.
11354 (Sized_incremental_binary::do_check_inputs): Declare.
11355 (Incremental_checker::Incremental_checker): Add incremental_inputs
11356 parameter, use it to initialize incremental_inputs_.
11357 (Incremental_checker::incremental_inputs_): New field.
11358 (Incremental_checker::command_line): New method.
11359 (Incremental_checker::inputs): New method.
11360 (Incremental_checker::command_line_): New field.
11361
c549a694
ILT
113622009-10-09 Mikolaj Zalewski <mikolajz@google.com>
11363
11364 * incremental.cc: Include <cstdarg> and "target-select.h".
11365 (vexplain_no_incremental): New function.
11366 (explain_no_incremental): New function.
11367 (Incremental_binary::error): New method.
11368 (Sized_incremental_binary::do_find_incremental_inputs_section): New
11369 method.
11370 (make_sized_incremental_binary): New function.
11371 (open_incremental_binary): New function.
11372 (can_incrementally_link_file): Add checks if output is ELF and has
11373 inputs section.
11374 * incremental.h: Include "elfcpp_file.h" and "output.h".
11375 (Incremental_binary): New class.
11376 (Sized_incremental_binary): New class.
11377 (open_incremental_binary): Declare.
11378 * object.cc (is_elf_object): Use
11379 elfcpp::Elf_recognizer::is_elf_file.
11380 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
11381 * output.h (Output_file::filesize): New method.
11382
fd3c5f0b
ILT
113832009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11384
11385 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
11386 New function.
11387 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
11388 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
11389 function.
11390 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
11391 function.
11392 (Arm_relocate_functions::movw_abs_nc): New function.
11393 (Arm_relocate_functions::movt_abs): New function.
11394 (Arm_relocate_functions::thm_movw_abs_nc): New function.
11395 (Arm_relocate_functions::thm_movt_abs): New function.
11396 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
11397 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
11398 (Scan::global): Likewise.
11399 (Relocate::relocate): Likewise.
11400 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11401
7f5309a5
ILT
114022009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11403
11404 * arm.cc (Arm_relocate_functions::got_prel) New function.
11405 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
11406 (Relocate::relocate): Likewise.
11407 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11408
364c7fa5
ILT
114092009-10-06 Ian Lance Taylor <iant@google.com>
11410
11411 * options.h (class General_options): Define
11412 split_stack_adjust_size parameter.
11413 * object.h (class Object): Add uses_split_stack_ and
11414 has_no_split_stack_ fields. Add uses_split_stack and
11415 has_no_split_stack accessor functions. Declare
11416 handle_split_stack_section.
11417 (class Reloc_symbol_changes): Define.
11418 (class Sized_relobj): Define Function_offsets. Declare
11419 split_stack_adjust, split_stack_adjust_reltype, and
11420 find_functions.
11421 * object.cc (Object::handle_split_stack_section): New function.
11422 (Sized_relobj::do_layout): Call handle_split_stack_section.
11423 * dynobj.cc (Sized_dynobj::do_layout): Call
11424 handle_split_stack_section.
11425 * reloc.cc (Sized_relobj::relocate_sections): Call
11426 split_stack_adjust for executable sections in split_stack
11427 objects. Pass reloc_map to relocate_section.
11428 (Sized_relobj::split_stack_adjust): New function.
11429 (Sized_relobj::split_stack_adjust_reltype): New function.
11430 (Sized_relobj::find_functions): New function.
11431 * target-reloc.h: Include "object.h".
11432 (relocate_section): Add reloc_symbol_changes parameter. Change
11433 all callers.
11434 * target.h (class Target): Add calls_non_split method. Declare
11435 do_calls_non_split virtual method. Declare match_view and
11436 set_view_to_nop.
11437 * target.cc: Include "elfcpp.h".
11438 (Target::do_calls_non_split): New function.
11439 (Target::match_view): New function.
11440 (Target::set_view_to_nop): New function.
11441 * gold.cc (queue_middle_tasks): Give an error if mixing
11442 split-stack and non-split-stack objects with -r.
11443 * i386.cc (Target_i386::relocate_section): Add
11444 reloc_symbol_changes parameter.
11445 (Target_i386::do_calls_non_split): New function.
11446 * x86_64.cc (Target_x86_64::relocate_section): Add
11447 reloc_symbol_changes parameter.
11448 (Target_x86_64::do_calls_non_split): New function.
11449 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
11450 parameter.
11451 * powerpc.cc (Target_powerpc::relocate_section): Add
11452 reloc_symbol_changes parameter.
11453 * sparc.cc (Target_sparc::relocate_section): Add
11454 reloc_symbol_changes parameter.
11455 * configure.ac: Call AM_CONDITIONAL for the default target.
11456 * configure: Rebuild.
11457 * testsuite/Makefile.am (TEST_AS): New variable.
11458 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
11459 (check_DATA): Add split_i386 and split_x86_64 files.
11460 (SPLIT_DEFSYMS): Define.
11461 (split_i386_[1234n].o): New targets.
11462 (split_i386_[124]): New targets.
11463 (split_i386_[1234r].stdout): New targets.
11464 (split_x86_64_[1234n].o): New targets.
11465 (split_x86_64_[124]): New targets.
11466 (split_x86_64_[1234r].stdout): New targets.
11467 (MOSTLYCLEANFILES): Add new executables.
11468 * testsuite/split_i386.sh: New file.
11469 * testsuite/split_x86_64.sh: New file.
11470 * testsuite/split_i386_1.s: New file.
11471 * testsuite/split_i386_2.s: New file.
11472 * testsuite/split_i386_3.s: New file.
11473 * testsuite/split_i386_4.s: New file.
11474 * testsuite/split_i386_n.s: New file.
11475 * testsuite/split_x86_64_1.s: New file.
11476 * testsuite/split_x86_64_2.s: New file.
11477 * testsuite/split_x86_64_3.s: New file.
11478 * testsuite/split_x86_64_4.s: New file.
11479 * testsuite/split_x86_64_n.s: New file.
11480 * testsuite/testfile.cc (Target_test): Update relocation_section
11481 function.
11482 * testsuite/Makefile.in: Rebuild.
11483
e8a9fcda
ILT
114842009-10-06 Ian Lance Taylor <iant@google.com>
11485
11486 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
11487 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
11488 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
11489 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
11490 the address on ldo_addrs_.
11491 (Target_i386::Relocate::fix_up_ldo): New function.
11492
e99daf92
ILT
114932009-10-06 Rafael Espindola <espindola@google.com>
11494
11495 * plugin.cc (add_input_library): New.
11496 (Plugin::load): Add add_input_library to tv.
11497 (Plugin_manager::add_input_file): Add the is_lib argument.
11498 (add_input_file): Update call to Plugin_manager::add_input_file.
11499 (add_input_library): New.
11500 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
11501
966d4097
DK
115022009-09-30 Doug Kwan <dougkwan@google.com>
11503
11504 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
11505 symbol and call Symbol::may_need_copy_reloc to determine if
11506 a copy reloc is needed.
11507 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
11508 nocopyreloc is given in command line.
11509 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
11510 given in command line.
11511 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
11512 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
11513 of the removed Target_i386::may_need_copy_reloc.
11514 * options.h (copyreloc): New option with default value false.
11515 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
11516 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
11517 instead of the removed Target_powerpc::may_need_copy_reloc.
11518 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
11519 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
11520 instead of the removed Target_sparc::may_need_copy_reloc.
11521 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
11522 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
11523 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
11524 instead of the removed Target_x86_64::may_need_copy_reloc.
11525
029ba973
ILT
115262009-09-30 Ian Lance Taylor <iant@google.com>
11527
11528 * object.h (class Object): Remove target_ field, and target,
11529 sized_target, and set_target methods.
11530 (Object::sized_target): Remove.
11531 (class Sized_relobj): Update declarations. Remove sized_target.
11532 * object.cc (Sized_relobj::setup): Remove target parameter.
11533 Change all callers.
11534 (Input_objects::add_object): Don't do anything with the target.
11535 (make_elf_sized_object): Add punconfigured parameter. Change all
11536 callers. Set or test parameter target.
11537 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
11538 Change all callers.
11539 * parameters.cc (Parameters::set_target): Change parameter type to
11540 be non-const.
11541 (Parameters::default_target): Remove.
11542 (set_parameters_target): Change parameter type to be non-const.
11543 (parameters_force_valid_target): New function.
11544 (parameters_clear_target): New function.
11545 * parameters.h (class Parameters): Update declarations. Remove
11546 default_target method. Add sized_target and clear_target
11547 methods. Change target_ to be non-const.
11548 (set_parameters_target): Update declaration.
11549 (parameters_force_valid_target): Declare.
11550 (parameters_clear_target): Declare.
11551 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
11552 as NULL if we aren't searching.
11553 (Add_symbols::run): Don't check for compatible target.
11554 * fileread.cc (Input_file::open_binary): Call
11555 parameters_force_valid_target.
11556 * gold.cc (queue_middle_tasks): Likewise.
11557 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
11558 set_target on object.
11559 * dynobj.h (class Sized_dynobj): Update declarations.
11560 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
11561 make_elf_object returns NULL.
11562 (Archive::include_member): Don't check whether object target is
11563 compatible.
11564 * output.cc (Output_section::add_input_section): Get target from
11565 parameters.
11566 (Output_section::relax_input_section): Likewise.
11567 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
11568 parameters.
11569 (Sized_relobj::do_scan_relocs): Likewise.
11570 (Sized_relobj::relocate_sections): Likewise.
11571 * resolve.cc (Symbol_table::resolve): Likewise.
11572 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
11573 parameter. Change all callers.
11574 (Symbol_table::add_from_object): Get target from parameters.
11575 (Symbol_table::add_from_relobj): Don't check object target.
11576 (Symbol_table::add_from_dynobj): Likewise.
11577 (Symbol_table::define_special_symbol): Get target from
11578 parameters.
11579 * symtab.h (class Symbol_table): Update declaration.
11580 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
11581 parameter. Change all callers. Clear parameter target.
11582 (Binary_test): Test target here.
11583 * testsuite/object_unittest.cc (gold_testsuite): Remove
11584 target_test_pointer parameter. Change all callers.
11585 (Object_test): Test target here.
11586
a6a22b83
ILT
115872009-09-26 Ian Lance Taylor <iant@google.com>
11588
11589 * testsuite/initpri1.c: Don't try to use constructor priorities if
11590 compiling with gcc before 4.3.
11591
6a8f49fe
ILT
115922009-09-22 Mikolaj Zalewski <mikolajz@google.com>
11593
11594 * testsuite/retain_symbols_file_test.sh (check_present): Change
11595 output file name to retain_symbols_file_test.stdout.
11596 (check_absent): Likewise.
11597
8c604651
CS
115982009-09-18 Craig Silverstein <csilvers@google.com>
11599
11600 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
11601 * options.cc: Include <cerrno> and <fstream>.
11602 (General_options::finalize): Parse -retain-symbols-file tag.
11603 * options.h: New flag.
11604 (General_options): New method should_retain_symbol, new
11605 variable symbols_to_retain.
11606 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
11607 should_retain_symbol map.
11608 * testsuite/Makefile.am (retain_symbols_file_test): New test.
11609 * testsuite/Makefile.in: Regenerate.
11610 * testsuite/retain_symbols_file_test.sh: New file.
11611
ca58b19f
NC
116122009-09-18 Nick Clifton <nickc@redhat.com>
11613
11614 * po/es.po: Updated Spanish translation.
11615
20e6d0d6
DK
116162009-09-17 Doug Kwan <dougkwan@google.com>
11617
11618 * debug.h (DEBUG_RELAXATION): New constant.
11619 (DEBUG_ALL): Add DEBUG_RELAXATION.
11620 (debug_string_to_enum): Add relaxation debug option.
11621 * layout.cc
11622 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
11623 Layout::Relaxation_debug_check::read_sections,
11624 Layout::Relaxation_debug_check::read_sections): New method definitions.
11625 (Layout::Layout): Initialize data members
11626 record_output_section_data_from_scrips_,
11627 script_output_section_data_list_ and relaxation_debug_check_.
11628 (Layout::save_segments, Layout::restore_segments,
11629 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
11630 Layout::relaxation_loop_body): New method definitions.
11631 (Layout::finalize): Support relaxation. Move section layout code to
11632 Layout::relaxation_loop_body.
11633 (Layout::set_asection_address_from_script): Move code for orphan
11634 section placement out.
11635 (Layout::place_orphan_sections_in_script): New method definition.
11636 * layout.h (Output_segment_headers, Output_file_header):
11637 New forward class declarations.
11638 (Layout::~Layout): Define.
11639 (Layout::new_output_section_data_from_script): New method definition.
11640 (Layout::place_orphan_sections_in_script): New method declaration.
11641 (Layout::Segment_states): New type declaration.
11642 (Layout::save_segments, Layout::restore_segments,
11643 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
11644 Layout::relaxation_loop_body): New method declarations.
11645 (Layout::Output_section_data_list): New type declaration.
11646 (Layout::Relaxation_debug_check): New class definition.
11647 (Layout::record_output_section_data_from_script_,
11648 Layout::script_output_section_data_list_, Layout::segment_states_,
11649 Layout::relaxation_debug_check_): New data members.
11650 * output.cc: (Output_section_headers::do_size): New method definition.
11651 (Output_section_headers::Output_section_headers): Move size
11652 computation to Output_section_headers::do_size.
11653 (Output_segment_headers::do_size): New method definition.
e1df38aa 11654 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
11655 Output_file_header::do_size and call it.
11656 (Output_file_header::do_size): New method definition.
11657 (Output_data_group::Output_data_group): Adjust call to
11658 Output_section_data.
11659 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
11660 (Output_symtab_xindex::do_write): Add array bound check.
2e702c99 11661 (Output_section::Input_section::print_to_mapfile): Handle
20e6d0d6
DK
11662 RELAXED_INPUT_SECTION_CODE.
11663 (Output_section::Output_section): Initialize data member checkpoint_.
11664 (Output_section::~Output_section): Delete checkpoint object pointed
11665 by checkpoint_.
11666 (Output_section::add_input_section): Always add an Input_section if
11667 relaxing.
11668 (Output_section::add_merge_input_section): Add assert.
11669 (Output_section::relax_input_section): New method definition.
11670 (Output_section::set_final_data_size): Set load address to zero for
11671 an unallocated section.
11672 (Output_section::do_address_and_file_offset_have_reset_values):
11673 New method definition.
11674 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
11675 Handle relaxed input section.
11676 (Output_section::sort_attached_input_sections): Checkpoint input
11677 section list lazily.
11678 (Output_section::get_input_sections): Change type of input_sections to
11679 list of Simple_input_section pointers. Checkpoint input section list
11680 lazily. Also handle relaxed input sections.
11681 (Output_section::add_input_section_for_script): Take a reference to
11682 a Simple_input_section object instead of Relobj pointer and section
11683 index as parameter. Handle relaxed input sections.
11684 (Output_section::save_states, Output_section::restore_states): New
11685 method definitions.
11686 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
11687 (Output_data::is_data_size_fixed): New method definition.
11688 (Output_data::reset_addresss_and_file_offset): Do not reset data size
11689 if it is fixed.
11690 (Output_data::address_and_file_offset_have_reset_values): New method
11691 definition.
11692 (Output_data::do_address_and_file_offset_have_reset_values): New method
11693 definition.
11694 (Output_data::set_data_size): Check that data size is not fixed.
11695 (Output_data::fix_data_size): New method definition.
11696 (Output_data::is_data_size_fixed_): New data member.
11697 (Output_section_headers::set_final_data_size): New method definition.
11698 (Output_section_headers::do_size): New method declaration.
11699 (Output_segment_headers::set_final_data_size): New method definition.
11700 (Output_segment_headers::do_size): New method declaration.
11701 (Output_file_header::set_final_data_size)::New method definition.
11702 (Output_file_header::do_size)::New method declaration.
11703 (Output_section_data::Output_section_data): Add new parameter
11704 is_data_size_fixed and use it to fix data size.
11705 (Output_data_const::Output_data_const): Adjust call to base class
11706 constructor and fix data size.
11707 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
11708 base class constructor and fix data size.
11709 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
11710 base class constructor and fix data size.
11711 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
11712 class constructor and fix data size.
11713 (Output_data_group::set_final_data_size): New method definition.
11714 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
11715 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
11716 class constructor and fix data size.
11717 (Output_relaxed_input_section): New class definition.
11718 (Output_section::Simple_input_section): New class definition.
11719 (Output_section::get_input_sections): Adjust parameter list.
11720 (Output_section::add_input_section_for_script): Same.
11721 (Output_section::save_states, Output_section::restore_states,
11722 Output_section::do_address_and_file_offset_have_reset_values,
11723 (Output_section::Input_section::Input_section): Handle
11724 RELAXED_INPUT_SECTION_CODE. Add new overload for
11725 Output_relaxed_input_section.
11726 (Output_section::Input_section::is_input_section,
11727 Output_section::Input_section::set_output_section): Handle relaxed
11728 input section.
11729 (Output_section::Input_section::is_relaxed_input_section,
11730 Output_section::Input_section::output_section_data,
11731 Output_section::Input_section::relaxed_input_section): New method
11732 definitions.
11733 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
11734 value.
11735 (Output_section::Input_section::u1_): Update comments.
11736 (Output_section::Input_section::u2_): Add new union member poris.
11737 (Output_section::Checkpoint_output_section): New classs definition.
11738 (Output_section::relax_input_section): New method declaration.
11739 (Output_section::checkpoint_): New data member.
11740 (Output_segment): Update comments.
11741 (Output_segment::Output_segment): Un-privatize copy constructor.
11742 (Output_segment::operator=): Un-privatize.
11743 * script-sections.cc (Output_section_element::Input_section_list):
11744 Change element type to Output_section::Simple_input_section.
11745 (Output_section_element_dot_assignment::set_section_addresses):
11746 Register output section data for relaxation clean up.
11747 (Output_data_exression::Output_data_expression): Adjust call to base
11748 constructor to fix data size.
11749 (Output_section_element_data::set_section_addresses): Register
11750 Output_data_expression object for relaxation clean up.
11751 (struct Input_section_info): Replace Relobj pointer and section index
11752 pair with Output_section::Simple_input_section and Convert struct to a
11753 class.
11754 (Input_section_sorter::operator()): Adjust access to
e1df38aa 11755 Input_section_info data member to use accessors.
20e6d0d6
DK
11756 (Output_section_element_input::set_section_addresses): Use layout
11757 parameter. Adjust code to use Output_section::Simple_input_section
11758 and Input_secction_info classes. Register filler for relaxation
11759 clean up.
11760 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
11761 and section index pair with Output_section::Simple_input_section
11762 class. Adjust code accordingly.
11763 (Phdrs_element::release_segment): New method definition.
11764 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
11765 segment list.
11766 (Script_sections::release_segments): New method definition.
11767 * gold/script-sections.h (Script_sections::release_segments): New
11768 method declaration.
11769 * gold/target.h (Target::may_relax, Target::relax,
11770 Target::do_may_relax, Target::do_relax): New method definitions.
11771
5e445df6
ILT
117722009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11773
11774 * arm.cc (has_signed_unsigned_overflow): New function.
11775 (Arm_relocate_functions::abs8): New function.
11776 (Target_arm::Scan::local): Handle R_ARM_ABS8.
11777 (Target_arm::Scan::global): Likewise.
11778 (Target_arm::relocate::relocate): Likewise.
11779 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
11780 Likewise.
11781
8c604651 117822009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
11783
11784 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
11785 * testsuite/Makefile.in: Regenerate.
11786
1e9cc1c2
NC
117872009-09-11 Nick Clifton <nickc@redhat.com>
11788
11789 * po/gold.pot: Updated by the Translation project.
11790
6a89f575
CC
117912009-09-08 Cary Coutant <ccoutant@google.com>
11792
11793 * output.cc (Output_file::open): Add execute permission to empty file.
11794 * testsuite/Makefile.am (permission_test): New test.
11795 * testsuite/Makefile.in: Regenerate.
11796
fdcac5af
ILT
117972009-09-02 Ian Lance Taylor <iant@google.com>
11798
11799 * output.cc (Output_file::resize): Call map_no_anonymous rather
11800 than map.
11801
44453f85
ILT
118022009-09-01 Mikolaj Zalewski <mikolajz@google.com>
11803
11804 * gold.cc: Include "incremental.h".
11805 (queue_initial_tasks): Call Incremental_checker methods.
11806 * incremental.cc: Include "output.h".
11807 (Incremental_checker::can_incrementally_link_output_file): New
11808 method.
11809 * incremental.h (Incremental_checker): New class.
11810
11811 * output.cc (Output_file::open_for_modification): New method.
11812 (Output_file::map_anonymous): Changed return type to bool. Record
11813 map in base_ field.
11814 (Output_file::map_no_anonymous): New method, broken out of map.
11815 (Output_file::map): Use map_no_anonymous and map_anonymous.
11816 * output.h (class Output_file): Update declarations.
11817
293c1386
CC
118182009-08-24 Cary Coutant <ccoutant@google.com>
11819
11820 * options.h (Command_line::Pre_options): New class.
11821 (Command_line::pre_options): New member.
11822 * options.cc (gold::options::ready_to_register): New variable.
11823 (One_option::register_option): Do nothing if not registering options.
11824 Assert if same short option registered twice.
11825 (General_options::General_options): Turn off option registration when
11826 done constructing.
11827 (Command_line::Pre_options::Pre_options): New constructor.
11828
f773f3d2
CC
118292009-08-24 Cary Coutant <ccoutant@google.com>
11830
06a73cfe
CC
11831 * options.h (General_options::no_keep_memory): Remove incorrect
11832 short option.
f773f3d2 11833
a15af8e2
RW
118342009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
11835
11836 * Makefile.am (am__skiplex, am__skipyacc): New.
11837 * Makefile.in: Regenerate.
11838
c462b41b
RW
118392009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
11840
14ec8efd
RW
11841 * Makefile.am (AM_CPPFLAGS): Renamed from ...
11842 (INCLUDES): ... this.
11843 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
11844 (AM_CPPFLAGS): Renamed from ...
11845 (INCLUDE): ... this.
11846 * Makefile.in, testsuite/Makefile.in: Regenerate.
11847
81ecdfbb
RW
11848 * Makefile.in: Regenerate.
11849 * aclocal.m4: Likewise.
11850 * config.in: Likewise.
11851 * configure: Likewise.
11852 * testsuite/Makefile.in: Likewise.
11853
c462b41b
RW
11854 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
11855 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
11856 * Makefile.in: Regenerate.
11857 * testsuite/Makefile.in: Regenerate.
11858
2da73f13
CC
118592009-08-19 Cary Coutant <ccoutant@google.com>
11860
11861 * resolve.cc (Symbol_table::resolve): Don't complain about defined
11862 symbols in shared libraries overridden by hidden or internal symbols
11863 in the main program.
11864
2db70501
CD
118652009-08-19 Chris Demetriou <cgd@google.com>
11866
11867 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
11868 checking source file names in error messages.
11869
f733487b
DK
118702009-08-18 Doug Kwan <dougkwan@google.com>
11871
11872 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
11873 an elcpp::Ehdr as parameter. Adjust call to set_target.
11874 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
11875 an elfcpp::Ehdr as parameter.
11876 * object.cc (Object::set_target): Remove the version that looks up
11877 a target and sets it.
11878 (Sized_relobj::setup): Take a Target object instead of
11879 an elfcpp::Ehdr as parameter. Adjust call to set_target.
11880 (make_elf_sized_object): Find target and ask target to
11881 make an ELF object.
11882 * object.h: (Object::set_target): Remove the version that looks up
11883 a target and sets it.
11884 (Sized_relobj::setup): Take a Target object instead of
11885 an elfcpp:Ehdr as parameter.
11886 * target.cc: Include dynobj.h.
11887 (Target::do_make_elf_object_implementation): New.
2e702c99 11888 (Target::do_make_elf_object): New.
f733487b
DK
11889 * target.h (Target::make_elf_object): New template declaration.
11890 (Target::do_make_elf_object): New method declarations.
11891 (Target::do_make_elf_object_implementation): New template declaration.
11892
cc70f101
ILT
118932009-08-14 Ian Lance Taylor <iant@google.com>
11894
11895 * gold.h (FUNCTION_NAME): Define.
11896 (gold_unreachable): Use FUNCTION_NAME.
11897
ef5e0cb1
ST
118982009-08-12 Sriraman Tallam <tmsriram@google.com>
11899
11900 * icf.cc (Icf::find_identical_sections): Issue a warning when a
11901 symbol in the --keep-unique list is not found.
11902
48c187ce
ST
119032009-08-12 Sriraman Tallam <tmsriram@google.com>
11904
11905 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
11906 been maked as --keep-unique.
11907 (Icf::unfold_section): New function.
11908 * icf.h (Icf::unfold_section): New function.
11909 * options.h (General_options::keep_unique): New option.
11910 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
11911 * testsuite/Makefile.in: Regenerate.
11912 * testsuite/icf_keep_unique_test.sh: New file.
11913 * testsuite/icf_keep_unique_test.cc: New file.
11914
645afe0c
CC
119152009-08-12 Cary Coutant <ccoutant@google.com>
11916
11917 PR 10471
11918 * resolve.cc (Symbol_table::resolve): Check for references from
11919 dynamic objects to hidden and internal symbols.
11920 * testsuite/Makefile.am (hidden_test.sh): New test.
11921 * testsuite/Makefile.in: Regenerate.
11922 * testsuite/hidden_test.sh: New script.
11923 * testsuite/hidden_test_1.c: New test source.
11924 * testsuite/hidden_test_main.c: New test source.
11925
11af873f
DK
119262009-08-11 Doug Kwan <dougkwan@google.com>
11927
11928 * arm.cc: Update comments.
11929 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
11930 segment to locate the .ARM.exidx section if present.
11931
b9f7d72d
DK
119322009-08-09 Doug Kwan <dougkwan@google.com>
11933
11934 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
11935 patch.
11936
ddd3c53c
ST
119372009-08-07 Sriraman Tallam <tmsriram@google.com>
11938 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
11939 compiler warnings.
11940
27721062
ST
119412009-08-06 Sriraman Tallam <tmsriram@google.com>
11942
11943 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
11944 valid tls_segment only for non-debug-section relocations.
11945 * testsuite/Makefile.am: Add gc_tls_test.
11946 * testsuite/Makefile.in: Regenerate.
11947 * testsuite/gc_tls_test.cc: New file.
11948 * testsuite/gc_tls_test.sh: New file.
11949
ef15dade 119502009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 11951
ef15dade
ST
11952 * icf.cc: New file.
11953 * icf.h: New file.
11954 * Makefile.am (CCFILES): Add icf.cc.
11955 (HFILES): Add icf.h
11956 * Makefile.in: Regenerate.
11957 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
11958 * gc.h (gc_process_relocs): Populate lists used by icf to contain
11959 section, symbol and addend information for the relocs.
11960 * gold.cc (queue_middle_tasks): Call identical code folding.
11961 * gold.h: Add defines for multimap.
11962 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
11963 to the call of finalize_local_symbols.
11964 * main.cc (main): Create object of class Icf.
11965 * object.cc (Sized_relobj::do_layout): Allow this function to be
11966 called twice during icf.
11967 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
11968 to sections marked as identical by icf.
11969 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
11970 when available.
11971 (Sized_relobj::do_section_entsize): New function.
11972 * object.h (Object::section_entsize): New function.
11973 (Object::do_section_entsize): New pure virtual function.
11974 (Relobj::finalize_local_symbols): Add new parameter.
11975 (Relobj::do_section_entsize): New function.
11976 * options.h (General_options::icf): New option.
11977 (General_options::icf_iterations): New option.
11978 (General_options::print_icf_sections): New option.
11979 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
11980 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
11981 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
11982 icf.
11983 * symtab.cc (Symbol_table::is_section_folded): New function.
11984 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
11985 to sections marked as identical by icf.
11986 * symtab.h (Symbol_table::set_icf): New function.
11987 (Symbol_table::icf): New function.
11988 (Symbol_table::is_section_folded): New function.
11989 (Symbol_table::icf_): New data member.
11990 * target-reloc.h (relocate_section): Ignore sections folded by icf.
11991 * testsuite/Makefile.am: Add commands to build icf_test.
11992 * testsuite/Makefile.in: Regenerate.
11993 * testsuite/icf_test.sh: New file.
11994 * testsuite/icf_test.cc: New file.
11995
c3b65ac4
CD
119962009-07-24 Chris Demetriou <cgd@google.com>
11997
11998 * layout.cc (is_compressible_debug_section): Fix incorrect
11999 comment about compressed section names.
12000
1caf2c51
ILT
120012009-07-20 Ian Lance Taylor <ian@airs.com>
12002
12003 PR 10419
12004 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
12005
1ef4d87f
ILT
120062009-07-16 Ian Lance Taylor <iant@google.com>
12007
12008 PR 10400
12009 * layout.h: #include <map>.
12010 (class Kept_section): Change from struct to class. Add accessors
12011 and setters. Add section size to Comdat_group mapping. Change
12012 Comdat_group to std::map. Add is_comdat_ field. Add
12013 linkonce_size field in union.
12014 (class Layout): Update declaration of find_or_add_kept_section.
12015 Don't declare find_kept_object.
12016 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
12017 parameter. Add object, shndx, is_comdat, and is_group_name
12018 parameters. Change all callers. Adjust for new Kept_section.
12019 (Layout::find_kept_object): Remove.
12020 * object.cc (Sized_relobj::include_section_group): Update use of
12021 Kept_section. Rename secnum to shndx. Only record
12022 Kept_comdat_section if sections are the same size.
12023 (Sized_relobj::include_linkonce_section): Update use of
12024 Kept_section. Only record Kept_comdat_section if sections are the
12025 same size. Set size of linkonce section.
12026 (Sized_relobj::map_to_kept_section): Update call to
12027 get_kept_comdat_section.
12028 * object.h (class Sized_relobj): Rename fields in
12029 Kept_comdat_section to drop trailing underscores; change object
12030 field to Relobj*. Change Kept_comdat_section_table to store
12031 struct rather than pointer.
12032 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
12033 Add kept_object and kept_shndx parameters. Change all callers.
12034 (Sized_relobj::get_kept_comdat_section): Change return type to
12035 bool. Add kept_object and kept_shndx parameters. Change all
12036 callers.
12037 * plugin.cc (Pluginobj::include_comdat_group): Update call to
12038 Layout::find_or_add_kept_section.
12039
37c3b7b0
ILT
120402009-07-09 Ian Lance Taylor <iant@google.com>
12041
12042 * merge.cc (Object_merge_map::initialize_input_to_output_map):
12043 Reserve space in the hash table.
12044
98fa85cb
ILT
120452009-07-06 Mikolaj Zalewski <mikolajz@google.com>
12046
12047 * fileread.cc (File_read::get_mtime): New method.
12048 * fileread.h (Timespec): New structure.
12049 (File_read::get_mtime): New method.
12050 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
12051 Renamed from timestamp_nsec.
12052 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
12053 Elf_Xword.
e1df38aa 12054 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 12055 timestamp_nsec.
e1df38aa 12056 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
12057 (Incremental_inputs::report_obejct): Save mtime; style fix.
12058 (Incremental_inputs::report_script): Save mtime; style fix.
12059 (Incremental_inputs::finalize_inputs): Style fix.
12060 (Incremental_inputs::finalize): Style fix.
12061 (Incremental_inputs::create_input_section_data): Store inputs
12062 mtime.
12063 * incremental.h (Incremental_inputs::report_script): Add mtime
12064 argument.
12065 (Incremental_inputs::Input_info::Input_info): Intialize only one
12066 union member.
12067 (Incremental_inputs::Input_info::archive): Move to nameless
12068 union.
12069 (Incremental_inputs::Input_info::obejct): Move to nameless union.
12070 (Incremental_inputs::Input_info::script): Move to nameless union.
12071 (Incremental_inputs::mtime): New field.
12072 * script.cc (read_input_script): Pass file mtime to
12073 Incremental_input.
12074 * script.h (Script_info::inputs): Style fix.
12075
c9d70757
ILT
120762009-07-01 Ian Lance Taylor <ian@airs.com>
12077
12078 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
12079 instead of 32.
12080
9c547ec3
ILT
120812009-06-24 Ian Lance Taylor <iant@google.com>
12082
12083 PR 10156
12084 * layout.cc (Layout::choose_output_section): If we find an
12085 existing section, update the flags.
12086 (Layout::create_notes): New function, broken out of
12087 Layout::finalize.
12088 (Layout::finalize): Don't create note sections.
12089 (Layout::create_note): Don't crash if linker script discards
12090 section.
12091 (Layout::create_gold_note): Likewise.
12092 (Layout::create_build_id): Likewise. Don't set
12093 after_input_sections on the section.
12094 (Layout::create_executable_stack_info): Remove target parameter.
12095 Change caller.
12096 * layout.h (class Layout): Declare create_notes. Update
12097 declaration of create_executable_stack_info.
12098 * gold.cc (queue_middle_tasks): Call create_notes.
12099 * output.cc (Output_section::update_flags_for_input_section): Move
12100 here from output.h. If SHF_ALLOC flag is newly set, mark address
12101 invalid.
12102 * output.h (Output_data::mark_address_invalid): New function.
12103 (class Output_section): Only declare, not define,
12104 update_flags_for_input_section. Remove set_flags.
12105
55458500
ILT
121062009-06-24 Ian Lance Taylor <iant@google.com>
12107
12108 * script-sections.cc (Output_section_definition::
12109 set_section_addresses): Rename shadowing local load_address to
12110 laddr.
12111
1307d6cd
ILT
121122009-06-24 Ian Lance Taylor <iant@google.com>
12113
12114 PR 10244
12115 * reloc.cc (relocate_sections): Skip empty relocation sections.
12116
ec3f783e
ILT
121172009-06-23 Ian Lance Taylor <iant@google.com>
12118
12119 PR 10156
12120 * layout.cc (Layout::create_note): Use choose_output_section
12121 rather than make_output_section.
12122
459c9f1c
ILT
121232009-06-23 Ian Lance Taylor <iant@google.com>
12124
12125 PR 10237
12126 * options.cc (General_options::parse_V): Set printed_version_.
12127 (General_options::General_options): Initialize printed_version_.
12128 * options.h (class General_options): Add printed_version_ field.
12129 * gold.cc (queue_initial_tasks): If there are no input files,
12130 don't give a fatal error if we printed the version information.
12131 (queue_middle_tasks): If using -r with a shared object, give a
12132 fatal error rather than an ordinary error.
12133
1518dc8f
ILT
121342009-06-23 Ian Lance Taylor <iant@google.com>
12135
12136 PR 10219
12137 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
12138 (Layout::make_output_section): Set have_stabstr_section_ if we see
12139 a .stab*str section.
12140 (Layout::finalize): Call link_stabs_sections.
12141 (Layout::link_stabs_sections): New file.
12142 * layout.h (class Layout): Add have_stabstr_section_ field.
12143 Declare link_stabs_sections.
12144
3d857b98
DK
121452009-06-23 Doug Kwan <dougkwan@google.com>
12146
12147 * Makefile.am (libgold_a_LIBADD): New.
12148 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
2e702c99 12149 * Makefile.in: Regenerate.
3d857b98
DK
12150 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
12151 * configure: Regenerate.
12152 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
12153 * fileread.cc: Include sys/state.h
12154 * gold.h: Declare memmem and strndup if found missing.
12155 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
12156
0639a6f6
ILT
121572009-06-23 Ian Lance Taylor <iant@google.com>
12158
12159 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
12160 * configure: Rebuild.
12161
8d63875c
ILT
121622009-06-23 Ian Lance Taylor <iant@google.com>
12163
12164 PR 10147
12165 * object.cc (Object::section_contents): Don't try to get a view if
12166 the section has length zero.
12167 (Object::handle_gnu_warning_section): If the section is empty, use
12168 the name of the section as the warning.
12169
f7c8a183
ILT
121702009-06-23 Ian Lance Taylor <iant@google.com>
12171
12172 PR 10133
12173 * stringpool.h (class Stringpool_template): Add optimize_ field.
12174 (Stringpool_template::set_optimize): New function.
12175 * stringpool.cc (Stringpool_template::Stringpool_template):
12176 Initialize optimize_ field.
12177 (Stringpool_template::set_string_offsets): Test local optimize
12178 fild rather than parameter.
12179 * layout.cc (Layout::Layout): Call set_optimize on the section
12180 name stringpool.
12181
e6a307ba
ILT
121822009-06-22 Ian Lance Taylor <iant@google.com>
12183
12184 PR 10030
12185 * yyscript.y: Parse TARGET.
12186 * script.cc (script_set_target): New function.
12187 * script-c.h (script_set_target): Declare.
12188 * options.cc (General_options::string_to_object_format): Rename
12189 from string_to_object_format in anonymous namespace. Change
12190 callers.
12191 * options.h (class General_options): Declare
12192 string_to_object_format.
12193
3ee173de
ILT
121942009-06-22 Ian Lance Taylor <iant@google.com>
12195
12196 * script-sections.cc (Script_sections::create_segments): Don't put
12197 program headers in a PT_LOAD segment if -n or -N.
12198
121992009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
12200
12201 PR 10141
12202 * options.h (class General_options): Add -z lazy and -z now. Sort
12203 -z options into alphabetical order.
12204 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
12205
cd6739a1 122062009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
12207
12208 * layout.cc (Layout::make_output_section): Call
12209 Target::new_output_section.
12210 (Layout::attach_allocated_section_to_segment): Put large section
12211 sections in a separate load segment with the large segment flag
12212 set.
12213 (Layout::segment_precedes): Sort large data segments after other
12214 load segments.
12215 (align_file_offset): New static function.
12216 (Layout::set_segment_offsets): Use align_file_offset.
12217 * output.h (class Output_section): Add is_small_section_ and
12218 is_large_section_ fields.
12219 (Output_section::is_small_section): New function.
12220 (Output_section::set_is_small_section): New function.
12221 (Output_section::is_large_section): New function.
12222 (Output_section::set_is_large_section): New function.
12223 (Output_section::is_large_data_section): New function.
12224 (class Output_segment): Add is_large_data_segment_ field.
12225 (Output_segment::is_large_data_segment): New function.
12226 (Output_segment::set_is_large_data_segment): New function.
12227 * output.cc (Output_section::Output_section): Initialize new
12228 fields.
12229 (Output_segment::Output_segment): Likewise.
12230 (Output_segment::add_output_section): Add assertion that large
12231 data sections always go in large data segments. Force small data
12232 sections to the end of the list of data sections. Force small BSS
12233 sections to the start of the list of BSS sections. For large BSS
12234 sections to the end of the list of BSS sections.
12235 * symtab.h (class Symbol): Declare is_common_shndx.
12236 (Symbol::is_defined): Check Symbol::is_common_shndx.
12237 (Symbol::is_common): Likewise.
12238 (class Symbol_table): Define enum Commons_section_type. Update
12239 declarations. Add small_commons_ and large_commons_ fields.
12240 * symtab.cc (Symbol::is_common_shndx): New function.
12241 (Symbol_table::Symbol_table): Initialize new fields.
12242 (Symbol_table::add_from_object): Put small and large common
12243 symbols in the right list.
12244 (Symbol_table::sized_finalized_symbol): Check
12245 Symbol::is_common_shndx.
12246 (Symbol_table::sized_write_globals): Likewise.
12247 * common.cc (Symbol_table::do_allocate_commons): Allocate new
12248 common symbol lists. Don't call do_allocate_commons_list if the
12249 list is empty.
12250 (Symbol_table::do_allocate_commons_list): Remove is_tls
12251 parameter. Add comons_section_type parameter. Change all
12252 callers. Handle small and large common symbols.
12253 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
12254 Symbol::is_common_shndx.
12255 * resolve.cc (symbol_to_bits): Likewise.
12256 * target.h (Target::small_common_shndx): New function.
12257 (Target::small_common_section_flags): New function.
12258 (Target::large_common_shndx): New function.
12259 (Target::large_common_section_flags): New function.
12260 (Target::new_output_section): New function.
12261 (Target::Target_info): Add small_common_shndx, large_common_shndx,
12262 small_common_section_flags, and large_common_section_flags
12263 fields.
12264 (Target::do_new_output_section): New virtual function.
12265 * arm.cc (Target_arm::arm_info): Initialize new fields.
12266 * i386.cc (Target_i386::i386_info): Likewise.
12267 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
12268 Likewise.
12269 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
12270 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
12271 (Target_x86_64::do_new_output_section): New function.
12272 * configure.ac: Define conditional MCMODEL_MEDIUM.
12273 * testsuite/Makefile.am (check_PROGRAMS): Add large.
12274 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
12275 (large_LDFLAGS): Define.
12276 * testsuite/large.c: New file.
12277 * testsuite/testfile.cc (Target_test::test_target_info):
12278 Initialize new fields.
12279 * configure, testsuite/Makefile.in: Rebuild.
12280
bb04269c
DK
122812009-06-05 Doug Kwan <dougkwan@google.com>
12282
12283 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 12284 * Makefile.in: Regenerate.
bb04269c
DK
12285 * i386.cc (class Target_i386): Define new virtual method to
12286 override do_is_local_label_name in parent.
12287 * object.cc (Sized_relobj::do_count_local_symbols): Discard
12288 local symbols if --discard-locals or -X is given.
12289 * options.h (class General_options): Declare new options
12290 '--discard-locals' and '-X' for discarding locals.
12291 * target.h (class Target): Define new methods is_local_label_name.
12292 Declare new virtual method do_is_local_label_name.
12293 * target.cc: New file.
12294 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
12295 (check_SCRIPTS): Add discard_locals_test.sh.
12296 (check_DATA): Add discard_local_tests.syms.
12297 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
12298 (discard_local_tests.syms, discard_locals_test.o): New make rules.
12299 * testsuite/Makefile.in: Regenerate.
12300 * testsuite/discard_locals_test.c: New file.
12301 * testsuite/discard_locals_test.sh: Same.
12302
805bb01c
DK
123032009-06-05 Doug Kwan <dougkwan@google.com>
12304
12305 * object.cc (Sized_relobj::Sized_relobj): Initialize
12306 discarded_eh_frame_shndx_ to -1U.
12307 (Sized_relobj::do_layout): Record index of a discard .eh_frame
12308 section.
12309 (Sized_relobj::do_count_local_symbols): Skip local symbols in
12310 a discarded .eh_frame section.
12311 (Sized_relobj::do_finalize_local_symbols): Ditto.
12312 * object.h (class Sized_relobj): Declare new member
12313 discarded_eh_frame_shndx_.
12314 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
12315 (local_labels_test.o, local_labels_test): New rules.
12316 * testsuite/Makefile.in: Regenerate.
12317
1dcd334d
DK
123182009-06-04 Doug Kwan <dougkwan@google.com>
12319
12320 * layout.cc (Layout::section_name_mapping): Add mapping for
12321 special ARM sections.
12322
96d49306
DK
123232009-06-03 Doug Kwan <dougkwan@google.com>
12324
12325 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
12326 (utils::has_overflow): Same.
12327
dff16297
ILT
123282009-06-03 Ian Lance Taylor <iant@google.com>
12329
12330 * layout.cc (Layout::section_name_mapping): New array, replacing
12331 Layout::linkonce_mapping.
12332 (Layout::section_name_mapping_count): New variable, replacing
12333 Layout::linkonce_mapping_count.
12334 (Layout::linkonce_output_name): Remove.
12335 (Layout::output_section_name): Rewrite.
12336 * layout.h (class Layout): Rename Linkonce_mapping to
12337 Section_name_mapping, linkonce_mapping to section_name_mapping,
12338 linkonce_mapping_count to section_name_mapping_count. Don't
12339 declare linkonce_output_name.
12340
c121c671
DK
123412009-06-03 Doug Kwan <dougkwan@google.com>
12342
12343 * gold/arm.cc (namespace utils): New.
12344 (Target_arm::reloc_is_non_pic): Define new method.
12345 (class Arm_relocate_functions): New.
12346 (Target_arm::Relocate::relocate): Handle relocation types used by
12347 Android.
12348
07800fab
ILT
123492009-06-03 Ian Lance Taylor <iant@google.com>
12350
12351 * arm.cc (Target_arm::scan::global): Use || instead of |.
12352
c121c671
DK
123532009-06-02 Doug Kwan <dougkwan@google.com>
12354
12355 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
12356 issued_non_pic_error_.
12357 (class Target_arm::Scan): Declare new method check_non_pic.
12358 Define new method symbol_needs_plt_entry.
12359 Declare new data member issued_non_pic_error_.
12360 (class Target_arm::Relocate): Declare new method
12361 should_apply_static_reloc.
12362 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
12363 (Target_arm::Scan::check_non_pic): Define new method.
12364 (Target_arm::Scan::local): Handle a small subset of reloc types used
12365 by Android.
12366 (Target_arm::Scan::local): Same.
12367 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
12368
b19b0c6d
ILT
123692009-05-31 Mikolaj Zalewski <mikolajz@google.com>
12370
12371 * incremental.cc (Incremental_inputs::report_command_line): Filter
12372 out --incremental-* options.
12373
94cdfcff
DK
123742009-05-29 Doug Kwan <dougkwan@google.com>
12375
12376 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
12377 template class.
12378 (class Target_arm): Update comment.
12379 (Target_arm::Target_arm): Initialize new data members GOT_,
12380 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
12381 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
12382 and Target_arm::rel_dyn_section.
12383 Declare new_enum Target_arm::Got_type.
12384 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
12385 and DYNBSS_.
12386 Update commments for member do_dynsym_value.
12387 (Target_arm::got_size, Target_arm::plt_section,
12388 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
12389 new methods inside class defintion.
12390 (Target_arm::got_section): Define new method.
12391 (Target_arm::rel_dyn_section): Same.
12392 (Output_data_plt_arm): New template class.
12393 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
12394 (Output_data_plt_arm:do_adjust_output_section): Define new method.
12395 (Output_data_plt_arm::add_entry): Same.
12396 (Output_data_plt_arm::first_plt_entry): Define new
12397 static data member for PLT instruction template.
12398 (Output_data_plt_arm::plt_entry): Same.
12399 (Output_data_plt_arm::do_write): Define new method.
12400 (Target_arm::make_plt_entry): Same.
12401 (Target_arm::do_finalize_sections): Same.
12402 (Target_arm::do_dynsym_value): Same.
12403
4a657b0d
DK
124042009-05-28 Doug Kwan <dougkwan@google.com>
12405
12406 * Makefile.am (TARGETSOURCES): Add arm.cc.
12407 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
12408 * Makefile.in: Regenerate.
12409 * arm.cc: New file.
12410 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
12411
e7ae8c36
DK
124122009-05-26 Doug Kwan <dougkwan@google.com>
12413
12414 * options.cc (General_options::parse_exclude_libs). Fix a comment.
12415 (General_options::check_excluded_libs): Strip off directories in
12416 archive name before matching like GNU ld does.
12417 * testsuite/Makefile.am (MOSTLYCLEANFILES,
12418 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
12419 (exclude_libs_test_LDFLAGS): Add linker option
12420 -Wl,--exclude-libs,libexclude_libs_test_3
12421 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
12422 an explicit archive without using -l.
12423 (alt/libexclude_libs_test_3.a): New make rule.
12424 * testsuite/Makefile.in: Regenerate.
12425 * testsuite/exclude_libs_test.c : Declare lib3_default().
12426 (main): Call it.
12427 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
12428 * exclude_libs_test_3.c: New file.
12429
f12e7348
NC
124302009-05-26 Nick Clifton <nickc@redhat.com>
12431
12432 * po/id.po: New Indonesian translation.
12433 * po/gold.pot: Updated template file.
12434
4daadc0d
ST
124352009-05-22 Sriraman Tallam <tmsriram@google.com>
12436
e1df38aa 12437 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
12438 gc_comdat_test files. Add -Wl,--gc-sections to build
12439 gc_comdat_test.
12440 * testsuite/Makefile.in: Regenerate.
12441 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
12442
531813ad
ST
124432009-05-21 Sriraman Tallam <tmsriram@google.com>
12444
12445 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
12446 kept comdat section was garbage collected.
12447 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
12448 * testsuite/Makefile.in: Regenerate.
12449 * testsuite/gc_comdat_test.sh: New file.
12450 * testsuite/gc_comdat_test_1.cc: New file.
12451 * testsuite/gc_comdat_test_2.cc: New file.
12452
65514900
CC
124532009-05-19 Doug Kwan <dougkwan@google.com>
12454
12455 * archive.cc (Archive::Archive): Move constructor from archive.h
12456 to here. Initialize no_export_.
12457 (Archive::get_elf_object_for_member): Set no_export flag of object.
12458 * archive.h (Archive::Archive): Move constructor body to
12459 archive.cc.
12460 (Archive::no_export): New method.
12461 (Archive::no_export_): New field.
12462 * object.h (Object::Object): Initialize no_export_ to false.
12463 (Object::no_export, Object::set_no_export): New methods.
12464 (Object::no_export_): New field.
12465 * options.cc (General_options::parse_exclude_libs): New method.
12466 (General_options::check_excluded_libs) Same.
12467 * options.h (exclude_libs): New option.
12468 (General_options::check_excluded_libs): New method declaration.
12469 (General_options::excluded_libs_): New field.
12470 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
12471 default or protected visibility if an object has no-export flag set.
12472 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
12473 (check_SCRIPTS): Add exclude_libs_test.sh.
12474 (check_DATA): Add exclude_libs_test.syms.
12475 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
12476 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
12477 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
12478 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
12479 (exclude_libs_test.syms, libexclude_libs_test_1.a,
12480 libexclude_libs_test_2.a): New rules.
12481 * testsuite/Makefile.in: Regenerate.
12482 * testsuite/exclude_libs_test.c: New file.
12483 * testsuite/exclude_libs_test.sh: Ditto.
12484 * testsuite/exclude_libs_test_1.c: Ditto.
12485 * testsuite/exclude_libs_test_2.c: Ditto.
12486
1b77ea50
ILT
124872009-05-15 Ian Lance Taylor <iant@google.com>
12488
12489 * configure.ac: Check for declarations for cases where libiberty.h
12490 checks HAVE_DECL_xxx.
12491 * configure, config.in: Rebuild.
12492
072fe7ce
ILT
124932009-05-15 Mikolaj Zalewski <mikolajz@google.com>
12494
12495 * gold.h (Incremental_argument_list): Remove (invalid) forward
12496 declaration.
12497 * incremental.cc (Incremental_inputs::report_achive): New method.
12498 (Incremental_inputs::report_object): New method.
12499 (Incremental_inputs::report_script): New method.
12500 (Incremental_inputs::finalize_inputs): New method.
12501 (Incremental_inputs::finalize): Call finalize_inputs().
12502 (Incremental_inputs::sized_create_incremental_inputs_section_data):
12503 Create inputs entries.
12504 * incremental.h (Incremental_input_type): New enum.
12505 (Incremental_inputs::Incremental_input): Initialize new fields.
12506 (Incremental_inputs::report_inputs): New method.
12507 (Incremental_inputs::report_achive): New method.
12508 (Incremental_inputs::report_object): New method.
12509 (Incremental_inputs::report_script): New method.
12510 (Incremental_inputs::finalize_inputs): New method.
12511 (Incremental_inputs::Input_info): New struct.
12512 (Incremental_inputs::Input_info_map): New typedef.
12513 (Incremental_inputs::lock_): New field.
12514 (Incremental_inputs::Inputs_): New field.
12515 (Incremental_inputs::Inputs_map): New field.
12516 * main.cc (main): Call Incremental_input::report_inputs.
12517 * options.h (Input_argument_list): Typedef moved from
12518 Input_arguments.
12519 (Input_file_group::Files): Remove, use ::Input_argument_list.
12520 (Input_file_group::Input_argument_list): Remove, use
12521 ::Input_argument_list.
12522 * plugin.cc (Plugin_manager::add_input_file): Add error in
12523 incremental build.
12524 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
12525 functions.
12526 * script.cc (read_input_script): Call
12527 Incremental_input::report_script.
12528 * script.h (Script_info): New class.
12529
b0481b0b
ILT
125302009-04-27 Ian Lance Taylor <iant@google.com>
12531
12532 * x86_64.cc (do_adjust_output_section): Set entsize to
12533 plt_entry_size.
12534
b22a5a41 125352009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
12536
12537 * output.cc (Output_file::close): After short writes, continue
12538 writing from the correct offset in the buffer being written.
12539
40fde488
CD
125402009-04-23 Chris Demetriou <cgd@google.com>
12541
12542 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
12543 * configure: Regenerate.
12544 * config.in: Regenerate.
12545 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
12546 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
12547
3ce2c28e
ILT
125482009-04-21 Mikolaj Zalewski <mikolajz@google.com>
12549
12550 * incremental.cc (Incremental_inputs_header_data): Renamed from
12551 Incremental_input_header_data.
12552 (Incremental_inputs_header_data::data_size): New field.
12553 (Incremental_inputs_header_data::put_input_file_count): Renamed
12554 from input_file_count.
12555 (Incremental_inputs_header_data::put_command_line_offset): Renamed
12556 from command_line_offset.
12557 (Incremental_inputs_header_data::put_reserved): Renamed from
12558 put_reserved.
12559 (Incremental_inputs_entry_data): Renamed from
12560 Incremental_input_entry_data.
12561 (Incremental_inputs_entry_data::data_size): New field.
12562 (Incremental_inputs::report_command_line): New method.
12563 (Incremental_inputs::finalize): New method.
12564 (Incremental_inputs::create_incremental_inputs_data): New method.
12565 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
12566 * incremental.h: New file.
12567 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
703d02da 12568 (Layout::finalize): Create incremental inputs section in
3ce2c28e 12569 incremental builds.
703d02da 12570 (Layout::create_incremental_info_sections): New method.
3ce2c28e 12571 * layout.h (Layout::incremental_inputs): New method.
703d02da
AM
12572 (Layout::create_incremental_info_sections): New method.
12573 (Layout::incremental_inputs_): New field.
3ce2c28e
ILT
12574 * main.cc (main): Notify Incremental_input of the command line.
12575
e55bde5e
ILT
125762009-04-01 Ian Lance Taylor <iant@google.com>
12577 Mikolaj Zalewski <mikolajz@google.com>
12578
12579 * gold.h (reserve_unordered_map): Define, three versions, one for
12580 each version of Unordered_map.
12581 * layout.cc (Layout::Layout): Remove options parameter. Add
12582 number_of_input_files parameter. Don't initialize options_.
12583 Initialize number_of_input_files_ and resized_signatures_. Move
12584 sections_are_attached_.
12585 (Layout::layout_group): Reserve space for group_signatures_.
12586 (Layout::find_or_add_kept_section): Change name parameter to be a
12587 reference. Resize signatures_ map when it gets large enough.
12588 (Layout::layout_eh_frame): Use parameters->options() instead of
12589 this->options_.
12590 (Layout::make_output_section): Likewise.
12591 (Layout::attach_allocated_section_to_segment): Likewise.
12592 (Layout::finalize, Layout::create_executable_stack): Likewise.
12593 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
12594 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
12595 * layout.h (class Layout): Update declarations. Remove options_
12596 field. Add number_of_input_files_ and resized_signatures_
12597 fields. Move sections_are_attached_ field.
12598 * main.cc (main): Pass number of input files to Layout
12599 constructor. Don't pass options.
12600
154b857c
ILT
126012009-03-30 Ian Lance Taylor <iant@google.com>
12602
12603 * ffsll.c (ffsll): Correct implementation.
12604
2f35ab9b
ILT
126052009-03-27 Ian Lance Taylor <iant@google.com>
12606
fd03461a
ILT
12607 * ffsll.c: New file.
12608 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
12609 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
12610 * ftruncate.c (ftruncate): Declare before definition.
12611 * mremap.c (mremap): Likewise.
12612 * pread.c (pread): Likewise.
12613 * configure, Makefile.in, config.in: Rebuild.
12614
2f35ab9b
ILT
12615 * mremap.c: New file.
12616 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
12617 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
12618 (mremap): Declare if HAVE_MREMAP is not defined.
12619 * configure, Makefile.in, config.in: Rebuild.
12620
33aea2fd
CC
126212009-03-27 Cary Coutant <ccoutant@google.com>
12622
12623 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
12624 position independent.
12625 * sparc.cc (Target_sparc::check_non_pic): Likewise.
12626 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
12627
6d479619
CC
126282009-03-24 Cary Coutant <ccoutant@google.com>
12629
12630 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
12631 an executable.
12632 (needs_dynamic_reloc): Likewise.
12633
afc06bb8
ILT
126342009-03-24 Ian Lance Taylor <iant@google.com>
12635
12636 * yyscript.y (file_cmd): Recognize EXTERN.
12637 (extern_name_list, extern_name_list_body): New nonterminals.
12638 * script.cc (script_add_extern): Define.
12639 * script-c.h (script_add_extern): Declare.
12640
f6060a4d
ILT
126412009-03-24 Rafael Avila de Espindola <espindola@google.com>
12642
12643 * object.cc (is_elf_object): Define.
12644 * object.h (is_elf_object): Declare.
12645 * archive.cc (Archive::get_elf_object_for_member): Call
12646 is_elf_object.
33aea2fd 12647 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 12648
26736d8e
ILT
126492009-03-24 Elliott Hughes <enh@google.com>
12650
12651 * output.cc (Output_file::map_anonymous): Define.
12652 (Output_file::map): Use map_anonymous. If the regular mmap fails,
12653 try an anonymous one. Report the size if the mmap fails.
12654 * output.h (class Output_file): Declare map_anonymous.
12655
22fd9730
ILT
126562009-03-24 Ian Lance Taylor <iant@google.com>
12657
12658 * target-select.cc (instantiate_target): Don't acquire the lock if
12659 the instantiated_target_ field has already been set.
12660
cb010894
ILT
126612009-03-23 Ian Lance Taylor <iant@google.com>
12662
7f055c20
ILT
12663 * gold-threads.h (class Initialize_lock): Define.
12664 * gold-threads.cc (class Initialize_lock_once): Define.
12665 (initialize_lock_control): New static variable.
12666 (initialize_lock_pointer): New static variable.
12667 (initialize_lock_once): New static function.
12668 (Initialize_lock::Initialize_lock): Define.
12669 (Initialize_lock::initialize): Define.
12670 * target-select.h: Include "gold-threads.h".
12671 (class Target_selector): Add lock_ and initialize_lock_ fields.
12672 Don't define instantiate_target, just declare it.
12673 * target-select.cc (Target_selector::Target_selector): Initialize
12674 new fields.
12675 (Target_selector::instantiate_target): Define.
12676 * descriptors.h: Include "gold-threads.h".
12677 (class Descriptors): Add initialize_lock_ field.
12678 * descriptors.cc (Descriptors::Descriptors): Initialize new
12679 field.
12680 (Descriptors::open): Use initialize_lock_ field
12681 * errors.h (class Errors): Add initialize_lock_ field.
12682 * errors.cc (Errors::Errors): Initialize new field.
12683 (Errors::initialize_lock): Use initialize_lock_ field.
12684 * powerpc.cc (class Target_selector_powerpc): Remove
12685 instantiated_target_ field. In do_recognize call
12686 instantiate_target rather than do_instantiate_target. In
12687 do_instantiate_target just allocate a new target.
12688 * sparc.cc (class Target_selector_sparc): Likewise.
12689
36959681
ILT
12690 * freebsd.h: New file.
12691 * i386.cc: Include "freebsd.h".
12692 (Target_i386): Derive from Target_freebsd rather than
12693 Sized_target.
12694 (Target_selector_i386): Derive from Target_selector_freebsd rather
12695 than Target_selector.
12696 * x86_64.cc: Include "freebsd.h".
12697 (Target_x86_64): Derive from Target_freebsd rather than
12698 Sized_target.
12699 (Target_selector_x86_64): Derive from Target_selector_freebsd
12700 rather than Target_selector.
12701 * target.h (class Target): Add adjust_elf_header and
12702 do_adjust_elf_header.
12703 * output.cc (Output_file_header:: do_sized_write): Call target
12704 adjust_elf_header routine.
12705 * configure.tgt: Set targ_osabi.
12706 * configure.ac: Define GOLD_DEFAULT_OSABI.
12707 * parameters.cc (Parameters::default_target): Pass
12708 GOLD_DEFAULT_OSABI to select_target.
12709 * target-select.h (class Target_selector): Make instantiate_target
12710 protected rather than private.
12711 * Makefile.am (HFILES): Add freebsd.h.
12712 * configure, Makefile.in, config.in: Rebuild.
12713
cb010894
ILT
12714 * merge.cc (do_add_input_section): Correct pend value. Change
12715 message about last entry not being null terminated from error to
12716 warning.
12717
0e879927
ILT
127182009-03-20 Mikolaj Zalewski <mikolajz@google.com>
12719
12720 * incremental.cc: New file.
12721 * Makefile.am (CCFILES): Add incremental.cc.
12722 * Makefile.in: Rebuild.
12723
41105937
PP
127242009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
12725
12726 * layout.cc (Layout::output_section_name): Preserve names
12727 of '.note.' sections.
e1df38aa 12728
60439920
ILT
127292009-03-19 Ian Lance Taylor <iant@google.com>
12730
12731 * descriptors.cc (Descriptors::open): Check that the options are
12732 valid before using them.
12733
0d371ad3
ILT
127342009-03-18 Ian Lance Taylor <iant@google.com>
12735
12736 * script-sections.h: Include <list>.
12737 (class Script_sections): Change Sections_elements from std::vector
12738 to std::list. Typedef public Elements_iterator. Add
12739 orphan_section_placement_, data_segment_align_start_, and
12740 saw_data_segment_align_ fields. Remove data_segment_align_index_
12741 field.
12742 * script-sections.cc (class Orphan_section_placement): New class.
12743 (class Sections_element): Add virtual functions is_relro and
12744 orphan_section_init. Remove virtual function place_orphan_here.
12745 (class Output_section_definition): Add is_relro and
12746 orphan_section_init. Remove place_orphan_here.
12747 (class Orphan_output_section): Likewise.
12748 (Script_sections::Script_sections): Update for field changes.
12749 (Script_sections::data_segment_align): Set saw_data_segment_align_
12750 and data_segment_align_start_, not data_segment_align_index.
12751 (Script_sections::data_segment_relro_end): Check
12752 saw_data_segment_align_. Use data_segment_align_start_ rather
12753 than data_segment_align_index_.
12754 (Script_sections::place_orphan): Rewrite to use
12755 Orphan_section_placement.
12756
9201d894
ILT
127572009-03-17 Ian Lance Taylor <iant@google.com>
12758
9c5b8369
ILT
12759 * archive.cc (Archive::add_symbols): Check for a version attached
12760 to the symbol name in the archive map.
12761 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
12762 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
12763 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
12764 (ver_test_11.a): New target.
12765 * testsuite/Makefile.in: Rebuild.
12766
9201d894
ILT
12767 * configure.ac: Check for chsize and posix_fallocate. Replace
12768 ftruncate.
12769 * ftruncate.c: New file, from gnulib.
12770 * output.cc (posix_fallocate): Define dummy version if not
12771 HAVE_POSIX_FALLOCATE.
12772 (Output_file::map): Call posix_fallocate rather than lseek and
12773 write.
12774 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
12775 * configure, Makefile.in, config.in: Rebuild.
12776
ef4ab7a8 127772009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 12778
ef4ab7a8
PP
12779 * layout.h (Layout::create_note): Add section_name parameter.
12780 * layout.cc (Layout::create_note): Likewise.
12781 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 12782
8c500701
ILT
127832009-03-17 Ian Lance Taylor <iant@google.com>
12784
e85b18e1
ILT
12785 * descriptors.cc: Include "options.h".
12786 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
12787 (Descriptors::open): Always use O_CLOEXEC when opening a new
12788 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
12789 then set FD_CLOEXEC.
12790
9efe6174
ILT
12791 * sparc.cc (class Target_sparc): Add has_got_section.
12792 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
12793 make sure we have a GOT section.
12794
12795 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
12796 (Target_sparc::Scan::local): Likewise.
12797 (Target_sparc::Scan::global): Likewise.
12798 (Target_sparc::Relocate::relocate): Likewise.
12799 (Target_sparc::Relocate::relocate_tls): Likewise.
12800
8c500701
ILT
12801 * symtab.cc (Symbol_table::define_default_version): New function,
12802 broken out of add_from_object.
12803 (Symbol_table::add_from_object): Call define_default_version.
12804 (Symbol_table::define_special_symbol): Add resolve_oldsym
12805 parameter. Change all callers. If the version for a symbol comes
12806 from a version script, resolve it with the symbol with the same
12807 name with no version. Also add the symbol without a version if
12808 appropriate.
12809 (do_define_in_output_data): If resolving with oldsym, don't delete
12810 sym.
12811 (do_define_in_output_segment): Likewise.
12812 (do_define_as_constant): Likewise.
12813 * symtab.h (class Symbol_table): Update declarations.
12814
f1ed28fb
ILT
128152009-03-13 Ian Lance Taylor <iant@google.com>
12816
15f8229b
ILT
12817 * readsyms.cc (Read_symbols::incompatible_warning): New function.
12818 (Read_symbols::requeue): New function.
12819 (Read_symbols::do_read_symbols): If make_elf_object fails because
12820 the target type is not configured, and the file was searched for,
12821 issue a warning and retry with the next directory.
12822 (Add_symbols::run): If the file has an incompatible format, and
12823 it was searched for, requeue the Read_symbols task. On error,
12824 release the object.
12825 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
12826 dirindex parameter to constructor. Change all callers. Declare
12827 incompatible_warning and requeue.
12828 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
12829 input_argument_ and input_group_ fields. Add them to
12830 constructor. Change all callers.
12831 (class Read_script): Add dirindex_ field. Add it to constructor.
12832 Change all callers.
12833 * archive.cc (Archive::setup): Remove input_objects parameter.
12834 Change all callers.
12835 (Archive::get_file_and_offset): Likewise.
12836 (Archive::read_all_symbols): Likewise.
12837 (Archive::read_symbols): Likewise.
12838 (Archive::get_elf_object_for_member): Remove input_objects
12839 parameter. Add punconfigured parameter. Change all callers.
12840 (Archive::add_symbols): Change return type to bool. Check return
12841 value of include_member.
12842 (Archive::include_all_members): Likewise.
12843 (Archive::include_member): Change return type to bool. Return
12844 false if first included object has incompatible target. Set
12845 included_member_ field.
12846 (Add_archive_symbols::run): If add_symbols returns false, requeue
12847 Read_symbols task.
12848 * archive.h (class Archive): Add included_member_ field.
12849 Initialize it in constructor. Add input_file and searched_for
12850 methods. Update declarations.
12851 (class Add_archive_symbols): Add dirpath_, dirindex_, and
12852 input_argument_ fields. Add them to constructor. Change all
12853 callers.
12854 * script.cc: Include "target-select.h".
12855 (class Parser_closure): Add skip_on_incompatible_target_ and
12856 found_incompatible_target_ fields. Add
12857 skip_on_incompatible_target parameter to constructor. Change all
12858 callers. Add methods skip_on_incompatible_target,
12859 clear_skip_on_incompatible_target, found_incompatible_target, and
12860 set_found_incompatible_target.
12861 (read_input_script): Add dirindex parameter. Change all callers.
12862 If parser finds an incompatible target, requeue Read_symbols
12863 task.
12864 (script_set_symbol): Clear skip_on_incompatible_target in
12865 closure.
12866 (script_add_assertion, script_parse_option): Likewise.
12867 (script_start_sections, script_add_phdr): Likewise.
12868 (script_check_output_format): New function.
12869 * script.h (read_input_script): Update declaration.
12870 * script-c.h (script_check_output_format): Declare.
12871 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
12872 (ignore_cmd): Remove OUTPUT_FORMAT.
12873 * fileread.cc (Input_file::Input_file): Add explicit this.
12874 (Input_file::will_search_for): New function.
12875 (Input_file::open): Add pindex parameter. Change all callers.
12876 * fileread.h (class Input_file): Add input_file_argument method.
12877 Declare will_search_for. Update declarations.
12878 * object.cc (make_elf_object): Add punconfigured parameter.
12879 Change all callers.
12880 * object.h (class Object): Make input_file public. Add
12881 searched_for method.
12882 (make_elf_object): Update declaration.
12883 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
12884 restart search.
12885 * dirsearch.h (class Dirsearch): Update declaration.
12886 * options.h (class General_options): Add --warn-search-mismatch.
12887 * parameters.cc (Parameters::is_compatible_target): New function.
12888 * parameters.h (class Parameters): Declare is_compatible_target.
12889 * workqueue.cc (Workqueue::add_blocker): New function.
12890 * workqueue.h (class Workqueue): Declare add_blocker.
12891
f1ed28fb
ILT
12892 * fileread.cc (Input_file::open): Remove options parameter.
12893 Change all callers.
12894 (Input_file::open_binary): Likewise.
12895 * script.cc (read_input_script): Likewise.
12896 * readsyms.h (class Read_symbols): Remove options_ field. Remove
12897 options parameter from constructor. Change all callers.
12898 (class Read_script): Likewise.
12899 * fileread.h (class Input_file): Update declarations.
12900 * script.h (read_input_script): Update declaration.
12901
34dd024a
NC
129022009-03-10 Nick Clifton <nickc@redhat.com>
12903
12904 * po/es.po: New Spanish translation.
12905
6d71b17c
CC
129062009-03-06 Cary Coutant <ccoutant@google.com>
12907
12908 * options.cc (parse_short_option): Keep dash_z from registering itself.
12909
031cdbed
ILT
129102009-03-03 Ian Lance Taylor <iant@google.com>
12911
12912 PR 9918
12913 * target-reloc.h (relocate_section): Pass output_section to
12914 relocate.
12915 * i386.cc (Target_i386::should_apply_static_reloc): Add
12916 output_section parameter. Change all callers.
12917 (Target_i386::Relocate::relocate): Add output_section parameter.
12918 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
12919 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
12920 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
12921 * testsuite/two_file_shared.sh: New script.
12922 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
12923 (check_DATA): Add two_file_shared.dbg.
12924 (two_file_shared.dbg): New target.
12925 * testsuite/Makefile.in: Rebuild.
12926
15d5fa16
ILT
129272009-03-01 Ian Lance Taylor <iant@google.com>
12928
12929 * configure.ac: Check for byteswap.h.
12930 * configure: Rebuild.
12931 * config.in: Rebuild.
12932
8a4c0b0d
ILT
129332009-03-01 Mikolaj Zalewski <mikolajz@google.com>
12934
12935 * layout.cc (Layout::find_or_add_kept_section): New function.
12936 (Layout::add_comdat): Removed.
12937 * layout.h (struct Kept_section): Move out of class Layout.
12938 Remove trailing underscores from field names. Add group_sections
12939 field. Rename group_ field to is_group. Change all uses.
12940 (class Layout): Declare find_or_add_kept_section, not add_comdat.
12941 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
12942 comdat_groups_ field.
12943 (Sized_relobj::include_section_group): Use
12944 find_or_add_kept_section and Kept_section::group_sections.
12945 (Sized_relobj::include_linkonce_section): Likewise.
12946 * object.cc (class Sized_relobj): Don't define Comdat_group or
12947 Comdat_group_table. Remove find_comdat_group and
12948 add_comdat_group. Remove comdat_groups_ field.
12949 * plugin.cc (include_comdat_group): Use
12950 Layout::find_or_add_kept_section.
12951
b4ecf66b
ILT
129522009-02-28 Ian Lance Taylor <iant@google.com>
12953
14359ca0
ILT
12954 * README: --gc-sections and map files are now supported. Document
12955 some build requirements.
12956
b4ecf66b
ILT
12957 PR 6992
12958 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
12959 relocatable link set the value of the section symbol to zero.
12960 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
12961 relocatable link don't include the section address in the local
12962 symbol value.
12963
0602e05a
ILT
129642009-02-27 Ian Lance Taylor <iant@google.com>
12965
fd9d194f
ILT
12966 PR 6811
12967 * options.h (class Search_directory): Add is_system_directory.
12968 (class General_options): Declare is_in_system_directory.
12969 * options.cc (get_relative_sysroot): Make static.
12970 (get_default_sysroot): Make static.
12971 (General_optoins::is_in_system_directory): New function.
12972 * fileread.cc (Input_file::is_in_system_directory): New function.
12973 * fileread.h (class Input_file): Declare is_in_system_directory.
12974 * object.h (class Object): Add is_in_system_directory.
12975 (class Input_objects): Remove system_library_directory_ field.
12976 * object.cc (Input_objects::add_object): Don't set
12977 system_library_directory_.
12978 (input_objects::found_in_system_library_directory): Remove.
12979 * symtab.cc (Symbol_table::write_globals): Remove input_objects
12980 parameter. Change all callers.
12981 (Symbol_table::sized_write_globals): Likewise.
12982 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
12983 Call Object::is_in_system_directory.
12984 * symtab.h (class Symbol_table): Update declarations.
12985
61edd21f
ILT
12986 PR 5990
12987 * descriptors.h (Open_descriptor): Add is_on_stack field.
12988 * descriptors.cc (Descriptors::open): If the descriptor is on the
12989 top of the stack, remove it. Initialize is_on_stack field.
12990 (Descriptors::release): Only add pod to stack if it is not on the
12991 stack already.
12992 (Descriptors::close_some_descriptor): Clear stack_next and
12993 is_on_stack fields.
12994
e29e076a
ILT
12995 PR 7091
12996 * output.cc (Output_section::find_starting_output_address): Rename
12997 from starting_output_address; add PADDR parameter; change return
12998 type.
12999 * output.h (class Output_section): Declare
13000 find_starting_output_address instead of starting_output_address.
13001 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
13002 section symbol for which we can't find a merge section.
13003
0602e05a
ILT
13004 PR 9836
13005 * symtab.cc (Symbol_table::add_from_object): If the visibility is
13006 hidden or internal, force the symbol to be local.
13007 * resolve.cc (Symbol::override_visibility): Define.
13008 (Symbol::override_base): Use override_visibility.
13009 (Symbol_table::resolve): Likewise.
13010 (Symbol::override_base_with_special): Likewise.
13011 (Symbol_table::override_with_special): If the visibility is hidden
13012 or internal, force the symbol to be local.
13013 * symtab.h (class Symbol): Add set_visibility and
13014 override_visibility.
13015 * testsuite/ver_test_1.sh: New file.
13016 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
13017 (check_DATA): Add ver_test_1.syms.
13018 (ver_test_1.syms): New target.
13019 * testsuite/Makefile.in: Rebuild.
13020
401a9a73
CC
130212009-02-25 Cary Coutant <ccoutant@google.com>
13022
13023 * layout.cc (Layout::choose_output_section): Don't rename sections
13024 when using a linker script that has a SECTIONS clause.
13025 * Makefile.in: Regenerate.
13026
13027 * testsuite/Makefile.am (script_test_5.sh): New test case.
13028 * testsuite/Makefile.in: Regenerate.
13029 * testsuite/script_test_5.cc: New file.
13030 * testsuite/script_test_5.sh: New file.
13031 * testsuite/script_test_5.t: New file.
13032
f488e4b0
CC
130332009-02-13 Rafael Avila de Espindola <espindola@google.com>
13034
13035 * archive.cc (Archive::include_member): Update calls to add_symbols.
13036 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
13037 the Layout argument.
13038 * dynobj.h (do_add_symbols): Add the Layout argument.
13039 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
13040 Layout argument.
13041 * object.h (Object::add_symbols): Add the Layout argument.
13042 (Object::do_add_symbols): Add the Layout argument.
13043 (Sized_relobj::do_add_symbols): Add the Layout argument.
13044 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
13045 Unify the two versions.
13046 (Add_plugin_symbols): Remove.
13047 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
13048 (Sized_pluginobj::do_add_symbols): Unify the two versions.
13049 (Add_plugin_symbols): Remove.
13050 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
13051 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
13052 (Add_symbols::run): Make it work with Pulginobj.
13053
89dd1680
ILT
130542009-02-06 Ian Lance Taylor <iant@google.com>
13055
13056 * object.cc (Sized_relobj::do_layout): Make info message start
13057 with lower case letter.
13058
266d0a74
ILT
130592009-02-06 Mikolaj Zalewski <mikolajz@google.com>
13060
602b464e
ILT
13061 * binary.cc: Fix file comment.
13062
266d0a74
ILT
13063 * options.h (enum Incremental_disposition): Define.
13064 (class General_options): Add new options: --incremental,
13065 --incremental_changed, --incremental_unchanged,
13066 --incremental_unknown. Add incremental_disposition_ and
13067 implicit_incremental_ fields.
13068 (General_options::incremental_disposition): New function.
13069 (class Position_dependent_options): Add incremental_disposition
13070 option.
13071 (Position_dependent_options::copy_from_options): Set incremental
13072 dispositions.
13073 * options.cc (General_options::parse_incremental_changed): New
13074 function.
2e702c99
RM
13075 (General_options::parse_incremental_unchanged): New function.
13076 (General_options::parse_incremental_unknown): New function.
13077 (General_options::General_options): Initialize new fields
266d0a74 13078 incremental_disposition_ and implicit_incremental_.
2e702c99 13079 (General_options::finalize): Check for uasge of --incremental-*
266d0a74
ILT
13080 without --incremental.
13081
f073bbf7
CD
130822009-02-06 Chris Demetriou <cgd@google.com>
13083
13084 * gold.h (gold_undefined_symbol): Change to take only a Symbol
13085 pointer and to report location as the file name associated with
13086 the symbol.
13087 (gold_undefined_symbol_at_location): New function to replace the
13088 old gold_undefined_symbol functionality.
13089 * target-reloc.h (relocate_section): Update to use
13090 gold_undefined_symbol_at_location.
13091 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
13092 Call gold_undefined_symbol function rather than gold_error.
13093 * errors.h (Errors::undefined_symbol): Take location as a
13094 string, rather than calculating it from a relocation.
13095 * errors.cc (Errors::fatal): Print "fatal error:" before the
13096 formatted message.
13097 (Errors::error, Errors::error_at_location): Print "error: "
13098 before the formatted message.
13099 (Errors::undefined_symbol): Take location as a string, rather
13100 than calculating it from a relocation.
13101 (gold_undefined_symbol_at_location): New function akin to
13102 old gold_undefined_symbol, calculates location from relocation.
13103 (gold_undefined_symbol): Change to take only a Symbol pointer
13104 and to report location as the file name associated with the symbol.
13105 * testsuite/debug_msg.sh: Update for changed error messages.
13106 * testsuite/undef_symbol.sh: Likewise.
13107
8e94a90c
ILT
131082009-02-04 Duncan Sands <baldrick@free.fr>
13109
13110 PR 9812
13111 * reduced_debug_output.h
13112 (Output_reduced_debug_abbrev_section::failed): Use format for
13113 gold_warning.
13114 (Output_reduced_debug_info_section::faild): Likewise.
13115
88a0e15b
ILT
131162009-01-31 Mikolaj Zalewski <mikolajz@google.com>
13117
13118 * script.cc (Lazy_demangler): New class.
2e702c99 13119 (Version_script_info::get_symbol_version_helper): Demangle a
88a0e15b
ILT
13120 symbol only once.
13121
5efc7cd2
CC
131222009-01-29 Cary Coutant <ccoutant@google.com>
13123
13124 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
13125 to __tls_get_addr.
13126 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
13127
e0ebcf42
ILT
131282009-01-28 Ian Lance Taylor <iant@google.com>
13129
5efc7cd2 13130 * version.cc (version_string): Bump to 1.9.
75fe7426 13131
e0ebcf42
ILT
13132 * gold.h: Include <cstring> and <stdint.h>.
13133 * version.cc: Include <cstdio>.
13134 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
13135 warning.
13136 * reduced_debug_output.cc (insert_into_vector): Rename from
13137 Insert_into_vector; change all callers. Use Swap_unaligned to
13138 avoid aliasing issue; remove union since it is unnecessary.
13139
8e2813be 131402009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
13141
13142 * Makefile.am (CCFILES): Add gc.cc.
13143 (HFILES): Add gc.h.
13144 * Makefile.in: Regenerate.
13145 * gold.cc (Gc_runner): New class.
13146 (queue_initial_tasks): Call garbage collection related tasks
13147 when corresponding options are invoked.
13148 (queue_middle_gc_tasks): New function.
13149 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
13150 processed early before laying out sections during garbage collection.
13151 * gold.h (queue_middle_gc_tasks): New function.
13152 (is_prefix_of): Move from "layout.cc".
13153 * i386.cc (Target_i386::gc_process_relocs): New function.
13154 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
13155 * main.cc (main): Create object of class "Garbage_collection".
13156 * object.cc (Relobj::copy_symbols_data): New function.
13157 (Relobj::is_section_name_included): New function.
e1df38aa
NC
13158 (Sized_relobj::do_layout): Allow this function to be called twice
13159 during garbage collection and defer layout of section during the
6d03d481
ST
13160 first call.
13161 * object.h (Relobj::get_symbols_data): New function.
13162 (Relobj::is_section_name_included): New function.
13163 (Relobj::copy_symbols_data): New function.
13164 (Relobj::set_symbols_data): New function.
13165 (Relobj::get_relocs_data): New function.
13166 (Relobj::set_relocs_data): New function.
13167 (Relobj::is_output_section_offset_invalid): New pure virtual function.
13168 (Relobj::gc_process_relocs): New function.
13169 (Relobj::do_gc_process_relocs): New pure virtual function.
13170 (Relobj::sd_): New data member.
13171 (Sized_relobj::is_output_section_offset_invalid): New function.
13172 (Sized_relobj::do_gc_process_relocs): New function.
13173 * options.h (General_options::gc_sections): Modify to not be a no-op.
13174 (General_options::print_gc_sections): New option.
13175 * plugin.cc (Plugin_finish::run): Remove function call to
13176 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
13177 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
13178 * reloc.cc (Read_relocs::run): Add task to process relocs and
13179 determine unreferenced sections when doing garbage collection.
13180 (Gc_process_relocs): New class.
13181 (Sized_relobj::do_gc_process_relocs): New function.
13182 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
13183 sections that are garbage collected.
13184 * reloc.h (Gc_process_relocs): New class.
13185 * sparc.cc (Target_sparc::gc_process_relocs): New function.
13186 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
13187 symbols whose corresponding sections are garbage collected.
13188 (Symbol_table::Symbol_table): Add new parameter for the garbage
13189 collection object.
13190 (Symbol_table::gc_mark_undef_symbols): New function.
13191 (Symbol_table::gc_mark_symbol_for_shlib): New function.
13192 (Symbol_table::gc_mark_dyn_syms): New function.
13193 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
13194 as garbage.
13195 (Symbol_table::add_from_object): Likewise.
13196 (Symbol_table::add_from_relobj): When building shared objects, do not
13197 treat externally visible symbols as garbage.
13198 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
13199 table information for static and relocatable links.
13200 * symtab.h (Symbol_table::set_gc): New function.
13201 (Symbol_table::gc): New function.
13202 (Symbol_table::gc_mark_undef_symbols): New function.
13203 (Symbol_table::gc_mark_symbol_for_shlib): New function.
13204 (Symbol_table::gc_mark_dyn_syms): New function.
13205 (Symbol_table::gc_): New data member.
e1df38aa 13206 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
13207 function.
13208 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
13209 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
13210
3b293544
CF
132112009-01-20 Chris Faylor <me.sourceware@sourceware.org>
13212
13213 * options.h (General_options::gc_sections): Define as a no-op for now.
13214 (General_options::no_keep_memory): Ditto.
13215 (General_options::Bshareable): Define.
13216 * options.cc (General_options::finalize): Honor -Bshareable.
13217
83d22aa8
AS
132182009-01-20 Andreas Schwab <schwab@suse.de>
13219
13220 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
13221 read the value in the contents, since we don't use it. Use the
13222 template endianness when writing.
13223 (Relocate::relocate): Use it for R_PPC_REL16_HA.
13224
cd536b21
AS
132252009-01-19 Andreas Schwab <schwab@suse.de>
13226
13227 * configure.tgt (powerpc64-*): Fix targ_obj.
13228
99e9a495
ILT
132292009-01-15 Ian Lance Taylor <iant@google.com>
13230
13231 * object.cc (Sized_relobj::write_local_symbols): Don't write out
13232 local symbols when stripping all symbols.
13233
bbbfea06
CC
132342009-01-14 Cary Coutant <ccoutant@google.com>
13235
99e9a495 13236 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 13237
0f7c0701
CC
132382009-01-14 Cary Coutant <ccoutant@google.com>
13239
13240 * archive.cc (Archive::get_elf_object_for_member): Remove call
13241 to File_read::claim_for_plugin.
13242 * descriptors.cc (Descriptors::open): Remove reference to
13243 is_claimed.
13244 (Descriptors::claim_for_plugin): Remove.
13245 * descriptors.h (Descriptors::claim_for_plugin): Remove.
13246 (Descriptors::is_claimed): Remove.
13247 (claim_descriptor_for_plugin): Remove.
13248 * fileread.cc (File_read::claim_for_plugin): Remove.
13249 * fileread.h (File_read::claim_for_plugin): Remove.
13250 (File_read::descriptor): Reopen descriptor if necessary.
13251 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
13252 (Plugin_manager::all_symbols_read): Add task parameter. Change
13253 all callers.
13254 (Plugin_manager::get_input_file): New function.
13255 (Plugin_manager::release_input_file): New function.
13256 (Pluginobj::Pluginobj): Add filesize parameter and initialize
13257 corresponding data member.
13258 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
13259 and pass to base constructor. Change all callers.
13260 (get_input_file, release_input_file): New functions.
13261 (make_sized_plugin_object): Add filesize parameter. Change all callers.
13262 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
13263 (Plugin_manager::all_symbols_read): Add task parameter.
13264 (Plugin_manager::get_input_file): New function.
13265 (Plugin_manager::release_input_file): New function.
13266 (Plugin_manager::task_): New data member.
13267 (Pluginobj::Pluginobj): Add filesize parameter.
13268 (Pluginobj::filename): New function.
13269 (Pluginobj::descriptor): New function.
13270 (Pluginobj::filesize): New function.
13271 (Pluginobj::filesize_): New data member.
13272 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
13273 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
13274 File_read::claim_for_plugin; use Object::unlock to unlock the file.
13275
13276 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
13277 with archive libraries.
13278 * testsuite/Makefile.in: Regenerate.
13279 * testsuite/plugin_test.c (struct sym_info): New type.
13280 (get_input_file, release_input_file): New static variables.
13281 (onload): Capture new transfer vector entries.
13282 (claim_file_hook): Stop reading at end of file according to filesize.
13283 Factor out parsing of readelf output into separate function.
13284 (all_symbols_read_hook): Exercise get_input_file and release_input_file
13285 APIs and get the source file name from the symbol table. Convert
13286 source file name to corresponding object file name. Print info
13287 message when adding new input files.
13288 (parse_readelf_line): New function.
13289 * testsuite/plugin_test_1.sh: Add checks for new info messages.
13290 * testsuite/plugin_test_2.sh: Likewise.
13291 * testsuite/plugin_test_3.sh: Likewise.
13292 * testsuite/plugin_test_4.sh: New test case.
13293
62a6d109
ILT
132942009-01-07 Ian Lance Taylor <iant@google.com>
13295
13296 * version.cc (version_string): Bump to 1.8.
13297
483620e8
CC
132982008-12-23 Cary Coutant <ccoutant@google.com>
13299
13300 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
13301 * plugin.cc (Plugin_manager::finish): Rename as
13302 layout_deferred_objects. Move cleanup to separate function.
13303 (Plugin_manager::cleanup): New function.
13304 (Plugin_finish::run): Call layout_deferred_objects and cleanup
13305 separately.
13306 * plugin.h (Plugin_manager::finish): Rename as
13307 layout_deferred_objects.
13308 (Plugin_manager::cleanup): New function.
13309 (Plugin_manager::cleanup_done): New field.
13310
d66a9eb3
CC
133112008-12-23 Cary Coutant <ccoutant@google.com>
13312
13313 * plugin.cc (is_visible_from_outside): New function.
13314 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
13315 so we don't return "IR only" status for exported symbols or -r links.
13316
13317 * testsuite/Makefile.am (plugin_test_3): New test case.
13318 * testsuite/Makefile.in: Regenerate.
13319 * testsuite/plugin_test_3.sh: New file.
13320
5995b570
CC
133212008-12-22 Cary Coutant <ccoutant@google.com>
13322
13323 * object.cc (Sized_relobj::layout_section): New function.
13324 (Sized_relobj::do_layout): Defer layout of input sections until after
13325 plugin has provided replacement files.
13326 (Sized_relobj::do_layout_deferred_sections): New function.
13327 * object.h (Relobj::set_section_offset): Remove virtual keyword.
13328 (Relobj::layout_deferred_sections): New function.
13329 (Relobj::do_layout_deferred_sections): New function.
13330 (Sized_relobj::do_layout_deferred_sections): New function.
13331 (Sized_relobj::layout_section): New function.
13332 (Sized_relobj::Deferred_layout): New structure.
13333 (Sized_relobj::deferred_layout_): New field.
13334 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
13335 Change all callers. Layout deferred sections.
13336 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
13337 references.
13338 (Plugin_hook::run): Move code from do_plugin_hook inline.
13339 (Plugin_hook::do_plugin_hook): Remove.
13340 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
13341 (Plugin_manager::finish): Renamed, was cleanup.
13342 (Plugin_manager::should_defer_layout): New function.
13343 (Plugin_manager::add_deferred_layout_object): New function.
13344 (Plugin_manager::Deferred_layout_list): New type.
13345 (Plugin_manager::deferred_layout_objects_): New field.
13346 (Plugin_hook::do_plugin_hook): Remove.
13347
ee769c88
ILT
133482008-12-17 Ian Lance Taylor <iant@google.com>
13349
13350 * options.h (class General_options): Add --no case for
13351 --export-dynamic.
13352
abc8dcba
CC
133532008-12-16 Cary Coutant <ccoutant@google.com>
13354
13355 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
13356 vector.
13357 (Plugin_manager::claim_file): Create plugin object even if
13358 plugin did not call the add_symbols callback.
13359 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
13360 asking for more symbols than were added.
13361 * testsuite/Makefile.am (plugin_test_1): Add test case with
13362 no global symbols.
13363 (empty.syms): New target.
13364 * testsuite/Makefile.in: Regenerate.
13365 * testsuite/plugin_test.c (claim_file_hook): Add new debug
13366 message. Don't call add_symbols if no globals.
13367 (all_symbols_read_hook): Don't provide replacement for empty
13368 claimed file.
13369
b0074644
ILT
133702008-12-12 Ian Lance Taylor <iant@google.com>
13371
68943102
ILT
13372 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
13373 r_type == 0 for a local symbol with r_sym == 0.
13374 (scan_relocatable_relocs): Pass r_sym to
13375 local_non_section_strategy.
13376 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
13377 r_sym parameter.
13378
b0074644
ILT
13379 * configure.ac: Update test for TLS descriptors: they are
13380 supported as of glibc 2.9.
13381 * configure: Rebuild.
13382
c2508178
ILT
133832008-12-11 Ian Lance Taylor <iant@google.com>
13384
13385 PR 7091
13386 * target-reloc.h (Default_scan_relocatable_relocs): For each
13387 function, map r_type == 0 to RELOC_DISCARD.
13388
2756a258
CC
133892008-12-10 Cary Coutant <ccoutant@google.com>
13390
13391 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
13392 object to override a kept COMDAT group from a plugin object.
13393
bb6f53d3
ILT
133942008-12-09 Ian Lance Taylor <iant@google.com>
13395
fbc558e1
ILT
13396 PR 7088
13397 * yyscript.y (file_cmd): Handle INPUT.
13398
bb6f53d3
ILT
13399 * testsuite/initpri1.c: Change all declarations to be full
13400 prototypes by adding void, to avoid compiler warnings.
13401
4674ecfc
CC
134022008-12-05 Rafael Avila de Espindola <espindola@google.com>
13403
13404 * options.cc (General_options::parse_plugin_opt): New.
13405 (General_options::add_plugin): The argument now is just the filename.
13406 (General_options::add_plugin_option): New.
13407 * options.h (plugin_opt): New.
13408 (add_plugin): Change argument name.
13409 (add_plugin_option): New.
13410 * plugin.cc (Plugin::load): Don't parse the plugin option.
13411 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
13412 (Plugin::add_option): New.
13413 (Plugin::args_): Change type.
13414 (Plugin::filename_): New.
13415 (Plugin_manager::add_plugin_option): New.
13416 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
13417 * testsuite/Makefile.in: Regenerate.
13418
fd06b4aa
CC
134192008-12-05 Cary Coutant <ccoutant@google.com>
13420
13421 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
13422 Handle --strip-lto-sections option.
13423 * options.h (strip_lto_sections): New option.
13424
6c52134c
CC
134252008-12-01 Cary Coutant <ccoutant@google.com>
13426
13427 * plugin.cc (ld_plugin_message): Change format parameter to const.
13428 Fix mismatch between new[] and delete.
13429
a45248e0
CC
134302008-11-14 Cary Coutant <ccoutant@google.com>
13431
13432 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
13433 instead of -1U.
13434
c82fbeee
CS
134352008-11-05 Craig Silverstein <csilvers@google.com>
13436
13437 * options.cc (General_options::parse_dynamic_list): New function.
13438 * options.h (General_options): New flags dynamic_list,
13439 dynamic_list_data, dynamic_list_cpp_new, and
13440 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
13441 (General_options::in_dynamic_list): New function.
13442 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
13443 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
13444 (Lex::can_continue_name): Likewise.
13445 (yylex): Likewise.
13446 (read_script_file): New parameter script_options.
13447 (read_dynamic_list): New function.
13448 (Script_options::define_dynamic_list): New function.
13449 (dynamic_list_keyword_parsecodes): New variable.
13450 (dynamic_list_keywords): New variable.
13451 * script.h (Script_options::define_dynamic_list): New function
13452 prototype.
13453 (read_dynamic_list): New function prototype.
13454 * symtab.cc (strprefix): New macro.
13455 (Symbol::should_add_dynsym_entry): Support dynamic_list,
13456 dynamic_list_data, dynamic_list_cpp_new, and
13457 dynamic_list_cpp_typeinfo.
13458 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
13459 (dynamic_list_expr): New rule.
13460 (dynamic_list_nodes): Likewise.
13461 (dynamic_list_node): Likewise.
13462 * testsuite/Makefile.am (dynamic_list): New test.
13463 * testsuite/Makefile.in: Regenerated.
13464 * testsuite/dynamic_list.t: New file.
13465 * testsuite/dynamic_list.sh: New file.
13466
e0bb29a5
CS
134672008-11-05 Craig Silverstein <csilvers@google.com>
13468
13469 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
13470 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
13471 (t11_last): Likewise.
13472 * testsuite/ver_test_6.c (main): Likewise.
13473
4e1e25e0
CC
134742008-10-07 Cary Coutant <ccoutant@google.com>
13475
13476 * options.c (General_options::finalize): Add check for -static and
13477 -shared.
13478 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
13479 is not empty.
13480
92f03fcb
CC
134812008-10-02 Cary Coutant <ccoutant@google.com>
13482
13483 * plugin.cc (make_sized_plugin_object): Fix conditional
13484 compilation to work when not all targets are enabled.
13485
fbd8a257
CC
134862008-09-29 Cary Coutant <ccoutant@google.com>
13487
13488 * archive.cc (Archive::get_file_and_offset): Use filename instead
13489 of name to get library path.
13490 (Archive::include_member): Unlock external member of a thin archive.
13491
13492 * testsuite/Makefile.am (TEST_AR): New variable.
13493 (thin_archive_test_1): New test.
13494 (thin_archive_test_2): New test.
81636b3f
CC
13495 * testsuite/Makefile.in: Regenerate.
13496 * testsuite/thin_archive_main.cc: New file.
13497 * testsuite/thin_archive_test_1.cc: New file.
13498 * testsuite/thin_archive_test_2.cc: New file.
13499 * testsuite/thin_archive_test_3.cc: New file.
13500 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 13501
eff45813
CC
135022008-09-29 Cary Coutant <ccoutant@google.com>
13503
13504 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
13505 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
13506 instead of -1U.
13507 (Sized_relobj::do_finalize_local_symbols): Likewise.
13508 (Sized_relobj::map_to_kept_section): Likewise.
13509 * object.h (Sized_relobj::invalid_address): New constant.
13510 (Sized_relobj::do_output_section_offset): Check for invalid_address
13511 and return -1ULL.
13512 * output.cc (Output_reloc::local_section_offset): Use constant
13513 invalid_address instead of -1U.
13514 (Output_reloc::get_address): Likewise.
13515 (Output_section::output_address): Change -1U to -1ULL.
13516 * output.h (Output_reloc::invalid_address): New constant.
13517 * reloc.cc (Sized_relobj::write_sections): Use constant
13518 invalid_address instead of -1U.
13519 (Sized_relobj::relocate_sections): Likewise.
13520 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
13521 values for merge sections.
13522 * target-reloc.h (relocate_for_relocatable): Use constant
13523 invalid_address instead of -1U.
13524
89fc3421
CC
135252008-09-19 Cary Coutant <ccoutant@google.com>
13526
13527 Add plugin functionality for link-time optimization (LTO).
13528 * configure.ac (plugins): Add --enable-plugins option.
13529 * configure: Regenerate.
13530 * config.in: Regenerate.
13531 * Makefile.am (LIBDL): New variable.
13532 (CCFILES): Add plugin.cc.
13533 (HFILES): Add plugin.h.
13534 (ldadd_var): Add LIBDL.
13535 * Makefile.in: Regenerate.
13536
13537 * archive.cc: Include "plugin.h".
13538 (Archive::setup): Don't preread archive symbols when using a plugin.
13539 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
13540 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
13541 files.
13542 (Archive::include_member): Add symbols from plugin objects.
13543 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
13544 * descriptors.cc (Descriptors::open): Check for file descriptors
13545 abandoned by plugins.
13546 (Descriptors::claim_for_plugin): New function.
13547 * descriptors.h (Descriptors::claim_for_plugin): New function.
13548 (Open_descriptor::is_claimed): New field.
13549 (claim_descriptor_for_plugin): New function.
13550 * fileread.cc (File_read::claim_for_plugin): New function.
13551 * fileread.h (File_read::claim_for_plugin): New function.
13552 (File_read::descriptor): New function.
13553 * gold.cc: Include "plugin.h".
13554 (queue_initial_tasks): Add task to call plugin hooks for generating
13555 new object files.
13556 * main.cc: Include "plugin.h".
13557 (main): Load plugin libraries.
13558 * object.h (Pluginobj): Declare.
13559 (Object::pluginobj): New function.
13560 (Object::do_pluginobj): New function.
13561 (Object::set_target): New function.
13562 * options.cc: Include "plugin.h".
13563 (General_options::parse_plugin): New function.
13564 (General_options::General_options): Initialize plugins_ field.
13565 (General_options::add_plugin): New function.
13566 * options.h (Plugin_manager): Declare.
13567 (General_options): Add --plugin option.
13568 (General_options::has_plugins): New function.
13569 (General_options::plugins): New function.
13570 (General_options::add_plugin): New function.
13571 (General_options::plugins_): New field.
13572 * plugin.cc: New file.
13573 * plugin.h: New file.
13574 * readsyms.cc: Include "plugin.h".
13575 (Read_symbols::do_read_symbols): Check for archive before checking
13576 for ELF file. Call plugin hooks to claim files.
13577 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
13578 from a real object file; force override when processing replacement
13579 files.
13580 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
13581 (Symbol::init_base_object): Likewise.
13582 (Symbol::init_base_output_data): Likewise.
13583 (Symbol::init_base_output_segment): Likewise.
13584 (Symbol::init_base_constant): Likewise.
13585 (Symbol::init_base_undefined): Likewise.
13586 (Symbol::output_section): Assert that object is not a plugin.
13587 (Symbol_table::add_from_pluginobj): New function.
13588 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
13589 undefined.
13590 (Symbol_table::sized_write_globals): Likewise.
13591 (Symbol_table::add_from_pluginobj): Instantiate template.
13592 * symtab.h (Sized_pluginobj): Declare.
13593 (Symbol::in_real_elf): New function.
13594 (Symbol::set_in_real_elf): New function.
13595 (Symbol::in_real_elf_): New field.
13596 (Symbol_table::add_from_pluginobj): New function.
13597
13598 * testsuite/Makefile.am (AM_CFLAGS): New variable.
13599 (LIBDL): New variable.
13600 (LDADD): Add LIBDL.
13601 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
13602 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
13603 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
13604 (MOSTLYCLEANFILES): Likewise.
13605 * testsuite/Makefile.in: Regenerate.
13606 * testsuite/plugin_test.c: New file.
13607 * testsuite/plugin_test_1.sh: New file.
13608 * testsuite/plugin_test_2.sh: New file.
13609
de31bda5
ILT
136102008-09-16 Ian Lance Taylor <iant@google.com>
13611
9c2d0ef9
ILT
13612 * target-reloc.h (relocate_section): Check whether a symbol is
13613 defined by the ABI before reporting an undefined symbol error.
13614 * target.h (Target::is_defined_by_abi): Make parameter const.
13615 (Target::do_is_defined_by_abi): Likewise.
13616 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
13617 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
13618 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
13619 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
13620 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
13621 * testsuite/Makefile.in: Rebuild.
13622
de31bda5
ILT
13623 * fileread.cc (make_view): Add casts to avoid warning.
13624
9fa33bee
AO
136252008-09-16 Alexandre Oliva <aoliva@redhat.com>
13626
13627 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
13628 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
13629
183fd0e3
AO
136302008-09-16 Alexandre Oliva <aoliva@redhat.com>
13631
13632 * options.h (General_options::output_is_executable): New.
13633 (General_options::output_is_pie): New.
13634 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
13635 for shared libraries.
13636 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
13637
7be8330a
CD
136382008-09-11 Chris Demetriou <cgd@google.com>
13639
13640 * options.h (origin): New -z option.
13641 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
13642 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
13643 in DT_FLAGS_1.
13644
a9caad02
CC
136452008-09-05 Cary Coutant <ccoutant@google.com>
13646
13647 * fileread.cc (File_read::make_view): Add check for attempt to map
13648 beyond end of file.
13649
ae6dce4d
CC
136502008-09-05 Cary Coutant <ccoutant@google.com>
13651
13652 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
13653 explicit instantiations.
13654
d7ab2a47
KVH
136552008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
13656
13657 PR gold/6858
13658 * options.cc (General_options::finalize): Allow undefined symbols
13659 in shlibs if linking -shared.
13660
13661 PR gold/6859
13662 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
13663 symbols as not needing a dynsym entry.
13664
1e52a9c1
CS
136652008-08-20 Craig Silverstein <csilvers@google.com>
13666
13667 * fileread.cc (File_read::open): Do not lock the file unless it
13668 was successfully opened.
13669
d85c80a3
CC
136702008-08-14 Cary Coutant <ccoutant@google.com>
13671
13672 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
13673 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
13674 * testsuite/tls_test.cc (struct int128): 128-bit struct
13675 for testing TLS relocs with non-zero addend.
13676 (v12): New TLS variable.
13677 (t12): New test.
13678 (t_last): Add check for v12.
13679 * testsuite/tls_test.h (t12): New function.
13680 * testsuite/tls_test_main.cc (thread_routine): Call new test.
13681
2d924fd9
ILT
136822008-08-13 Ian Lance Taylor <iant@google.com>
13683
13684 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
13685 set tls_segment_ or relro_segment_.
13686 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
13687 when appropriate.
13688 * output.h (Output_section::clear_is_relro): New function.
13689 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
13690 sections specially even when output_data_ is empty.
13691 (Output_segment::maximum_alignment): When first section is relro,
13692 only force alignment for PT_LOAD segments.
13693 * script.cc (script_data_segment_align): New function.
13694 (script_data_segment_relro_end): New function.
13695 * script-c.h (script_data_segment_align): Declare.
13696 (script_data_segment_relro_end): Declare.
13697 * script-sections.h (class Script_sections): Declare
13698 data_segment_align and data_segment_relro_end. Add fields
13699 segment_align_index_ and saw_relro_end_.
13700 * script-sections.cc (class Sections_element): Add set_is_relro
13701 virtual function. Add new bool* parameter to place_orphan_here.
13702 Add get_output_section virtual function.
13703 (class Output_section_definition): Add set_is_relro. Add new
13704 bool* parameter to place_orphan_here. Add get_output_section.
13705 Add is_relro_ field.
13706 (Output_section_definition::Output_section_definition): Initialize
13707 evaluated_address_, evaluated_load_address, evaluated_addralign_,
13708 and is_relro_ fields.
13709 (Output_section_definition::place_orphan_here): Add is_relro
13710 parameter.
13711 (Output_section_definition::set_section_addresses): Set relro for
13712 output section.
13713 (Output_section_definition::alternate_constraint): Likewise.
13714 (class Orphan_output_section): Add new bool* parameter to
13715 place_orphan_here. Add get_output_section.
13716 (Orphan_output_section::place_orphan_here): Add is_relro
13717 parameter.
13718 (Script_sections::Script_sections): Initialize
13719 data_segment_align_index_ and saw_relro_end_.
13720 (Script_sections::data_segment_align): New function.
13721 (Script_sections::data_segment_relro_end): New function.
13722 (Script_sections::place_orphan): Set or clear is_relro.
13723 (Script_sections::set_section_addresses): Force alignment of first
13724 TLS section.
13725 * yyscript.y (exp): Call script_data_segment_align and
13726 script_data_segment_relro_end.
13727 * testsuite/relro_script_test.t: New file.
13728 * testsuite/relro_test.cc (using_script): Declare.
13729 (t1, t2): Test using_script.
13730 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
13731 (relro_script_test_SOURCES): Define.
13732 (relro_script_test_DEPENDENCIES): Define.
13733 (relro_script_test_LDFLAGS): Define.
13734 (relro_script_test_LDADD): Define.
13735 (relro_script_test.so): New target.
13736 * testsuite/Makefile.in: Rebuild.
13737
f827c9a9
CC
137382008-08-06 Cary Coutant <ccoutant@google.com>
13739
13740 * archive.cc (Archive::total_archives, Archive::total_members)
13741 (Archive::total_members_loaded): New variables.
13742 (Archive::setup): Add parameter. Add option to preread
13743 archive symbols.
13744 (Archive::read_armap): Add counter.
13745 (Archive::get_file_and_offset): New function.
13746 (Archive::get_elf_object_for_member): New function.
13747 (Archive::read_all_symbols): New function.
13748 (Archive::read_symbols): New function.
13749 (Archive::add_symbols): Add counters.
13750 (Archive::include_all_members): Use armap to find members if it's
13751 already built.
13752 (Archive::include_member): Skip reading symbols if already read.
13753 Factored code into Archive::get_file_and_offset and
13754 Archive::get_elf_object_for_member. Changed call to
13755 Mapfile::report_include_archive_member.
13756 (Archive::print_stats): New function.
13757 * archive.h: Declare Object and Read_symbols_data classes.
13758 (Archive::Archive): Add initializers for new members.
13759 (Archive::setup): Add parameter.
13760 (Archive::print_stats): New function.
13761 (Archive::total_archives, Archive::total_members)
13762 (Archive::total_members_loaded): New variables.
13763 (Archive::get_file_and_offset): New function.
13764 (Archive::get_elf_object_for_member): New function.
13765 (Archive::read_all_symbols): New function.
13766 (Archive::read_symbols): New function.
13767 (Archive::Archive_member): New class.
13768 (Archive::members_): New member.
13769 (Archive::num_members_): New member.
13770 * main.cc: Include archive.h.
13771 (main): Call Archive::print_stats.
13772 * mapfile.cc (Mapfile::report_include_archive_member): Delete
13773 archive parameter; member_name is now the fully-decorated name.
13774 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
13775 * options.h: (General_options): Add --preread-archive-symbols option.
13776 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
13777 Archive::setup.
13778
de4c45bd
ILT
137792008-08-04 Ian Lance Taylor <iant@google.com>
13780
13781 * symtab.h (Symbol::use_plt_offset): New function.
13782 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
13783 * powerpc.cc (Relocate::relocate): Likewise.
13784 * sparc.cc (Relocate::relocate): Likewise.
13785 * x86_64.cc (Relocate::relocate): Likewise.
13786 * testsuite/weak_plt.sh: New test.
13787 * testsuite/weak_plt_main.cc: New test.
13788 * testsuite/weak_plt_shared.cc: New test.
13789 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
13790 (check_PROGRAMS): Add weak_plt.
13791 (check_DATA): Add weak_plt_shared.so.
13792 (weak_plt_main_pic.o, weak_plt): New targets.
13793 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
13794 * testsuite/Makefile.in: Rebuild.
13795
13796 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
13797 gcctestdir/ld.
13798 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
13799 * testsuite/Makefile.in: Rebuild.
13800
323ee3f4
AM
138012008-08-04 Alan Modra <amodra@bigpond.net.au>
13802
13803 * Makefile.am (POTFILES.in): Set LC_ALL=C.
13804 * Makefile.in: Regenerate.
13805 * po/POTFILES.in: Regenerate.
13806
7c07ecec
ILT
138072008-07-29 Ian Lance Taylor <iant@google.com>
13808
13809 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
13810 symbols before other symbols.
13811 * testsuite/script_test_2.cc (test_addr): Declare.
13812 (test_addr_alias): Declare.
13813 (main): Check that test_addr and test_addr_alias have the right
cd536b21 13814 values.
7c07ecec
ILT
13815 * testsuite/script_test_2.t: Define test_addr_alias and
13816 test_addr.
13817
5778530e
ILT
138182008-07-24 Ian Lance Taylor <iant@google.com>
13819
2a00e4fb
ILT
13820 PR 5990
13821 * descriptors.cc: New file.
13822 * descriptors.h: New file.
13823 * gold-threads.h (class Hold_optional_lock): New class.
13824 * fileread.cc: Include "descriptors.h".
13825 (File_read::~File_read): Release descriptor rather than closing
13826 it.
13827 (File_read::open) [file]: Call open_descriptor rather than open.
13828 Set is_descriptor_opened_.
13829 (File_read::open) [memory]: Assert that descriptor is not open.
13830 (File_read::reopen_descriptor): New function.
13831 (File_read::release): Release descriptor.
13832 (File_read::do_read): Make non-const. Reopen descriptor.
13833 (File_read::read): Make non-const.
13834 (File_read::make_view): Reopen descriptor.
13835 (File_read::do_readv): Likewise.
13836 * fileread.h (class File_read): Add is_descriptor_opened_ field.
13837 Update declarations.
13838 * layout.cc: Include "descriptors.h".
13839 (Layout::create_build_id): Use open_descriptor rather than open.
13840 * output.cc: Include "descriptors.h".
13841 (Output_file::open): Use open_descriptor rather than open.
13842 * archive.cc (Archive::const_iterator): Change Archive to be
13843 non-const.
13844 (Archive::begin, Archive::end): Make non-const.
13845 (Archive::count_members): Likewise.
13846 * archive.h (class Archive): Update declarations.
13847 * object.h (Object::read): Make non-const.
13848 * Makefile.am (CCFILES): Add descriptors.cc.
13849 (HFILES): Add descriptors.h.
13850 * Makefile.in: Rebuild.
13851
801647d1
ILT
13852 PR 6716
13853 * gold.h: Always include <clocale>. Add Solaris workarounds
13854 following code in binutils/sysdep.h.
13855
5edd166e
ILT
13856 PR 6048
13857 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
13858 this->eh_frame_hdr_ is NULL before using it.
13859
c89ad728
ILT
13860 * dynobj.cc (Versions::Versions): Update comment.
13861
aa86f06b
ILT
13862 * dynobj.cc (Versions::Versions): If there is an soname, use it as
13863 the base version name.
13864
5778530e
ILT
13865 * stringpool.cc (Stringpool_template::add_with_length): Set key to
13866 array size plus one.
13867 (Stringpool_template::set_string_offsets): Subtract one from key
13868 before using it as an array index.
13869 (Stringpool_template::get_offset_with_length): Likewise.
13870 (Stringpool_template::write_to_buffer): Likewise.
13871 * stringpool.h (Stringpool_template::get_offset_from_key):
13872 Likewise.
13873
057ead22
ILT
138742008-07-23 Ian Lance Taylor <iant@google.com>
13875
7f649c59
ILT
13876 PR 6658
13877 * object.h (Merged_symbol_value::value): Do our best to handle a
13878 negative addend.
13879
057ead22
ILT
13880 PR 6647
13881 * script.cc (Version_script_info::get_versions): Don't add empty
13882 version tag to return value.
13883 (Version_script_info::get_symbol_version_helper): Change return
13884 type to bool. Add pversion parameter. Change all callers.
13885 (script_register_vers_node): Don't require a non-NULL tag.
13886 * script.h (class Version_script_info): Update declarations.
13887 (Version_script_info::get_symbol_version): Change return type to
13888 bool. Add version parameter. Change all callers.
13889 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
13890 handling. Handle an empty version from a version script.
13891 (Symbol_table::define_special_symbol): Likewise.
13892 * testsuite/ver_test_10.script: New file.
13893 * testsuite/ver_test_10.sh: New file.
13894 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
13895 (check_DATA): Add ver_test_10.syms.
13896 (ver_test_10.syms, ver_test_10.so): New target.
13897 * testsuite/Makefile.in: Rebuild.
13898
58e54ac2
CD
138992008-07-23 Simon Baldwin <simonb@google.com>
13900
13901 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
13902 to zero for undefined symbols from dynamic libraries.
13903
95d14cd3
ILT
139042008-07-23 Ian Lance Taylor <iant@google.com>
13905
13906 * symtab.cc (Symbol_table::resolve): Remove version parameter.
13907 Change all callers.
13908 * symtab.h (class Symbol_table): Update declaration.
13909 * testsuite/ver_test_9.cc: New file.
13910 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
13911 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
13912 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
13913 (ver_test_9.so, ver_test_9.o): New targets.
13914 * testsuite/Makefile.in: Rebuild.
13915
92de84a6
ILT
139162008-07-22 Ian Lance Taylor <iant@google.com>
13917
34810851
ILT
13918 * options.h (class General_options): Define --check-sections.
13919 * layout.cc (Layout::set_segment_offsets): Handle
13920 --check-sections.
13921
af6156ef
ILT
13922 * options.h (class General_options): Define -n/--nmagic and
13923 -N/--omagic.
13924 * options.cc (General_options::finalize): For -n/--nmagic or
13925 -N/--omagic, set -static.
13926 * layout.cc (Layout::attach_allocated_section_to_segment): If
13927 -N/--omagic, don't put read-only and read-write sections in
13928 different segments.
13929 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
13930 finding a read-only segment.
13931 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
13932 don't set the minimum segment alignment to the common page size,
13933 and don't set the file offset to the address modulo the page size.
13934 * script-sections.cc (Script_sections::create_segments): If
13935 -n/--omagic, don't put read-only and read-write sections in
13936 different segments.
13937
92de84a6
ILT
13938 * cref.cc: New file.
13939 * cref.h: New file.
13940 * options.h (class General_options): Add --print-symbol-counts.
13941 * main.cc (main): Issue defined symbol report if requested.
13942 * archive.cc (Archive::interpret_header): Make into a const member
13943 function.
13944 (Archive::add_symbols): Call Input_objects::archive_start and
13945 archive_stop.
13946 (Archive::const_iterator): Define new class.
13947 (Archive::begin, Archive::end): New functions.
13948 (Archive::include_all_members): Rewrite to use iterator.
13949 (Archive::count_members): New function.
13950 * archive.h (class Archive): Update declarations.
13951 (Archive::filename): New function.
13952 * object.cc: Include "cref.h".
13953 (Sized_relobj::Sized_relobj): Initialize defined_count_.
13954 (Sized_relobj::do_get_global_symbol_counts): New function.
13955 (Input_objects::add_object): Add object to cross-referencer.
13956 (Input_objects::archive_start): New function.
13957 (Input_objects::archive_stop): New function.
13958 (Input_objects::print_symbol_counts): New function.
13959 * object.h: Declare Cref and Archive.
13960 (Object::get_global_symbol_counts): New function.
13961 (Object::do_get_global_symbol_counts): New pure virtual function.
13962 (class Sized_relobj): Add defined_count_ field. Update
13963 declarations.
13964 (class Input_objects): Add cref_ field. Update constructor.
13965 Update declarations.
13966 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
13967 defined_count_.
13968 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
13969 symbol counts.
13970 (Sized_dynobj::do_get_global_symbol_counts): New function.
13971 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
13972 defined_count_. Update declarations. Define Symbols typedef.
13973 * symtab.cc (Symbol_table::add_from_relobj): Add defined
13974 parameter. Change all callers.
13975 (Symbol_table::add_from_dynobj): Add sympointers and defined
13976 parameters. Change all callers.
13977 * symtab.h (class Symbol_table): Update declarations.
13978 * Makefile.am (CCFILES): Add cref.cc.
13979 (HFILES): Add cref.h.
13980 * Makefile.in: Rebuild.
13981
3f7c5e1d
CD
139822008-07-22 Simon Baldwin <simonb@google.com>
13983
13984 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
13985 to zero when writing undefined symbols.
13986
e0b64032
ILT
139872008-07-22 Ian Lance Taylor <iant@google.com>
13988
13989 * output.cc (Output_section::add_input_section): Don't try to
13990 merge empty merge sections.
13991
096b02cf
CS
139922008-07-21 Craig Silverstein <csilvers@google.com>
13993
13994 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
13995 Include symbol version in error message.
cd536b21 13996
1d1f116d
CD
139972008-07-20 Chris Demetriou <cgd@google.com>
13998
cd536b21 13999 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
14000 (RANDOM_SEED_CFLAGS): New substituted variable.
14001 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
14002 * configure: Rebuild.
14003 * Makefile.in: Likewise.
14004 * testsuite/Makefile.in: Likewise.
14005
a18f591e
ILT
140062008-07-18 Ian Lance Taylor <iant@google.com>
14007
14008 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
14009 where we see NAME/NULL and NAME/VERSION as separate symbols.
14010 * testsuite/ver_test_main.cc (main): Call t4.
14011 (t4, t4_2a): Define.
14012 * testsuite/ver_test_2.cc (t4_2): Define.
14013 * testsuite/ver_test_2.script: Put t4_2a in VER2.
14014 * testsuite/ver_test_4.cc (t4_2a): Define.
14015 * testsuite/ver_test_4.script: Put t4_2a in VER2.
14016 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
14017
c6e3f6ed
ILT
140182008-07-17 Ian Lance Taylor <iant@google.com>
14019
14020 * dynobj.cc (Versions::add_def): If we give an error about a
14021 missing version, go ahead and create the version anyhow.
14022
ef9beddf
ILT
140232008-07-10 Ian Lance Taylor <iant@google.com>
14024
14025 Handle output sections with more than 0x7fffffff bytes.
14026 * object.h (class Relobj): Change map_to_output_ to
14027 output_sections_, and just keep a section pointer. Change all
14028 uses. Move comdat group support to Sized_relobj.
14029 (Relobj::is_section_specially_mapped): Remove.
14030 (Relobj::output_section): Remove poff parameter. Change all
14031 callers.
14032 (Relobj::output_section_offset): New function.
14033 (Relobj::set_section_offset): Rewrite.
14034 (Relobj::map_to_output): Remove.
14035 (Relobj::output_sections): New function.
14036 (Relobj::do_output_section_offset): New pure virtual function.
14037 (Relobj::do_set_section_offset): Likewise.
14038 (class Sized_relobj): Add section_offsets_ field. Add comdat
14039 group support from Relobj. Update declarations.
14040 (Sized_relobj::get_output_section_offset): New function.
14041 (Sized_relobj::do_output_section_offset): New function.
14042 (Sized_relobj::do_set_section_offset): New function.
14043 * object.cc (Relobj::output_section_address): Remove.
14044 (Sized_relobj::Sized_relobj): Initialize new fields.
14045 (Sized_relobj::include_section_group): Cast find_kept_object to
14046 Sized_relobj.
14047 (Sized_relobj::include_linkonce_section): Likewise.
14048 (Sized_relobj::do_layout): Use separate arrays for output section
14049 and output offset.
14050 (Sized_relobj::do_count_local_symbols): Change map_to_output to
14051 output_sections.
14052 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
14053 output_sections and section_offsets.
14054 (Sized_relobj::write_local_symbols): Likewise.
14055 (map_to_kept_section): Compute output address directly.
14056 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
14057 output_sections and section_offsets.
14058 (Sized_relobj::write_sections): Likewise.
14059 (Sized_relobj::relocate_sections): Likewise.
14060 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
14061 * output.h (class Output_reloc): Update declarations. Change
14062 u2_.relobj to Sized_relobj*.
14063 (class Output_data_reloc): Change add functions to use
14064 Sized_relobj*.
14065 * output.cc (Output_reloc::Output_reloc): Change relobj to
14066 Sized_relobj*.
14067 (Output_reloc::local_section_offset): Change return type to
14068 Elf_Addr. Use get_output_section_offset.
14069 (Output_reloc::get_address): Likewise.
14070 (Output_section::is_input_address_mapped): Don't call
14071 is_section_specially_mapped.
14072 (Output_section::output_offset): Likewise.
14073 (Output_section::output_address): Likewise.
14074 (Output_section::starting_output_address): Likewise.
14075 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
14076 parameter to Sized_relobj*.
14077 (Copy_relocs::need_copy_reloc): Likewise.
14078 (Copy_relocs::save): Likewise.
14079 * copy-relocs.h (class Copy_relocs): Update declarations.
14080 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
14081 Sized_relobj*. Change relobj_ field to Sized_relobj*.
14082 * target-reloc.h (relocate_for_relocatable): Change
14083 offset_in_output_section type to Elf_Addr. Change code that uses
14084 it as well.
14085 * layout.cc (Layout::layout): Always set *off.
14086 * mapfile.cc (Mapfile::print_input_section): Use
14087 output_section_offset.
14088 * i386.cc (Target_i386::copy_reloc): Change object parameter to
14089 Sized_relobj*.
14090 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
14091 * sparc.cc (Target_sparc::copy_reloc): Likewise.
14092 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
14093
5cb66f97
ILT
140942008-07-03 Ian Lance Taylor <iant@google.com>
14095
14096 * layout.cc (Layout::include_section): Do not discard unrecognized
14097 SHT_STRTAB sections.
14098
afe47622
CS
140992008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
14100
14101 * script.cc (Lex::can_continue_name): Make '?' allowable in
14102 version-script names.
14103 * testsuite/version_script.map: Change glob pattern to use '?'
14104
5adf9721
ILT
141052008-06-30 Manish Singh <yosh@gimp.org>
14106
14107 PR 6585
14108 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
14109 Correct typo.
14110
e6fde208
ILT
141112008-06-30 Ian Lance Taylor <iant@google.com>
14112
14113 PR 6660
14114 PR 6682
14115 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
14116 versions]: Don't try to read the value in the contents, since we
14117 don't use it. Use the template endianness when writing.
14118
3f2e6a2d
CC
141192008-06-25 Cary Coutant <ccoutant@google.com>
14120
14121 * fileread.cc (File_read::make_view): Assert on zero-length view.
14122 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
14123 symbol table when there are no symbols to read.
14124
c43d3a48
CS
141252008-06-23 Craig Silverstein <csilvers@google.com>
14126
14127 * version.cc (version_string): Bump to 1.7
14128
5f494ea0
CS
141292008-06-18 Craig Silverstein <csilvers@google.com>
14130
14131 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
14132 constant 0xFFFF to type Valtype.
14133 (Powerpc_relocate_functions::rel16_ha): Likewise.
14134
c42e122e
ILT
141352008-06-17 Ian Lance Taylor <iant@google.com>
14136
f34787f8
ILT
14137 * output.h (Output_section::Input_section): Initialize p2align_ to
14138 zero for Output_section_data constructors.
14139 (Output_section::Input_section::addralign): If not an input
14140 section, return the alignment of the Output_section_data.
14141 * testsuite/copy_test.cc: New file.
14142 * testsuite/copy_test_1.cc: New file.
14143 * testsuite/copy_test_2.cc: New file.
14144 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
14145 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
14146 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
14147 (copy_test_1_pic.o, copy_test_1.so): New targets.
14148 (copy_test_2_pic.o, copy_test_2.so): New targets.
14149 * testsuite/Makefile.in: Rebuild.
14150
c42e122e
ILT
14151 * script-sections.cc (Script_sections::place_orphan): Initialize
14152 local variable exact.
14153
ce3ac18a
DE
141542008-06-13 David Edelsohn <edelsohn@gnu.org>
14155
14156 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
14157
42cacb20
DE
141582008-06-12 David Edelsohn <edelsohn@gnu.org>
14159 David S. Miller <davem@davemloft.net>
14160
14161 * powerpc.cc: New file.
14162 * Makefile.am (TARGETSOURCES): Add powerpc.cc
14163 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
14164 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
14165 * Makefile.in: Rebuild.
14166
7b308235
ILT
141672008-06-09 Ian Lance Taylor <iant@google.com>
14168
14169 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
14170 <exception>.
14171 (throwing, orig_terminate): New static variables.
14172 (terminate_handler): New static function.
14173 (t2): Set terminate handler.
14174
f0b886e3
ILT
141752008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
14176
14177 PR 6584
cd536b21 14178 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
14179 alignment.
14180
3e90f135
CC
141812008-05-30 Cary Coutant <ccoutant@google.com>
14182
14183 * archive.cc (Archive::include_all_members) Correct to step
14184 over symbol table and extended name table in thin archives.
14185
e09ad04a
ILT
141862008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
14187
14188 PR 6407
14189 * target-reloc.h (relocate_for_relocatable): Fix new_offset
14190 calculation.
14191
62b01cb5
ILT
141922008-05-28 Caleb Howe <cshowe@google.com>
14193
14194 * reduced_debug_output.cc: New file.
14195 * reduced_debug_output.h: New file.
92de84a6 14196 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
14197 * options.cc (General_options::finalize): Add strip_debug_non_line
14198 to the strip heirarchy.
14199 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
14200 fields.
14201 * layout.cc: Include "reduced_debug_output.h".
14202 (Layout::Layout): Initialize new fields.
14203 (line_only_debug_sections): New static array.
14204 (is_lines_only_debug_sections): New static inline function.
14205 (Layout::include_section): Handle --strip-debug-non-line.
14206 (Layout::make_output_section): If --strip-debug-non-line, build
14207 new output sections for .debug_abbrev and .debug_info.
14208 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
14209 gold. Warn about possible overflow.
14210 (read_signed_LEB_128): Likewise.
14211 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
14212 (read_signed_LEB_128): Declare.
14213 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
14214 (HFILES): Add reduced_debug_output.h.
14215 * Makefile.in: Rebuild.
14216
7d9e3d98
ILT
142172008-05-21 Ian Lance Taylor <iant@google.com>
14218
14219 * mapfile.cc: New file.
14220 * mapfile.h: New file.
14221 * options.h (class General_options): Add -M/--print-map and -Map.
14222 * options.cc (General_options::finalize): Make -M equivalent to
14223 -Map -.
14224 * main.cc: Include <cstdio> and "mapfile.h".
14225 (main): Open mapfile if requested.
14226 * gold.cc (class Middle_runner): Add mapfile_ field. Update
14227 constructor. Change caller.
14228 (queue_initial_tasks): Add mapfile parameter. Change caller.
14229 (queue_middle_tasks): Likewise.
14230 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
14231 declarations.
14232 * archive.cc: Include "mapfile.h".
14233 (Archive::add_symbols): Add mapfile parameter. Change all
14234 callers. Pass mapfile, symbol, and reason to include_member.
14235 (Archive::include_all_members): Add mapfile parameter. Change all
14236 callers.
14237 (Archive::include_member): Add mapfile, sym, and why parameters.
14238 Change all callers. Report inclusion to map file.
14239 * archive.h: Include "fileread.h".
14240 (class Archive): Update declarations.
14241 (Archive::file): New const method.
14242 (class Add_archive_symbols): Add mapfile_ field. Update
14243 constructor. Change all callers.
14244 * readsyms.h (class Read_symbols): Likewise.
14245 (class Finish_group): Likewise.
14246 (class Read_script): Likewise.
14247 * common.cc: Include "mapfile.h".
14248 (Symbol_table::allocate_commons): Add mapfile parameter. Change
14249 all callers.
14250 (Symbol_table::do_allocate_commons): Likewise.
14251 (Symbol_table::do_allocate_commons_list): Likewise. Report common
14252 symbol allocation to mapfile.
14253 * common.h (class Allocate_commons_task): Add mapfile_ field.
14254 Update constructor. Change all callers.
14255 * symtab.h (class Symbol_table): Update declarations.
14256 * layout.cc: Include "mapfile.h".
14257 (Layout_task_runner::run): Print information to mapfile.
14258 (Layout::create_gold_note): Change Output_data_fixed_space to
14259 Output_data_zero_fill.
14260 (Layout::create_build_id): Likewise.
14261 (Layout::print_to_mapfile): New function.
14262 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
14263 constructor. Change caller.
14264 (class Layout): Declare print_to_mapfile.
14265 * output.cc (Output_section::Input_section::print_to_mapfile): New
14266 function.
14267 (Output_section::add_input_section): If producing a map, always
14268 add to input_sections_ list.
14269 (Output_section::do_print_to_mapfile): New function.
14270 (Output_segment::print_sections_to_mapfile): New function.
14271 (Output_segment::print_section_list_to_mapfile): New function.
14272 * output.h: Include "mapfile.h".
14273 (Output_data::print_to_mapfile): New function.
14274 (Output_data::do_print_to_mapfile): New virtual function.
14275 (Output_segment_headers::do_print_to_mapfile): New function.
14276 (Output_file_header::do_print_to_mapfile): New function.
14277 (Output_data_const::do_print_to_mapfile): New function.
14278 (class Output_data_const_buffer): Add map_name_ field. Update
14279 constructor. Change all callers. Add do_print_to_mapfile
14280 function.
14281 (class Output_data_fixed_space): Likewise.
14282 (class Output_data_space): Likewise.
14283 (class Output_data_zero_fill): New class.
14284 (Output_data_strtab::do_print_to_mapfile): New function.
14285 (Output_data_reloc_base::do_print_to_mapfile): New function.
14286 (Output_relocatable_relocs::do_print_to_mapfile): New function.
14287 (Output_data_group::do_print_to_mapfile): New function.
14288 (Output_data_got::do_print_to_mapfile): New function.
14289 (Output_data_dynamic::do_print_to_mapfile): New function.
14290 (Output_symtab_xindex::do_print_to_mapfile): New function.
14291 (class Output_section): Declare do_print_to_mapflie. Declare
14292 print_to_mapfile in Input_section.
14293 (class Output_segment): Declare new functions.
14294 * object.h (Sized_relobj::symbol_count): New function.
14295 * script-sections.cc
14296 (Output_section_element_dot_assignment::set_section_addresses):
14297 Change Output_data_fixed_space to Output_data_zero_fill.
14298 (Output_data_expression::do_print_to_mapfile): New function.
14299 * script.cc (read_input_script): Add mapfile parameter. Change
14300 all callers.
14301 * script.h (read_input_script): Update declaration.
14302 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
14303 (Eh_frame::do_print_to_mapfile): New function.
14304 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
14305 (Output_merge_string::do_print_to_mapfile): New function.
14306 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
14307 function.
14308 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
14309 function.
14310 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
14311 function.
14312 * Makefile.am (CCFILES): Add mapfile.cc.
14313 (HFILES): Add mapfile.h.
14314 * Makefile.in: Rebuild.
14315
9f1d377b
ILT
143162008-05-19 Ian Lance Taylor <iant@google.com>
14317
14318 * options.h (class General_options): Add -z relro.
14319 * layout.cc (Layout::Layout): Initialize relro_segment_.
14320 (Layout::add_output_section_data): Return the output section.
14321 (Layout::make_output_section): Rcognize relro sections and mark
14322 them appropriately.
14323 (Layout::attach_allocated_section_to_segment): Put relro sections
14324 in a PT_GNU_RELRO segment.
14325 (Layout::create_initial_dynamic_sections): Mark the .dynamic
14326 section as relro.
14327 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
14328 PT_TLS segments.
14329 (Layout::linkonce_mapping): Map d.rel.ro.local to
14330 .data.rel.ro.local.
14331 (Layout::output_section_name): Us .data.rel.ro.local for any
14332 section which begins with that.
14333 * layout.h (class Layout): Update add_output_section_data
14334 declaration. Add relro_segment_ field.
14335 * output.cc (Output_section::Output_section): Initialize is_relro_
14336 and is_relro_local_ fields.
14337 (Output_segment::add_output_section): Group relro sections.
14338 (Output_segment::is_first_section_relro): New function.
14339 (Output_segment::maximum_alignment): If there is a relro section,
14340 align the segment to the common page size.
14341 (Output_segment::set_section_addresses): Track whether we are
14342 looking at relro sections. If the last section is a relro
14343 section, align to the common page size.
14344 (Output_segment::set_section_list_addresses): Add in_relro
14345 parameter. Change all callers. Align to the page size when
14346 moving from relro to non-relro section.
14347 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
14348 segment.
14349 * output.h (class Output_section): Add is_relro_ and
14350 is_relro_local_ fields.
14351 (Output_section::is_relro): New function.
14352 (Output_section::set_is_relro): New function.
14353 (Output_section::is_relro_local): New function.
14354 (Output_section::set_is_relro_local): New function.
14355 (class Output_segment): Update declarations.
14356 * i386.cc (Target_i386::got_section): Mark .got section as relro.
14357 * sparc.cc (Target_sparc::got_section): Likewise.
14358 * x86_64.cc (Target_x86_64::got_section): Likewise.
14359 * testsuite/relro_test_main.cc: New file.
14360 * testsuite/relro_test.cc: New file.
14361 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
14362 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
14363 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
14364 (relro_test.so, relro_test_pic.o): New targets.
14365 * testsuite/Makefile.in: Rebuild.
14366
a984ee1d
ILT
143672008-05-16 Ian Lance Taylor <iant@google.com>
14368
01676dcd
ILT
14369 * output.cc (Output_segment::add_output_section): Remove front
14370 parameter.
14371 * output.h (class Output_segment): Remove
14372 add_initial_output_section and overloaded add_output_section.
14373 Update declaration of remaining add_output_section.
14374 * layout.cc (Layout::create_interp): Call add_output_section
14375 rather than add_initial_output_section.
14376 (Layout::finish_dynamic_section): Likewise.
14377
497897f9
ILT
14378 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
14379 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
14380 know the dynamic type.
14381 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
14382 field. Initialize it in constructor.
14383 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
14384 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
14385 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
14386 reloc.
14387
a984ee1d
ILT
14388 * output.cc (Output_reloc::get_address): Change return type to
14389 Elf_Addr.
14390 * output.h (class Output_reloc): Update get_address declaration.
14391 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
14392 for section addresses.
14393
55ba0940
ILT
143942008-05-09 Ian Lance Taylor <iant@google.com>
14395
14396 PR 6493
14397 * gold.cc (gold_nomem): Use return value of write.
14398
75517b77
ILT
143992008-05-08 Ian Lance Taylor <iant@google.com>
14400
14401 * symtab.c (Symbol::init_base_output_data): Add version
14402 parameter. Change all callers.
14403 (Symbol::init_base_output_segment): Likewise.
14404 (Symbol::init_base_constant): Likewise.
14405 (Symbol::init_base_undefined): Likewise.
14406 (Sized_symbol::init_output_data): Likewise.
14407 (Sized_symbol::init_output_segment): Likewise.
14408 (Sized_symbol::init_constant): Likewise.
14409 (Sized_symbol::init_undefined): Likewise.
14410 (Symbol_table::do_define_in_output_data): If the new symbol has a
14411 version, mark it as the default.
14412 (Symbol_table::do_define_in_output_segment): Likewise.
14413 (Symbol_table::do_define_as_constant): Likewise.
14414 * symtab.h (class Symbol): Update declarations.
14415 (class Sized_symbol): Likewise.
14416 * resolve.cc (Symbol::override_version): New function.
c42e122e 14417 (Symbol::override_base): Call override_version.
75517b77
ILT
14418 (Symbol::override_base_with_special): Likewise.
14419 * testsuite/ver_script_8.script: New file.
14420 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
14421 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
14422 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
14423 (ver_test_8_1.so, ver_test_8_2.so): New targets.
14424
f1f70eae
ILT
144252008-05-06 Ian Lance Taylor <iant@google.com>
14426
f3e9c5c5
ILT
14427 PR 6049
14428 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
14429 functions.
14430 (class General_options): Remove existing --undefined, and add
14431 --no-undefined instead. Add new --undefined as synonym for -u.
14432 * archive.cc (Archive::add_symbols): Check whether symbol was
14433 named with -u.
14434 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
14435 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
14436 all uses. Add IS_UNDEFINED. Update declarations to split
14437 different versions of init_base. Declare init_base_undefined.
14438 (Symbol::is_defined): Handle IS_UNDEFINED.
14439 (Symbol::is_undefined): Likewise.
14440 (Symbol::is_weak_undefined): Call is_undefined.
14441 (Symbol::is_absolute): Handle IS_CONSTANT.
14442 (class Sized_symbol): Update declarations to split different
14443 versions of init. Declare init_undefined.
14444 (class Symbol_table): Declare new functions.
14445 * symtab.cc (Symbol::init_base_object): Rename from init_base.
14446 Change all callers.
14447 (Symbol::init_base_output_data): Likewise.
14448 (Symbol::init_base_output_segment): Likewise.
14449 (Symbol::init_base_constant): Likewise.
14450 (Symbol::init_base_undefined): New function.
14451 (Sized_symbol::init_object): Rename from init. Change all
14452 callers.
14453 (Sized_symbol::init_output_data): Likewise.
14454 (Sized_symbol::init_output_segment): Likewise.
14455 (Sized_symbol::init_constant): Likewise.
14456 (Sized_symbol::init_undefined): New function.
14457 (Symbol_table::add_undefined_symbols_from_command_line): New
14458 function.
14459 (Symbol_table::do_add_undefined_symbols_from_command_line): New
14460 function.
14461 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
14462 (Symbol::output_section): Likewise.
14463 (Symbol::set_output_section): Likewise.
14464 (Symbol_table::sized_finalize_symbol): Likewise.
14465 (Symbol_table::sized_write_globals): Likewise.
14466 * resolve.cc (Symbol_table::should_override): Likewise.
14467 (Symbol::override_base_with_special): Likewise.
14468
8bdcdf2c
ILT
14469 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
14470 symbol, change it to have default visibility.
14471 * testsuite/protected_1.cc: New file.
14472 * testsuite/protected_2.cc: New file.
14473 * testsuite/protected_3.cc: New file.
14474 * testsuite/protected_main_1.cc: New file.
14475 * testsuite/protected_main_2.cc: New file.
14476 * testsuite/protected_main_3.cc: New file.
14477 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
14478 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
14479 (protected_1_LDFLAGS, protected_1_LDADD): Define.
14480 (protected_1.so): New target.
14481 (protected_1_pic.o, protected_2_pic.o): New targets.
14482 (protected_3_pic.o): New target.
14483 (check_PROGRAMS): Add protected_2.
14484 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
14485 (protected_2_LDFLAGS, protected_2_LDADD): Define.
14486 * testsuite/Makefile.in: Rebuild.
14487
2b706932
ILT
14488 * options.h (DEFINE_var): Add set_user_set_##varname__.
14489 (DEFINE_bool_alias): New macro.
14490 (class General_options): Define -Bstatic using DEFINE_bool_alias
14491 rather than DEFINE_special. Add --undefined as an alias for -z
14492 defs.
14493 * options.cc (General_options::parse_Bstatic): Remove.
14494
d82a5bcc
ILT
14495 * options.h (class General_options): Add --fatal-warnings.
14496 * main.cc (main): Implement --fatal-warnings.
14497 * errors.h (Errors::warning_count): New function.
14498
f1f70eae
ILT
14499 * options.h (class General_options): Add -Bsymbolic-functions.
14500 * symtab.h (Symbol::is_preemptible): Check for
14501 -Bsymbolic-functions.
14502
8825ac63
ILT
145032008-05-05 Ian Lance Taylor <iant@google.com>
14504
d98bc257
ILT
14505 * options.h (DEFINE_bool): For DASH_Z, create the negative option
14506 as noVARNAME rather than no-VARNAME.
14507 (class General_options): Add option -z combreloc.
14508 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
14509 get_address.
14510 (Output_reloc::sort_before) [SHT_REL]: New function.
14511 (Output_reloc::sort_before) [SHT_RELA]: New function.
14512 (class Output_data_reloc_base): Add sort_relocs_ field. Define
14513 Sort_relocs_comparison.
14514 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
14515 parameter. Change all callers.
14516 (Output_data_reloc::Output_data_reloc) [both versions]: Add
14517 sort_relocs parameter. Change all callers.
14518 * output.cc (Output_reloc::get_address): New function, broken out
14519 of write_rel.
14520 (Output_reloc::write_rel): Call it.
14521 (Output_reloc::compare): New function.
14522 (Output_data_reloc_base::do_write): Optionally sort relocs.
14523
60b2b4e7
ILT
14524 * configure.ac: If targ_extra_obj is set, link it in.
14525 * configure.tgt: Initialize all variables.
14526 (x86_64*): Set targ_extra_obj and targ_extra_size.
14527 * configure: Rebuild.
14528
8825ac63
ILT
14529 * object.cc (Sized_relobj::include_section_group): Adjust section
14530 indexes read from group data. Build vector to pass to
14531 layout_group.
14532 * layout.cc (Layout::layout_group): Add flags and shndxes
14533 parameters. Remove contents parameter. Change caller. Update
14534 explicit instantiations.
14535 * layout.h (class Layout): Update layout_group declaration.
14536 * output.cc (Output_data_group::Output_data_group): Add flags and
14537 input_shndxes parameters. Remove contents parameter. Change
14538 caller.
14539 (Output_data_group::do_write): Change input_sections_ to
14540 input_shndxes_.
14541 * output.h (class Output_data_group): Update constructor
14542 declaration. Rename input_sections_ to input_shndxes_.
14543 * testsuite/many_sections_test.cc: Add template.
14544
e94cf127
CC
145452008-04-30 Cary Coutant <ccoutant@google.com>
14546
4418b2d5
CC
14547 * target-reloc.h (relocate_section): Fix dead-pointer bug.
14548
e94cf127
CC
14549 * layout.cc (Layout::include_section): Refactored check for debug
14550 info section.
14551 (Layout::add_comdat): Add new parameters. Change type
14552 of signature parameter. Add object and shndx to signatures table.
14553 (Layout::find_kept_object): New function.
14554 * layout.h: Include <cstring>.
14555 (Layout::is_debug_info_section): New function.
14556 (Layout::add_comdat): Add new parameters.
14557 (Layout::find_kept_object): New function.
14558 (Layout::Kept_section): New struct.
14559 (Layout::Signatures): Change type of map range.
14560 * object.cc (Relobj::output_section_address): New function.
14561 (Sized_relobj::include_section_group): Add new parameters. Change
14562 calls to Layout::add_comdat. Change to build table of kept comdat
14563 groups and table mapping discarded sections to kept sections.
14564 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
14565 (Sized_relobj::do_layout): Change calls to include_section_group and
14566 include_linkonce_section.
14567 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
14568 value to zero when section is discarded.
14569 (Sized_relobj::map_to_kept_section): New function.
14570 * object.h (Relobj::output_section_address): New function.
14571 (Relobj::Comdat_group): New type.
14572 (Relobj::find_comdat_group): New function.
14573 (Relobj::Comdat_group_table): New type.
14574 (Relobj::Kept_comdat_section): New type.
14575 (Relobj::Kept_comdat_section_table): New type.
14576 (Relobj::add_comdat_group): New function.
14577 (Relobj::set_kept_comdat_section): New function.
14578 (Relobj::get_kept_comdat_section): New function.
14579 (Relobj::comdat_groups_): New field.
14580 (Relobj::kept_comdat_sections_): New field.
14581 (Symbol_value::input_value): Update comment.
14582 (Sized_relobj::map_to_kept_section) New function.
14583 (Sized_relobj::include_linkonce_section): Add new parameter.
14584 * target-reloc.h (Comdat_behavior): New type.
14585 (get_comdat_behavior): New function.
14586 (relocate_section): Add code to map a discarded section to the
14587 corresponding kept section when applying a relocation.
14588
e4e5049b
CS
145892008-04-30 Craig Silverstein <csilvers@google.com>
14590
14591 * dwarf_reader.cc (next_generation_count): New static var.
14592 (Addr2line_cache_entry): New struct.
14593 (addr2line_cache): New static var.
14594 (Dwarf_line_info::one_addr2line): Added caching.
14595 (Dwarf_line_info::clear_addr2line_cache): New function.
14596 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
14597 cache-size parameter.
14598 (Dwarf_line_info::one_addr2line_cache): New function.
14599 * symtab.cc (Symbol_table::detect_odr_violations): Pass
14600 new cache-size argument to one_addr2line(), and clear cache.
14601
d09e9154
CC
146022008-04-28 Cary Coutant <ccoutant@google.com>
14603
14604 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
14605 R_386_PC8 relocations.
14606
7ef73768
ILT
146072008-04-23 Ian Lance Taylor <iant@google.com>
14608
55438702
ILT
14609 * object.cc (Sized_relobj::include_section_group): Check for
14610 invalid section group.
14611
c165fb93
ILT
14612 * object.cc (make_elf_object): Correct test for 64-bit ELF file
14613 header size.
14614
7ef73768
ILT
14615 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
14616 than read for file header.
14617 * archive.cc (Archive::include_member): Likewise.
14618
6194aaab
L
146192008-04-23 Paolo Bonzini <bonzini@gnu.org>
14620
14621 * aclocal.m4: Regenerate.
14622 * configure: Regenerate.
14623
d491d34e
ILT
146242008-04-19 Ian Lance Taylor <iant@google.com>
14625
5ea2bac6
ILT
14626 * version.cc (version_string): Bump to 1.6.
14627
7bc3e21a
ILT
14628 * testsuite/Makefile.am (many_sections_r_test): New target.
14629 (many_sections_r_test_SOURCES): Remove.
14630 (many_sections_r_test_DEPENDENCIES): Remove.
14631 (many_sections_r_test_LDFLAGS): Remove.
14632 (many_sections_r_test_LDADD): Remove.
14633
7fcd3aa9
ILT
14634 * object.cc (Sized_relobj::do_add_symbols): Always pass
14635 local_symbol_count_ to add_from_relobj.
14636
4c94d6ae
ILT
14637 * testsuite/Makefile.am (many_sections_check.h): Only check one in
14638 every thousand variables.
14639 * testsuite/Makefile.in: Rebuild.
14640
d491d34e
ILT
14641 * object.cc (Xindex::initialize_symtab_xindex): New function.
14642 (Xindex::read_symtab_xindex): New function.
14643 (Xindex::sym_xindex_to_shndx): New function.
14644 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
14645 available.
14646 (Sized_relobj::do_initialize_xindex): New function.
14647 (Sized_relobj::do_read_symbols): Adjust section links.
14648 (Sized_relobj::symbol_section_and_value): Add is_ordinary
14649 parameter. Change all callers.
14650 (Sized_relobj::include_section_group): Adjust section links and
14651 symbol section indexes.
14652 (Sized_relobj::do_layout): Adjust section links.
14653 (Sized_relobj::do_count_local_symbols): Adjust section links and
14654 symbol section indexes.
14655 (Sized_relobj::do_finalize_local_symbols): Distinguish between
14656 ordinary and special symbols.
14657 (Sized_relobj::write_local_symbols): Add symtab_xindex and
14658 dynsym_xindex parameters. Change all callers. Adjust section
14659 links. Use SHN_XINDEX when needed.
14660 (Sized_relobj::get_symbol_location_info): Adjust section links.
14661 Don't get fooled by special symbols.
14662 * object.h (class Xindex): Define.
14663 (class Object): Add xindex_ parameter. Declare virtual functoin
14664 do_initialize_xindex.
14665 (Object::adjust_sym_shndx): New function.
14666 (Object::set_xindex): New protected function.
14667 (class Symbol_value): Add is_ordinary_shndx_ field.
14668 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
14669 (Symbol_value::value): Assert ordinary section.
14670 (Symbol_value::initialize_input_to_output_map): Likewise.
14671 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
14672 Change all callers.
14673 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
14674 all callers.
14675 (class Sized_relobj): Update declarations.
14676 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
14677 parameter. Change all callers.
14678 (Sized_relobj::adjust_shndx): New function.
14679 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
14680 field.
14681 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
14682 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
14683 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
14684 (Sized_dynobj::read_dynsym_section): Adjust section links.
14685 (Sized_dynobj::read_dynamic): Likewise.
14686 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
14687 section links.
14688 (Sized_dynobj::do_initialize_xindex): New function.
14689 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
14690 do_initialize_xindex.
14691 (Sized_dynobj::adjust_shndx): New function.
14692 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
14693 dynsym_xindex_ fields.
14694 (Layout::finalize): Add a call to set_section_indexes before
14695 creating the symtab sections.
14696 (Layout::set_section_indexes): Don't do anything if the section
14697 already has a section index.
14698 (Layout::create_symtab_sections): Add shnum parameter. Change
14699 caller. Create .symtab_shndx section if needed.
14700 (Layout::create_shdrs): Add shstrtab_section parameter. Change
14701 caller.
14702 (Layout::allocated_output_section_count): New function.
14703 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
14704 needed.
14705 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
14706 fields. Update declarations.
14707 (Layout::symtab_xindex): New function.
14708 (Layout::dynsym_xindex): New function.
14709 (class Write_symbols_task): Add layout_ field.
14710 (Write_symbols_task::Write_symbols_task): Add layout parameter.
14711 Change caller.
14712 * output.cc (Output_section_headers::Output_section_headers): Add
14713 shstrtab_section parameter. Change all callers.
14714 (Output_section_headers::do_sized_write): Store overflow values
14715 for section count and section string table section index in
14716 section header zero.
14717 (Output_file_header::do_sized_write): Check for overflow of
14718 section count and section string table section index.
14719 (Output_symtab_xindex::do_write): New function.
14720 (Output_symtab_xindex::endian_do_write): New function.
14721 * output.h (class Output_section_headers): Add shstrtab_section_.
14722 Update declarations.
14723 (class Output_symtab_xindex): Define.
14724 (Output_section::has_out_shndx): New function.
14725 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
14726 field.
14727 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
14728 Change all callers.
14729 (Sized_symbol::init): Likewise.
14730 (Symbol::output_section): Check for ordinary symbol.
14731 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
14732 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
14733 callers.
14734 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
14735 Change all callers. Simplify handling of symbols from sections
14736 not included in the link.
14737 (Symbol_table::add_from_dynobj): Handle ordinary symbol
14738 distinction.
14739 (Weak_alias_sorter::operator()): Assert that symbols are
14740 ordinary.
14741 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
14742 distinction.
14743 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
14744 parameters. Change all callers.
14745 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
14746 symbol distinction. Use SHN_XINDEX when needed.
14747 (Symbol_table::write_section_symbol): Add symtab_xindex
14748 parameter. Change all callers.
14749 (Symbol_table::sized_write_section_symbol): Likewise. Use
14750 SHN_XINDEX when needed.
14751 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
14752 declarations.
14753 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
14754 (Symbol::is_defined): Check is_ordinary.
14755 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
14756 (Symbol::is_absolute, Symbol::is_common): Likewise.
14757 (class Sized_symbol): Update declarations.
14758 (class Symbol_table): Update declarations.
14759 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
14760 parameters. Change all callers.
14761 (Sized_symbol::override): Likewise.
14762 (Symbol_table::override): Likewise.
14763 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
14764 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
14765 is_ordinary, and orig_st_shndx parameters. Change all callers.
14766 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
14767 to be in an ordinary section.
14768 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
14769 object and is_ordinary parameters. Change all callers.
14770 (Sized_dwarf_line_info::read_relocs): Add object parameter.
14771 Change all callers. Don't add undefined or non-ordinary symbols
14772 to reloc_map_.
14773 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
14774 Change all callers.
14775 * dwarf_reader.h (class Sized_dwarf_line_info): Update
14776 declarations.
14777 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
14778 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
14779 (Sized_relobj::relocate_sections): Likewise.
14780 * target-reloc.h (scan_relocs): Adjust section symbol index.
14781 (scan_relocatable_relocs): Likewise.
14782 * i386.cc (Scan::local): Check for ordinary symbols.
14783 * sparc.cc (Scan::local): Likewise.
14784 * x86_64.cc (Scan::local): Likewise.
14785 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
14786 to symbol_section_and_value.
14787 * testsuite/many_sections_test.cc: New file.
14788 * testsuite/Makefile.am (BUILT_SOURCES): Define.
14789 (check_PROGRAMS): Add many_sections_test.
14790 (many_sections_test_SOURCES): Define.
14791 (many_sections_test_DEPENDENCIES): Define.
14792 (many_sections_test_LDFLAGS): Define.
14793 (BUILT_SOURCES): Add many_sections_define.h.
14794 (many_sections_define.h): New target.
14795 (BUILT_SOURCES): Add many_sections_check.h.
14796 (many_sections_check.h): New target.
14797 (check_PROGRAMS): Add many_sections_r_test.
14798 (many_sections_r_test_SOURCES): Define.
14799 (many_sections_r_test_DEPENDENCIES): Define.
14800 (many_sections_r_test_LDFLAGS): Define.
14801 (many_sections_r_test_LDADD): Define.
14802 (many_sections_r_test.o): New target.
14803 * testsuite/Makefile.in: Rebuild.
14804
c5818ff1
CC
148052008-04-17 Cary Coutant <ccoutant@google.com>
14806
14807 * errors.cc (Errors::info): New function.
14808 (gold_info): New function.
14809 * errors.h (Errors::info): New function.
14810 * gold.h (gold_info): New function.
14811 * object.cc (Input_objects::add_object): Print trace output.
14812 * options.cc (options::parse_set): New function.
14813 (General_options::parse_wrap): Deleted.
14814 (General_options::General_options): Deleted initializer.
14815 * options.h (options::String_set): New typedef.
14816 (options::parse_set): New function.
14817 (DEFINE_set): New macro.
14818 (General_options::wrap): Changed to use DEFINE_set. Changed
14819 callers of any_wrap_symbols and is_wrap_symbol.
14820 (General_options::trace, General_options::trace_symbol):
14821 New options.
14822 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
14823 (General_options::wrap_symbols_): Deleted.
14824 * symtab.cc (Symbol_table::add_from_object): Print trace output.
14825
b5be4a7c
DM
148262008-04-17 David S. Miller <davem@davemloft.net>
14827
14828 * options.cc (General_options::parse_V): New function.
14829 * options.h: Add entries for -V and -Qy.
14830
155a0dd7
ILT
148312008-04-17 Ian Lance Taylor <iant@google.com>
14832
14833 * common.cc (Symbol_table::allocate_commons): Remove options
14834 parameter. Change caller.
14835 (Symbol_table::do_allocate_commons): Remove options parameter.
14836 Change caller. Just call do_allocate_commons_list twice.
14837 (Symbol_table::do_allocate_commons_list): New function, broken out
14838 of do_allocate_commons.
14839 * common.h (class Allocate_commons_task): Remove options_ field.
14840 Update constructor.
14841 * symtab.cc (Symbol_table::Symbol_table): Initialize
14842 tls_commons_.
14843 (Symbol_table::add_from_object): Put TLS common symbols on
14844 tls_commons_ list.
14845 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
14846 which are IN_OUTPUT_DATA.
14847 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
14848 allocate_commons and do_allocate_commons declarations. Declare
14849 do_allocate_commons_list.
14850 * gold.cc (queue_middle_tasks): Update creation of
14851 Allocate_commons_task to not pass options.
14852 * testsuite/Makefile.am (INCLUDES): Add -I.. .
14853 (TLS_TEST_C_FLAGS): New variable.
14854 (tls_test_c_pic.o): New target.
14855 (tls_test_shared.so): Link in tls_test_c_pic.o.
14856 (tls_test_c_pic_ie.o): New target.
14857 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
14858 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
14859 (tls_test_c.o): New target.
14860 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
14861 (tls_pic_test_LDADD): Likewise.
14862 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
14863 (tls_shared_gd_to_ie_test_LDADD): Likewise.
14864 (tls_test_c_gnu2.o): New target.
14865 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
14866 tls_test_c_gnu2.o.
14867 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
14868 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
14869 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
14870 * testsuite/tls_test.cc: Include "config.h".
14871 (t_last): Call t11_last.
14872 * testsuite/tls_test.h (t11, t11_last): Declare.
14873 * testsuite/tls_test_c.c: New file.
14874 * testsuite/tls_test_main.cc (thread_routine): Call t11.
14875 * configure.ac: Check for OpenMP support.
14876 * configure, config.in, Makefile.in: Rebuild.
14877 * testsuite/Makefile.in: Rebuild.
14878
edfbb029
CC
148792008-04-16 Cary Coutant <ccoutant@google.com>
14880
14881 * i386.cc (Target_i386::define_tls_base_symbol): New function.
14882 (Target_i386::tls_base_symbol_defined_): New field.
14883 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
14884 (Target_i386::Scan::global): Likewise.
14885 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
14886 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
14887 (Target_x86_64::tls_base_symbol_defined_): New field.
14888 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
14889 (Target_x86_64::Scan::global): Likewise.
14890
f3c69fca
CC
148912008-04-16 Cary Coutant <ccoutant@google.com>
14892
14893 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
14894 (Symbol::needs_plt_entry): Allow weak undefined symbols.
14895 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
14896 building shared libraries.
14897 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
14898 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
14899 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
14900 * testsuite/Makefile.in: Rebuild.
14901 * testsuite/weak_undef.h: New file.
14902 * testsuite/weak_undef_file1.cc: Add extra test cases.
14903 * testsuite/weak_undef_file2.cc: Likewise.
14904 * testsuite/weak_undef_test.cc: Likewise.
14905
7c414435
DM
149062008-04-16 David S. Miller <davem@davemloft.net>
14907
32b769e1
DM
14908 * sparc.cc (Target_sparc::Scan): Change from struct to class.
14909 Add issued_non_pic_error_ field. Declare check_non_pic.
14910 (Target_sparc::Scan::check_non_pic): New function.
14911 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
14912 (Target_sparc::Scan::global): Likewise.
14913
11936fb1
DM
14914 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
14915 * configure: Rebuild.
14916
7c414435
DM
14917 * options.h (DEFINE_enable): New macro.
14918 (new_dtags): New enable option.
14919 (initfirst, interpose, loadfltr, nodefaultlib,
14920 nodelete, nodlopen, nodump): New -z options.
14921 * layout.cc (Layout:finish_dynamic_section): If new
14922 dtags enabled, emit DT_RUNPATH. Also, emit a
14923 DT_FLAGS_1 containing any specified -z flags.
14924
85c7bf8b
ILT
149252008-04-16 Ian Lance Taylor <iant@google.com>
14926
12c0daef
ILT
14927 * copy-relocs.cc: New file.
14928 * copy-relocs.h: New file.
14929 * reloc.cc: Remove Copy_relocs code.
14930 * reloc.h: Likewise.
14931 * reloc-types.h (struct Reloc_types) [both versions]: Add
14932 get_reloc_addend_noerror.
14933 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
14934 variants of add_global which take an addend which must be zero.
14935 * i386.cc: Include "copy-relocs.h".
14936 (class Target_i386): Change type of copy_relocs_ to variable,
14937 update initializer.
14938 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
14939 Change all callers.
14940 (Target_i386::do_finalize_sections): Change handling of
14941 copy_relocs_.
14942 * sparc.cc: Include "copy-relocs.h".
14943 (class Target_sparc): Change type of copy_relocs_ to variable,
14944 update initializer.
14945 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
14946 Change all callers.
14947 (Target_sparc::do_finalize_sections): Change handling of
14948 copy_relocs_.
14949 * x86_64.cc: Include "copy-relocs.h".
14950 (class Target_x86_64): Change type of copy_relocs_ to variable,
14951 update initializer.
14952 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
14953 class. Change all callers.
14954 (Target_x86_64::do_finalize_sections): Change handling of
14955 copy_relocs_.
14956 * Makefile.am (CCFILES): Add copy-relocs.cc.
14957 (HFILES): Add copy-relocs.h.
14958
4f4995b6
ILT
14959 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
14960
85c7bf8b
ILT
14961 * testsuite/script_test_4.sh: Permit leading zeroes.
14962
4f2a9edd
ILT
149632008-04-15 Ian Lance Taylor <iant@google.com>
14964
e6188289
ILT
14965 * script-sections.cc (Script_sections::create_segments): Use
14966 header_size_adjustment even when there is enough room for the
14967 headers.
14968 * testsuite/script_test_4.sh: New file.
14969 * testsuite/script_test_4.t: New file.
14970 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
14971 (check_DATA): Add script_test_4.stdout.
14972 (MOSTLYCLEANFILES): Likewise.
14973 (script_test_4): New target.
14974 (script_test_4.stdout): New target.
14975 * testsuite/Makefile.in: Rebuild.
14976
4f2a9edd
ILT
14977 * sparc.cc: Add definitions for Output_data_plt_sparc class
14978 constants.
14979
f5314dd5
DM
149802008-04-14 David S. Miller <davem@davemloft.net>
14981
14982 * sparc.cc: New file.
14983 * Makefile.am (TARGETSOURCES): Add sparc.cc
14984 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
14985 * configure.tgt: Document targ_extra_size and
14986 targ_extra_big_endian. Add entries for sparc-* and
14987 sparc64-*.
14988 * configure.ac: Handle targ_extra_size and
14989 targ_extra_big_endian.
14990 * Makefile.in: Rebuild.
14991 * configure: Likewise.
14992 * po/POTFILES.in: Likewise.
14993 * po/gold.pot: Likewise.
14994
154e0e9a
ILT
149952008-04-14 Ian Lance Taylor <iant@google.com>
14996
14997 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
14998 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
14999 in the name/type/flags to section mapping. Don't call
15000 allocate_output_section.
15001 (Layout::choose_output_section): Change parameter from adjust_name
15002 to is_input_section. Don't permit input sections after sections
15003 are attached to segments. Don't call allocate_output_section.
15004 (Layout::layout_eh_frame): Call update_flags_for_input_section,
15005 not write_enable_output_section.
15006 (Layout::make_output_section): Don't push to
15007 unattached_section_list_ nor call attach_to_segment. Call
15008 attach_section_to_segment if sections are attached.
15009 (Layout::attach_sections_to_segments): New function.
15010 (Layout::attach_section_to_segment): New function.
15011 (Layout::attach_allocated_section_to_segment): Rename from
15012 attach_to_segment. Remove flags parameter.
15013 (Layout::allocate_output_section): Remove function.
15014 (Layout::write_enable_output_section): Remove function.
15015 * layout.h (class Layout): Update for above changes. Add new
15016 field sections_are_attached_.
15017 * output.h (Output_section::update_flags_for_input_section): New
15018 function.
15019 * output.cc (Output_section::add_input_section): Call
15020 update_flags_for_input_section.
15021 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
15022
009a67a2
CC
150232008-04-11 Cary Coutant <ccoutant@google.com>
15024
15025 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
15026 thought unnecessary.
15027 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
15028
759b1a24
ILT
150292008-04-11 Ian Lance Taylor <iant@google.com>
15030
15031 * output.h (class Output_section_data): Remove inline definition
15032 of set_addralign.
15033 * output.cc (Output_section_data::set_addralign): New function.
15034
c2b45e22
CC
150352008-04-11 Cary Coutant <ccoutant@google.com>
15036
15037 Add support for TLS descriptors for i386 and x86_64.
15038 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
15039 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
15040 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
15041 GOT_TYPE_TLS_DESC.
15042 (Target_i386::got_mod_index_entry): Remove unnecessary code.
15043 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
15044 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
15045 relocations.
15046 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
15047 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
15048 Fix problem with initial-exec relocations.
15049 (Target_i386::Relocate::relocate_tls): Likewise.
15050 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
15051 relaxation.
15052 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
15053 support for section-plus-offset dynamic table entries.
15054 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
15055 (Output_data_dynamic::Dynamic_entry): Add support for
15056 section-plus-offset dynamic table entries.
15057 (Output_data_dynamic::Classification): Likewise.
15058 (Output_data_dynamic::classification_): Renamed offset_.
15059 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
15060 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
15061 (Target_x86_64::make_plt_section): New function.
15062 (Target_x86_64::reserve_tlsdesc_entries): New function.
15063 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
15064 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
15065 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
15066 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
15067 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
15068 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
15069 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
15070 add extra PLT entry for TLS descriptors.
15071 (Output_data_plt_x86_64::got_): New field.
15072 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
15073 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
15074 fields.
15075 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
15076 descriptors.
15077 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
15078 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
15079 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
15080 R_386_TLS_DESC_CALL relocations.
15081 (Target_x86_64::Scan::global): Likewise.
15082 (Target_x86_64::do_finalize_sections): Add dynamic table entries
15083 for TLS descriptors.
15084 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
15085 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
15086 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
15087 GD-to-IE relaxation.
15088 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
15089 and TLS_DESCRIPTORS.
15090 * Makefile.in: Rebuild.
15091 * configure: Rebuild.
15092 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
15093 (tls_test_shared2.so): New target.
15094 (tls_shared_gd_to_ie_test_SOURCES): New variable.
15095 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
15096 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
15097 (tls_shared_gd_to_ie_test_LDADD): New variable.
15098 (tls_shared_gnu2_gd_to_ie_test): New target.
15099 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
15100 New targets.
15101 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
15102 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
15103 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
15104 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
15105 (tls_shared_gnu2_test): New target.
15106 (tls_test_gnu2_shared.so): New target.
15107 (tls_shared_gnu2_test_SOURCES): New variable.
15108 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
15109 (tls_shared_gnu2_test_LDFLAGS): New variable.
15110 (tls_shared_gnu2_test_LDADD): New variable.
15111 * testsuite/Makefile.in: Rebuild.
15112 * testsuite/Makefile.
15113
83bfb6b7
ILT
151142008-04-11 Ian Lance Taylor <iant@google.com>
15115
15116 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
15117 justsyms.t.
15118 * testsuite/Makefile.in: Rebuild.
15119
15120 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
15121 long.
15122 * testsuite/script_test_2.cc (main): Adjust test.
15123
706e1f5e
ILT
151242008-04-11 David S. Miller <davem@davemloft.net>
15125 Ian Lance Taylor <iant@google.com>
15126
15127 * options.h (General_options): Add entries for '-Y' and
15128 '-relax'.
15129 * options.cc (General_options:finalize): If -Y was used, add those
15130 entries to the library path instead of the default "/lib" and
15131 "/usr/lib".
15132
7c98e6bb
DM
151332008-04-11 David S. Miller <davem@davemloft.net>
15134
15135 * testsuite/justsyms.t: Start at 0x100.
15136 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
15137 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
15138 long.
15139 * testsuite/script_test_2.cc: Adjust string and section length
15140 checks.
7c98e6bb 15141
99a37bfd
ILT
151422008-04-09 Ian Lance Taylor <iant@google.com>
15143
2cefc357
ILT
15144 PR gold/5996
15145 * script-sections.cc (Sections_element::allocate_to_segment): Add
15146 orphan parameter.
15147 (Output_section_definition::allocate_to_segment): Likewise.
15148 (Orphan_output_section::allocate_to_segment): Likewise.
15149 (Script_sections::attach_sections_using_phdrs_clause): Don't
15150 propagate non-PT_LOAD segments to orphan sections.
15151 * testsuite/Makefile.am (script_test_3.stdout): Generate using
15152 readelf rather than objdump.
15153 * testsuite/script_test_3.sh: Adjust accordingly. Test that
15154 .interp section and PT_INTERP segment are the same size.
15155 * testsuite/Makefile.in: Rebuild.
15156
99a37bfd
ILT
15157 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
15158 aliases for symbols defined in the same object.
15159 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
15160 (weak_alias_test_SOURCES): New variable.
15161 (weak_alias_test_DEPENDENCIES): New variable.
15162 (weak_alias_test_LDFLAGS): New variable.
15163 (weak_alias_test_LDADD): New variable.
15164 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
15165 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
15166 (weak_alias_test_3.o): New target.
15167 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
15168 * testsuite/weak_alias_test_main.cc: New file.
15169 * testsuite/weak_alias_test_1.cc: New file.
15170 * testsuite/weak_alias_test_2.cc: New file.
15171 * testsuite/weak_alias_test_3.cc: New file.
15172
780e49c5
ILT
151732008-04-08 Ian Lance Taylor <iant@google.com>
15174
cdb0b8f5
ILT
15175 * options.h (class General_options): Add --noinhibit-exec option.
15176 * main.cc (main): Check --noinhibit-exec.
15177
0864d551
ILT
15178 * options.h (class General_options): Define --wrap as a special
15179 option. Add wrap_symbols_ field.
15180 (General_options::any_wrap_symbols): New function.
15181 (General_options::is_wrap_symbol): New function.
15182 * options.cc (General_options::parse_wrap): New function.
15183 (General_options::General_options): Initialize wrap_symbols_.
15184 * symtab.cc (Symbol_table::wrap_symbol): New function.
15185 (Symbol_table::add_from_object): Handle --wrap.
15186 * symtab.h (class Symbol_table): Declare wrap_symbol.
15187 * target.h (Target::wrap_char): New function.
15188 (Target::Target_info): Add wrap_char field.
15189 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
15190 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
15191 * testsuite/testfile.cc (Target_test::test_target_info):
15192 Likewise.
15193
789aa6de
ILT
15194 * errors.cc (Errors::undefined_symbol): Mention symbol version if
15195 there is one.
15196
2c38906f
ILT
15197 * layout.h (class Layout): Add added_eh_frame_data_ field.
15198 * layout.cc (Layout::Layout): Initialize new field.
15199 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
15200 output section until we find a section we merged successfully.
15201 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
15202 that the size be non-zero.
15203
780e49c5
ILT
15204 * merge.cc (Object_merge_map::get_output_offset): Remove inline
15205 qualifier.
15206
7fcd0256
ILT
152072008-04-08 Craig Silverstein <csilvers@google.com>
15208
15209 * configure.ac: Export new conditional variable HAVE_ZLIB.
15210 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
15211 on HAVE_ZLIB.
15212 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
15213 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15214
6835af53
ILT
152152008-04-07 Ian Lance Taylor <iant@google.com>
15216
e24f324c
ILT
15217 * version.cc (version_string): Set to "1.5".
15218
a036edd8
ILT
15219 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
15220 Add issued_non_pic_error_ field. Declare check_non_pic.
15221 (Target_x86_64::Scan::check_non_pic): New function.
15222 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
15223 (Target_x86_64::Scan::global): Likewise.
15224
624f8810
ILT
15225 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
15226 addend parameter. Change caller. Handle merge sections.
15227 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
15228 Address to Addend. Don't add in the result of
15229 local_section_offset, pass down the addend and use the returned
15230 value.
15231 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
15232 Update declarations of local_section_offset and symbol_value.
15233 * testsuite/two_file_test_1.cc (t18): New function.
15234 * testsuite/two_file_test_2.cc (f18): New function.
15235 * testsuite/two_file_test_main.cc (main): Call t18.
15236 * testsuite/two_file_test.h (t18, f18): Declare.
15237
6835af53
ILT
15238 * configure.ac: Don't test for objdump, c++filt, or readelf.
15239 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
15240 conditionals.
15241 (TEST_READELF): New variable.
15242 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
15243 (check_PROGRAMS): Add two_file_strip_test.
15244 (two_file_strip_test): New target.
15245 (check_PROGRAMS): Add two_file_same_shared_strip_test.
15246 (two_file_same_shared_strip_test_SOURCES): New variable.
15247 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
15248 (two_file_same_shared_strip_test_LDFLAGS): New variable.
15249 (two_file_same_shared_strip_test_LDADD): New variable.
15250 (two_file_shared_strip.so): New target.
15251 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
15252 (ver_test_5.syms, ver_test_7.syms): Likewise.
15253 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
15254 (strip_test_3.stdout): Use TEST_OBJDUMP.
15255 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15256
86925eef
CC
152572008-04-04 Cary Coutant <ccoutant@google.com>
15258
15259 * symtab.h (Symbol::is_weak_undefined): New function.
15260 (Symbol::is_strong_undefined): New function.
15261 (Symbol::is_absolute): New function.
15262 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
15263 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
15264 absolute symbols.
15265 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
15266 (weak_undef_test): New target.
15267 * testsuite/Makefile.in: Rebuild.
15268 * testsuite/weak_undef_file1.cc: New file.
15269 * testsuite/weak_undef_file2.cc: New file.
15270 * testsuite/weak_undef_test.cc: New file.
15271
126f3ece
ILT
152722008-04-03 Craig Silverstein <csilvers@google.com>
15273
15274 * compressed_output.h (class Output_compressed_section): Use
15275 unsigned buffer.
15276 * compressed_output.cc (zlib_compress): Use unsigned buffers,
15277 add zlib header.
15278 (zlib_compressed_suffix): Removed.
15279 (Output_compressed_section::set_final_data_size): Use unsigned
15280 buffers.
15281 * testsuite/Makefile.am (flagstest_compress_debug_sections):
15282 Fix linker invocation.
15283 (flagstest_o_specialfile_and_compress_debug_sections):
15284 Likewise.
15285 * testsuite/Makefile.in: Regenerated.
15286
deae2a14
DM
152872008-04-02 David S. Miller <davem@davemloft.net>
15288
15289 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
15290 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
15291
70752818
ILT
152922008-04-02 Craig Silverstein <csilvers@google.com>
15293
15294 * TODO: New file.
15295
39d0cb0e
ILT
152962008-04-02 Ian Lance Taylor <iant@google.com>
15297
15298 * fileread.cc (File_read::find_view): Add byteshift and vshifted
15299 parameters. Update for new key type to views_. Change all
15300 callers.
15301 (File_read::read): Adjust for byteshift in returned view.
15302 (File_read::add_view): New function, broken out of
15303 find_and_make_view.
15304 (File_read::make_view): New function, broken out of
15305 find_and_make_view.
15306 (File_read::find_or_make_view): Add offset and aligned
15307 parameters. Rewrite accordingly. Change all callers.
15308 (File_read::get_view): Add offset and aligned parameters. Adjust
15309 for byteshift in return value.
15310 (File_read::get_lasting_view): Likewise.
15311 * fileread.h (class File_read): Update declarations.
15312 (class File_read::View): Add byteshift_ field. Add byteshift to
15313 constructor. Add byteshift method.
15314 * archive.h (Archive::clear_uncached_views): New function.
15315 (Archive::get_view): Add aligned parameter. Change all callers.
15316 * object.h (Object::get_view): Add aligned parameter. Change all
15317 callers.
15318 (Object::get_lasting_view): Likewise.
15319
15320 * fileread.cc (File_read::release): Don't call clear_views if
15321 there are multiple objects.
15322 * fileread.h (File_read::clear_uncached_views): New function.
15323 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
15324 on the archive.
15325
a1207466
CC
153262008-03-31 Cary Coutant <ccoutant@google.com>
15327
15328 Add thin archive support.
15329 * archive.cc (Archive::armagt): New const.
15330 (Archive::setup): Remove task parameter and calls to unlock.
15331 (Archive::unlock_nested_archives): New function.
15332 (Archive::read_header): Add nested_off parameter. Change
15333 all callers.
15334 (Archive::interpret_header): Likewise.
15335 (Archive::include_all_members): Change to handle thin
15336 archives.
15337 (Archive::include_member): Likewise.
15338 * archive.h (Archive::Archive): Add new parameters and
15339 initializers.
15340 (Archive::armagt): New const.
15341 (Archive::setup): Remove task parameter.
15342 (Archive::unlock_nested_archives): New function.
15343 (Archive::read_header): Add nested_off parameter.
15344 (Archive::interpret_header): Likewise.
15345 (Archive::Nested_archive_table): New typedef.
15346 (Archive::is_thin_archive_): New field.
15347 (Archive::nested_archives_): New field.
15348 (Archive::options_): New field.
15349 (Archive::dirpath_): New field.
15350 (Archive::task_): New field.
15351 * readsyms.cc (Read_symbols::do_read_symbols): Add check
15352 for thin archives. Pass additional parameters to
15353 Archive::Archive. Unlock the archive file after calling
15354 Archive::setup.
cd536b21 15355
479f6503
ILT
153562008-03-29 Ian Lance Taylor <iant@google.com>
15357
686c8caf
ILT
15358 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
15359 version symbol to be local.
15360 * testsuite/ver_test_4.sh: New file.
15361 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
15362 (check_DATA): Add ver_test_4.syms.
15363 (ver_test_4.syms): New target.
15364 * testsuite/Makefile.in: Rebuild.
15365
ab794b6b
ILT
15366 * output.cc
15367 (Output_section::Input_section_sort_entry::has_priority): New
15368 function.
15369 (Output_section::Input_section_sort_entry::match_file_name): New
15370 function.
15371 (Output_section::Input_section_sort_entry::match_section_name):
15372 Remove.
15373 (Output_section::Input_section_sort_entry::match_section_name_prefix):
15374 Remove.
15375 (Output_section::Input_section_sort_entry::match_section_file):
15376 Remove.
15377 (Output_section::Input_section_sort_compare::operator()): Rewrite
15378 using new Input_section_sort_entry functions. Sort crtbegin and
15379 crtend first. Sort sections with no priority before sections with
15380 a priority.
15381 * testsuite/initpri1.c (d3): Check j != 4.
15382 (cd5): New constructor/destructor function.
15383 (main): Check j != 2.
15384
479f6503
ILT
15385 * symtab.cc (Symbol_table::add_from_object): If we don't use the
15386 new symbol when resolving, don't call set_is_default.
15387 * testsuite/ver_test_7.cc: New file.
15388 * testsuite/ver_test_7.sh: New file.
15389 * testsuite/Makefile.am (ver_test_7.so): New target.
15390 (ver_test_7.o): New target.
15391 (check_SCRIPTS): Add ver_test_7.sh.
15392 (check_DATA): Add ver_test_7.syms.
15393 (ver_test_7.syms): New target.
15394
2fd32231
ILT
153952008-03-28 Ian Lance Taylor <iant@google.com>
15396
15397 * layout.cc (Layout::layout): If we see an input section with a
15398 name that needs sorting, set the must_sort flag for the output
15399 section.
15400 (Layout::make_output_section): If the name of the output section
15401 indicates that it might require sorting, set the may_sort flag.
15402 * output.h (Output_section::may_sort_attached_input_sections): New
15403 function.
15404 (Output_section::set_may_sort_attached_input_sections): New
15405 function.
15406 (Output_section::must_sort_attached_input_sections): New
15407 function.
15408 (Output_section::set_must_sort_attached_input_sections): New
15409 function.
15410 (class Output_section): Declare Input_section_sort_entry. Define
15411 Input_section_sort_compare. Declare
15412 sort_attached_input_sections. Add new fields:
15413 may_sort_attached_input_sections_,
15414 must_sort_attached_input_sections_,
15415 attached_input_sections_are_sorted_.
15416 * output.cc (Output_section::Output_section): Initialize new
15417 fields.
15418 (Output_section::add_input_section): Add an entry to
15419 input_sections_ if may_sort or must_sort are true.
15420 (Output_section::set_final_data_size): Call
15421 sort_attached_input_sections if necessary.
15422 (Output_section::Input_section_sort_entry): Define new class.
15423 (Output_section::Input_section_sort_compare::operator()): New
15424 function.
15425 (Output_section::sort_attached_input_sections): New function.
15426 * configure.ac: Check whether the compiler supports constructor
15427 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
15428 * testsuite/initpri1.c: New file.
15429 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
15430 CONSTRUCTOR_PRIORITY.
15431 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
15432 (initpri1_LDFLAGS): New variable.
15433 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15434
18e6b24e
ILT
154352008-03-27 Ian Lance Taylor <iant@google.com>
15436
49bdd526
ILT
15437 * common.cc (Sort_commons::operator): Correct sorting algorithm.
15438 * testsuite/common_test_1.c: New file.
15439 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
15440 (common_test_1_SOURCES): New variable.
15441 (common_test_1_DEPENDENCIES): New variable.
15442 (common_test_1_LDFLAGS): New variable.
15443
18e6b24e
ILT
15444 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
15445 and commons_ correctly when NAME/VERSION does not override
15446 NAME/NULL.
15447 * testsuite/ver_test_6.c: New file.
15448 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
15449 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
15450 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
15451
04bf7072
ILT
154522008-03-26 Ian Lance Taylor <iant@google.com>
15453
5871526f
ILT
15454 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
15455 of an undefined symbol from a version script.
15456 * testsuite/Makefile.am (ver_test_5.so): New target.
15457 (ver_test_5.o): New target.
15458 (check_SCRIPTS): Add ver_test_5.sh.
15459 (check_DATA): Add ver_test_5.syms.
15460 (ver_test_5.syms): New target.
15461 * testsuite/ver_test_5.cc: New file.
15462 * testsuite/ver_test_5.script: New file.
15463 * testsuite/ver_test_5.sh: New file.
15464 * Makefile.in, testsuite/Makefile.in: Rebuild.
15465
04bf7072
ILT
15466 PR gold/5986
15467 Fix problems building gold with gcc 4.3.0.
15468 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
15469 (gold_error_at_location, gold_warning_at_location): Use it.
15470 * configure.ac: Check whether we can compile and use a template
15471 function with a printf attribute.
15472 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
15473 when jumping over bytes.
15474 * object.cc: Instantiate Object::read_section_data.
15475 * debug.h: Include <cstring>
15476 * dwarf_reader.cc: Include <algorithm>
15477 * main.cc: Include <cstring>.
15478 * options.cc: Include <cstring>.
15479 * output.cc: Include <cstring>.
15480 * script.cc: Include <cstring>.
15481 * script.h: Include <string>.
15482 * symtab.cc: Include <cstring> and <algorithm>.
15483 * target-select.cc: Include <cstring>.
15484 * version.cc: Include <string>.
15485 * testsuite/testmain.cc: Include <cstdlib>.
15486 * configure, config.in: Rebuild.
15487
874c5b28
ILT
154882008-03-25 Ian Lance Taylor <iant@google.com>
15489
819d6c3a
ILT
15490 * options.cc: Include "../bfd/bfdver.h".
15491 (options::help): Print bug reporting address.
15492
f4b2c6f5
ILT
15493 * version.cc (print_version): Adjust output for current value of
15494 BFD_VERSION_STRING.
15495
15496 * NEWS: New file.
15497
e96caa79
ILT
15498 * options.cc (options::help): Print list of supported targets.
15499 * target-select.h: Include <vector>.
15500 (class Target_selector): Make machine_, size_, and is_big_endian_
15501 fields const. Add bfd_name_ and instantiated_target_ fields.
15502 (Target_selector::Target_selector): Add bfd_name parameter.
15503 (Target_selector::recognize): Make non-virtual, call
15504 do_recognize.
15505 (Target_selector::recognize_by_name): Make non-virtual, call
15506 do_recognize_by_name.
15507 (Target_selector::supported_names): New function.
15508 (Target_selector::bfd_name): New function.
15509 (Target_selector::do_instantiate_target): New pure virtual
15510 function.
15511 (Target_selector::do_recognize): New virtual function.
15512 (Target_selector::do_recognize_by_name): New virtual function.
15513 (Target_selector::instantiate_target): New private function.
15514 (supported_target_names): Declare.
15515 * target-select.cc (Target_selector::Target_selector): Update for
15516 new parameter and fields.
15517 (select_target_by_name): Check that the name matches before
15518 calling recognize_by_name.
15519 (supported_target_names): New function.
15520 * i386.cc (class Target_selector_i386): Update Target_selector
15521 constructor call. Remove recognize and recognize_by_name. Add
15522 do_instantiate_target.
15523 * x86_64.cc (class Target_selector_x86_64): Likewise.
15524 * testsuite/testfile.cc (class Target_selector_test): Update for
15525 changes to Target_selector.
15526
874c5b28
ILT
15527 * README: Rewrite, with some notes on unsupported features.
15528
0a65a3a7
CC
155292008-03-24 Cary Coutant <ccoutant@google.com>
15530
15531 * i386.cc (Target_i386::Got_type): New enum declaration.
15532 (Target_i386::Scan::local): Updated callers of Output_data_got
15533 member functions.
15534 (Target_i386::Scan::global): Likewise.
15535 (Target_i386::Relocate::relocate): Likewise.
15536 (Target_i386::Relocate::relocate_tls): Likewise.
15537 * object.h (Got_offset_list): New class.
15538 (Sized_relobj::local_has_got_offset): Added got_type parameter.
15539 (Sized_relobj::local_got_offset): Likewise.
15540 (Sized_relobj::set_local_got_offset): Likewise.
15541 (Sized_relobj::local_has_tls_got_offset): Removed.
15542 (Sized_relobj::local_tls_got_offset): Removed.
15543 (Sized_relobj::set_local_tls_got_offset): Removed.
15544 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
15545 * output.cc (Output_data_got::add_global): Added got_type parameter.
15546 (Output_data_got::add_global_with_rel): Likewise.
15547 (Output_data_got::add_global_with_rela): Likewise.
15548 (Output_data_got::add_global_pair_with_rel): New function.
15549 (Output_data_got::add_global_pair_with_rela): New function.
15550 (Output_data_got::add_local): Added got_type parameter.
15551 (Output_data_got::add_local_with_rel): Likewise.
15552 (Output_data_got::add_local_with_rela): Likewise.
15553 (Output_data_got::add_local_pair_with_rel): New function.
15554 (Output_data_got::add_local_pair_with_rela): New function.
15555 (Output_data_got::add_global_tls): Removed.
15556 (Output_data_got::add_global_tls_with_rel): Removed.
15557 (Output_data_got::add_global_tls_with_rela): Removed.
15558 (Output_data_got::add_local_tls): Removed.
15559 (Output_data_got::add_local_tls_with_rel): Removed.
15560 (Output_data_got::add_local_tls_with_rela): Removed.
15561 * output.h (Output_data_got::add_global): Added got_type parameter.
15562 (Output_data_got::add_global_with_rel): Likewise.
15563 (Output_data_got::add_global_with_rela): Likewise.
15564 (Output_data_got::add_global_pair_with_rel): New function.
15565 (Output_data_got::add_global_pair_with_rela): New function.
15566 (Output_data_got::add_local): Added got_type parameter.
15567 (Output_data_got::add_local_with_rel): Likewise.
15568 (Output_data_got::add_local_with_rela): Likewise.
15569 (Output_data_got::add_local_pair_with_rel): New function.
15570 (Output_data_got::add_local_pair_with_rela): New function.
15571 (Output_data_got::add_global_tls): Removed.
15572 (Output_data_got::add_global_tls_with_rel): Removed.
15573 (Output_data_got::add_global_tls_with_rela): Removed.
15574 (Output_data_got::add_local_tls): Removed.
15575 (Output_data_got::add_local_tls_with_rel): Removed.
15576 (Output_data_got::add_local_tls_with_rela): Removed.
15577 * resolve.cc (Symbol::override_base_with_special): Removed
15578 reference to has_got_offset_ field.
15579 * symtab.cc (Symbol::init_fields): Replaced initialization
15580 of got_offset_ with got_offsets_. Removed initialization
15581 of has_got_offset_
53fcba31 15582 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
15583 (Symbol::got_offset): Likewise.
15584 (Symbol::set_got_offset): Likewise.
15585 (Symbol::has_tls_got_offset): Removed.
15586 (Symbol::tls_got_offset): Removed.
15587 (Symbol::set_tls_got_offset): Removed.
15588 (Symbol::got_offset_): Removed.
15589 (Symbol::tls_mod_got_offset_): Removed.
15590 (Symbol::tls_pair_got_offset_): Removed.
15591 (Symbol::got_offsets_): New field.
15592 (Symbol::has_got_offset): Removed.
15593 (Symbol::has_tls_mod_got_offset): Removed.
15594 (Symbol::has_tls_pair_got_offset): Removed.
15595 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
15596 (Target_x86_64::Scan::local): Updated callers of Output_data_got
15597 member functions.
15598 (Target_x86_64::Scan::global): Likewise.
15599 (Target_x86_64::Relocate::relocate): Likewise.
15600 (Target_x86_64::Relocate::relocate_tls): Likewise.
15601
bd52eafb
BE
156022008-03-25 Ben Elliston <bje@au.ibm.com>
15603
15604 * yyscript.y: Fix spelling error in comment.
15605
8b105e34
ILT
156062008-03-24 Ian Lance Taylor <iant@google.com>
15607
8ed814a9
ILT
15608 * options.h (class General_options): Define build_id option.
15609 * layout.h (class Layout): Declare write_build_id, create_note,
15610 create_build_id. Add build_id_note_ member.
15611 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
15612 "libiberty.h", "md5.h", "sha1.h".
15613 (Layout::Layout): Initialize eh_frame_data_,
15614 eh_frame_hdr_section_, and build_id_note_.
15615 (Layout::finalize): Call create_build_id.
15616 (Layout::create_note): New function, broken out of
15617 Layout::create_gold_note.
15618 (Layout::create_gold_note): Call create_note.
15619 (Layout::create_build_id): New function.
15620 (Layout::write_build_id): New function.
15621 (Close_task_runner::run): Call write_build_id.
15622
8b105e34
ILT
15623 * x86_64.cc: Correct license to GPLv3.
15624
086a1841
ILT
156252008-03-23 Ian Lance Taylor <iant@google.com>
15626
15627 * options.cc: Include "demangle.h".
15628 (parse_optional_string): New function.
15629 (parse_long_option): Handle takes_optional_argument.
15630 (parse_short_option): Update dash_z initializer. Handle
15631 takes_optional_argument.
15632 (General_options::General_options): Initialize do_demangle_.
15633 (General_options::finalize): Set do_demangle_. Handle demangling
15634 style.
15635 * options.h (parse_optional_string): Declare.
15636 (struct One_option): Add optional_arg field. Update constructor.
15637 Update call constructor calls. Add takes_optional_argument
15638 function.
15639 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
15640 (DEFINE_optional_string): Define.
15641 (General_options::demangle): Change from DEFINE_bool to
15642 DEFINE_optional_string.
15643 (General_options::no_demangle): New function.
15644 (General_options::do_demangle): New function.
15645 (General_options::set_do_demangle): New function.
15646 (General_options::execstack_status_): Move definition to end of
15647 class definition.
15648 (General_options::static_): Likewise.
15649 (General_options::do_demangle_): New field.
15650 * object.cc (big_endian>::get_symbol_location_info): Call
15651 Options::do_demangle, not Options::demangle.
15652 * symtab.cc (demangle): Likewise.
15653
cbb93e63
ILT
156542008-03-22 Ian Lance Taylor <iant@google.com>
15655
15656 * gold.h: Include <cstddef> and <sys/types.h>
15657 * options.h: Include <cstring>.
15658
ec531623
ILT
156592008-03-21 Ian Lance Taylor <iant@google.com>
15660
15661 * Added source code to GNU binutils.
752937aa 15662\f
4b95cf5c 15663Copyright (C) 2008-2014 Free Software Foundation, Inc.
752937aa
NC
15664
15665Copying and distribution of this file, with or without modification,
15666are permitted in any medium without royalty provided the copyright
15667notice and this notice are preserved.
15668
15669Local Variables:
15670mode: change-log
15671left-margin: 8
15672fill-column: 74
15673version-control: never
15674End:
This page took 1.066449 seconds and 4 git commands to generate.