Fix ARI warnings to nat/aarch64-linux-hw-point.{c,h}
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
19a7fe52
L
12015-07-14 H.J. Lu <hongjiu.lu@intel.com>
2
3 * compressed_output.cc (Output_compressed_section::set_final_data_size):
4 Make --compress-debug-sections=zlib the same as
5 --compress-debug-sections=zlib-gabi.
6 * testsuite/Makefile.am (flagstest_compress_debug_sections.check):
7 Expect ".debug_.*" with the SHF_COMPRESSED bit, instead of
8 ".zdebug_".
9 * testsuite/Makefile.in: Regenerated.
10
fb8b9dbc
L
112015-07-12 H.J. Lu <hongjiu.lu@intel.com>
12
13 PR gold/18322
14 * compressed_output.cc (zlib_compress): Add argument for
15 compression header size. Set header size to compression header
16 size if it isn't 0. Don't write out the zlib header here.
17 (Output_compressed_section::set_final_data_size): Support
18 zlib-gnu and zlib-gabi compressions. Pass compression header
19 size to zlib_compress and write out compression header. Set
20 the SHF_COMPRESSED bit for zlib-gabi compression. Otherwise
21 clear the SHF_COMPRESSED bit
22 * options.h (compress_debug_sections): Add zlib-gnu and
23 zlib-gabi.
24 * output.h (Output_section::set_flags): New.
25 * testsuite/Makefile.am (check_PROGRAMS): Add
26 flagstest_compress_debug_sections_none,
27 flagstest_compress_debug_sections_gnu and
28 flagstest_compress_debug_sections_gabi.
29 (check_DATA): Add flagstest_compress_debug_sections_none.stdout.
30 flagstest_compress_debug_sections.stdout,
31 flagstest_compress_debug_sections.cmp,
32 flagstest_compress_debug_sections.check,
33 flagstest_compress_debug_sections_gnu.stdout,
34 flagstest_compress_debug_sections_gnu.cmp,
35 flagstest_compress_debug_sections_gnu.check,
36 flagstest_compress_debug_sections_gabi.stdout,
37 flagstest_compress_debug_sections_gabi.cmp and
38 flagstest_compress_debug_sections_gabi.check.
39 (flagstest_compress_debug_sections_none): New.
40 (flagstest_compress_debug_sections_none.stdout): Likewise.
41 (flagstest_compress_debug_sections.stdout): Likewise.
42 (flagstest_compress_debug_sections.check): Likewise.
43 (flagstest_compress_debug_sections.cmp): Likewise.
44 (flagstest_compress_debug_sections_gnu): Likewise.
45 (flagstest_compress_debug_sections_gnu.stdout): Likewise.
46 (flagstest_compress_debug_sections_gnu.check): Likewise.
47 (flagstest_compress_debug_sections_gnu.cmp): Likewise.
48 (flagstest_compress_debug_sections_gabi): Likewise.
49 (flagstest_compress_debug_sections_gabi.stdout): Likewise.
50 (flagstest_compress_debug_sections_gnu.check): Likewise.
51 (flagstest_compress_debug_sections_gnu.cmp): Likewise.
52 * testsuite/Makefile.in: Regenerated.
53
48058663
L
542015-07-12 H.J. Lu <hongjiu.lu@intel.com>
55
56 PR gold/18321
57 * compressed_output.h (decompress_input_section): Add arguments
58 for ELF class, big endian and sh_flags.
59 * compressed_output.cc (decompress_input_section): Likewise.
60 Support the SHF_COMPRESSED section.
61 * dynobj.h (Dynobj): Add elfsize and is_big_endian member
62 functions.
63 * plugin.h (Pluginobj): Likewise.
64 * layout.cc (Layout::get_output_section_flags): Also clear the
65 SHF_COMPRESSED bit.
66 * object.h (Compressed_section_info): Add flag to store sh_flags.
67 (Object): Add pure virtual elfsize and is_big_endian member
68 functions.
69 * object.cc (need_decompressed_section): Don't skip the ".zdebug"
70 prefix here.
71 (build_compressed_section_map): Check SHF_COMPRESSED for
72 uncompressed size. Store sh_flags in Compressed_section_info.
73 Pass size, big_endian and sh_flags to decompress_input_section.
74 Skip the ".debug"/".zdebug" prefix when passing section name to
75 need_decompressed_section.
76 (Sized_relobj_file<size, big_endian>::do_find_special_section):
77 Don't check ".zdebug_*" sections.
78 (Object::decompressed_section_contents): Pass ELF class, big
79 endian and sh_flags to decompress_input_section.
80 * reloc.cc (Sized_relobj_file<size, big_endian>::write_sections):
81 Likewise.
82 * testsuite/Makefile.am (check_DATA): Add
83 debug_msg_cdebug_gabi.err and gdb_index_test_2_gabi.stdout.
84 (MOSTLYCLEANFILES): Add debug_msg_cdebug_gabi.err and
85 gdb_index_test_2_gabi.stdout.
86 (debug_msg_cdebug_gabi.o): New.
87 (odr_violation1_cdebug_gabi.o): Likewise.
88 (odr_violation2_cdebug_gabi.o): Likewise.
89 (debug_msg_cdebug_gabi.err): Likewise.
90 (check_SCRIPTS): Add gdb_index_test_2_gabi.sh.
91 (gdb_index_test_cdebug_gabi.o): Likewise.
92 (gdb_index_test_2_gabi): Likewise.
93 (gdb_index_test_2_gabi.stdout): Likewise.
94 * testsuite/gdb_index_test_2_gabi.sh: New file.
95 * testsuite/Makefile.in: Regenerated.
96
73854cdd
HS
972015-07-09 Han Shen <shenhan@google.com>
98
99 Use "gold_info" instead of "gold_warning" for erratum fix.
100
101 * aarch64.cc (Target_aarch64::scan_erratum_843419_span): Use
102 'gold_info'.
103 (Target_aarch64::scan_erratum_835769_span): USe 'gold_info'.
104
61163dfa
HS
1052015-07-09 Han Shen <shenhan@google.com>
106
107 Drop missing symbol warning for arm/aarch64.
108
109 * aarch64.cc (AArch64_relobj::scan_errata): Drop missing symbol warning.
110 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Drop missing
111 symbol warning.
112
b91deca9
HS
1132015-07-07 Han Shen <shenhan@google.com>
114
115 Make gold aarch64 accept long form of mapping symbols.
116
117 * aarch64.cc (AArch64_relobj::do_count_local_symbols): Make legal
118 of mapping symbols.
119
15162bef
DK
1202015-06-29 Doug Kwan <dougkwan@google.com>
121
122 * testsuite/arm_bl_out_of_range.s: Align stub table so that it appears
123 at address expected by test.
124 * testsuite/arm_cortex_a8_b.s: Ditto.
125 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
126 * testsuite/arm_cortex_a8_bl.s: Ditto.
127 * testsuite/arm_cortex_a8_blx.s: Ditto.
128 * testsuite/arm_cortex_a8_local.s: Ditto.
129 * testsuite/arm_fix_v4bx.s: Ditto.
130 * testsuite/arm_unaligned_reloc.s: Ditto.
131 * testsuite/thumb_bl_out_of_range.s: Ditto.
132 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
133 * testsuite/thumb_blx_out_of_range.s: Ditto.
b91deca9 134
56b06706
HS
1352015-06-29 Han Shen <shenhan@google.com>
136
137 Patch for erratum 843419 internal error.
138
b91deca9 139 * aarch64.cc (Erratum_stub::Insn_utilities): New typedef.
56b06706
HS
140 (Erratum_stub::update_erratum_insn): New method.
141 (Stub_table::relocate_stubs): Modified to place relocated insn.
142 (AArch64_relobj::fix_errata): Modified gold_assert.
143
2f0c79aa
HS
1442015-06-12 Han Shen <shenhan@google.com>
145
146 Fix erratum 835769.
147
148 * aarch64.cc (AArch64_insn_utilities::BYTES_PER_INSN): Move
149 defintion outside class definition.
150 (AArch64_insn_utilities::AARCH64_ZR): New static constant.
151 (AArch64_insn_utilities::aarch64_op31): New member.
152 (AArch64_insn_utilities::aarch64_ra): New member.
153 (AArch64_insn_utilities::aarch64_mac): New member.
154 (AArch64_insn_utilities::aarch64_mlxl): New member.
155 (ST_E_835769): New global enum member.
156 (Stub_table::relocate_stubs): Add 835769 handler.
157 (Stub_template_repertoire::Stub_template_repertoire): Install new
158 stub type.
159 (AArch64_relobj::scan_errata): This func is renamed from
160 scan_erratum_843419.
161 (AArch64_relobj::do_count_local_symbols): Add 835769 handler.
162 (AArch64_relobj::do_relocate_sections): Add 835769 handler.
163 (AArch64_relobj::scan_sections_for_stubs): Add 835769 handler.
164 (Target_aarch64::scan_erratum_835769_span): New method.
165 (Target_aarch64::create_erratum_stub): New method.
166 (Target_aarch64::is_erratum_835769_sequence): New method.
167 (Target_aarch64::scan_erratum_843419_sequence): Move part of the
168 code into create_erratum_stub.
169 * options.h (fix_cortex_a53_835769): New option.
170
5d7908e0
CC
1712015-06-11 Cary Coutant <ccoutant@gmail.com>
172
173 * aarch64.cc (Erratum_stub::STUB_ADDR_ALIGN): Move initialization
174 outside class body.
175 (Reloc_stub::STUB_ADDR_ALIGN): Likewise.
176
dd68f8fa
CC
1772015-06-11 Cary Coutant <ccoutant@gmail.com>
178
179 PR gold/17731
180 * layout.cc (corresponding_uncompressed_section_name): New function.
181 (Layout::choose_output_section): Call it.
182 * layout.h (corresponding_uncompressed_section_name): New function.
183 * script-sections.cc (Input_section_info::set_section_name): Check
184 for compressed debug section (.zdebug style).
185
a3a0c391
JY
1862015-06-11 Jing Yu <jingyu@google.com>
187
188 * testsuite/Makefile.am: Add -O0 for script_test_12 test.
189 * testsuite/Makefile.in: Regenerate.
190
970cdef2
DI
1912015-06-11 Davide Italiano <dccitaliano@gmail.com>
192
193 * gold.h (is_cident): Correct typo.
194
a48d0c12
HS
1952015-06-10 Han Shen <shenhan@google.com>
196 Patch for erratum-843419 (2 of 2 - fix erratum occurrences).
197
198 Now fixing for 843419 is fully functional.
199
200 The first part of the erratum fix CL is here -
201 https://sourceware.org/ml/binutils/2015-04/msg00229.html
202
203 * aarch64.cc(global enum): New constants representing stub types.
204 (Stub_template): New POD struct.
205 (Stub_template_repertoire): New class.
206 (Stub_base): New class.
207 (Erratum_stub): New class.
208 (Reloc_stub): Refactored to be a subclass of Stub_base.
209 (Reloc_stub::Stub_type): Removed.
210 (Reloc_stub::offset): Moved to Stub_base.
211 (Reloc_stub::set_offset): Moved to Stub_base.
212 (Reloc_stub::destination_address): Moved to Stub_base.
213 (Reloc_stub::set_destination_address): Moved to Stub_base.
214 (Reloc_stub::reset_destination_address): Moved to Stub_base.
215 (Reloc_stub::stub_type): Renamed and moved to Stub_base.
216 (Reloc_stub::stub_size): Renamed and moved to Stub_base.
217 (Reloc_stub::stub_insns): Renamed and moved to Stub_base.
218 (Reloc_stub::write): Moved to Stub_base.
219 (Reloc_stub::invalid_offset): Moved to Stub_base.
220 (Reloc_stub::invalid_address): Moved to Stub_base.
221 (Reloc_stub::stub_type_): Renamed and moved to Stub_base.
222 (Reloc_stub::stub_insns_): Moved to Stub_base.
223 (Reloc_stub::offset_): Moved to Stub_base.
224 (Reloc_stub::destination_address_): Moved to Stub_base.
225 (Stub_table::The_aarch64_relobj): New typedef.
226 (Stub_table::The_erratum_stub): New typedef.
227 (Stub_table::The_erratum_stub_less): New typedef.
228 (Stub_table::The_erratum_stub_set): New typedef.
229 (Stub_table::The_erratum_stub_set_iter): New typedef.
230 (Stub_table::empty): Added emptiness testing for erratum stubs.
231 (Stub_table::add_erratum_stub): New method to add an erratum stub.
232 (Stub_table::find_erratum_stub): New method.
233 (Stub_table::find_erratum_stubs_for_input_section): New method.
234 (Stub_table::erratum_stub_address): New method.
235 (Stub_table::update_date_size_changed_p): Modified to handle erratum stubs.
236 (Stub_table::do_addralign): Modified to handle erratum stubs.
237 (Stub_table::erratum_stubs_): New member.
238 (Stub_table::erratum_stub_size_): New member.
239 (Stub_table::relocate_stubs): Modified to handle erratum stubs.
240 (Stub_table::do_write): Modified to handle erratum stubs.
241 (AArch64_relobj::The_erratum_stub): New typedef.
242 (AArch64_relobj::Erratum_stub_set_iter): New typedef.
243 (AArch64_relobj::fix_errata): New method.
244 (Target_aarch64::The_reloc_stub_type): Removed.
245 (Target_aarch64::The_erratum_stub): New typede.
246 (AArch64_relocate_functions::construct_b): New method.
247
1e1b2efc
NC
2482015-06-08 Nick Clifton <nickc@redhat.com>
249
250 * po/fr.po: New French Translation.
251
b8cf5075
CC
2522015-06-07 Cary Coutant <ccoutant@gmail.com>
253
254 PR gold/18288
255 * resolve.cc (symbol_to_bits): Remove type parameter; adjust all
256 callers. Don't use STT_COMMON to check for common symbols.
257 (Symbol_table::resolve): Warn if relocatable object has STT_COMMON
258 symbol that's not in a common section.
259 * symtab.h (Symbol::is_common): Don't use STT_COMMON to check for
260 common symbols.
261
bdd2d2b7
CC
2622015-06-04 Cary Coutant <ccoutant@gmail.com>
263
264 PR gold/18200
265 * Makefile.am (diststuff): Add target.
266 * Makefile.in: Regenerate.
267
cd3c333f
CC
2682015-06-04 Cary Coutant <ccoutant@gmail.com>
269
270 PR gold/17498
271 * object.cc (Sized_relobj_file::do_count_local_symbols): Discard
272 temporary locals in merge sections.
273 * options.cc (General_options::parse_discard_all): New method.
274 (General_options::parse_discard_locals): New method.
275 (General_options::parse_discard_none): New method.
276 (General_options::General_options): Initialize discard_locals_.
277 * options.h (--discard-all): Convert to special option.
278 (--discard-locals): Likewise.
279 (--discard-none): New option.
280 (General_options::discard_all): New method.
281 (General_options::discard_locals): New method.
282 (General_options::discard_sec_merge): New method.
283 (General_options::Discard_locals): New enum.
284 (General_options::discard_locals_): New data member.
285
8086551f
CC
2862015-06-03 Cary Coutant <cary@google.com>
287
288 * script-sections.cc (Script_sections::Script_sections): Initialize
289 segments_created_.
290 (Script_sections::create_note_and_tls_segments): Set flag when
291 segments are created.
292 (Script_sections::expected_segment_count): Count PT_INTERP.
293 (Script_sections::attach_sections_using_phdrs_clause): Set flag when
294 segments are created.
295 * script-sections.h (Script_sections::segments_created_): New data
296 member.
297
374082df
CC
2982015-06-03 Cary Coutant <ccoutant@gmail.com>
299
300 PR gold/15370
301 * script-sections.cc
302 (Output_section_element_input::set_section_addresses): When there
303 are several patterns with no sort spec, put all sections in the same
304 bin.
305 * testsuite/Makefile.am (script_test_12): New testcase.
306 (script_test_12i): New testcase.
307 * testsuite/Makefile.in: Regenerate.
308 * testsuite/script_test_12.t: New test linker script.
309 * testsuite/script_test_12i.t: New test linker script.
310 * testsuite/script_test_12a.c: New test source file.
311 * testsuite/script_test_12b.c: New test source file.
312
775ed62e
CC
3132015-06-02 Cary Coutant <ccoutant@gmail.com>
314
315 * nacl.h (Sniff_file): Switch parameters to get_view to get an
316 aligned view.
317
9c7fe3c5
CC
3182015-06-03 Cary Coutant <ccoutant@gmail.com>
319
320 PR gold/17819
321 * gold.cc (queue_final_tasks): When --build-id=tree, queue a
322 separate task to schedule the build id computation.
323 * layout.cc (Hash_task::Hash_task): Remove build_id_blocker,
324 add Output_file and offset.
325 (Hash_task::run): Get and release the input views.
326 (Hash_task::is_runnable): Always return NULL (always runnable).
327 (Layout::queue_build_id_tasks): Remove.
328 (Layout::write_build_id): Add array_of_hashes and size_of_hashes
329 parameters; use them instead of class members.
330 (Build_id_task_runner::run): New function.
331 (Close_task_runner::run): Pass array_of_hashes and size_of_hashes
332 to write_build_id.
333 * layout.h (Layout::queue_build_id_tasks): Remove.
334 (Layout::write_build_id): Add array_of_hashes and size_of_hashes
335 parameters.
336 (Layout::array_of_hashes_): Remove.
337 (Layout::size_of_array_of_hashes_): Remove.
338 (Layout::input_view_): Remove.
339 (Build_id_task_runner): New class.
340 (Close_task_runner::Close_task_runner): Add array_of_hashes and
341 size_of_hashes parameters.
342 (Close_task_runner::array_of_hashes_): New data member.
343 (Close_task_runner::size_of_hashes_): New data member.
344 * testsuite/Makefile.am
345 (flagstest_compress_debug_sections_and_build_id_tree): New test.
346 * testsuite/Makefile.in: Regenerate.
347
400f8944
RÁE
3482015-06-01 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
349
350 * merge.cc (get_input_merge_map): Update for data structure change.
351 (get_or_make_input_merge_map): Update for data structure change.
352 * merge.h (Object_merge_map): Use a std::vector<std::pair>> instead of
353 a std::map. Remove first_shnum_, first_map_, second_shnum_, second_map_.
354
bbec1a5d
AM
3552015-05-16 Alan Modra <amodra@gmail.com>
356
357 * reloc.cc (Sized_relobj_file::find_functions): Use function_location.
358 * powerpc.cc (Target_powerpc::do_calls_non_split): New function.
359 (addi_12_1, addis_2_12, addis_12_1, cmpld_7_12_0): New constants.
360 (lis_0): Rename from lis_0_0.
361
efc6fa12
CC
3622015-04-29 Cary Coutant <cary@google.com>
363 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
364
365 * gc.h (Garbage_collection::is_section_garbage): Change Object*
366 to Relobj*.
367 (Garbage_collection::add_reference): Likewise.
368 (Garbage_collection::gc_process_relocs): Likewise. Don't push
369 object/shndx pair onto *secvec for dynamic objects. Don't follow
370 relocations pointing to dynamic objects for GC.
371 * icf.cc (Icf::find_identical_sections): Change Object* to Relobj*.
372 (Icf::unfold_section): Likewise.
373 (Icf::is_section_folded): Likewise.
374 (Icf::get_folded_section): Likewise.
375 * icf.h: (Icf::get_folded_section): Likewise.
376 (Icf::unfold_section): Likewise.
377 (Icf::is_section_folded): Likewise.
378 (Icf::section_has_function_pointers): Likewise.
379 (Icf::set_section_has_function_pointers): Likewise.
380 * object.h (Section_id): Likewise.
381 (Const_section_id): Likewise.
382 * output.cc (Output_section::update_section_layout): Likewise.
383 * output.h: (Output_section_lookup_maps::find_relaxed_input_section):
384 Likewise.
385 * plugin.cc (update_section_order): Likewise.
386 (unique_segment_for_sections): Likewise.
387 * powerpc.cc (Powerpc_relobj::add_reference): Likewise.
388 (Target_powerpc::do_gc_add_reference): Likewise.
389 (Target_powerpc::gc_process_relocs): Likewise.
390 (Target_powerpc::do_gc_add_reference): Likewise.
391 * symtab.cc (Symbol_table::is_section_folded): Likewise.
392 (Symbol_table::gc_mark_symbol): Likewise.
393 * symtab.h: (Symbol_table::is_section_folded): Likewise.
394 * target.h: (Sized_target::gc_add_reference): Likewise.
395 (Sized_target::do_gc_add_reference): Likewise.
396
f9d3ecaa
NC
3972015-04-29 Nick Clifton <nickc@redhat.com>
398
399 * po/fi.po: Updated Finnish translation.
400
faa2211d
AM
4012015-04-28 Alan Modra <amodra@gmail.com>
402
403 * powerpc.cc (Target_powerpc::do_dynsym_value): Use Address rather
404 than unsigned int for find_global_entry result temp. Compare
405 against invalid_address.
406 (Target_powerpc::do_plt_address_for_global): Likewise.
407 (Target_powerpc::Relocate::relocate): Likewise. Don't assert
408 on plt call stub existence for debug info. Do assert for plt
409 and global entry stub existence if an alloc section.
410
6ec65f28
AM
4112015-04-28 Alan Modra <amodra@gmail.com>
412
413 * powerpc.cc (Target_powerpc::Relocate::relocate): Don't assert
414 on missing global entry stub due to bogus debug info.
415
7a2a1c79
HS
4162015-04-27 Han Shen <shenhan@google.com>
417
418 * options.h (--fix-cortex-a53-843419): Rename option.
419 * aarch64.cc (AArch64_relobj::do_count_local_symbols): Use renamed
420 option.
421 (AArch64_relobj::scan_sections_for_stubs): Use renamed option.
422
cfbf0e3c
RÁE
4232015-04-27 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
424
425 PR gold/18327
426 * output.cc (Output_section::is_input_address_mapped): Assume a missing
427 entry is mapped.
428 * testsuite/Makefile.am: Add the eh_test test.
429 * testsuite/Makefile.in: Regenerate.
430 * testsuite/eh_test_a.cc: New test.
431 * testsuite/eh_test_b.cc: New test.
432
6ec65f28
AM
4332015-04-23 Sriraman Tallam <tmsriram@google.com>
434
a100d66f
ST
435 * options.h (--weak-unresolved-symbols): New option.
436 * symtab.cc (Symbol_table::sized_write_globals): Change symbol
437 binding to weak with new option.
438 * symtab.h (is_weak_undefined): Check for new option.
439 (is_strong_undefined): Check for new option.
440 * testsuite/Makefile.am (weak_unresolved_symbols_test): New test.
441 * testsuite/Makefile.in: Regenerate.
442 * testsuite/weak_unresolved_symbols_test.cc: New file.
443
4b889c30
IC
4442015-04-20 Ian Coolidge <icoolidge@google.com>
445
446 * symtab.cc (Symbol::should_add_dynsym_entry): Return true for
447 GNU_UNIQUE.
448
4277535c
RÁE
4492015-04-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
450
451 * gc.cc (Garbage_collection::do_transitive_closure): Use back and
452 push_back.
453 * gc.h (Garbage_collection): Use a std::vector instead of a std::queue.
454 * object.cc (Sized_relobj_file::do_layout): Use push_back.
455 * powerpc.cc (process_gc_mark): Use push_back.
456 (Target_powerpc::do_gc_mark_symbol): Use push_back.
457 * symtab.cc (Symbol_table::gc_mark_symbol): Use push_back.
458
7a2a1c79 4592015-04-16 Han Shen <shenhan@google.com>
5019d64a 460
6ec65f28
AM
461 * aarch64.cc (AArch64_insn_utilities): New utility class.
462 (AArch64_relobj::Mapping_symbol_position): New struct.
463 (AArch64_relobj::Mapping_symbol_info): New typedef.
464 (AArch64_relobj::do_count_local_symbols): New function overriding
465 parent's implementation.
466 (AArch64_relobj::mapping_symbol_info_): New member
467 (AArch64_relobj::scan_erratum_843419): New method.
468 (Target_aarch64::scan_erratum_843419_span): New method.
469 (Target_aarch64::is_erratum_843419_sequence): New method.
470 * options.h (fix_cortex_a53): New option.
5019d64a 471
a6a17750
CC
4722015-04-09 Cary Coutant <ccoutant@google.com>
473
474 * symtab.cc (Symbol::final_value_is_known): Check for TLS symbol
475 in a PIE link.
476 * testsuite/Makefile.am (tls_pie_test.sh): New test.
477 * testsuite/Makefile.in: Regenerate.
478 * testsuite/tls_pie_test.sh: New.
479
437ddf0c
CC
4802015-04-09 Cary Coutant <ccoutant@google.com>
481
482 * debug.h (DEBUG_LOCATION): New.
483 (DEBUG_ALL): Include DEBUG_LOCATION.
484 (debug_string_to_enum): Add DEBUG_LOCATION.
485 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Fix debug
486 output to print correct context.
487 (Sized_dwarf_line_info::do_addr2line): Add debug output. Return
488 up to 4 more locations at the beginning of the function.
489 * symtab.cc (Symbol_table::detect_odr_violations): Get canonical
490 result before sorting list of line numbers.
491 * testsuite/debug_msg.sh: Allow range of line numbers for
492 canonical results on optimized code.
493
24491327
HS
4942015-04-07 HC Yen <hc.yen@mediatek.com>
495
496 Add AArch32 support for gold linker.
497 gold/
498 * arm.cc: Add V8 arch combine table.
499
7fa5525f
RÁE
5002015-04-06 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
501
502 * aarch64.cc (do_reloc_addend): Fix signature to match the parent one.
503
5368dcf2
RÁE
5042015-04-06 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
505
506 * gc.cc (Garbage_collection::do_transitive_closure): Avoid a call
507 to find by using the return value of insert.
508
9dbb4b02
RÁE
5092015-04-06 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
510
511 * gc.cc (Garbage_collection::do_transitive_closure): Avoid a copy
512 constructor call.
513
1fa29f10
IT
5142015-04-06 Ilya Tocar <ilya.tocar@intel.com>
515
516 PR gold/17641
517 * x86_64.cc (Target_x86_64::can_convert_mov_to_lea): New.
518 (Target_x86_64::Scan::local): Don't create GOT entry, when we
519 can convert mov to lea.
520 (Target_x86_64::Scan::global): Ditto.
521 (Target_x86_64::Relocate::relocate): Convert mov foo@GOTPCREL(%rip),
522 %reg to lea foo(%rip), %reg if possible.
523 * testsuite/Makefile.am (x86_64_mov_to_lea): New test.
524 * testsuite/x86_64_mov_to_lea1.s: New.
525 * testsuite/x86_64_mov_to_lea2.s: Ditto.
526 * testsuite/x86_64_mov_to_lea3.s: Ditto.
527 * testsuite/x86_64_mov_to_lea4.s: Ditto.
528 * testsuite/x86_64_mov_to_lea.sh: Ditto.
529
39f3de7c
L
5302015-04-02 H.J. Lu <hongjiu.lu@intel.com>
531
532 * configure: Regenerated.
533
c4fc4724
IT
5342015-04-01 Ilya Tocar <ilya.tocar@intel.com>
535
536 PR gold/17640
537 * i386.cc (Target_i386::can_convert_mov_to_lea): New.
538 (Target_i386::Scan::local): Don't create GOT entry, when we
539 can convert GOT to GOTOFF.
540 (Target_i386::Scan::global): Ditto.
541 (Target_i386::Relocate::relocate): Convert mov foo@GOT(%reg), %reg to
542 lea foo@GOTOFF(%reg), %reg if possible.
543 * testsuite/Makefile.am (i386_mov_to_lea): New test.
544 * testsuite/i386_mov_to_lea1.s: New.
545 * testsuite/i386_mov_to_lea2.s: Ditto.
546 * testsuite/i386_mov_to_lea3.s: Ditto.
547 * testsuite/i386_mov_to_lea4.s: Ditto.
548 * testsuite/i386_mov_to_lea5.s: Ditto.
549 * testsuite/i386_mov_to_lea.sh: Ditto.
550
918357b9
L
5512015-04-01 H.J. Lu <hongjiu.lu@intel.com>
552
553 * Makefile.am (ZLIB): New.
554 (ZLIBINC): Likewise.
555 (AM_CFLAGS): Add $(ZLIBINC).
556 (AM_CXXFLAGS): Likewise.
557 (ldadd_varldadd_var): Add $(ZLIB).
558 (incremental_dump_LDADD): Likewise.
559 (dwp_LDADD): Likewise.
560 * compressed_output.cc: Don't check HAVE_ZLIB_H to include
561 <zlib.h>.
562 (zlib_compress): Don't check HAVE_ZLIB_H.
563 (zlib_decompress): Likewise.
564 * options.h (compress_debug_sections): Likewise.
565 * configure.ac (AM_CONDITIONAL): Removed.
566 * testsuite/Makefile.am (ZLIB): New.
567 (LDADD): Add $(ZLIB).
568 Don't check HAVE_ZLIB.
569 * Makefile.in: Regenerated.
570 * config.in: Likewise.
571 * configure: Likewise.
572 * testsuite/Makefile.in: Likewise.
573
6b0ad2eb
JY
5742015-03-30 Jing Yu <jingyu@google.com>
575
576 * aarch64-reloc.def: New TLSLD_ADD_DTPREL_HI12,
577 TLSLD_ADD_DTPREL_LO12_NC.
578 * aarch64.cc (Target_aarch64::define_tls_base_symbol): Always let
579 _TLS_MODULE_BASE_ point to the start of tls segment.
580 (Target_aarch64::optimize_tls_reloc): Add cases for
581 R_AARCH64_TLSLD_ADD_DTPREL_HI12 and
582 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC.
583 (Target_aarch64::Scan::local): Likewise.
584 (Target_aarch64::Scan::global): Likewise.
585 (Target_aarch64::Relocate::relocate): Likewise.
586 (Target_aarch64::Relocate::relocate_tls): Likewise. And remove
587 subtracting tls segment size from symbol value for TLSLD_*_DTPREL
588 relocations.
589
0916f9e7
RÁE
5902015-03-27 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
591
592 * merge.cc (Object_merge_map::add_mapping): call
593 Object_merge_map::Input_merge_map::add_mapping.
594 (Object_merge_map::Input_merge_map::add_mapping): New.
595 (Output_merge_data::do_add_input_section): Call
596 get_or_make_input_merge_map before a loop.
597 (Output_merge_string<Char_type>::finalize_merged_data): Call
598 get_or_make_input_merge_map before a loop.
599 * merge.h (Object_merge_map): Make Input_merge_map public.
600 * object.cc (Relobj::add_merge_mapping): Use get_or_create_merge_map.
601 (Relobj::get_or_create_merge_map): New.
602 * object.h (Relobj::get_or_create_merge_map): New.
603
282c9750
AM
6042015-03-24 Alan Modra <amodra@gmail.com>
605
606 PR 18147
607 * powerpc.cc (Target_powerpc::Relocate::relocate): Don't report
608 relocation errors for branches to strong undefined symbols.
609
67f95b96
RÁE
6102015-03-23 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
611
612 * merge.cc (Object_merge_map::get_input_merge_map): Make it const.
613 (Object_merge_map::is_merge_section_for): Remove.
614 (Object_merge_map::find_merge_section): New.
615 * merge.h (Object_merge_map::is_merge_section_for): Remove.
616 (Object_merge_map::find_merge_section): New.
617 (Object_merge_map::get_input_merge_map): Add a const version.
618 * object.cc (Relobj::is_merge_section_for): Remove.
619 (Relobj::find_merge_section): New.
620 * object.h (Relobj::is_merge_section_for): Remove.
621 (Relobj::find_merge_section): New.
622 * output.cc
623 (Output_section::Input_section::is_merge_section_for): Remove.
624 (Output_section::add_merge_input_section): Don't call
625 add_merge_input_section.
626 (Output_section::find_merge_section): Return const. Use
627 object->find_merge_section.
628 (Output_section::build_lookup_maps): Don't build a map for
629 merge sections.
630 (Output_section::is_input_address_mapped): Return false if
631 section is not found.
632 (Output_section::find_starting_output_address): Use
633 find_merge_section instead of is_merge_section_for.
634 (Output_section::add_script_input_section): Don't build a map for
635 merge sections.
636 * output.h (Output_section_lookup_maps::merge_sections_by_id_): Remove.
637 (Output_section_lookup_maps::find_merge_section): Remove.
638 (Output_section_lookup_maps::add_merge_input_section) Remove.
639 (Output_section::find_merge_section): Return const.
640
152f7024
CC
6412015-03-22 Cary Coutant <cary@google.com>
642
643 PR gold/18106
644 * i386.cc (Target_i386::Relocate::tls_gd_to_ie): Fix support for
645 non-SIB form of lea, with nop after the call.
646
bccffdfd
CC
6472015-03-21 Cary Coutant <cary@google.com>
648
649 PR gold/14217
650 * output.cc (Output_segment::is_first_section_relro): Don't ignore
651 .tdata section.
652 (Output_segment::set_section_addresses): Don't align size of relro
653 segment for .tbss.
654
1c582fe7
CC
6552015-03-21 Cary Coutant <cary@google.com>
656
657 PR gold/18010
658 * stringpool.cc (Stringpool_template): Don't optimize if section
659 alignment is greater than sizeof(char).
660
410da591
CC
6612015-03-21 Cary Coutant <cary@google.com>
662
663 PR gold/18048
664 * script-c.h (script_include_directive): Add first_token parameter.
665 * script.cc (script_include_directive): Add first_token parameter, and
666 pass it to read_script_file.
667 * yyscript.y (PARSING_SECTIONS_BLOCK, PARSING_SECTION_CMDS)
668 (PARSING_MEMORY_DEF): New tokens.
669 (top): Add new productions for INCLUDE files.
670 (file_cmd): Replace file_or_sections_cmd with copy of its productions.
671 Pass PARSING_LINKER_SCRIPT to script_include_directive.
672 (section_block_cmd): Likewise; pass PARSING_SECTIONS_BLOCK.
673 (section_cmd): Pass PARSING_SECTION_CMDS.
674 (file_or_sections_cmd): Remove.
675 (memory_def): Pass PARSING_MEMORY_DEF.
676 * testsuite/Makefile.am (memory_test_2): New test.
677 * testsuite/Makefile.in: Regenerate.
678 * testsuite/memory_test_inc.t: New script file.
679 * testsuite/memory_test_inc_1.t.src: New script file.
680 * testsuite/memory_test_inc_2.t.src: New script file.
681 * testsuite/memory_test_inc_3.t.src: New script file.
682
0d5bbdb0
CC
6832015-03-21 Cary Coutant <cary@google.com>
684
685 * dwp.cc (Sized_relobj_dwo::do_section_contents): Delete.
686 (Sized_relobj_dwo::setup): Build compressed section map.
687 (Sized_relobj_dwo::do_decompressed_section_contents): Delete.
688 * dynobj.cc (Sized_dynobj::base_read_symbols): Build compressed
689 section map.
690 * object.cc (Sized_relobj_file::Sized_relobj_file): Remove
691 compressed_sections_ field.
692 (build_compressed_section_map): Take Object instead of
693 Sized_relobj_file parameter; add decompress_if_needed parameter.
694 (Sized_relobj_file::do_find_special_sections): Store compressed
695 section map in parent Object.
696 (Sized_relobj_file::do_decompressed_section_contents): Move
697 implementation to Object::decompressed_section_contents.
698 (Sized_relobj_file::do_discard_decompressed_sections): Move
699 implementation to Object::discard_decompressed_sections.
700 * object.h (build_compressed_section_map): Declare.
701 (Object::Object): Add compressed_sections_ field.
702 (Object::section_is_compressed): Move implementation here.
703 (Object::decompressed_section_contents): De-virtualize.
704 (Object::discard_decompressed_sections): De-virtualize.
705 (Object::do_section_is_compressed): Delete.
706 (Object::do_decompressed_section_contents): Delete.
707 (Object::set_compressed_sections): New method.
708 (Object::compressed_sections): New method.
709 (Object::compressed_sections_): New data member.
710 (Compressed_section_info, Compressed_section_map): Move to top of file.
711 (Sized_relobj_file::do_section_is_compressed): Delete.
712 (Sized_relobj_file::do_decompressed_section_contents): Delete.
713 (Sized_relobj_file::do_discard_decompressed_sections): Delete.
714 (Sized_relobj_file::compressed_sections_): Move to Object class.
715
bd9e0d46
CC
7162015-03-21 Cary Coutant <ccoutant@google.com>
717
718 PR gold/18152
719 * gold.cc (queue_middle_tasks): Finalize .eh_frame after laying out
720 deferred objects.
721
943c8b43
CC
7222015-03-11 Cary Coutant <ccoutant@google.com>
723
724 * options.cc (General_options::finalize): Don't allow -z relro
725 with incremental linking.
726 * testsuite/Makefile.am (incremental_test): Add -z norelro.
727 (incremental_test_2): Likewise.
728 (incremental_test_3): Likewise.
729 (incremental_test_4): Likewise.
730 (incremental_test_5): Likewise.
731 (incremental_test_6): Likewise.
732 (incremental_copy_test): Likewise.
733 (incremental_common_test_1): Likewise.
734 (incremental_comdat_test_1): Likewise.
735 * testsuite/Makefile.in: Regenerate.
736
e1663197
CC
7372015-03-09 Cary Coutant <ccoutant@google.com>
738
739 PR gold/14675
740 * ehframe.cc (Eh_frame::add_ehframe_input_section): Change return type;
741 return enum indicating whether .eh_frame section is empty, optimizable,
742 unrecognized, or an end marker. Adjust explicit instantiations.
743 * ehframe.h (Eh_frame::Eh_frame_section_disposition): New enum type.
744 (Eh_frame::add_ehframe_input_section): Change return type.
745 * gold.cc (queue_middle_tasks): Call Layout::finalize_eh_frame_section.
746 * layout.cc (Layout::layout_eh_frame): Don't add optimized sections
747 to the .eh_frame output section until we see the end marker.
748 (Layout::finalize_eh_frame_section): New.
749 * layout.h: (Layout::finalize_eh_frame_section): New.
750
beb8418f
L
7512015-03-05 H.J. Lu <hongjiu.lu@intel.com>
752
753 * output.cc (Relobj::initialize_input_to_output_map<size>):
754 Remove typename on elfcpp::Elf_types<size>::Elf_Addr.
755
48c73428
CC
7562015-03-04 Cary Coutant <ccoutant@google.com>
757
758 * parameters.cc (Parameters::set_target_once): Call
759 Target::select_as_default_target just once from here...
760 (set_parameters_target): ...instead of from here.
761
7622015-03-04 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
dbe40a88
RÁE
763
764 * ehframe.cc (Cie::set_output_offset): Pass in and use a
765 Output_section_data instead of a Merge_map.
766 (Eh_frame::Eh_frame): Don't initialize merge_map_.
767 (Eh_frame::read_cie): Use add_merge_mapping instead of
768 Merge_map::add_mapping.
769 (Eh_frame::read_fde): Ditto.
770 (Eh_frame::set_final_data_size): Use this instead of this->merge_map_.
771 (Eh_frame::do_output_offset): Use merge_output_offset istead of
772 merge_map_->get_output_offset.
773 (Eh_frame::do_is_merge_section_for): Delete.
774 * ehframe.h (Fde::add_mapping): Pass in and use a Output_section_data
775 instead of a Merge_map.
776 (Cie::set_output_offset): Pass in a Output_section_data instead of a
777 Merge_map.
778 (Eh_frame::do_is_merge_section_for): Delete.
779 (Eh_frame::merge_map_): Delete.
780 * merge.cc (Object_merge_map::get_or_make_input_merge_map): Pass in
781 and use a Output_section_data instead of a Merge_map.
782 (Object_merge_map::add_mapping): Ditto.
783 (Object_merge_map::get_output_offset): Remove the merge_map argument.
784 (Object_merge_map::is_merge_section_for): Pass in and use a
785 Output_section_data instead of a Merge_map.
786 (Merge_map): Delete.
787 (Output_merge_base::do_output_offset): Use merge_output_offset instead
788 of merge_map_.get_output_offset.
789 (Output_merge_base::do_is_merge_section_for): Delete.
790 (Output_merge_data::do_add_input_section): Use
791 object->add_merge_mapping instead of add_mapping.
792 (Output_merge_string<Char_type>::finalize_merged_data): Ditto.
793 * merge.h (Merge_map): Delete forward declaration.
794 (Object_merge_map::add_mapping): Pass in and use a Output_section_data
795 instead of a Merge_map.
796 (Object_merge_map::get_output_offset): Remove the merge_map argument.
797 (Object_merge_map::is_merge_section_for): Pass in and use a
798 Output_section_data instead of a Merge_map.
799 (Input_merge_map::Object_merge_map::merge_map): Replace with
800 output_data.
801 (Object_merge_map::get_or_make_input_merge_map): Pass in and use a
802 Output_section_data instead of a Merge_map.
803 (Merge_map): Delete.
804 (Output_merge_base::Output_merge_base): Don't initialize merge_map_.
805 (Output_merge_base::do_is_merge_section_for): Delete.
806 (Output_merge_base::add_mapping): Delete.
807 (Output_merge_base::merge_map_): Delete.
808 * object.cc (Relobj::initialize_input_to_output_map): New.
809 (Relobj::initialize_input_to_output_map): New.
810 (Relobj::merge_output_offset): New.
811 (Relobj::is_merge_section_for): New.
812 (Relobj::initialize_input_to_output_map): Instantiate for 32 and 64
813 bits.
814 * object.h (Relobj::merge_map): Delete.
815 (initialize_input_to_output_map): New.
816 (set_merge_map): Delete.
817 (add_merge_mapping): New.
818 (merge_output_offset): New.
819 (is_merge_section_for): New.
820 * output.cc (Output_section::Input_section::is_merge_section_for):
821 Use object->is_merge_section_for.
822 * output.h (Output_section_data::is_merge_section_for): Delete.
823 (Output_section_data::do_is_merge_section_for): Delete.
824 * reloc.cc (Merged_symbol_value<size>::initialize_input_to_output_map):
825 Use object->initialize_input_to_output_map.
826 (Merged_symbol_value<size>::value_from_output_section): Use
827 object->merge_output_offset.
828
48c73428 8292015-03-02 Peter Collingbourne <pcc@google.com>
2c7b626c
CC
830 Cary Coutant <ccoutant@google.com>
831
832 * output.cc (Output_section::add_merge_input_section): Do not
833 attempt to merge sections with an entsize of 0.
834
48c73428 8352015-03-02 Khem Raj <raj.khem@gmail.com>
5b07cd84
CC
836
837 * attributes.h (class Output_attributes_section_data ): Add
838 do_print_to_mapfile function.
839
ec86f434
AM
8402015-02-24 Alan Modra <amodra@gmail.com>
841
842 PR 18010
843 * powerpc.cc (Powerpc_relocate_functions::addr16_ds): Always
844 complain if value is not a multiple of four.
845 (Target_powerpc::Relocate::relocate): Correct handling of
846 R_POWERPC_GOT_TPREL16 and R_POWERPC_GOT_TPREL16_LO for ppc64.
847
be66981e
L
8482015-02-21 H.J. Lu <hongjiu.lu@intel.com>
849
850 * configure.ac (default_size): Set to 32 for x32.
851 * configure: Regenerated.
852
e3ee8ed4
AM
8532015-02-18 Alan Modra <amodra@gmail.com>
854
855 PR 17954
856 * powerpc.cc (Global_symbol_visitor_opd::operator()): Set default
857 visibility.
858
3a935c6c
RÁE
8592015-02-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
860
861 * gc.h (Garbage_collection::add_reference): Don't use find.
862
e0a1e121
RÁE
8632015-02-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
864
865 * object.cc (write_local_symbols): avoid std::vector copy.
866
45a4fb1a
RÁE
8672015-02-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
868
869 * merge.cc (get_output_offset): Use upper_bound instead of lower_bound.
870
2d9afefe
MW
8712015-02-09 Mark Wielaard <mjw@redhat.com>
872
873 * gdb-index.cc (Gdb_index_info_reader::visit_top_die): Recognize
874 DW_LANG_Fortran03 and DW_LANG_Fortran08.
875
e9c1bdad
CC
8762015-02-16 Cary Coutant <ccoutant@google.com>
877
878 PR gold/13577
879 PR gold/16992
880 * layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or
881 DF_SYMBOLIC if --dynamic-list option is used.
882 * options.cc (General_options::finalize): --dynamic-list is not
883 mutually exclusive with -Bsymbolic.
884 * symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not
885 listed in --dynamic-list.
886 * testsuite/Makefile.am (dynamic_list_lib2.so): Add
887 -Bsymbolic-functions.
888 * testsuite/Makefile.in: Regenerate.
889
0ed4b0bf
CC
8902015-02-16 Cary Coutant <ccoutant@google.com>
891
892 PR gold/17971
893 * incremental.cc: Remove redundant include of "output.h".
894
1a920511
JY
8952015-02-12 Jing Yu <jingyu@google.com>
896
897 * aarch64-reloc.def (TLSLE_MOVW_TPREL_G2, TLSLE_MOVW_TPREL_G1,
898 TLSLE_MOVW_TPREL_G1_NC, TLSLE_MOVW_TPREL_G0, TLSLE_MOVW_TPREL_G0_NC,):
899 New relocation.
900 * aarch64.cc (Target_aarch64::Scan::local): Add cases for new
901 TLSLE_MOVW_* relocations.
902 (Target_aarch64::Scan::global): Likewise.
903 (Target_aarch64::Relocate::relocate): Likewise.
904 (Target_aarch64::Relocate::relocate_tls): Add cases and handlings
905 for new TLSLE_MOVW_* relocations.
906
07f107f3
WN
9072015-02-11 Will Newton <will.newton@linaro.org>
908
909 PR gold/13321
910 * arm.cc (Target_arm::make_plt_section): Create an ARM
911 state mapping symbol at the start of the PLT.
912
e051a5b5
L
9132015-02-09 H.J. Lu <hongjiu.lu@intel.com>
914
915 * testsuite/Makefile.am (two_file_shared_2_pic_1_test_DEPENDENCIES):
916 Replace two_file_shared_2.so with two_file_shared_1.so.
917 * testsuite/Makefile.in: Regenerated.
918
dddcc5b9
AM
9192015-02-09 Alan Modra <amodra@gmail.com>
920
921 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add libweak_undef_2.a,
922 plugin_test_thin.a and defsym_test.
923 * testsuite/Makefile.in: Regenerate.
924
b39b8b9d
RÁE
9252015-02-04 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
926
927 * merge.cc (do_add_input_section): Combine loop epilogue into main loop
928 body.
929
b66d1c52
CC
9302015-02-04 Peter Collingbourne <pcc@google.com>
931
932 * plugin.cc (Pluginobj::get_symbol_resolution_info): Resolve
933 forwarding symbols when computing symbol resolution info for plugins.
934 * plugin.h (Plugin_manager::symtab): New method.
935 (Pluginobj::get_symbol_resolution_info): Add symtab parameter.
936
23081de0
CC
9372015-02-03 Cary Coutant <ccoutant@google.com>
938 Peter Collingbourne <pcc@google.com>
939
940 PR gold/15660
941 * archive.cc (Thin_archive_object_unlocker): New class.
942 (Archive::include_member): Unlock external members of thin archives.
943 * testsuite/Makefile.am (plugin_test_1): Rename .syms files.
944 (plugin_test_2): Likewise.
945 (plugin_test_3): Likewise.
946 (plugin_test_4): Likewise.
947 (plugin_test_5): Likewise.
948 (plugin_test_6): Likewise.
949 (plugin_test_7): Likewise.
950 (plugin_test_8): Likewise.
951 (plugin_test_9): Likewise.
952 (plugin_test_10): Likewise.
953 (plugin_test_11): New test case.
954 * testsuite/Makefile.in: Regenerate.
955 * testsuite/plugin_test.c (claim_file_hook): Check for parallel .syms
956 file to decide whether to claim file.
957 (all_symbols_read_hook): Likewise.
958 * testsuite/plugin_test_1.sh: Adjust expected output.
959 * testsuite/plugin_test_2.sh: Likewise.
960 * testsuite/plugin_test_3.sh: Likewise.
961 * testsuite/plugin_test_6.sh: Likewise.
962 * testsuite/plugin_test_tls.sh: Likewise.
963 * testsuite/plugin_test_11.sh: New testcase.
964
9652015-02-03 Cary Coutant <ccoutant@google.com>
966
967 * descriptors.cc (Descriptors::open): Set artificially-low limit for
968 file descriptors when debugging enabled. Add debug output.
969 (Descriptors::release): Add debug output.
970 (Descriptors::close_some_descriptor): Likewise.
971 (Descriptors::close_all): Likewise.
972 * fileread.cc (File_read::lock): Likewise.
973 (File_read::unlock): Likewise.
974
24dd5808
CC
9752015-02-02 Cary Coutant <ccoutant@google.com>
976
977 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for
978 executable output file.
979
fa89cc82
HS
9802015-01-22 Han Shen <shenhan@google.com>
981
982 * arm.cc (Target_arm::Target_arm): Add initialization for new members.
983 (Target_arm::do_plt_address_for_global): New method.
984 (Target_arm::do_plt_address_for_local): New method.
985 (Target_arm::rel_irelative_section): New method.
986 (Target_arm::make_data_plt): Add more parameters for plt ctor.
987 (Target_arm::do_make_data_plt): Add more parameters for plt ctor.
988 (Target_arm::Scan::symbol_needs_plt_entry): Add ifunc support.
989 (Target_arm::Scan::reloc_needs_plt_for_ifunc): Add ifunc support.
990 (Target_arm::Scan::check_non_pic): Add ifunc support.
991 (Target_arm::Scan::local): Add ifunc support.
992 (Target_arm::Scan::global): Add ifunc support.
993 (Target_arm::make_plt_section): New method.
994 (Target_arm::make_plt_entry): Change to call to make_plt_section.
995 (Target_arm::make_local_ifunc_plt_entry): New method.
996 (Target_arm::got_irelative_): New member.
997 (Target_arm::rel_irelative_): New member.
998 (Target_arm::got_section): Add creation for got_irelative_.
999 (Target_arm::rel_dyn_section): Add creation for rel_irelative_.
1000 (Target_arm::Relocate::relocate): Properly set local ifunc address.
1001 (Target_arm::do_dynsym_value): Properly set global ifunc address.
1002 (Target_arm::scan_reloc_for_stub): Properly set global ifunc address.
1003 (Output_data_plt_arm::IRelative_data): New type.
1004 (Output_data_plt_arm::Output_data_plt_arm): Add more parameters.
1005 (Output_data_plt_arm::add_entry): Add more parameters.
1006 (Output_data_plt_arm::add_relocation): New method.
1007 (Output_data_plt_arm::add_local_ifunc_entry): New method.
1008 (Output_data_plt_arm::rel_irelative): New method.
1009 (Output_data_plt_arm::entry_count): Modified.
1010 (Output_data_plt_arm::address_for_global): New method.
1011 (Output_data_plt_arm::address_for_local): New method.
23081de0 1012gold/
fa89cc82
HS
1013 (Output_data_plt_arm::set_final_data_size): Add irelative_count_.
1014 (Output_data_plt_arm::insert_irelative_data): New method.
1015 (Output_data_plt_arm::irelative_rel_): New member.
1016 (Output_data_plt_arm::got_): New member.
1017 (Output_data_plt_arm::got_irelative_): New member.
1018 (Output_data_plt_arm::irelative_count_): New member.
1019 (Output_data_plt_arm::IRelative_data_vec): New typedef.
1020 (Output_data_plt_arm::irelative_data_vec_): New member.
1021 (Output_data_plt_arm::do_write): Write out irelative entries.
1022 (Output_data_plt_arm_standard::Output_data_plt_arm_standard): Add
1023 more parameters to ctor.
1024 (Output_data_plt_arm_nacl::Output_data_plt_arm_nacl): Add
1025 more parameters to ctor.
1026 * output.h (Output_data_reloc::add_local_relative): New method.
1027 * aarch64.cc (Output_data_plt_aarch64): Fixed typo in comment.
1028
0f81d3f0
AM
10292015-01-29 Alan Modra <amodra@gmail.com>
1030
1031 * powerpc.cc (Target_powerpc::Relocate::relocate): Correct GOT_TLSLD
1032 and GOT_TLSGD to LE optimization.
1033
65d92137
CC
10342015-01-28 Cary Coutant <ccoutant@google.com>
1035
1036 * x86_64.cc (Target_x86_64::Scan::global): Allow IE-to-LE optimization
1037 for undef TLS symbols.
1038 (Target_x86_64::Relocate::relocate_tls): Likewise.
1039 (Target_x86_64::Relocate::tls_ie_to_le): Likewise.
1040
5485698a
CC
10412015-01-25 Cary Coutant <ccoutant@google.com>
1042
1043 * output.cc (Output_segment::set_section_addresses): Fix calculation
1044 of size of relro segment.
1045
b01a4b04
AM
10462015-01-22 Alan Modra <amodra@gmail.com>
1047
1048 * powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct
1049 condition for need of ifunc plt entry.
1050 (Target_powerpc::Scan::global <got relocs>): Likewise.
1051
3d0064a9
CC
10522015-01-14 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1053
1054 * mips.cc (reloc_high): Add r_sym.
1055 (Mips_relocate_functions::relhi16): Add r_sym parameter. Pass r_sym to
1056 reloc_high constructor.
1057 (Mips_relocate_functions::relgot16_local): Likewise.
1058 (Mips_relocate_functions::rello16): Add r_sym parameter. Use r_sym and
1059 r_type to decide whether LO16 matches HI16.
1060 (Target_mips::Relocate::relocate): Pass r_sym to calls to relhi16,
1061 rello16 and relgot16_local.
1062
a5cd8f05
CC
10632015-01-09 Cary Coutant <ccoutant@google.com>
1064
1065 * layout.cc (Layout::set_segment_offsets): Don't align start of segment
1066 unless alignment is larger than page size.
1067
4fc1b9d4
L
10682015-01-06 H.J. Lu <hongjiu.lu@intel.com>
1069 Cary Coutant <ccoutant@google.com>
1070
1071 PR gold/17729
1072 * configure.ac (DEFAULT_TARGET_X86_64): Don't set for x32.
1073 (DEFAULT_TARGET_X32): Set for x32.
1074 * x86_64.cc (cmp_insn_32): New.
1075 (lea_r10_insn_32): Likewise.
1076 (lea_r11_insn_32): Likewise.
1077 (cmp_insn_64): Likewise.
1078 (lea_r10_insn_64): Likewise.
1079 (lea_r11_insn_64): Likewise.
1080 (Target_x86_64<size>::do_calls_non_split): Handle x32.
1081 * testsuite/Makefile.am (check_SCRIPTS): Add split_x32.sh.
1082 (check_DATA): Add split_x32 files.
1083 (split_x32_[1234n].o): New targets.
1084 (split_x32_[124]): New targets.
1085 (split_x32_[1234r].stdout): New targets.
1086 * testsuite/split_x32.sh: New file.
1087 * testsuite/split_x32_1.s: Likewise.
1088 * testsuite/split_x32_2.s: Likewise.
1089 * testsuite/split_x32_3.s: Likewise.
1090 * testsuite/split_x32_4.s: Likewise.
1091 * testsuite/split_x32_n.s: Likewise.
1092 * configure: Regenerated.
1093 * testsuite/Makefile.in: Likewise.
1094
e749cab8
L
10952015-01-06 H.J. Lu <hongjiu.lu@intel.com>
1096
1097 PR gold/17809
1098 * x86_64.cc (Target_x86_64<size>::Relocate::tls_ie_to_le): Handle
1099 x32.
1100
af759df0
AM
11012015-01-02 Alan Modra <amodra@gmail.com>
1102
1103 * version.cc (print_version): Just print current year.
1104 * dwp.cc (print_version): Likewise.
1105
b90efa5b
AM
11062015-01-01 Alan Modra <amodra@gmail.com>
1107
1108 Update year range in copyright notice of all files.
1109
f12d1e8a
AM
11102014-12-25 Alan Modra <amodra@gmail.com>
1111
1112 * arm.cc (Target_arm::do_adjust_elf_header): Provide namespace on
1113 new enums.
1114 (Target_arm::merge_object_attributes, ): Likewise.
1115
5c294fee
TG
11162014-12-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
1117
1118 * arm.cc (Target_arm::do_adjust_elf_header): Set e_flags in ELF header
1119 as hard float only when Tag_ABI_VFP_args is 1, using new enum value
1120 AEABI_VFP_args_vfp to check that.
1121 (Target_arm::merge_object_attributes): Handle new Tag_ABI_VFP_args
1122 value and replace hardcoded values by enum values.
1123
e30880c2
CC
11242014-12-22 Cary Coutant <ccoutant@google.com>
1125
1126 * powerpc.cc (Target_powerpc::relocate): Fix overflow check.
1127
bd040da1
L
11282014-12-20 H.J. Lu <hongjiu.lu@intel.com>
1129
1130 PR gold/14608
1131 * testsuite/debug_msg.cc (SometimesInlineFunction): Changed
1132 to "return i * i * 3;".
1133
e02a4046
CC
11342014-12-16 Cary Coutant <ccoutant@google.com>
1135
1136 * mapfile.cc (Mapfile::print_input_section): Print uncompressed sizes.
1137 (Mapfile::print_output_data): Use current_data_size() to avoid
1138 assert for sections requiring postprocessing; if address is not valid,
1139 print 0.
1140 (Mapfile::print_output_section): Use current_data_size(); print note
1141 that addresses and sizes are before compression.
1142
add6016b
L
11432014-12-14 H.J. Lu <hongjiu.lu@intel.com>
1144
1145 * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub):
1146 Cast current_group_size to unsigned long when reporting error.
1147
0bf32ea9
JY
11482014-12-10 Jing Yu <jingyu@google.com>
1149
1150 * aarch64.cc (Target_aarch64): Add new variable stub_group_size_.
1151 (AArch64_relocate_functions::maybe_apply_stub): Add new parameter.
1152 Update error message.
1153 (Target_aarch64::do_relax): Use absolute value of option
1154 stub_group_size. Replace local variable with class member
1155 stub_group_size_.
1156
cbcb23fa
AM
11572014-12-04 Alan Modra <amodra@gmail.com>
1158
1159 * powerpc.cc (Target_powerpc::Branch_info::make_stub): Ignore
1160 addend of PLTREL24 reloc when not generating a plt stub. Make
1161 max_branch_offset an "Address".
fbad6518 1162 (Stub_table::can_reach_stub): Make max_branch_offset an "Address".
cbcb23fa
AM
1163 (Target_powerpc::Relocate::relocate): Likewise.
1164
1611bc4a
AM
11652014-12-04 Alan Modra <amodra@gmail.com>
1166
1167 PR 17670
1168 * symtab.cc (Symbol::set_undefined): Remove assertion.
1169 * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
1170 on symbols defined in discarded sections, instead return false.
1171 Rearrange params, update all callers.
1172 (Target_powerpc::Branch_info::make_stub): Don't make stubs for
1173 branches to syms in discarded sections.
1174 (Global_symbol_visitor_opd::operator()): Set discarded opd syms
1175 undefined and flag as discarded.
1176 (Target_powerpc::Relocate::relocate): Localize variable.
1177
4759c34e
L
11782014-12-03 H.J. Lu <hongjiu.lu@intel.com>
1179
1180 PR gold/17675
1181 * testsuite/Makefile.am (pie_copyrelocs_test_CXXFLAGS): New.
1182 * testsuite/Makefile.in: Regenerated.
1183
1f98a074
AM
11842014-12-03 Alan Modra <amodra@gmail.com>
1185
1186 PR 17566
1187 * powerpc.cc (Target_powerpc::Scan::local): Use add_local_section
1188 when adding dynamic relocations against section symbols.
1189
fb257835
DI
11902014-12-01 Dimitry Ivanov <dimitry@google.com>
1191
1192 * layout.cc (Layout::finish_dynamic_section): When '-z global'
1193 is specified set DF_1_GLOBAL in DT_FLAGS_1 flags.
1194 * options.h (General_options): New -z option (global).
1195
d8e60314
CC
11962014-12-01 Cary Coutant <ccoutant@google.com>
1197
1198 PR gold/17578
1199 * layout.cc (Layout::layout_gnu_stack): Don't warn when -z execstack
1200 is given.
1201 (Layout::create_executable_stack_info): Warn when -z noexecstack is
1202 given but some inputs require executable stack.
1203
982bbd97
CC
12042014-11-26 Cary Coutant <ccoutant@google.com>
1205
1206 * layout.cc (gdb_sections): Keep .debug_gdb_scripts and
1207 .debug_str_offsets; strip .debug_gnu_pubnames and
1208 .debug_gnu_pubtypes.
1209 (lines_only_debug_sections): Strip all four new sections.
1210
bb779192
HS
12112014-11-26 Jing Yu <jingyu@google.com>
1212
1213 * aarch64.cc (Relocate::tls_desc_gd_to_ie): Set ldr target
1214 register to be x0 when to relax TLSDESC_LD64_LO12.
1215
a3e60ddb
AM
12162014-11-26 Alan Modra <amodra@gmail.com>
1217
1218 * powerpc.cc (struct Stub_table_owner): New.
1219 (Powerpc_relobj): Rename stub_table_ to stub_table_index_, an
1220 unsigned int vector. Update all references.
1221 (powerpc_relobj::set_stub_table): Take an unsigned int param
1222 rather than a Stub_table. Update callers.
1223 (Powerpc_relobj::clear_stub_table): New function.
1224 (Target_powerpc): Add relax_failed_, relax_fail_count_ and
1225 stub_group_size_ vars.
1226 (Target_powerpc::new_stub_table): Delete.
1227 (max_branch_delta): New function, extracted from..
1228 (Target_powerpc::Relocate::relocate): ..here..
1229 (Target_powerpc::Branch_info::make_stub): ..and here. Return
1230 status on whether stub created successfully.
1231 (Stub_control::Stub_control): Add "no_size_errors" param. Move
1232 default sizing to..
1233 (Target_powerpc::do_relax): ..here. Init stub_group_size_ and
1234 reduce on relax failure.
1235 (Target_powerpc::group_sections): Add "no_size_errors" param.
1236 Use stub_group_size_. Set up group info in a temp vector,
1237 before building Stub_table vector. Account for input sections
1238 possibly already converted to relaxed sections.
1239 (Stub_table::init): Delete. Merge into..
1240 (Stub_table::Stub_table): ..here.
1241 (Stub_table::can_reach_stub): New function.
1242 (Stub_table::add_plt_call_entry): Add "from" parameter and
1243 return true iff stub could be reached.
1244 (Stub_table::add_long_branch_entry): Similarly. Add "r_type"
1245 param too.
1246 (Stub_table::clear_stubs): Add "all" param.
1247
a20605cf
AM
12482014-11-26 Alan Modra <amodra@gmail.com>
1249
1250 * powerpc.cc (Stub_control::set_output_and_owner): New function.
1251 (Target_powerpc::group_sections): Use it.
1252
43b64deb
CC
12532014-11-25 Cary Coutant <ccoutant@google.com>
1254
1255 * binary.cc (Binary_to_elf::sized_convert): Add size to _start symbol.
1256 (Binary_to_elf::write_symbol): Add st_size parameter.
1257 * binary.h (Binary_to_elf::write_symbol): Add st_size parameter.
1258
c924eb67
CC
12592014-11-25 Cary Coutant <ccoutant@google.com>
1260
1261 PR gold/17639
1262 * object.cc (Sized_relobj_file): Initialize is_deferred_layout_.
1263 (Sized_relobj_file::do_layout): Handle deferred sections properly
1264 during GC pass 1. Don't add reloc sections to deferred list twice.
1265 * object.h (Sized_relobj_file::is_deferred_layout): New function.
1266 (Sized_relobj_file::is_deferred_layout_): New data member.
1267
9d585188
L
12682014-11-21 H.J. Lu <hongjiu.lu@intel.com>
1269
1270 PR gold/17619
1271 * x86_64.cc (Output_data_plt_x86_64_standard<size>::do_fill_plt_entry):
1272 Check PC-relative offset overflow in PLT entry.
1273
3ffaac20
AM
12742014-11-21 Alan Modra <amodra@gmail.com>
1275
1276 * powerpc.cc (Target_powerpc::Relocate::relocate): Correct test
1277 for undefined weaks.
1278
0cfb0717
AM
12792014-11-20 Alan Modra <amodra@gmail.com>
1280
1281 * powerpc.cc (Stub_control::Stub_control): Init stub14_group_size_
1282 from --stub-group-size parameter divided by 1024.
1283 (Powerpc_relocate_functions::rela, rela_ua): Add fieldsize
1284 template parameter. Update all uses.
1285 (Target_powerpc::Relocate::relocate): Rename has_plt_value to
1286 has_stub_value. Set for long branches. Don't report overflow for
1287 branch to undefined weak symbols. Print info message on
1288 overflowing branch to stub.
1289
f9dffbf0
AM
12902014-11-20 Alan Modra <amodra@gmail.com>
1291
1292 * powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters.
1293
e88ba8d5
L
12942014-11-13 H.J. Lu <hongjiu.lu@intel.com>
1295
1296 * x86_64.cc (Target_x86_64<size>::Scan::global): Don't make PLT
1297 entry for R_X86_64_GOTPLT64.
1298 (Target_x86_64<size>::Relocate::relocate): Update comments for
1299 R_X86_64_GOTPLT64.
1300
d37ffe25
ED
13012014-11-06 Evgeniy Dushistov <dushistov@mail.ru>
1302
1303 * plugin.cc: use lock to searialize calls of Plugin_manager::claim_file
1304 * plugin.h: add lock definition
1305
9726c3c1
HS
13062014-10-29 Han Shen <shenhan@google.com>
1307 Jing Yu <jingyu@google.com>
1308
1309 * aarch64-reloc.def: Add LD_PREL_LO12, ADR_PREL_LO21,
1310 TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
1311 TLSLD_MOVW_DTPREL_G0_NC. Change property of TLS relocations to
1312 Symbol::TLS_REF.
1313 * aarch64.cc (Target_aarch64::do_can_check_for_function_pointers): New
1314 method.
1315 (Target_aarch64::reloc_needs_plt_for_ifunc): New method.
1316 (Target_aarch64::tls_ld_to_le): New method.
1317 (Target_aarch64::aarch64_info): Enable can_icf_inline_merge_sections
1318 for 64bit targets.
1319 (Output_data_plt_aarch64::irelative_rel_): New data member.
1320 (Output_data_plt_aarch64::add_entry): Add irelative entries to plt.
1321 (Output_data_plt_aarch64::add_local_ifunc_entry): New method.
1322 (Output_data_plt_aarch64::add_relocation): New method.
1323 (Output_data_plt_aarch64::do_write): Add gold_assert on got_irelative
1324 offset. Add got_irelative size to got size.
1325 (AArch64_relocate_functions): Typedef AArch64_valtype. Replace long
1326 type string with the new typename.
1327 (AArch64_relocate_functions::update_adr): Replace parameter x with
1328 immed.
1329 (AArch64_relocate_functions::update_movnz): Correct wrong val mask.
1330 (AArch64_relocate_functions::reloc_common): New method.
1331 (AArch64_relocate_funcsions::rela_general): Extract common part out
1332 into reloc_common method.
1333 (AArch64_relocate_functions::rela_general): Likewise.
1334 (AArch64_relocate_functions::pcrela_general): Likewise.
1335 (AArch64_relocate_functions::adr): New method.
1336 (AArch64_relocate_functions::adrp): Calculate immed before calling
1337 update_adr.
1338 (AArch64_relocate_functions::adrp): Likewise.
1339 (AArch64_relocate_functions::movnz): Cast x to SignedW type when
1340 comparing x to 0. Calculate immed from ~x when x < 0.
1341 (Target_aarch64::optimize_tls_reloc): Add new cases for
1342 TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
1343 TLSLD_MOVW_DTPREL_G0_NC.
1344 (Target_aarch64::possible_function_pointer_reloc): Implement this
1345 method.
1346 (Target_aarch64::Scan::local_reloc_may_be_function_pointer): Update
1347 comment.
1348 (Target_aarch64::Scan::local): Add codes to handle STT_GNU_IFUNC
1349 symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
1350 TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
1351 (Target_aarch64::Scan::global): Add codes to handle STT_GNU_IFUNC
1352 symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
1353 TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
1354 (Target_aarch64::make_plt_entry): Call add_entry with two more
1355 parameters.
1356 (Target_aarch64::make_local_ifunc_plt_entry): New method.
1357 (Target_aarch64::Relocate::relocate): Add cases for LD_PREL_LO19,
1358 ADR_PREL_LO21, TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
1359 TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
1360 (Target_aarch64::Relocate::relocate_tls): Add cases for
1361 TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
1362 TLSLD_MOVW_DTPREL_G0_NC.
1363 * testsuite/icf_safe_so_test.cc: Correct test comment.
1364 * testsuite/icf_safe_test.sh: Add AArch64 arch.
1365
80272b8c
AM
13662014-10-22 Alan Modra <amodra@gmail.com>
1367
1368 * powerpc.cc (do_relax): Add gcc-4.9 libgomp functions to
1369 thread_starter.
1370
998a69f4
AS
13712014-10-18 Andreas Schwab <schwab@linux-m68k.org>
1372
1373 * configure.tgt (targ_extra_obj) [aarch64*-*]: Define.
1374
aed56ec5
CC
13752014-10-17 Cary Coutant <ccoutant@google.com>
1376
1377 * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub):
1378 Add "typename" keyword.
1379
bb779192 13802014-10-15 Han Shen <shenhan@google.com>
83a01957
HS
1381 Jing Yu <jingyu@google.com>
1382
1383 Patch for gold aarch64 backend to support relaxation.
1384 * aarch64-reloc.def: Change format.
1385 * aarch64.cc (class Reloc_stub): New class.
1386 (class Stub_table): New class.
1387 (class AArch64_relobj): New class.
1388 (class AArch64_input_section): New class.
1389 (class AArch64_output_section): New class.
1390 (Target_aarch64::new_stub_table): New method.
1391 (Target_aarch64::new_aarch64_input_section): New method.
1392 (Target_aarch64::find_aarch64_input_section): New method.
1393 (Target_aarch64::scan_section_for_stubs): New method.
1394 (Target_aarch64::scan_reloc_section_for_stubs): New method.
1395 (Target_aarch64::relocate_stub): New method.
1396 (Target_aarch64::current_target): New method.
1397 (Target_aarch64::do_make_elf_object): New method.
1398 (Target_aarch64::do_may_relax): New method.
1399 (Target_aarch64::do_relax): New method.
1400 (Target_aarch64::group_sections): New method.
1401 (Target_aarch64::scan_reloc_for_stub): New method.
1402 (Target_aarch64::do_make_output_section): New method.
1403 (Target_aarch64::stub_tables_): New data member.
1404 (Target_aarch64::aarch64_input_section_map_): New data member.
1405 (AArch64_relocate_functions::maybe_apply_stub): New method.
1406
db4c9594
CC
14072014-09-30 Cary Coutant <ccoutant@google.com>
1408
1409 PR gold/17432
1410 * resolve.cc (Symbol_table::resolve): Fix local shadowing error.
1411
cd6da036
KC
14122014-09-30 Kito Cheng <kito@0xlab.org>
1413
1414 PR gold/13597
1415 * layout.cc (Layout::create_dynamic_symtab): Build gnu-style
1416 hash table before sysv-style hash table.
1417
5f772412
ST
14182014-09-29 Sriraman Tallam <tmsriram@google.com>
1419
1420 * options.h (--pic-executable): Add negative to alias to -no-pie.
1421
5efeedf6
CC
14222014-09-26 Cary Coutant <ccoutant@google.com>
1423
1424 PR gold/16773
1425 * object.cc (Sized_relobj_file): Compute value of section symbols
1426 for TLS sections the same as TLS symbols.
1427
1707f183
CC
14282014-09-25 Cary Coutant <ccoutant@google.com>
1429
1430 PR gold/17432
1431 * resolve.cc (Symbol_table::resolve): Override common placeholder
1432 symbols, but adjust sizes.
1433 * symtab.cc (Symbol_table::add_from_object): Don't add placeholder
1434 symbols to common lists.
1435
00cac886
AM
14362014-09-24 Alan Modra <amodra@gmail.com>
1437
1438 * po/POTFILES.in: Regenerate.
1439
635aa30e
CC
14402014-09-23 Taiju Tsuiki <tzik@google.com>
1441 Cary Coutant <ccoutant@google.com>
1442
71b9b91b 1443 PR gold/14860
635aa30e
CC
1444 * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker
1445 on input_sections_blocker.
1446 * layout.cc (Write_sections_task::locks): Unblock
1447 input_sections_blocker_.
1448 * layout.h (Write_sections_task::Write_sections_task): Add
1449 input_sections_blocker.
1450 * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld
1451 to DEPENDENCIES.
1452 * testsuite/Makefile.in: Regenerate.
1453
c0c71592
RÁE
14542014-09-18 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
1455
1456 * testsuite/Makefile.am (plugin_test_10): New test.
1457 * testsuite/Makefile.in: Regenerate
1458 * testsuite/plugin_common_test_2.c (c1): Align to 8.
1459 * testsuite/plugin_test_10.sh: New file.
1460
6168c2a1
RÁE
14612014-09-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
1462
1463 * plugin.cc (Sized_pluginobj::do_add_symbols): Ignore isym->size.
1464 * resolve.cc (Symbol_table::resolve): Don't override common symbols
1465 during the replacement phase.
1466
3a531937
JY
14672014-09-17 Han Shen <shenhan@google.com>
1468 Jing Yu <jingyu@google.com>
1469
1470 * aarch64-reloc.def: Add TLSGD_ADR_PAGE21, TLSGD_ADD_LO12_NC,
1471 TLSDESC_ADR_PAGE21, TLSDESC_LD64_LO12, TLSDESC_ADD_LO12, TLSDESC_CALL.
1472 * aarch64.cc (Target_aarch64): Add data members
1473 got_irelative_, got_tlsdesc_, rela_irelative_, got_mod_index_offset_,
1474 tlsdesc_reloc_info_, tls_base_symbol_defined_. Initialize them in
1475 constructor.
1476 (Target_aarch64::do_reloc_symbol_index): New method.
1477 (Target_aarch64::do_reloc_addend): New method.
1478 (Target_aarch64::add_tlsdesc_info): New method.
1479 (Target_aarch64::do_dynsym_value): New method.
1480 (Target_aarch64::do_make_data_plt): Add new parameters: got,
1481 got_irelative. Pass them to Output_data_plt_aarch64_standard.
1482 (Target_aarch64::make_data_plt): Add new parameters: got,
1483 got_irelative. Pass them to do_make_data_plt.
1484 (Target_aarch64::Relocate): Add skip_call_tls_get_addr_ variable.
1485 (Target_aarch64::Relocate:tls_gd_to_le): New method.
1486 (Target_aarch64::Relocate:tls_ie_to_le): New method.
1487 (Target_aarch64::Relocate:tls_desc_gd_to_le): New method.
1488 (Target_aarch64::Relocate:tls_desc_gd_to_ie): New method.
1489 (Target_aarch64::got_tlsdesc_section): New method.
1490 (Target_aarch64::make_local_ifunc_plt_entry): New method.
1491 (Target_aarch64::define_tls_base_symbol): New method.
1492 (Target_aarch64::reserve_tlsdesc_entries): New method.
1493 (Target_aarch64::got_mod_index_entry): New method.
1494 (Target_aarch64::rela_tlsdesc_section): New method.
1495 (Target_aarch64::rela_irelative_section): New method.
1496 (Target_aarch64::Tlsdesc_info): New struct.
1497 (Target_aarch64::got_section): Create .got.plt space for IRELATIVE
1498 relocations and tlsdesc relocations.
1499 (Target_aarch64::optimize_tls_reloc): Implement method.
1500 (Output_data_plt_aarch64): Add member variables: tlsdesc_rel_, got_,
1501 got_irelative_, irelative_count_, tlsdesc_got_offset_. Initialize them
1502 in constructor.
1503 (Output_data_plt_aarch64::reserve_tlsdesc_entry): New method.
1504 (Output_data_plt_aarch64::has_tlsdesc_entry): New method.
1505 (Output_data_plt_aarch64::get_tlsdesc_got_offset): New method.
1506 (Output_data_plt_aarch64::get_tlsdesc_plt_offset): New method.
1507 (Output_data_plt_aarch64::rela_tlsdesc): New method.
1508 (Output_data_plt_aarch64::rela_irelative): New method.
1509 (Output_data_plt_aarch64::entry_count): Count IRELATIVE relocations.
1510 (Output_data_plt_aarch64::first_plt_entry_offset): Add const attribute.
1511 (Output_data_plt_aarch64::get_plt_tlsdesc_entry_size): New method.
1512 (Output_data_plt_aarch64::fill_tlsdesc_entry): New method.
1513 (Output_data_plt_aarch64::do_get_plt_tlsdesc_entry_size): New method.
1514 (Output_data_plt_aarch64::do_fill_tlsdesc_entry): New method.
1515 (Output_data_plt_aarch64_standard): New member variables:
1516 plt_tlsdesc_entry_size, tlsdesc_plt_entry.
1517 (Output_data_plt_aarch64_standard::Output_data_plt_aarch64_standard):
1518 New parameter: got, got_irelative.
1519 (Output_data_plt_aarch64_standard::do_get_plt_entry_size): New method.
1520 (Output_data_plt_aarch64_standard::do_fill_tlsdesc_entry): New method.
1521 (Output_data_plt_aarch64::do_write): Replace got_address with
1522 gotplt_address. Add irelative_count_ to count. Write tlsdesc entry.
1523 (AArch64_relocate_functions::update_movnz): New method.
1524 (AArch64_relocate_functions): Correct format.
1525 (AArch64_relocate_functions::movnz): New method.
1526 (Target_aarch64::Scan::local): Correct format. Move r_sym, got to
1527 before the switch. Add new cases to switch.
00cac886 1528 Check ie_to_le relaxation on tlsie relocations. Add code handling
3a531937
JY
1529 tlsgd tlsdesc cases.
1530 (Target_aarch64::Scan::global): Move arp to front. Do copy_reloc when
1531 needed. Add new cases to switch. Insert dynamic RELATIVE relocation
1532 when needed. Add code handling tlsgd, tlsie, tlsdesc cases.
1533 Call reloc_name_in_error_message to print unsupported reloc.
1534 (Target_aarch64::make_plt_section): Pass got_ and got_irelative_ to
1535 make_data_plt.
1536 (Target_aarch64::do_finalize_sections): Emit relocs to save COPY
1537 relocs. Fill in some more dynamic tags.
1538 (Target_aarch64::Relocate::relocate): Handle tlsgd, tlsdesc relocs.
1539 Skip call tls_get_addr when tlsgd is relaxed.
1540 (Target_aarch64::Relocate::relocate_tls): Correct format. Add code
1541 handling tlsgd, tlsdesc relocs, and tls gd->le, ie->le, tlsdesc->le,
1542 tlsdesc->ie relaxation.
1543
62661c93
SS
15442014-09-03 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1545
1546 * mips.cc (Target_mips_nacl): New class.
1547 (Target_selector_mips_nacl): New class.
1548 (target_selector_mips32): Rename from target_selector_mips32be and use
1549 Target_selector_mips_nacl instead of Target_selector_mips.
1550 (target_selector_mips32el): Rename from target_selector_mips32 and use
1551 Target_selector_mips_nacl instead of Target_selector_mips.
1552 (target_selector_mips64): Rename from target_selector_mips64be and use
1553 Target_selector_mips_nacl instead of Target_selector_mips.
1554 (target_selector_mips64el): Rename from target_selector_mips64 and use
1555 Target_selector_mips_nacl instead of Target_selector_mips.
1556 (Target_mips::mips_info): Add const attribute.
1557
54674d38
CC
15582014-09-02 Cary Coutant <ccoutant@google.com>
1559
1560 * dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute.
1561 * dynobj.h (Sized_dynobj::do_section_name): Likewise.
1562 * incremental.cc (Sized_relobj_incr::do_section_name): Likewise.
1563 (Sized_incr_dynobj::do_section_name): Likewise.
1564 * incremental.h (Sized_relobj_incr::do_section_name): Likewise.
1565 (Sized_incr_dynobj::do_section_name): Likewise.
1566 * object.h (Object::section_name): Likewise.
1567 (Object::do_section_name): Likewise.
1568 (Sized_relobj_file::do_section_name): Likewise.
1569 * plugin.cc (Sized_pluginobj::do_section_name): Likewise.
1570 * plugin.h (Sized_pluginobj::do_section_name): Likewise.
1571
9860cbcf
CC
15722014-09-02 Cary Coutant <ccoutant@google.com>
1573
1574 PR gold/17005
1575 * ehframe.cc (Fde::write): Add output_offset parameter.
1576 (Cie::write): Likewise.
1577 (Eh_frame::set_final_data_size): Account for offset within output
1578 section.
1579 (Eh_frame::do_sized_write): Likewise.
1580 * ehframe.h (Fde::write): Add output_offset parameter.
1581 (Cie::write): Likewise.
1582 * output.cc (Output_section::Input_section_sort_entry): Remove
1583 section_has_name_; add output_section_name parameter. Use
1584 output section name for non-input sections.
1585 (Output_section::Input_section_sort_entry::section_has_name): Remove.
1586 (Output_section::Input_section_sort_entry::section_has_name_): Remove.
1587 (Output_section::Input_section_sort_compare): Remove logic for
1588 sections without names.
1589 (Output_section::Input_section_sort_init_fini_compare): Likewise.
1590 (Output_section::Input_section_sort_section_prefix_special_ordering_compare):
1591 Likewise.
1592 (Output_section::Input_section_sort_section_name_compare): Likewise.
1593
8e33481e
HS
15942014-08-29 Han Shen <shenhan@google.com>
1595 Jing Yu <jingyu@google.com>
1596
1597 * aarch64-reloc-property.cc
1598 (AArch64_reloc_property_table::reloc_name_in_error_message): Fix bug in
1599 reference reloc property in the table.
1600 * aarch64-reloc.def: Add TLSLE reloc types and fix some errors in
1601 3 other entries.
1602 * aarch64.cc: (Output_data_got_aarch64::add_static_reloc):
1603 2 new overloaded methods.
1604 (Output_data_got_aarch64::do_write): Add code to write out
1605 static relocs.
1606 (class Output_data_got_aarch64::Static_reloc): New class to wrap
1607 static relocs.
1608 (Output_data_got_aarch64::static_relocs): New vector to
1609 hold static relocs.
1610 (Target_aarch64::TCB_SIZE): New const static memeber.
1611 (Target_aarch64::tcb_size): New method.
1612 (Target_aarch64::Relocate::relocate): Add code handling new reloc types.
1613 (Target_aarch64::Relocate::relocate_tls): New method.
1614 (Target_aarch64::Scan::local): Add code handling new reloc types.
1615 (Target_aarch64::Scan::global): Add code handling new reloc types.
1616
81233653
ST
16172014-08-13 Sriraman Tallam <tmsriram@google.com>
1618
1619 * options.h (-no-pie): Add option.
1620
9363c7c3
JY
16212014-08-08 Jing Yu <jingyu@google.com>
1622 Han Shen <shenhan@google.com>
1623
1624 * Makefile.am (HFILES): Add aarch64-reloc-property.h.
1625 (DEFFILES): add aarch64-reloc.def.
1626 (TARGETSOURCES): Add aarch64-reloc-property.cc.
1627 (ALL_TARGETOBJS): Add aarch64-reloc-property.$(OBJEXT).
1628 * Makefile.in: Regenerate.
1629 * aarch64-reloc-property.cc: New file.
1630 * aarch64-reloc-property.h: New file.
1631 * aarch64-reloc.def: New file.
1632 * aarch64.cc: Include aarch64-reloc-property.h. Replace spaces
1633 with tab to make the format consistent.
1634 (Output_data_got_aarch64::symbol_table_): New method.
1635 (Target_aarch64::do_plt_address_for_global): New method.
1636 (Target_aarch64::do_plt_address_for_local): New method.
1637 (Target_aarch64::do_select_as_default_target): New method.
1638 (Target_aarch64::do_make_data_plt): New method.
1639 (Target_aarch64::make_data_plt): New method.
1640 (Output_data_plt_aarch64::has_irelative_section): New method.
1641 (Output_data_plt_aarch64::address_for_global): New method.
1642 (Output_data_plt_aarch64::address_for_local): New method.
1643 (Output_data_plt_aarch64::irelative_rel_): New parameter.
1644 (Output_data_plt_aarch64::add_entry): Implement contents.
1645 (Output_data_plt_aarch64::set_final_data_size): Fix typo.
1646 (Output_data_plt_aarch64::do_write): Remove useless got_base. Set
1647 the got_pov entry to plt0.
1648 (Output_data_plt_aarch64_standard::do_fill_first_plt_entry):
1649 Implement contents.
1650 (Output_data_plt_aarch64_standard::do_fill_plt_entry): Implement.
1651 (AArch64_howto): New struct.
1652 (aarch64_howto[]): New static const array.
1653 (AArch64_relocate_functions): New class.
1654 (Target_aarch64::Scan::get_reference_flags): Remove method.
1655 (Target_aarch64::Scan::local): Implement to support a few relocations.
1656 (Target_aarch64::Scan::global): Implement to support a few relocations.
1657 (Target_aarch64::make_plt_section): Implement contents.
1658 (Target_aarch64::make_plt_entry): Implement contents.
1659 (Target_aarch64::do_finalize_sections): Implement contents.
1660 (Target_aarch64::Relocate::relocate): Implement a few relocations.
1661 (Target_aarch64::relocate_section): Implement contents.
1662
ad9fe6c1
AM
16632014-08-06 Alan Modra <amodra@gmail.com>
1664
1665 * testsuite/defsym_test.sh: Allow ppc64le localentry annotation.
1666
7cd4e5b7
AM
16672014-08-06 Alan Modra <amodra@gmail.com>
1668
1669 PR 13227
1670 * symtab.cc (Symbol_table::add_from_relobj): Warn on __gnu_lto_slim.
1671
5ad9b0a7
ST
16722014-07-21 Sriraman Tallam <tmsriram@google.com>
1673
1674 * object.cc (Relobj::is_section_name_included): Add
7c16d96e 1675 ".rodata.nptl_version" to not garbage collect this section.
5ad9b0a7 1676
e051745c
CC
16772014-07-08 Cary Coutant <ccoutant@google.com>
1678
1679 * expression.cc (struct Expression::Expression_eval_info): Add
1680 new fields type_pointer, vis_pointer, and nonvis_pointer.
1681 (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and
1682 nonvis_pointer parameters. Adjust all calls.
1683 (Symbol_expression::value): Update type, visibility, and nonvis bits
1684 in caller.
1685 * script.cc (Symbol_assignment::sized_finalize): Update type,
1686 visibility, and remaining st_other bits for new symbol.
1687 * script.h: (Expression::eval_maybe_dot): Add type_pointer,
1688 vis_pointer, and nonvis_pointer parameters.
1689 * symtab.h (Symbol::set_type): New method.
1690
1691 * testsuite/Makefile.am (defsym_test): New test.
1692 * testsuite/Makefile.in: Regenerate.
1693 * testsuite/defsym_test.c: New file.
1694 * testsuite/defsym_test.sh: New file.
1695
f35c4853
CC
16962014-07-08 Cary Coutant <ccoutant@google.com>
1697
1698 PR gold/15639
1699 * dynobj.h (Sized_dynobj::base_read_symbols): New method.
1700 * dynobj.cc (Sized_dynobj::do_read_symbols): Move body to...
1701 (Sized_dynobj::base_read_symbols): ...new method.
1702 * object.h (Sized_relobj_file::base_read_symbols): New method.
1703 * object.cc (Sized_relobj_file::do_read_symbols): Move body to...
1704 (Sized_relobj_file::base_read_symbols): ...new method.
1705 * arm.cc (Arm_relobj::do_read_symbols): Call base_read_symbols.
1706 * mips.cc: (Mips_relobj::do_read_symbols): Likewise.
1707 * powerpc.cc (Powerpc_dynobj::do_read_symbols): Likewise.
1708
2900af2d
AM
17092014-07-04 Alan Modra <amodra@gmail.com>
1710
1711 * po/POTFILES.in: Regenerate.
1712
053a4d68
JY
17132014-07-02 Jing Yu <jingyu@google.com>
1714
1715 * aarch64.cc: New file
1716 * Makefile.am (TARGETSOURCES): Add aarch64.cc
1717 (ALL_TARGETOBJS): Add aarch64.$(OBJEXT)
1718 * Makefile.in: Regenerate.
1719 * configure.tgt: Add entries for aarch64*.
1720 * configure.ac: Likewise.
1721 * configure: Likewise.
1722
7b549045
AM
17232014-06-27 Alan Modra <amodra@gmail.com>
1724
1725 * symtab.cc (Symbol::should_add_dynsym_entry): Don't make inline.
1726
cb818dbf
CC
17272014-06-24 Cary Coutant <ccoutant@google.com>
1728
1729 * dwp.cc (Dwo_file::read): Allow files with no .debug_types
1730 sections.
1731 (Dwo_file::sized_read_unit_index): Likewise.
1732
9810d34d
SS
17332014-06-23 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1734
1735 * mips.cc: New file.
1736 * Makefile.am (TARGETSOURCES): Add mips.cc
1737 (ALL_TARGETOBJS): Add mips.$(OBJEXT)
1738 * configure.tgt: Add entries for mips*.
1739 * configure.ac: Likewise.
1740 * Makefile.in: Regenerate.
1741 * configure: Likewise.
1742
9baa787b
CC
17432014-06-09 Cary Coutant <ccoutant@google.com>
1744
1745 * dwarf_reader.cc (Dwarf_pubnames_table::read_header): Check that
1746 unit_length is within section bounds.
1747
8f89af0a
CC
17482014-06-09 Cary Coutant <ccoutant@google.com>
1749
1750 PR gold/16980
1751 * layout.cc (Layout::print_to_mapfile): Print unattached sections in
1752 map.
1753
a47622ac
AM
17542014-06-07 Alan Modra <amodra@gmail.com>
1755
1756 * powerpc.cc (relocate): Treat field of cmpli insn as a bitfield.
1757
4320c691
CC
17582014-06-06 Cary Coutant <ccoutant@google.com>
1759
1760 * dwarf_reader.h (Dwarf_pubnames_table): Remove output_section_offset_.
1761 * dwarf_reader.cc (Dwarf_pubnames_table::read_section): Likewise.
1762 (Dwarf_pubnames_table::read_header): Likewise.
1763 * layout.cc (gdb_fast_lookup_sections): Add .debug_gnu_pubnames and
1764 .debug_gnu_pubtypes.
1765
270c9937
JB
17662014-06-05 Joel Brobecker <brobecker@adacore.com>
1767
1768 * Makefile.am (CONFIG_STATUS_DEPENDENCIES): New.
1769 * Makefile.in, configure: Regenerate.
1770
397998fc
AM
17712014-06-03 Alan Modra <amodra@gmail.com>
1772
1773 * powerpc.cc (addis_12_2): Define.
1774 (Stub_table::do_write): Support fusion on ELFv2 stubs.
1775
61f5c66f
AM
17762014-06-03 Alan Modra <amodra@gmail.com>
1777
1778 * testsuite/plugin_test.c (parse_readelf_line): Skip non-visibility
1779 st_other output.
1780
f6971787
AM
17812014-06-02 Alan Modra <amodra@gmail.com>
1782
1783 * powerpc.cc (Target_powerpc::local_reloc_may_be_function_pointer):
1784 Only ignore relocs on ELFv1.
1785 (Target_powerpc::global_reloc_may_be_function_pointer): Likewise.
1786
f6fb8322
CC
17872014-05-30 Cary Coutant <ccoutant@google.com>
1788
1789 * testsuite/Makefile.am (ehdr_start_test_4): Fix typo in -B option.
1790 * testsuite/Makefile.in: Regenerate.
1791 * testsuite/ehdr_start_test_4.sh: Look for "U" instead of "w".
1792
c23dd342
L
17932014-05-27 H.J. Lu <hongjiu.lu@intel.com>
1794
1795 PR gold/16945
1796 * x86_64.cc (Target_x86_64::Relocate::relocate): Use signed int
1797 for got_offset. Properly get GOT address for R_X86_64_PLTOFF64.
1798
5fe7ffdc
AM
17992014-05-15 Alan Modra <amodra@gmail.com>
1800
1801 * powerpc.cc (do_plt_fde_location): Handle zero length .glink.
1802 Compare FDE contents with DW_CFA_nop rather than 0.
1803
a82bef93
ST
18042014-05-13 Sriraman Tallam <tmsriram@google.com>
1805
1806 * symtab.h (may_need_copy_reloc): Remove check for position independent
1807 code.
1808 * x86_64.cc (Target_x86_64<size>::Scan::global): Add check for no
1809 position independence before pc absolute may_need_copy_reloc call.
1810 Add check for executable output befor pc relative may_need_copy_reloc
1811 call.
1812 * i386.cc: Ditto.
1813 * arm.cc: Ditto.
1814 * sparc.cc: Ditto.
1815 * tilegx.cc: Ditto.
1816 * powerpc.cc: Add check for no position independence before
1817 may_need_copy_reloc calls.
1818 * testsuite/pie_copyrelocs_test.cc: New file.
1819 * testsuite/pie_copyrelocs_shared_test.cc: New file.
1820 * Makefile.am (pie_copyrelocs_test): New test.
5fe7ffdc 1821 * Makefile.in: Regenerate.
a82bef93 1822
53c66605
ML
18232014-05-08 Martin Liška <mliska@suse.cz>
1824
1825 * output.cc (Sized_relobj_file::do_layout): Fix typo in info message.
1826
57b2284c
CC
18272014-05-06 Cary Coutant <ccoutant@google.com>
1828
1829 PR gold/16900
1830 * i386.cc (Output_data_got_plt_i386): New class.
1831 (Output_data_plt_i386::Output_data_plt_i386): Change type of got_plt
1832 parameter. Change all callers.
1833 (Output_data_plt_i386::layout_): Remove.
1834 (Output_data_plt_i386::got_plt_): Change type.
1835 (Target_i386::got_plt_): Change type. Change all references.
1836 (Target_i386::got_section): Create instance of new class.
1837 (Output_data_got_plt_i386::do_write): New function.
1838 * x86_64.cc (Output_data_got_plt_x86_64): New class.
1839 (Output_data_plt_x86_64::Output_data_plt_x86_64): Change type of got_plt
1840 parameter. Change all callers.
1841 (Output_data_plt_x86_64::layout_): Remove.
1842 (Output_data_plt_x86_64::got_plt_): Change type.
1843 (Target_x86_64::got_plt_): Change type. Change all references.
1844 (Target_x86_64::got_section): Create instance of new class.
1845 (Output_data_got_plt_x86_64::do_write): New function.
1846 (Output_data_plt_x86_64::do_write): Don't write reserved words in GOT.
1847 (Target_x86_64<size>::init_got_plt_for_update): Create instance of new
1848 class.
1849
6b97515d 18502014-05-05 Cary Coutant <ccoutant@google.com>
5fe7ffdc 1851
6b97515d
CC
1852 * gdb-index.cc (Gdb_index_info_reader): Don't complain about language
1853 if we have pubnames/pubtypes.
1854
d1bddd3c
CC
18552014-05-02 Cary Coutant <ccoutant@google.com>
1856
5fe7ffdc
AM
1857 * defstd.cc (in_segment): Define __ehdr_start here...
1858 * layout.cc (Layout::finalize): ...Instead of here. Set the
1859 output segment when known.
1860 * resolve.cc (Symbol::override_base_with_special): Remember
1861 the original binding.
1862 * symtab.cc (Symbol::set_output_segment): New function.
1863 (Symbol::set_undefined): New function.
1864 * symtab.h (Symbol::is_weak_undefined): Check original undef
1865 binding.
1866 (Symbol::is_strong_undefined): New function.
1867 (Symbol::set_output_segment): New function.
1868 (Symbol::set_undefined): New function.
1869 * target-reloc.h (is_strong_undefined): Remove.
1870 (issue_undefined_symbol_error): Call Symbol::is_weak_undefined.
1871 Check for hidden undefs.
1872 (relocate_section): Call Symbol::is_strong_undefined.
1873
1874 * testsuite/Makefile.am (ehdr_start_test_1)
1875 (ehdr_start_test_2, ehdr_start_test_3)
1876 (ehdr_start_test_4, ehdr_start_test_5): New test cases.
1877 * testsuite/Makefile.in: Regenerate.
1878 * testsuite/ehdr_start_def.cc: New source file.
1879 * testsuite/ehdr_start_test.cc: New source file.
1880 * testsuite/ehdr_start_test.t: New linker script.
1881 * testsuite/ehdr_start_test_4.sh: New shell script.
d1bddd3c 1882
7849f6d8
CC
18832014-04-23 Cary Coutant <ccoutant@google.com>
1884
bf2cc635 1885 PR gold/16870
7849f6d8
CC
1886 * x86_64.cc (Target_x86_64::Relocate::relocate): Add missing break.
1887
99fd8cff
CC
18882014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1889
1890 * layout.cc (Layout::include_section): Allow a target to decide
1891 whether to include a section.
1892 * target.h (Target::should_include_section): New function.
1893 (Target::do_should_include_section): New function.
1894
91f43acd
CC
18952014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1896
1897 * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Remove and
1898 inline into ...
1899 (Copy_relocs::emit): ... here.
1900 * copy-relocs.h (Copy_reloc_entry): Change from class to struct.
1901 (Copy_reloc_entry::make_copy_reloc): Change from private to protected.
1902 (Copy_reloc_entry::entries_): Change from private to protected.
1903
c4eb27e1
ST
19042014-04-02 Sriraman Tallam <tmsriram@google.com>
1905
1906 * icf.cc (get_section_contents): Replace copies of reloc
1907 vectors with const references.
1908
ae447ddd
CC
19092014-04-02 Cary Coutant <ccoutant@google.com>
1910
1911 * configure.ac (HAVE_PUBNAMES): Use C instead of C++.
1912 (HAVE_NO_USE_LINKER_PLUGIN): Check for -fno-use-linker-plugin.
1913 * configure: Regenerate.
1914 * testsuite/Makefile.am (OPT_NO_PLUGINS): New macro for
1915 -fno-use-linker-plugin.
1916 (LINK1, CXXLINK1): Add it to the link command.
1917 * testsuite/Makefile.in: Regenerate.
1918
fa47fa92
AM
19192014-03-12 Alan Modra <amodra@gmail.com>
1920
1921 * Makefile.in: Regenerate.
1922
9b12c500
CC
19232014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1924
1925 * symtab.h (Symbol::set_nonvis): New function.
1926
beacaa96
CC
19272014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1928
1929 * symtab.cc (Sized_symbol<32>::init_output_data):
1930 Instantiate the template.
1931 (Sized_symbol<64>::init_output_data): Likewise.
1932
800d9823
CC
19332014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1934
1935 * symtab.cc (Symbol_table::sized_write_globals): Allow a target to
1936 adjust dynamic symbol value.
1937 * target.h (Target::adjust_dyn_symbol): New function.
1938 (Target::do_adjust_dyn_symbol): New function.
1939
918fc1f8 19402014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
5fe7ffdc 1941
918fc1f8
CC
1942 * output.cc (Output_data_dynamic::Dynamic_entry::write):
1943 Get the value of DYNAMIC_CUSTOM dynamic entry.
1944 * output.h (Output_data_dynamic::add_custom): New function.
1945 (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM
1946 dynamic entry.
1947 (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM.
1948 * target.h (Target::dynamic_tag_custom_value): New function.
1949 (Target::do_dynamic_tag_custom_value): New function.
1950
98ff9231
CC
19512014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1952
1953 * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set
1954 dynsym indexes.
1955 * target.h (Target::has_custom_set_dynsym_indexes): New function.
1956 (Target::do_has_custom_set_dynsym_indexes): New function.
1957 (Target::set_dynsym_indexes): New function.
1958 (Target::do_set_dynsym_indexes): New function.
1959
b80eed39
AM
19602014-03-07 Alan Modra <amodra@gmail.com>
1961
1962 * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
1963 CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
1964 (Powerpc_relocate_functions::has_overflow_unsigned): New function.
1965 (Powerpc_relocate_functions::has_overflow_bitfield,
1966 overflowed): Use the above.
1967 (Target_powerpc::Relocate::relocate): Correct overflow checking
1968 for a number of relocations. Modify overflow test for 16-bit
1969 fields in instructions to signed/unsigned according to whether
1970 the field takes a signed or unsigned value.
1971
4b95cf5c
AM
19722014-03-05 Alan Modra <amodra@gmail.com>
1973
1974 Update copyright years.
1975
45965137
AM
19762014-03-05 Alan Modra <amodra@gmail.com>
1977
1978 * powerpc.cc (Target_powerpc::Scan::local, global): Support
1979 R_PPC64_ADDR64_LOCAL.
1980 (Target_powerpc::Relocate::relocate): Likewise.
1981
2c80b753
AM
19822014-03-03 Alan Modra <amodra@gmail.com>
1983
1984 * dwp.cc (print_version): Update copyright year to current.
1985
c1c69e83
AM
19862014-02-10 Alan Modra <amodra@gmail.com>
1987
1988 * po/gold.pot: Regenerate.
1989
dd0c4e70
CC
19902014-02-06 Cary Coutant <ccoutant@google.com>
1991
1992 Fix problem where -u is ignored when a weak undef is seen.
1993
1994 * archive.cc (Library_base::should_include_member): Reorder
1995 code to check for -u option if a weak undef has already been seen.
1996 * testsuite/Makefile.am (weak_undef_test_2): New test case.
1997 * testsuite/Makefile.in: Regenerate.
1998 * testsuite/weak_undef_file3.cc: New file.
1999 * testsuite/weak_undef_file4.cc: New file.
2000 * testsuite/weak_undef_test_2.cc: New file.
2001
1a221d3d
CC
20022014-02-05 Cary Coutant <ccoutant@google.com>
2003
2004 Fix issues with gold undefined symbol diagnostics.
2005
2006 PR binutils/15435
2007 * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
2008 check to here.
2009 * target-reloc.h (is_strong_undefined): New function.
2010 (relocate_section): Move undef vtable symbol check from here.
2011 Check for is_strong_undefined.
2012
e889f0a4 20132014-02-05 Cary Coutant <ccoutant@google.com>
5fe7ffdc 2014
e889f0a4
CC
2015 Fix problems with the --dynamic-list option.
2016
2017 PR gold/13577
2018 * options.cc (General_options::parse_dynamic_list):
2019 Set have_dynamic_list_.
2020 (General_options::General_options): Initialize have_dynamic_list_.
2021 (General_options::finalize): Turn off -Bsymbolic and
2022 -Bsymbolic-functions if --dynamic-list provided.
2023 * options.h (General_options::have_dynamic_list): New function.
2024 (General_options::have_dynamic_list_): New data member.
2025 * symtab.h (Symbol::is_preemptible): Handle --dynamic-list
2026 correctly.
5fe7ffdc 2027
e889f0a4
CC
2028 PR gold/16530
2029 * symtab.cc (Symbol_table::add_from_relobj): If symbol is named
2030 in --dynamic-list, mark it.
5fe7ffdc 2031
e889f0a4
CC
2032 * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case.
2033 (dynamic_list_2): New test case.
2034 * testsuite/Makefile.in: Regenerate.
2035 * testsuite/dynamic_list_2.cc: New file.
2036 * testsuite/dynamic_list_2.t: New file.
2037 * testsuite/dynamic_list_lib1.cc: New file.
2038 * testsuite/dynamic_list_lib2.cc: New file.
2039 * testsuite/gc_dynamic_list_test.c: New file.
2040 * testsuite/gc_dynamic_list_test.sh: New file.
2041 * testsuite/gc_dynamic_list_test.t: New file.
2042
ec673e64
CC
20432014-01-28 Cary Coutant <ccoutant@google.com>
2044
2045 Add .gdb_index version 7 support.
2046
2047 * gold/dwarf_reader.cc: include <utility> (for make_pair).
2048 (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed
2049 debug sections.
2050 (Dwarf_ranges_table::read_ranges_table): Likewise.
2051 (Dwarf_pubnames_table::read_section): Check for GNU-style
2052 sections, and for compressed debug sections.
2053 (Dwarf_pubnames_table::read_header): Compute end address of table.
2054 (Dwarf_pubnames_table::next_name): Return flag_byte. Check
2055 for end of list by offset, not by offset == 0.
2056 (Dwarf_info_reader::do_read_string_table): Check for compressed
2057 debug sections.
2058 * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
2059 Initialize new data members.
2060 (Dwarf_pubnames_table::next_name): return flag_byte.
2061 (Dwarf_pubnames_table::end_of_table_): New data member.
2062 (Dwarf_pubnames_table::is_gnu_style_): New data member.
2063 * gold/gdb-index.cc (gdb_index_version): Update to version 7.
2064 (Gdb_index_info_reader::read_pubtable): Read flag_byte.
2065 (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't
2066 read skeleton type unit DIEs.
2067 (Gdb_index::add_symbol): Add flag_byte; adjust all callers.
2068 (Gdb_index::do_write): Write flag_byte.
2069 * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter.
2070 (Gdb_index::Cu_vector): Store flags along with cu indexes.
2071 * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7.
2072 * gold/testsuite/gdb_index_test_comm.sh: Likewise.
2073
221fd5d5
L
20742014-01-08 H.J. Lu <hongjiu.lu@intel.com>
2075
2076 * version.cc (print_version): Update copyright year to 2014.
2077
6c09fb0b
ILT
20782013-12-19 Dimitry Andric <dimitry@andric.com>
2079
2080 * stringpool.cc (Stringpool_template::reserve): Add
2081 HAVE_UNORDERED_MAP case.
2082 * stringpool.cc (Stringpool_template::print_stats): Likewise.
2083
8356f2d0
CC
20842013-12-18 Cary Coutant <ccoutant@google.com>
2085
2086 * configure.ac: Check for <unordered_set> and <unordered_map>.
2087 * config.in: Regenerate.
2088 * configure: Regenerate.
2089 * system.h: Use <unordered_set> and <unordered_map> if available.
2090
f2c7d7ee
RM
20912013-12-10 Roland McGrath <mcgrathr@google.com>
2092
2093 * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
2094 with $(INSTALL_PROGRAM_ENV).
2095 * Makefile.in: Regenerate.
2096
6632e8cc
CC
20972013-11-22 Cary Coutant <ccoutant@google.com>
2098
2099 * configure.ac: Add check for which library is needed for
2100 dlopen.
2101 * configure: Regenerate.
2102
0c075858
CC
21032013-11-22 Cary Coutant <ccoutant@google.com>
2104
2105 * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
2106 assembler.
2107 * testsuite/Makefile.in: Regenerate.
2108
f49fe902
L
21092013-11-17 H.J. Lu <hongjiu.lu@intel.com>
2110
2111 * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):
2112 Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like
2113 R_X86_64_PC32 and R_X86_64_PLT32, respectively.
2114 (Target_x86_64<size>::Scan::local): Likewise.
2115 (Target_x86_64<size>::Scan::global): Likewise.
2116 (Target_x86_64<size>::Relocate::relocate): Likewise.
2117 (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc):
2118 Likewise.
2119 (Target_x86_64<size>::Scan::check_non_pic(): Handle
2120 R_X86_64_PC32_BND.
2121
2122 * testsuite/Makefile.am (check_PROGRAMS): Add
2123 exception_x86_64_bnd_test.
2124 (exception_x86_64_bnd_test_SOURCES): New macro.
2125 (exception_x86_64_bnd_test_DEPENDENCIES): Likewise.
2126 (exception_x86_64_bnd_test_LDFLAGS): Likewise.
2127 (exception_x86_64_bnd_test_LDADD): Likewise.
2128 (exception_x86_64_bnd_1.o): New rule.
2129 (exception_x86_64_bnd_2.o): Likewise.
2130 * testsuite/Makefile.in: Regenerated.
2131
9055360d
AM
21322013-11-15 Alan Modra <amodra@gmail.com>
2133
2134 * powerpc.cc (Target_powerpc::glink_section): Provide non-const
2135 accessor.
2136 (Target_powerpc::Branch_info::make_stub): Make global entry stubs.
2137 Only call ppc64_local_entry_offset for 64-bit. Restrict
2138 symval_for_branch lookup to ELFv1.
2139 (Stub_table::add_plt_call_entry): Use unsigned int off.
2140 (Output_data_glink::Address, invalid_address): New.
2141 (Output_data_glink::add_eh_frame): Move out of line. Add
2142 support for ELFv2.
2143 (Output_data_glink::add_global_entry, find_global_entry,
2144 global_entry_address): New functions.
2145 (Output_data_glink::global_entry_stubs_, end_branch_table_,
2146 ge_size): New variables.
2147 (Output_data_glink::set_final_data_size): Add global entry
2148 stub sizing.
2149 (Output_data_glink::do_write): Write global entry stubs.
2150 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target
2151 parameter. Return true for ELFv2. Adjust callers.
2152 (Target_powerpc::Scan::local, global): Restrict opd lookup to
2153 ELFv1. Similarly for ifunc and dynamic relocation processing
2154 specific to ELFv1. Recognize that symbols are defined on
2155 their plt entries for ELFv2.
2156 (Target_powerpc::symval_for_branch): Assert if called for
2157 ELFv2 or ppc32.
2158 (Target_powerpc::Relocate::relocate): Use global entry plt
2159 stub for symbol value if such exists on ELFv2.
2160 (Target_powerpc::Relocate::relocate): Don't call
2161 symval_for_branch when ELFv2. Do adjust for local entry
2162 offset when ELFv2.
2163 (Target_powerpc::do_dynsym_value): Set symbols to global entry
2164 plt stub for ELFv2.
2165 (Target_powerpc::do_plt_address_for_global): Similarly.
2166
cafdd569
CC
21672013-11-14 Cary Coutant <ccoutant@google.com>
2168
2169 Revert patch -- this did not fix the problem, and there is
2170 no race there.
2171
2172 2013-11-14 Cary Coutant <ccoutant@google.com>
2173
2174 PR gold/14860
2175 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
2176 (Ehframe_hdr::set_final_data_size): Allocate a Lock.
2177 * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
2178 updating fde_offsets_.
2179 (Eh_frame_hdr::lock_): New data member.
2180
94e49e16
CC
21812013-11-14 Cary Coutant <ccoutant@google.com>
2182
2183 * dwp.cc (Dwo_file_entry): New type.
2184 (File_list): Use Dwo_file_entry.
2185 (Dwo_file::verify): New function.
2186 (Dwo_file::verify_dwo_list): New function.
2187 (Dwo_file::sized_verify_dwo_list): New function.
2188 (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file
2189 list.
2190 (Dwp_options): New enum type.
2191 (dwp_options): Add --verify-only.
2192 (usage): Likewise.
2193 (main): Likewise.
2194 * dwp.h (gold_info): Add declaration.
2195
7cdd7d57
CC
21962013-11-14 Cary Coutant <ccoutant@google.com>
2197
2198 PR gold/14860
2199 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
2200 (Ehframe_hdr::set_final_data_size): Allocate a Lock.
2201 * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
2202 updating fde_offsets_.
2203 (Eh_frame_hdr::lock_): New data member.
2204
1d946cb3
CC
22052013-11-06 Cary Coutant <ccoutant@google.com>
2206
2207 PR gold/15758
2208 * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections
2209 before reloc sections.
2210
4f65b40e
AM
22112013-11-04 Alan Modra <amodra@gmail.com>
2212
2213 * symtab.h (Symbol::Reference_flags): Add FUNC_DESC_ABI.
2214 (Symbol::needs_dynamic_reloc): Test new flag.
2215 * powerpc.cc (needs_dynamic_reloc, use_plt_offset): Delete.
2216 (Target_powerpc::Scan::get_reference_flags): Add target param.
2217 Return FUNC_DESC_ABI for 64-bit ELFv1.
2218 (Target_powerpc::Branch_info::make_stub): Adjust get_reference_flags
2219 call.
2220 (Target_powerpc::Scan::global): Use Symbol::needs_dynamic_reloc.
2221 (Target_powerpc::Relocate::relocate): Use Symbol::use_plt_offset.
2222
908794a9
CC
22232013-10-31 Cary Coutant <ccoutant@google.com>
2224
2225 Restore support for dwp v2 DWARF package file format.
2226
2227 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
2228 tu_length parameter. Adjust all callers.
2229 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
2230 * dwp.cc: Include dwarf.h.
2231 (Section_bounds): New struct type.
2232 (Unit_set): New struct type.
2233 (Dwo_file::Dwo_file): Initialize new data member.
2234 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
2235 Combine and rename to...
2236 (Dwo_file::read_unit_index): ...this.
2237 (Dwo_file::sized_read_compunit_index)
2238 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
2239 (Dwo_file::sized_read_unit_index): ...this.
2240 (Dwo_file::copy_section): Remove section_name, is_str_offsets
2241 parameters; add section_id parameter.
2242 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
2243 (Dwo_file::add_unit_set): ...this.
2244 (Dwo_file::shndx_map_): Remove.
2245 (Dwo_file::sect_offsets_): New data member.
2246 (Dwp_output_file::Dwp_output_file): Initialize new data members.
2247 (Dwp_output_file::add_section): Rename to...
2248 (Dwp_output_file::add_contribution): ...this.
2249 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
2250 (Dwp_output_file::add_tu_set): Likewise.
2251 (Dwp_output_file::Contribution): New type.
2252 (Dwp_output_file::Section::contributions): New data member.
2253 (Dwp_output_file::Cu_or_tu_set): Remove.
2254 (Dwp_output_file::Section::Section): New ctor.
2255 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
2256 (Dwp_output_file::Dwp_index::Section_table): New type.
2257 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
2258 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
2259 parameter.
2260 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
2261 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
2262 (Dwp_output_file::Dwp_index::section_table): New member function.
2263 (Dwp_output_file::Dwp_index::section_table_end): New member function.
2264 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
2265 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
2266 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
2267 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
2268 (Dwp_output_file::Dwp_index::section_table_): New data member.
2269 (Dwp_output_file::Dwp_index::section_mask_): New data member.
2270 (Dwp_output_file::add_output_section): New member function.
2271 (Dwp_output_file::write_new_section): New member function.
2272 (Dwp_output_file::write_contributions): New member function.
2273 (Dwp_output_file::section_id_map_): New data member.
2274 (class Dwo_id_info_reader): Remove.
2275 (class Unit_reader): New class.
2276 (get_dwarf_section_name): New function.
2277 (Dwo_file::read_executable): Adjust initializations of class data.
2278 (Dwo_file::read): Add support for v2 package file format.
2279 (Dwo_file::read_unit_index): Likewise.
2280 (Dwo_file::sized_read_unit_index): Likewise.
2281 (Dwo_file::copy_section): Likewise.
2282 (Dwo_file::add_unit_set): Likewise.
2283 (Dwp_output_file::add_output_section): Likewise.
2284 (Dwp_output_file::add_contribution): Likewise.
2285 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
2286 for empty slot.
2287 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
2288 file format.
2289 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
2290 slot.
2291 (Dwp_output_file::initialize): Remove unused function.
2292 (Dwp_output_file::finalize): Add support for v2 package file format.
2293 (Dwp_output_file::write_index): Likewise.
2294 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
2295 function prototype.
2296
2500c017
CC
22972013-10-31 Cary Coutant <ccoutant@google.com>
2298
2299 * configure.ac: Fix check for -fmerge-constants.
2300 * configure.ac: Regenerate.
2301
dd0845d7
RM
23022013-10-30 Roland McGrath <mcgrathr@google.com>
2303
2304 * x86_64.cc (Output_data_plt_x86_64_nacl::first_plt_entry):
2305 Correct 9-byte nop sequence to match what the assembler generates.
2306
b4f7960d
AM
23072013-10-30 Alan Modra <amodra@gmail.com>
2308
2309 * powerpc.cc (Powerpc_relobj::abiversion, set_abiversion,
2310 ppc64_local_entry_offset, ppc64_local_entry_offset,
2311 do_read_symbols): New functions.
2312 (Powerpc_relobj::e_flags_, st_other_): New vars.
2313 (Powerpc_relobj::Powerpc_relobj): Call set_abiversion.
2314 (Powerpc_dynobj::abiversion, set_abiversion): New functions.
2315 (Powerpc_relobj::e_flags_): New var.
2316 (Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline
2317 and adjust for ELFv2.
2318 (Target_powerpc::abiversion, set_abiversion, stk_toc): New functions.
2319 (Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2.
2320 (Powerpc_dynobj::do_find_special_sections): Likewise.
2321 (Target_powerpc::do_define_standard_symbols): Define ".TOC.".
2322 (Target_powerpc::Branch_info::make_stub): Adjust stub destination
2323 to ELFv2 local entry.
2324 (Target_powerpc::do_relax): No thread safe barriers needed for
2325 ELFv2.
2326 (Output_data_plt_powerpc::initial_plt_entry_size_,
2327 plt_entry_size): Delete. Replace all uses with
2328 first_plt_entry_offset() and plt_entry_size().
2329 (Output_data_plt_powerpc::Output_data_plt_powerpc): Remove
2330 reserved_size parm. Update callers.
2331 (Output_data_plt_powerpc::entry_count): Update.
2332 (Output_data_plt_powerpc::first_plt_entry_offset): Make private
2333 and use Target_powerpc::first_plt_entry_offset().
2334 (Output_data_plt_powerpc::get_plt_entry_size): Similarly and
2335 rename to plt_entry_size.
2336 (Output_data_plt_powerpc::add_ifunc_entry,
2337 add_local_ifunc_entry): Adjust reloc for ELFv2.
2338 (glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1.
2339 (glink_eh_frame_fde_64v2): New.
2340 (Stub_table::plt_call_size): Support ELFv2 sizing.
2341 (Output_data_glink::add_eh_frame): Use the new FDE.
2342 (Output_data_glink::set_final_data_size): Adjust for ELFv2 glink.
2343 (Stub_table::do_write): Write ELFv2 stubs and glink.
2344 (Target_powerpc::Relocate::relocate): Replaces nop after call
2345 with ld 2,24(1) and adjust local offset destination for ELFv2.
2346
f9c6b907
AM
23472013-10-30 Alan Modra <amodra@gmail.com>
2348
2349 * powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
2350 (Target_powerpc::Scan::global, local): Likewise.
2351 (Target_powerpc::Relocate::relocate): Likewise. Check for overflow
2352 on all ppc64 @h and @ha relocs.
2353
e84fe78f
AM
23542013-10-14 Alan Modra <amodra@gmail.com>
2355
2356 * output.h (Output_data_got::add_constant): Tidy.
2357 (Output_data_got::add_constant_pair): New function.
2358 * powerpc.cc (Output_data_got_powerpc): Override all Output_data_got
2359 methods used so as to first call reserve_ent().
2360
679e4abf
RM
23612013-10-11 Roland McGrath <mcgrathr@google.com>
2362
44dcb735
RM
2363 * powerpc.cc (Output_data_got_powerpc): Remove unused methods
2364 add_got_entry and add_got_entry_pair.
2365
13323c49
RM
2366 * configure.ac (TLS_GNU2_DIALECT): Use -Werror in test.
2367 (HAVE_PUBNAMES): Likewise.
2368 * configure: Regenerate.
2369
1496b446
RM
2370 * testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout.
2371 * testsuite/Makefile.in: Regenerate.
2372
cc84c10b
RM
2373 * target.h (Target::adjust_elf_header, Target::do_adjust_elf_header):
2374 Remove const from declaration.
2375 * target.cc (Sized_target::do_adjust_elf_header): Update definition.
2376 * sparc.cc (Target_sparc::do_adjust_elf_header): Likewise.
2377 * output.h (Output_file_header): Remove const from member target_
2378 and corresponding constructor argument.
2379 * output.cc (Output_file_header::Output_file_header): Update prototype.
2380 (Output_file_header::do_sized_write): Use this->target_ in place
2381 of parameters()->target().
2382
52f66a2c
RM
2383 * testsuite/undef_symbol.cc (Foo::get_a): New method.
2384
2b64b551
RM
2385 * configure.ac (MERGE_CONSTANTS_FLAG): New check.
2386 * configure: Regenerate.
2387 * Makefile.in: Regenerate.
2388 * testsuite/merge_string_literals_1.c: Renamed to have .cc suffix.
2389 * testsuite/merge_string_literals_2.c: Likewise.
2390 * testsuite/Makefile.am
2391 (merge_string_literals_1.o, merge_string_literals_2.o): Update deps.
2392 (AM_CFLAGS, AM_CXXFLAGS): Use $(MERGE_CONSTANTS_FLAG) in place of
2393 literal -fmerge-constants.
2394 * testsuite/Makefile.in: Regenerate.
2395
43819297
RM
2396 * i386.cc (Target_i386): Remove unused member dynbss_.
2397 * arm.cc (Target_arm): Likewise.
2398 * powerpc.cc (Target_powerpc): Likewise.
2399 * sparc.cc (Target_sparc): Likewise.
2400 * tilegx.cc (Target_tilegx): Likewise.
2401 * x86_64.cc (Target_x86_64): Likewise.
2402 * dwarf_reader.h (Dwarf_info_reader): Remove unused members
2403 type_signature_, type_offset_.
2404 * plugin.h (Plugin_hook): Remove unused member layout_.
2405 * readsyms.h (Add_symbols): Remove unused members dirpath_, dirindex_,
2406 mapfile_.
2407 (Read_member): Remove unused members input_objects_, symtab_,
2408 mapfile_, layout_.
2409 (Check_library): Remove unused member symtab_.
2410 * archive.h (Lib_group): Remove unused member lib_.
2411 * archive.cc (Lib_group::Lib_group): Update initializer.
2412 * incremental.h (Incremental_binary): Remove unused member target_.
2413 (Incremental_script_entry): Removed unused member script_.
2414 * layout.h (Write_symbols_task): Remove unused member input_objects_.
2415 * icf.h (Icf): Remove unused member num_tracked_relocs.
2416
39d9ead7
RM
2417 * gold-threads.h (Once): Conditionalize member was_run_lock_ on
2418 [ENABLE_THREADS && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4], matching
2419 its only use.
2420 * gold-threads.cc (Once::Once): Likewise conditionalize initializer.
2421
679e4abf
RM
2422 * archive.h: Use struct rather than class for forward declaration
2423 of Read_symbols_data.
2424
54de2ea6
CC
24252013-10-07 Cary Coutant <ccoutant@google.com>
2426
2427 PR gold/16010
2428 * testsuite/Makefile.am (icf_test): Fix dependencies.
2429 (icf_safe_test): Likewise.
2430 (icf_safe_so_test): Likewise.
2431 (large_symbol_alignment): Add empty _LDADD rule.
2432 * testsuite/Makefile.in: Regenerate.
2433
b14016f0
L
24342013-09-03 Pavel Chupin <pavel.v.chupin@intel.com>
2435
2436 PR gold/15927
2437 * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative
2438 relocation for R_X86_64_32 on x32.
2439
eb426534
RM
24402013-08-27 Roland McGrath <mcgrathr@google.com>
2441
2442 * output.cc (Output_segment::set_section_addresses): Take new
2443 Target* argument. If target->isolate_execinstr() and the segment
2444 is executable and starts at a target->abi_pagesize() boundary,
2445 pad its end out to a target->abi_pagesize() boundary with code fill.
2446 * output.h (Output_segment::set_section_addresses): Update decl.
2447 * layout.h (Layout::check_output_data_for_reset_values): Take new
2448 argument RELAX_OUTPUTS.
2449 (Layout): New member relax_output_list_.
2450 (Layout::add_relax_output): New method.
2451 * layout.cc (Layout::Layout): Update constructor.
2452 (Layout::reset_relax_output): New method.
2453 (Layout::clean_up_after_relaxation): Call it.
2454 (Layout::prepare_for_relaxation): Update caller.
2455 (Layout::set_segment_offsets): Update callers of set_section_addresses.
2456 Call reset_relax_output before re-processing segments for
2457 isolate_execinstr case.
2458 (Layout::write_data): Handle relax_output_list_.
2459 (Layout::Relaxation_debug_check::check_output_data_for_reset_values):
2460 Take new argument RELAX_OUTPUTS. Assert it's an empty collection.
2461
9aff4b7a
NC
24622013-08-23 Yuri Chornoivan <yurchor@ukr.net>
2463
2464 PR binutils/15834
2465 * object.h: Fix typos.
2466
93f8221c
RM
24672013-08-16 Roland McGrath <mcgrathr@google.com>
2468
2469 * i386.cc (Target_i386_nacl::do_code_fill): New virtual function.
2470 * x86_64.cc (Target_x86_64_nacl::do_code_fill): New virtual function.
2471
e44c3715
CC
24722013-08-07 Cary Coutant <ccoutant@google.com>
2473
2474 Revert support for v2 DWP files:
2475
2476 2013-03-01 Cary Coutant <ccoutant@google.com>
2477
2478 Add dwp support for v2 DWARF package file format.
2479 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
2480 tu_length parameter. Adjust all callers.
2481 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
2482 * dwp.cc: Include dwarf.h.
2483 (Section_bounds): New struct type.
2484 (Unit_set): New struct type.
2485 (Dwo_file::Dwo_file): Initialize new data member.
2486 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
2487 Combine and rename to...
2488 (Dwo_file::read_unit_index): ...this.
2489 (Dwo_file::sized_read_compunit_index)
2490 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
2491 (Dwo_file::sized_read_unit_index): ...this.
2492 (Dwo_file::copy_section): Remove section_name, is_str_offsets
2493 parameters; add section_id parameter.
2494 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
2495 (Dwo_file::add_unit_set): ...this.
2496 (Dwo_file::shndx_map_): Remove.
2497 (Dwo_file::sect_offsets_): New data member.
2498 (Dwp_output_file::Dwp_output_file): Initialize new data members.
2499 (Dwp_output_file::add_section): Rename to...
2500 (Dwp_output_file::add_contribution): ...this.
2501 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
2502 (Dwp_output_file::add_tu_set): Likewise.
2503 (Dwp_output_file::Contribution): New type.
2504 (Dwp_output_file::Section::contributions): New data member.
2505 (Dwp_output_file::Cu_or_tu_set): Remove.
2506 (Dwp_output_file::Section::Section): New ctor.
2507 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
2508 (Dwp_output_file::Dwp_index::Section_table): New type.
2509 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
2510 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
2511 parameter.
2512 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
2513 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
2514 (Dwp_output_file::Dwp_index::section_table): New member function.
2515 (Dwp_output_file::Dwp_index::section_table_end): New member function.
2516 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
2517 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
2518 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
2519 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
2520 (Dwp_output_file::Dwp_index::section_table_): New data member.
2521 (Dwp_output_file::Dwp_index::section_mask_): New data member.
2522 (Dwp_output_file::add_output_section): New member function.
2523 (Dwp_output_file::write_new_section): New member function.
2524 (Dwp_output_file::write_contributions): New member function.
2525 (Dwp_output_file::section_id_map_): New data member.
2526 (class Dwo_id_info_reader): Remove.
2527 (class Unit_reader): New class.
2528 (get_dwarf_section_name): New function.
2529 (Dwo_file::read_executable): Adjust initializations of class data.
2530 (Dwo_file::read): Add support for v2 package file format.
2531 (Dwo_file::read_unit_index): Likewise.
2532 (Dwo_file::sized_read_unit_index): Likewise.
2533 (Dwo_file::copy_section): Likewise.
2534 (Dwo_file::add_unit_set): Likewise.
2535 (Dwp_output_file::add_output_section): Likewise.
2536 (Dwp_output_file::add_contribution): Likewise.
2537 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
2538 for empty slot.
2539 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
2540 file format.
2541 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
2542 slot.
2543 (Dwp_output_file::initialize): Remove unused function.
2544 (Dwp_output_file::finalize): Add support for v2 package file format.
2545 (Dwp_output_file::write_index): Likewise.
2546 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
2547 function prototype.
2548
c6905c28
CC
25492013-07-31 Cary Coutant <ccoutant@google.com>
2550
2551 * object.cc (Sized_relobj::do_output_section_address): New function.
2552 (Sized_relobj): Instantiate explicitly.
2553 * object.h (Object::output_section_address): New function.
2554 (Object::do_output_section_address): New function.
2555 (Sized_relobj::do_output_section_address): New function.
2556 * powerpc.cc (Target_powerpc::symval_for_branch): Use it.
2557
25582013-07-30 Cary Coutant <ccoutant@google.com>
5cdb4d98 2559 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
a67858e0
CC
2560
2561 * parameters.cc (Parameters::entry): Return target-specific entry
2562 symbol name.
2563 * target.h (Target::entry_symbol_name): New function.
2564 (Target_info::entry_symbol_name): New data member.
2565
2566 * arm.cc (Target_arm::arm_info): Add entry_symbol_name.
2567 * i386.cc (Target_i386::i386_info): Likewise.
2568 (Target_i386_nacl::i386_nacl_info): Likewise.
2569 * sparc.cc (Target_sparc::sparc_info): Likewise.
2570 * tilegx.cc (Target_tilegx::tilegx_info): Likewise.
2571 * x86_64.cc: (Target_x86_64::x86_64_info) Likewise.
2572 (Target_x86_64_nacl::x86_64_nacl_info) Likewise.
2573 * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
2574
234d4ab8
SA
25752013-07-22 Sterling Augustine <saugustine@google.com>
2576
2577 * dwarf_reader.cc (Dwarf_pubnames_table::read_section):
2578 Convert parameter shndx to local variable. Add parameters symtab
2579 and symtab_size. Scan over section names. Find relocation
2580 section corresponding to current section. Create and initialize
2581 reloc_mapper_ and reloc_type_.
2582 (Dwarf_pubnames_table::read_header): Add assertion. Change
2583 unit_length to off_t. Initialize member unit_length_. Fill in field
2584 cu_offset_.
2585 * dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
2586 Initialize new fields unit_length_ and cu_offset_.
2587 (Dwarf_pubnames_table::read_section): Update prototype.
2588 (Dwarf_pubnames_table::cu_offset): New member function.
2589 (Dwarf_pubnames_table::subsection_size): Likewise.
2590 (Dwarf_pubnames_table::cu_offset_, Dwarf_pubnames_table::unit_length):
2591 New fields.
2592 (Dwarf_info_reader::symtab, Dwarf_info_reader::symtab_size): Make
2593 member functions public.
2594 * gdb_index.cc (Gdb_index_info_reader::read_pubnames_and_pubtypes):
2595 Update comment. Rework logic. Move repeated parts to...
2596 (Gdb_index_info_reader::read_pubtable): ...here. New function.
2597 (Gdb_index::Gdb_index): Initialize new fields, pubnames_table_,
2598 pubtypes_table_, and stmt_list_offset.
2599 (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
2600 Gdb_index::find_pubtype_offset,
2601 Gdb_index::map_pubnames_and_types_to_dies): Define new functions.
2602 (Gdb_index::pubnames_read): Update prototype and rework logic.
2603 * gdb_index.h (Gdb_index_info_reader, Dwarf_pubnames_table):
2604 Forward declare.
2605 (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
2606 Gdb_index::find_pubtype_offset, Gdb_index::pubnames_table)
2607 Gdb_index::pubtypes_table, Gdb_index::map_pubnames_and_types_to_dies,
2608 Gdb_index::map_pubtable_to_dies):
2609 Declare functions.
2610 (Gdb_index::pubnames_read): Update declaration.
2611 (Gdb_index::Pubname_offset_map): New type.
2612 (Gdb_index::cu_pubname_map_, Gdb_index::cu_pubtype_map_,
2613 Gdb_index::pubnames_table_, Gdb_index::pubtypes_table_,
2614 Gdb_index::stmt_list_offset): Declare.
2615 (Gdb_index::pubnames_shndx_, Gdb_index::pubnames_offet_,
2616 Gdb_index::pubtypes_object_, Gdb_index::pubtypes_shndx_)
2617 Gdb_index::pubtypes_offset_): Remove.
2618
a3ed37d8
RM
26192013-07-19 Roland McGrath <mcgrathr@google.com>
2620
2621 * options.h (General_options): Add -Trodata-segment option.
2622 * parameters.cc (Parameters::check_rodata_segment): New function.
2623 (Parameters::set_target_once): Call it.
2624 * parameters.h (Parameters): Declare it (private member function).
2625 * layout.cc (load_seg_unusable_for_headers): New function, broken
2626 out of Layout::relaxation_loop_body. If TARGET->isolate_execinstr()
2627 then validate rodata segment rather than text segment.
2628 (relaxation_loop_body): Call that.
2629 (is_text_segment): New function. Don't admit a non-executable
2630 segment if TARGET->isolate_execinstr().
2631 (set_segment_offsets): Call it. Honor -Trodata-segment option.
2632
eb5b4ded
CC
26332013-07-15 Shawn Landden <shawnlandden@gmail.com>
2634
2635 PR gold/15070
2636 * fileread.h (File_read::get_view): Clarify comment about ALIGNED.
2637 * nacl.h (Sniff_file::View::View): Request aligned view.
2638
4d5effb9
CC
26392013-07-11 Cary Coutant <ccoutant@google.com>
2640
2641 * powerpc.cc (Target_powerpc::write_branch_lookup_table): Use
2642 correct BRLT entry size.
2643
ba8ca3e7
AM
26442013-07-03 Alan Modra <amodra@gmail.com>
2645
2646 * powerpc.cc (Target_powerpc::Relocate::relocate): Update self-call
2647 comment.
2648
267257d2
CC
26492013-07-01 Cary Coutant <ccoutant@google.com>
2650
2651 * dwarf_reader.cc (Dwarf_ranges_table::read_ranges_table): Save
2652 reloc_type_.
2653 (Dwarf_ranges_table::read_range_list): Call lookup_reloc.
2654 (Dwarf_ranges_table::lookup_reloc): New function.
2655 * dwarf_reader.h (Dwarf_ranges_table::Dwarf_ranges_table): Initialize
2656 reloc_type_.
2657 (Dwarf_ranges_table::lookup_reloc): New function.
2658 (Dwarf_ranges_table::reloc_type_): New data member.
2659
06f30c9d
CC
26602013-06-27 Jing Yu <jingyu@google.com>
2661
2662 PR gold/15662
2663 * powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
2664 function.
2665 (Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
2666 (Target_powerpc::do_relax): Call the above.
2667
a2d7bf59
AM
26682013-06-27 Cary Coutant <ccoutant@google.com>
2669
2670 * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
2671 on garbage collected .opd section.
2672
26732013-06-27 Alan Modra <amodra@gmail.com>
2674
2675 * powerpc.cc (Target_powerpc::do_gc_add_reference): Test dst_shndx
2676 is non-zero.
2677 (Target_powerpc::do_gc_mark_symbols): Likewise for sym->shndx().
2678 (Target_powerpc::do_function_location): Likewise for loc->shndx.
2679
32364e50
CC
26802013-06-14 Cary Coutant <ccoutant@google.com>
2681
2682 * resolve.cc (Symbol::override_base): Don't override st_type
2683 from plugin placeholder symbols.
2684 (Symbol_table::resolve): Likewise.
2685 (Symbol_table::should_override): Don't complain about TLS mismatch
2686 if the TO symbol is a plugin placeholder.
2687 * testsuite/Makefile.am (plugin_test_tls): New test.
2688 * testsuite/Makefile.in: Regenerate.
2689 * testsuite/plugin_test_tls.sh: New test script.
2690 * testsuite/two_file_test_2_tls.cc: New test source.
2691 * testsuite/two_file_test_tls.cc: New test source.
2692
7fb47cc9
CC
26932013-06-05 Alexander Ivchenko <alexander.ivchenko@intel.com>
2694
2695 * layout.cc (Layout::set_segment_offsets): Taking care of the case when
2696 the maximum segment alignment is larger than the page size.
2697 * testsuite/Makefile.am (large_symbol_alignment): Test that Gold
2698 correctly aligns the symbols with large alignemnt.
2699 * testsuite/Makefile.in: Regenerate.
2700 * testsuite/large_symbol_alignment.cc: New file.
2701
6934001a
CC
27022013-05-30 Alexander Ivchenko <alexander.ivchenko@intel.com>
2703 Sriraman Tallam <tmsriram@google.com>
2704
2705 * options.h (sort_section): New option.
2706 * output.h (Input_section_sort_section_prefix_special_ordering_compare):
2707 Rename from Input_section_sort_section_name_special_ordering_compare.
2708 (Input_section_sort_section_name_compare): New struct.
2709 * output.cc (Output_section::Input_section_sort_section_name_compare::
2710 operator()): New function.
2711 (Output_section::sort_attached_input_sections): Use new sort function
2712 for .text if --sort-section=name is specified.
2713 * layout.cc (Layout::make_output_section):
2714 Add sorting by name when --sort-section=name is specified.
2715 * testsuite/Makefile.am (text_section_grouping): Test option
2716 --sort-section=name.
2717 * testsuite/Makefile.in: Regenerate.
2718 * testsuite/section_sorting_name.cc: New file.
2719 * testsuite/section_sorting_name.sh: New file.
2720
93acabad
CC
27212013-05-21 Cary Coutant <ccoutant@google.com>
2722
2723 * symtab.h (Symbol::is_cxx_vtable): New function.
2724 * target-reloc.h (relocate_section): Check for vtable symbol.
2725 * testsuite/Makefile.am (missing_key_func.sh): New test case.
2726 * testsuite/Makefile.in: Regenerate.
2727 * testsuite/missing_key_func.cc: New test source.
2728 * testsuite/missing_key_func.sh: New test script.
2729
60e8b3fc
CC
27302013-05-21 Cary Coutant <ccoutant@google.com>
2731
2b64b551
RM
2732 * object.cc (Sized_relobj_file::get_symbol_location_info): Set
2733 type of enclosing symbol.
2734 (Relocate_info::location): Check symbol type when describing symbol.
2735 * object.h (Symbol_location_info): Remove unused line_number;
2736 add enclosing_symbol_type.
2737 * testsuite/debug_msg.sh: Adjust expected output.
60e8b3fc 2738
9df9de2c
CC
27392013-05-13 Cary Coutant <ccoutant@google.com>
2740
2b64b551
RM
2741 * configure.ac: Export DEFAULT_TARGET.
2742 * configure: Regenerate.
2743 * Makefile.in: Regenerate.
2744 * testsuite/Makefile.am: Add .EXPORT_ALL_VARIABLES.
2745 * testsuite/Makefile.in: Regenerate.
2746 * testsuite/debug_msg.sh: Delete duplicate tests.
2747 Don't check undef_int error message match for powerpc where the
2748 source file and line number aren't available.
9df9de2c 2749
bbc5ae17
RM
27502013-05-10 Roland McGrath <mcgrathr@google.com>
2751
2752 * options.h (General_options): Add --rosegment-gap option.
2753 * options.cc (finalize): --rosegment-gap implies --rosegment.
2754 * layout.cc (set_segment_offsets): Let user option override
2755 target->rosegment_gap().
2756
0c6e6c39
RM
27572013-05-10 Roland McGrath <mcgrathr@google.com>
2758
2759 * options.h (General_options): Remove leading space from help
2760 messages for -nostdlib and --rosegment.
2761
cde7cb01
MR
27622013-05-03 Maciej W. Rozycki <macro@codesourcery.com>
2763
2764 PR ld/15365
2765 * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
2766
f31ae5b8
AM
27672013-05-03 Alan Modra <amodra@gmail.com>
2768
2769 * merge.cc (Output_merge_string::do_add_input_section): Correct
2770 scan for number of strings. Rename vars to avoid shadowing.
2771 Include missing terminator in input_size_.
2772
d3a7cd45
L
27732013-05-01 H.J. Lu <hongjiu.lu@intel.com>
2774
2775 * merge.cc (Output_merge_string<Char_type>::do_add_input_section):
2776 Restore empty string handling.
2777
6ad3daba
CC
27782013-05-01 Cary Coutant <ccoutant@google.com>
2779
2780 * stringpool.cc (Stringpool_template::new_key_offset): Fix
2781 uninitialized warning.
2782
e31908b6
CC
27832013-04-29 Alexander Ivchenko <alexander.ivchenko@intel.com>
2784
2785 * output.cc (Output_section::add_merge_input_section): Allow
2786 to merge sections if the alignment is more than character size.
2787 * merge.h (Output_merge_string::Output_merge_string): Remove
2788 assert.
2789 * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count
2790 only not-null strings. Check the alignment of strings.
2791 * stringpool.h
2792 (Stringpool_template<Stringpool_char>::Stringpool_template): Add
2793 alignment as the argument.
2794 (Stringpool_template<Stringpool_char>::addralign_): New class member.
2795 * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset):
2796 Align non-zero length strings according to the addralign_.
2797 (Stringpool_template<Stringpool_char>::set_string_offsets):
2798 Updating offsets according to the given alignment.
2799 * testsuite/Makefile.am (text_section_grouping): Test if string
2800 literals are getting merged.
2801 * testsuite/Makefile.in: Regenerate.
2802 * testsuite/merge_string_literals_1.c: New file.
2803 * testsuite/merge_string_literals_2.c: Ditto.
2804 * testsuite/merge_string_literals.sh: Ditto.
2805
0e804863
ILT
28062013-04-26 Ian Lance Taylor <iant@google.com>
2807
2808 * target-reloc.h (relocate_section): If the reloc offset is out of
2809 range, pass VIEW as NULL to relocate.relocate.
2810 * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view.
2811 * i386.cc (Target_i386::Relocate::relocate): Likewise.
2812 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
2813 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
2814 * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise.
2815 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
2816
e7c5ea40
CC
28172013-04-26 Geoff Pike <gpike@chromium.org>
2818
2819 * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks().
2820 * layout.cc (Hash_task): New class.
2821 (Layout::queue_build_id_tasks): New function.
2822 (Layout::write_build_id): Handle single-thread portion of build ID
2823 computation. (In some cases, all of it is single-threaded.) Replace
2824 {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same
2825 functionality in fewer lines of code.
2826 * layout.h (Layout::queue_build_id_tasks): New function declaration.
2827 * options.h (General_options): make "--build-id" default to tree
2828 rather than sha1. Add two new options related to --build-id=tree:
2829 --build-id-chunk-size-for-treehash and
2830 --build-id-min-file-size-for-treehash.
2831 * Makefile.am: add testing of --build-id=tree and related new options
2832 (these tests will be invoked by "make check").
2833 * Makefile.in: Regenerate.
2834
49926cd0
AM
28352013-04-25 Alan Modra <amodra@gmail.com>
2836
2837 * configure.tgt: Add powerpcle and powerpc64le.
2838
a4034750
AM
28392013-04-22 Alan Modra <amodra@gmail.com>
2840
2841 PR gold/15355
2842 * layout.cc (Layout::segment_precedes): Allow more than one
2843 segment with the same type and flags.
2844
e79c84aa
CC
28452013-04-15 Cary Coutant <ccoutant@google.com>
2846
2847 * layout.cc (Layout::set_relocatable_section_offsets): Don't
2848 allocate space in file for BSS sections.
2849
2199fbe7
CC
28502013-04-15 Cary Coutant <ccoutant@google.com>
2851
2852 * script-sections.cc (Orphan_output_section): Reset address
2853 to zero after each orphaned section for relocatable links.
2854
502e8a84
CC
28552013-04-15 Cary Coutant <ccoutant@google.com>
2856
a4034750
AM
2857 * symtab.cc (Symbol_table::sized_write_globals): Subtract
2858 section starting address for relocatable link.
2859 * testsuite/Makefile.am (script_test_11): New test.
2860 * testsuite/Makefile.in: Regenerate.
2861 * testsuite/script_test_11.c: New source file.
2862 * testsuite/script_test_11.t: New linker script.
502e8a84 2863
0cfdc767
AM
28642013-04-13 Alan Modra <amodra@gmail.com>
2865
2866 * powerpc.cc (Stub_control::can_add_to_stub_group): Don't set
2867 owner when sections are not adjacent and exceed group size.
2868 (Target_powerpc::group_sections): Handle corner case.
2869 (Target_powerpc::Branch_info::make_stub): Handle case where
2870 stub table doesn't exist due to branches in non-exec sections.
2871 (Target_powerpc::Relocate::relocate): Likewise.
2872
6830ee24
AM
28732013-04-11 Alan Modra <amodra@gmail.com>
2874
2875 PR gold/15354
2876 * powerpc.cc (Target_powerpc::make_brlt_section): Name section
2877 .branch_lt to match bfd ld. Adjust comments throughout file.
2878
54a3d865
ILT
28792013-04-04 Ian Lance Taylor <iant@google.com>
2880
2881 GCC PR c++/56840
2882 * object.cc (do_layout_deferred_sections): Handle .eh_frame
2883 sections before checking whether they are included in the link.
2884
9993ba11
ST
28852013-03-29 Sriraman Tallam <tmsriram@google.com>
2886
2887 * archive.cc (Archive::get_elf_object_for_member): Create the elf
2888 object before calling the plugin claim_file handler. Pass the elf
2889 object of the archive to the plugin. Delete the elf object if the
2890 plugin claims the file.
2891
ebacd51e
AM
28922013-03-21 Alan Modra <amodra@gmail.com>
2893
2894 * layout.cc (Layout::set_segment_offsets): Accept writable .text
2895 segment when omagic.
2896
117be58f
AM
28972013-03-21 Alan Modra <amodra@gmail.com>
2898
2899 * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsigned
2900 comparison warning.
2901 * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used
2902 uninitialized" warning.
2903
32e2b61d
AM
29042013-03-20 Alan Modra <amodra@gmail.com>
2905
2906 * symtab.h (Symbol::clear_version): New function.
2907 * symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object
2908 is_needed by weak references. Clear version for symbols defined
2909 in as-needed objects that are not needed.
2910
b3ccdeb5
AM
29112013-03-15 Alan Modra <amodra@gmail.com>
2912
2913 * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Make
2914 static and public. Add report_err param. Return false for data refs.
2915 (Target_powerpc::rela_dyn_section): New overloaded function.
2916 (Target_powerpc::plt_, iplt_): Elucidate.
2917 (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0.
2918 (Output_data_plt_powerpc::do_write): Don't write .iplt.
2919 (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries.
2920 (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc
2921 calls. Put ifunc dynamic relocs in irela_dyn_section. Only
2922 push_branch and make_plt_entry for ifunc syms when
2923 reloc_needs_plt_for_ifunc.
2924 (Target_powerpc::Relocate::relocate): Don't use plt entry value
2925 for ifunc unless reloc_needs_plt_for_ifunc.
2926
ad3d8a2f
AM
29272013-03-15 Alan Modra <amodra@gmail.com>
2928
2929 * gc.h (gc_process_relocs): Don't look through function descriptors.
2930 * icf.cc (get_section_contents): Do so here instead.
2931
4d9aa155
AM
29322013-03-13 Alan Modra <amodra@gmail.com>
2933
2934 * powerpc.cc (is_branch_reloc): Forward declare.
2935 (Target_powerpc::do_can_check_for_function_pointers): New predicate.
2936 (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return
2937 false for 64-bit, true for 32-bit non-branch relocs.
2938 (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise.
2939 * testsuite/Makefile.am (icf_test): Use linker map file instead of
2940 nm output.
2941 (icf_safe_test): Generate linker map file as well as nm output.
2942 (icf_safe_so_test): Likewise.
2943 * testsuite/Makefile.in: Regenerate.
2944 * testsuite/icf_test.sh: Parse linker map file to determine
2945 section folding.
2946 * testsuite/icf_safe_test.sh: Likewise. Expect folding for PowerPC.
2947 * testsuite/icf_safe_so_test.sh: Likewise.
2948 (X86_32_or_ARM_specific_safe_fold): Merge into..
2949 (arch_specific_safe_fold): ..this.
2950 (X86_64_specific_safe_fold): Delete unused function.
2951
57420c20
AM
29522013-03-12 Alan Modra <amodra@gmail.com>
2953
2954 * gc.h (gc_process_relocs): Look through function descriptors
2955 to determine shndx, symvalue and addend used by ICF. Tidy
2956 variable duplication.
2957
dc3714f3
AM
29582013-03-11 Alan Modra <amodra@gmail.com>
2959
2960 * gold.cc (queue_middle_tasks): Move detect_odr_violations..
2961 * layout.cc (Layout_task_runner::run): ..to here.
2962 * symtab.h (struct Symbol_location): Extract from..
2963 (class Symbol_table): ..here.
2964 * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
2965 * target.h (class Target): Add function_location and
2966 do_function_location functions.
2967 (class Sized_target): Add do_function_location.
2968 * object.h (class Sized_relobj_file): Move find_shdr..
2969 (class Object): ..to here.
2970 * object.cc: Likewise. Update to suit. Instantiate.
2971 (Sized_relobj_file::find_eh_frame): Update find_shdr call.
2972 * powerpc.cc (class Powerpc_dynobj): New.
2973 (Target_powerpc::do_function_location): New function.
2974 (Powerpc_relobj::do_find_special_sections): Update find_shdr call.
2975 (Powerpc_dynobj::do_read_symbols): New function.
2976 (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
2977
956b03bb
ILT
29782013-03-08 Ian Lance Taylor <iant@google.com>
2979
2980 * options.cc (General_options::string_to_object_format): Accept
2981 "default".
2982
4bead2d5
AM
29832013-03-08 Alan Modra <amodra@gmail.com>
2984
2985 * ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
2986 pointer to Post_fde.
2987 (struct Post_fde): Move definition to here..
2988 * ehframe.cc (struct Post_fde): ..from here.
2989 (Cie::write): Don't alloc Post_fde.
2990 (Eh_frame::do_sized_write): Update. Don't free Post_fde.
2991
02e60bf7
AM
29922013-03-07 Alan Modra <amodra@gmail.com>
2993
2994 * testsuite/discard_locals_relocatable_test.c: Add a powerpc
2995 relocation referencing .LC0.
2996 * testsuite/discard_locals_test.sh: Remove FIXMEs.
2997
8343f03a
AM
29982013-03-07 Alan Modra <amodra@gmail.com>
2999
3000 * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
3001 always_inline. Add assembly for powerpc to avoid GOT.
3002
3366d57c
AM
30032013-03-07 Alan Modra <amodra@gmail.com>
3004
3005 * testsuite/script_test_10.sh: Don't test .bss section
3006 header number.
3007
6c77229c
AM
30082013-03-06 Alan Modra <amodra@gmail.com>
3009
3010 * powerpc.cc (class Powerpc_relobj): Move some member functions.
3011 (Target_powerpc::symval_for_branch): Add symtab param. Update
3012 all callers. Handle folded sections.
3013 (Target_powerpc::do_gc_add_reference): Don't cast dynamic object
3014 to Powerpc_relobj.
3015 (Global_symbol_visitor_opd::operator()): Likewise.
3016
a39e4af6
AM
30172013-03-04 Alan Modra <amodra@gmail.com>
3018
3019 * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.
3020 * testsuite/Makefile.in: Regenerate.
3021
d5834edb
CC
30222013-03-01 Cary Coutant <ccoutant@google.com>
3023
3024 Add dwp support for v2 DWARF package file format.
3025 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
3026 tu_length parameter. Adjust all callers.
3027 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
3028 * dwp.cc: Include dwarf.h.
3029 (Section_bounds): New struct type.
3030 (Unit_set): New struct type.
3031 (Dwo_file::Dwo_file): Initialize new data member.
3032 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
3033 Combine and rename to...
3034 (Dwo_file::read_unit_index): ...this.
3035 (Dwo_file::sized_read_compunit_index)
3036 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
3037 (Dwo_file::sized_read_unit_index): ...this.
3038 (Dwo_file::copy_section): Remove section_name, is_str_offsets
3039 parameters; add section_id parameter.
3040 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
3041 (Dwo_file::add_unit_set): ...this.
3042 (Dwo_file::shndx_map_): Remove.
3043 (Dwo_file::sect_offsets_): New data member.
3044 (Dwp_output_file::Dwp_output_file): Initialize new data members.
3045 (Dwp_output_file::add_section): Rename to...
3046 (Dwp_output_file::add_contribution): ...this.
3047 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
3048 (Dwp_output_file::add_tu_set): Likewise.
3049 (Dwp_output_file::Contribution): New type.
3050 (Dwp_output_file::Section::contributions): New data member.
3051 (Dwp_output_file::Cu_or_tu_set): Remove.
3052 (Dwp_output_file::Section::Section): New ctor.
3053 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
3054 (Dwp_output_file::Dwp_index::Section_table): New type.
3055 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
3056 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
3057 parameter.
3058 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
3059 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
3060 (Dwp_output_file::Dwp_index::section_table): New member function.
3061 (Dwp_output_file::Dwp_index::section_table_end): New member function.
3062 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
3063 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
3064 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
3065 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
3066 (Dwp_output_file::Dwp_index::section_table_): New data member.
3067 (Dwp_output_file::Dwp_index::section_mask_): New data member.
3068 (Dwp_output_file::add_output_section): New member function.
3069 (Dwp_output_file::write_new_section): New member function.
3070 (Dwp_output_file::write_contributions): New member function.
3071 (Dwp_output_file::section_id_map_): New data member.
3072 (class Dwo_id_info_reader): Remove.
3073 (class Unit_reader): New class.
3074 (get_dwarf_section_name): New function.
3075 (Dwo_file::read_executable): Adjust initializations of class data.
3076 (Dwo_file::read): Add support for v2 package file format.
3077 (Dwo_file::read_unit_index): Likewise.
3078 (Dwo_file::sized_read_unit_index): Likewise.
3079 (Dwo_file::copy_section): Likewise.
3080 (Dwo_file::add_unit_set): Likewise.
3081 (Dwp_output_file::add_output_section): Likewise.
3082 (Dwp_output_file::add_contribution): Likewise.
3083 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
3084 for empty slot.
3085 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
3086 file format.
3087 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
3088 slot.
3089 (Dwp_output_file::initialize): Remove unused function.
3090 (Dwp_output_file::finalize): Add support for v2 package file format.
3091 (Dwp_output_file::write_index): Likewise.
3092 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
3093 function prototype.
3094
a68a081d
CC
30952013-03-01 Cary Coutant <ccoutant@google.com>
3096
3097 * dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move
3098 function into class definition in header file.
3099 (Dwarf_info_reader::warn_corrupt_debug_section): New function.
3100 * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section):
3101 New function.
3102 (Dwarf_info_reader::check_buffer): Move here from .cc file.
3103
9d5781f8
AM
31042013-02-28 Alan Modra <amodra@gmail.com>
3105
3106 * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.
3107 * target.cc (Target::do_plt_fde_location): New function.
3108 * ehframe.h (class FDE): Add post_map field to u_.from_linker,
3109 accessor function, and constructor param.
3110 (struct Post_fde, Post_fdes): Declare.
3111 (Cie::write): Add post_fdes param.
3112 * ehframe.cc (Fde::write): Use plt_fde_location.
3113 (struct Post_fde): Define.
3114 (Cie::write): Stash FDEs added post merge mapping.
3115 (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping.
3116 Adjust Fde constructor call. Bump final_data_size_ for post map FDEs.
3117 (Eh_frame::do_sized_write): Arrange to write post map FDES after
3118 other FDEs.
3119 * powerpc.cc (Target_powerpc::do_plt_fde_location): New function.
3120 (Target_powerpc::has_glink): New function.
3121 (Target_powerpc::do_relax): Add eh_frame info for stubs.
3122 (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64,
3123 glink_eh_frame_fde_32, default_fde): New data.
3124 (Stub_table::eh_frame_added_): New var.
3125 (Stub_table::find_long_branch_entry, stub_address, stub_offset):
3126 Make const.
3127 (Stub_table::add_eh_frame): New function.
3128 (Output_data_glink::add_eh_frame): New function.
3129 (Target_powerpc::make_glink_section): Call add_eh_frame.
3130
214383dd
ILT
31312013-02-15 Ian Lance Taylor <iant@google.com>
3132
3133 * options.h (DEFINE_uint64_alias): Define.
3134 (class General_options): Add -Ttext-segment as an alias for
3135 -Ttext.
3136
91c2b899
AM
31372013-02-15 Alan Modra <amodra@gmail.com>
3138
3139 * powerpc.cc (Stub_table::plt_off): New function, extracted from..
3140 (Stub_table::do_write): ..here, two places.
3141 (Stub_table::plt_call_size): Use it here too.
3142
20e2a8aa
ILT
31432013-02-11 Ian Lance Taylor <iant@google.com>
3144
3145 * descriptors.cc (Descriptors::close_all): New function.
3146 * descriptors.h (class Descriptors): Declare close_all.
3147 (close_all_descriptors): New inline function.
3148 * plugin.cc: Include "descriptors.h".
3149 (Plugin_manager::cleanup): Call close_all_descriptors.
3150
8952bc69
AM
31512013-02-06 Alan Modra <amodra@gmail.com>
3152
3153 * README: Update coding style link.
3154
29bd8b6b
CC
31552013-01-28 Cary Coutant <ccoutant@google.com>
3156
a4034750
AM
3157 * dwp.cc (File_list): New typedef.
3158 (Dwo_name_info_reader): New class.
3159 (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
3160 (Dwo_id_info_reader::visit_top_die): Remove unused member function.
3161 (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
3162 (Dwo_file::read_executable): New function.
3163 (Dwo_file::read): Move common setup code to ...
3164 (Dwo_file::make_object): ... here.
3165 (dwp_options): Add --exec/-e.
3166 (usage): Likewise.
3167 (main): Likewise.
29bd8b6b 3168
c6ac678d
ST
31692013-01-24 Sriraman Tallam <tmsriram@google.com>
3170
3171 * layout.cc (Layout::layout): Check for option text_reorder.
3172 (Layout::make_output_section): Ditto.
3173 * options.h (text_reorder): New option.
3174 * output.cc (Input_section_sort_compare): Remove special ordering
3175 of section names.
3176 (Output_section::
3177 Input_section_sort_section_name_special_ordering_compare::
3178 operator()): New function.
3179 (Output_section::sort_attached_input_sections): Use new sort function
3180 for .text.
3181 * output.h (Input_section_sort_section_name_special_ordering_compare):
3182 New struct.
3183 * testsuite/Makefile.am (text_section_grouping): Test option
3184 --no-text-reorder
3185 * testsuite/Makefile.in: Regenerate.
3186 * testsuite/text_section_grouping.sh: Check order of functions without
3187 default text reordering.
3188
50701cc1
MF
31892013-01-18 Mike Frysinger <vapier@gentoo.org>
3190
3191 * options.h (General_options): Change default to true for new_dtags.
3192
b1b00fcc
MF
31932013-01-18 Mike Frysinger <vapier@gentoo.org>
3194
3195 * layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
3196 when enable_new_dtags is false. Only add DT_RUNPATH when
3197 enable_new_dtags is true.
3198
ec5b8187
AM
31992013-01-17 Serge Pavlov <serge.v.pavlov@gmail.com>
3200
3201 * powerpc.cc (Stub_table::find_plt_call_entry): Make types
3202 used in declaration and definition consistent.
3203 (Target_powerpc::symval_for_branch): Ditto.
3204
a880d4c4
ST
32052013-01-16 Sriraman Tallam <tmsriram@google.com>
3206
3207 * testsuite/plugin_final_layout.cc: Fix comment.
3208
7c381248
ST
32092013-01-16 Sriraman Tallam <tmsriram@google.com>
3210
3211 * layout.cc (Layout::layout): Do not do default sorting for
3212 text sections when section ordering is specified.
3213 (make_output_section): Ditto.
3214 * testsuite/plugin_final_layout.cc: Name the function sections
3215 to catch reordering issues.
3216
e2458743
AM
32172013-01-15 Alan Modra <amodra@gmail.com>
3218
3219 * powerpc.cc (Target_powerpc::do_relax): Default shared libs to
3220 plt-thread-safe.
3221
431ed302
AM
32222013-01-15 Alan Modra <amodra@gmail.com>
3223
3224 * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
3225 * testsuite/Makefile.in: Regenerate.
3226
0ec6429b
AM
32272013-01-14 Alan Modra <amodra@gmail.com>
3228
3229 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
3230 * testsuite/Makefile.in: Regenerate.
3231
0bf402d5
ILT
32322013-01-11 Pavel Chupin <pavel.v.chupin@intel.com>
3233
36af3926 3234 PR bfd/14430
0bf402d5
ILT
3235 Fix mingw gold build with plugins enabled
3236 * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
3237 * configure.ac: Export DLOPEN_LIBS and add headers check.
3238 * plugin.cc: Handle non-dlfcn case.
3239 * Makefile.in: Regenerate.
3240 * config.in: Regenerate.
3241 * configure: Regenerate.
3242 * testsuite/Makefile.in: Regenerate.
3243
9e9143bc
ST
32442013-01-09 Sriraman Tallam <tmsriram@google.com>
3245
3246 * output.h (sort_attached_input_sections): Change to be public.
3247 * script-sections.cc
3248 (Output_section_definition::set_section_addresses): Sort
3249 attached input sections according to section order before linker
3250 script assigns section addresses.
3251 (Orphan_output_section::set_section_addresses): Sort
3252 attached input sections according to section order before linker
3253 script assigns section addresses.
3254 * Makefile.am (final_layout.sh): Use a simple linker script to
3255 check if section ordering still works.
3256 * Makefile.in: Regenerate.
3257
679af368
ILT
32582013-01-09 Ben Cheng <bccheng@google.com>
3259
3260 * arm.cc (Target_arm::attributes_accept_div): New function.
3261 (Target_arm::attributes_forbid_div): New function.
3262 (Target_arm::merge_object_attributes): Merge the Tag_DIV_use
3263 attribute using the same new functions as what bfd/elf32_arm.c
3264 does.
3265
3136a00e
CC
32662013-01-07 Cary Coutant <ccoutant@google.com>
3267
3268 PR gold/14993
3269 * output.cc (Output_section::add_input_section): For incremental
3270 updates, don't track input sections that are allocated from patch
3271 space.
3272
f2a6224b
L
32732013-01-07 H.J. Lu <hongjiu.lu@intel.com>
3274 Ian Lance Taylor <iant@google.com>
3275
3276 PR gold/14897
3277 * configure.ac (--enable-ld): Removed.
3278 (install_as_default): Set to yes only for --enable-gold=default
3279 or --disable-ld.
3280 * configure: Regenerated.
3281
4f46f626
L
32822013-01-07 H.J. Lu <hongjiu.lu@intel.com>
3283
3284 * options.h (General_options): Add -fuse-ld= for GCC linker
3285 option compatibility.
3286
26e4ef59
CC
32872013-01-04 Cary Coutant <ccoutant@google.com>
3288
3289 * configure.ac: Fix typo restoring CXXFLAGS.
3290 * configure: Regenerate.
3291
3d587466
CC
32922013-01-04 Cary Coutant <ccoutant@google.com>
3293
4f46f626
L
3294 * testsuite/Makefile.am (CXXLINK_S): New macro.
3295 (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
3296 * testsuite/Makefile.in: Regenerate.
3d587466 3297
44db6695
L
32982013-01-02 H.J. Lu <hongjiu.lu@intel.com>
3299
3300 * version.cc (print_version): Update copyright year to 2013.
3301
edcac0c1
ILT
33022012-12-20 Ian Lance Taylor <iant@google.com>
3303
3304 * layout.cc (Layout::special_ordering_of_input_section): New
3305 function.
3306 (Layout::layout): If input section requires special ordering, must
3307 sort input sections.
3308 (Layout::make_output_section): May sort .text input sections.
3309 (Layout::is_section_name_prefix_grouped): Remove.
3310 * layout.h (class Layout): Declare
3311 special_ordering_of_input_section. Don't declare
3312 is_section_name_prefix_grouped.
3313 * output.cc (Output_section::add_input_section): Revert last
3314 change.
3315 (Output_section::Input_section_sort::match_file_name): Don't crash
3316 if called on output section data.
3317 (Output_section::Input_section_sort_compare): Sort based on
3318 special ordering.
3319 (Output_section::Input_section_sort_section_order_index_compare):
3320 Revert last patch.
3321 (Output_section::sort_attached_input_sections): Likewise.
3322
28f2a4ac
ST
33232012-12-18 Sriraman Tallam <tmsriram@google.com>
3324
edcac0c1 3325 * layout.cc (Layout::is_section_name_prefix_grouped): New function.
28f2a4ac
ST
3326 * layout.h (Layout::is_section_name_prefix_grouped): New function.
3327 * output.cc (Output_section::add_input_section): Check if section
3328 name contains special prefix. Keep input sections to sort such
3329 sections.
3330 (Output_section::Input_section_sort_section_order_index_compare
3331 ::operator()): Group sections according to prefixes.
edcac0c1
ILT
3332 (Output_section::sort_attached_input_sections): Add condition to
3333 Input_section_entry constructor call.
28f2a4ac
ST
3334 * testsuite/Makefile.am (text_section_grouping): New test.
3335 * testsuite/Makefile.in: Regenerate.
3336 * testsuite/text_section_grouping.cc: New file.
3337 * testsuite/text_section_grouping.sh: New file.
3338
5bf135a7
NC
33392012-12-17 Nick Clifton <nickc@redhat.com>
3340
3341 * Makefile.am: Add copyright notice.
3342 * NEWS: Likewise.
3343 * README: Likewise.
3344 * configure.ac: Likewise.
3345 * ftruncate.c: Likewise.
3346 * Makefile.in: Regenerate.
3347
59965708
CC
33482012-12-14 Cary Coutant <ccoutant@google.com>
3349
a4034750
AM
3350 * testsuite/Makefile.am (exception_separate_shared_12_test): Add
3351 --no-as-needed flag.
3352 (exception_separate_shared_12_test): Likewise.
3353 (incremental_copy_test): Likewise.
3354 * testsuite/Makefile.in: Regenerate.
59965708 3355
2a77e2ab
CC
33562012-12-14 Cary Coutant <ccoutant@google.com>
3357
3358 * dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
3359 (Dwp_output_file::Dwp_index::enter_set): Add assert.
3360
e3deeb9c
AM
33612012-12-12 Alan Modra <amodra@gmail.com>
3362
3363 * powerpc.cc (class Track_tls): New.
3364 (class Relocate, class Scan): Inherit Track_tls.
3365 (Target_powerpc::Scan::local, global): Track tls optimization
3366 and avoid creating plt entry for __tls_get_addr if all uses
3367 are optimized away.
3368 (Target_powerpc::Relocate::relocate): Update to use Track_tls.
3369
d8f5a274
AM
33702012-12-12 Alan Modra <amodra@gmail.com>
3371
3372 * options.h (General_options): Add --toc-sort/--no-toc-sort.
3373 Replace no_toc_optimize with toc_optimize.
3374 * output.h (Output_section::input_sections): Provide non-const variant.
3375 * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
3376 set_has_small_toc_reloc, has_small_toc_reloc): New variable and
3377 accessors.
3378 (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
3379 (class Sort_toc_sections): New.
3380 (Target_powerpc::do_finalize_sections): Sort toc sections.
3381 (Target_powerpc::Relocate::relocate): Update toc_optimize test.
3382
4c8a1de1
RM
33832012-12-10 Roland McGrath <mcgrathr@google.com>
3384
3385 * testsuite/binary_unittest.cc (read_all): New function.
3386 (Sized_binary_test): Use it instead of ::read.
3387 * fileread.cc (do_read): Don't assume pread always reads the whole
3388 amount in a single call.
3389
edc27beb
AM
33902012-12-10 Alan Modra <amodra@gmail.com>
3391
3392 * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
3393 Set EM_PPC64 or EM_PPC here.
3394 (Target_selector_powerpc::do_recognize): Delete.
3395
906b9150
AM
33962012-12-10 Alan Modra <amodra@gmail.com>
3397
3398 * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
3399 stub_table_.
3400 (Target_powerpc::Branch_info::make_stub): Don't omit addend.
3401
418c15ae
RM
34022012-12-07 Roland McGrath <mcgrathr@google.com>
3403
3404 * testsuite/binary_unittest.cc (Sized_binary_test):
3405 Use open_descriptor rather than ::open.
3406
decdd3bc
AM
34072012-12-07 Alan Modra <amodra@gmail.com>
3408
3409 * powerpc.cc (Stub_table::do_write): Delete redundant Address
3410 typedef and invalid_address constant.
3411 (Output_data_glink, Stub_table, Target_powerpc): Explicitly
3412 instantiate constants.
3413
db399005
ILT
34142012-12-06 Roland McGrath <mcgrathr@google.com>
3415
3416 * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
3417 Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
3418 * aclocal.m4: Regenerate.
3419 * configure: Regenerate.
3420 * Makefile.in: Regenerate.
3421 * testsuite/Makefile.in: Regenerate.
3422
aba6bc71
AM
34232012-12-07 Alan Modra <amodra@gmail.com>
3424
3425 * options.h (General_options): Add no_toc_optimize.
3426 * powerpc.cc (ok_lo_toc_insn): New function.
3427 (Target_powerpc::Relocate::relocate): Optimize toc access sequences.
3428
9e69ed50
AM
34292012-12-06 Alan Modra <amodra@gmail.com>
3430
3431 * options.h (General_options): Add plt_align, plt_static_chain,
3432 plt_thread_safe. Update stub_group_size help text.
3433 * powerpc.cc (Target_powerpc::plt_thread_safe): New access function
3434 for new plt_thread_safe_ var.
3435 (use_plt_offset): Correct comments.
3436 (Target_powerpc::do_relax): Look for thread creation symbols to
3437 determine default plt_thread_safe value. Clear plt call stubs
3438 as well as branch stubs each iteration.
3439 (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
3440 insn constants.
3441 (l, hi, ha, write_insn): Move earlier.
3442 (Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
3443 (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
3444 plt stubs too.
3445 (Stub_table::update_size): Adjust.
3446 (Stub_table::prev_size, set_prev_size): Delete.
3447 (Stub_table::stub_align): Let --plt-align affect result.
3448 (Stub_table::plt_call_size): Calculate sizes for various stubs.
3449 (Stub_table::branch_stub_size): Use last_plt_size in address calc.
3450 (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
3451 (Stub_table::do_write): Support more stub variants.
3452
f43ba157
AM
34532012-12-04 Alan Modra <amodra@gmail.com>
3454
3455 * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
3456 (Target_powerpc::do_define_standard_symbols): New function.
3457
34171bc5
AM
34582012-12-03 Alan Modra <amodra@gmail.com>
3459
3460 * output.h: Formatting, whitespace.
3461
dc9589e9 34622012-12-03 Alan Modra <amodra@gmail.com>
ec661b9d
AM
3463
3464 * layout.h (Layout::get_executable_sections): Declare.
3465 * layout.cc (Layout::get_executable_sections): New function.
3466 * arm.cc (Target_arm::group_sections): Use it.
3467 (Arm_output_section::group_sections): Delete now redundant test.
3468 * output.cc (Output_reloc::Output_reloc): Add is_relative.
3469 param to handle relative relocs.
3470 * output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
3471 (Output_data_reloc::add_absolute): Adjust.
3472 (Output_data_reloc::add_relative): New function.
3473 (Output_data::reset_data_size): New function.
3474 (Output_relaxed_input_section::set_relobj, set_shndx): New functions.
3475 (Output_section::set_addralign): New function.
3476 (Output_section::checkpoint_set_addralign): New function.
3477 (Output_section::clear_section_offsets_need_adjustment): New function.
3478 (Output_section::input_sections): Make public.
3479 * powerpc.cc (class Output_data_brlt_powerpc): New.
3480 (class Stub_table, class Stub_control): New.
3481 (Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
3482 stub_table_, set_stub_table, stub_table): New vectors and accessor
3483 functions.
3484 (Target_powerpc::do_may_relax, do_relax, push_branch,
3485 new_stub_table, stub_tables, brlt_section, group_sections,
3486 add_branch_lookup_table, find_branch_lookup_table,
3487 write_branch_lookup_table, make_brlt_section): New functions.
3488 (Target_powerpc::struct Sort_sections, class Branch_info): New.
3489 (Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
3490 branch_info_): New vars.
3491 (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
3492 make call stubs here.
3493 (Output_data_glink): Remove all call stub handling from this class.
3494 (Target_powerpc::Scan::local, global): Save interesting branch
3495 relocs and relocs for ifunc. Adjust calls to plt entry functions.
3496 (Target_powerpc::do_finalize_sections): Only make reg save/restore
3497 functions on final link.
3498 (Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
3499 Handle long branch destinations too.
3500 (Target_powerpc::do_dynsym_value, do_plt_address_for_global,
3501 do_plt_address_for_local): Adjust lookup of plt call stubs.
3502
627b30b7
AM
35032012-11-30 Alan Modra <amodra@gmail.com>
3504
3505 * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
3506 relocs against protected symbols when building 32-bit shared libs.
3507
40b469d7
AM
35082012-11-30 Alan Modra <amodra@gmail.com>
3509
3510 * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
3511 param. Call got_section() to make .got. Update all callers
3512 and their callers and so on.
3513
bb66a627
AM
35142012-11-30 Alan Modra <amodra@gmail.com>
3515
3516 * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
3517 _GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
3518 (Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
3519 value if it already exists.
3520
d2cf1c6c
L
35212012-11-19 H.J. Lu <hongjiu.lu@intel.com>
3522
3523 PR gold/14858
3524 * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
3525
edccdf7c
RM
35262012-11-14 Roland McGrath <mcgrathr@google.com>
3527
3528 * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
3529 than bfc instruction for data sandboxing.
3530
6febeb74
AM
35312012-11-08 Alan Modra <amodra@gmail.com>
3532
3533 * po/POTFILES.in: Regenerate.
3534
0a6f1bf2
AM
35352012-11-05 Alan Modra <amodra@gmail.com>
3536
3537 * configure.ac: Apply 2012-09-10 change to config.in here.
3538 * configure: Regenerate.
3539
26a4e9cb
AM
35402012-11-05 Alan Modra <amodra@gmail.com>
3541
3542 * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
3543 (struct Opd_ent): Use "Address" rather than "Offset".
3544 (Output_data_got_powerpc::got_base_offset): Return Valtype.
3545 (Target_powerpc::got_section): Make public.
3546 (Target_powerpc::scan_relocs): Move code setting symbols..
3547 (Powerpc_relobj::do_scan_relocs): ..to here, new function.
3548 Create _SDA_BASE_ only when referenced.
3549
cc928013
RM
35502012-11-02 Roland McGrath <mcgrathr@google.com>
3551
3552 * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
3553 from last change.
3554
50ed5eb1
RM
35552012-11-01 Roland McGrath <mcgrathr@google.com>
3556
62fe925a
RM
3557 * target.h (Sized_target::relocate_relocs): Use Elf_Off
3558 for offset_in_output_section parameter.
3559 (Sized_target::relocate_special_relocatable): Likewise.
3560 * arm.cc (Target_arm::relocate_relocs): Likewise.
3561 (Target_arm::relocate_special_relocatable): Likewise.
3562 * i386.cc (Target_i386::relocate_relocs): Likewise.
3563 * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
3564 * sparc.cc (Target_sparc::relocate_relocs): Likewise.
3565 * target-reloc.h (relocate_relocs): Likewise.
3566 * testsuite/testfile.cc (Target_test): Likewise.
3567 * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
3568 * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
3569
3570 * system.h: Move inclusion of <clocale> to after <libintl.h> in
3571 [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
3572
3573 * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
3574 parameter, which is unused in the [!F_SETFD] case.
3575
50ed5eb1
RM
3576 * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
3577 SYMNDX to off_t before comparing it to this->data_size().
3578 * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
3579 * incremental.cc (Output_section_incremental_inputs::do_write):
3580 Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
3581
2cadc0bf
RM
3582 * nacl.cc: Include "libiberty.h" for vasprintf declaration.
3583
3bfcb652
NC
35842012-10-30 Steve McIntyre <steve.mcintyre@linaro.org>
3585
3586 * gold.cc (Target_arm::do_adjust_elf_header): Add the
3587 hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
3588 in EABI_VER5.
3589
c1a8d56e
CC
35902012-10-29 Cary Coutant <ccoutant@google.com>
3591
3592 * dwp.cc (usage): Add file and exit status parameters;
3593 add --help and --version options.
3594 (print_version): New function.
3595 (main): Add --help and --version options.
3596
b2490a7b
L
35972012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3598
3599 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
3600 final_layout_sequence.txt.
3601 * testsuite/Makefile.in: Regenerated.
3602
aa543512
L
36032012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3604
3605 * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
3606 COMPILE generated by automake.
3607 (LINK1): Likewise.
3608 (CXXCOMPILE1): Likewise.
3609 (CXXLINK1): Likewise.
3610 (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
3611 (LINK): Likewise.
3612 (CXXCOMPILE): Likewise.
3613 (CXXLINK): Likewise.
3614 * testsuite/Makefile.in: Regenerated.
3615
d361fafb
L
36162012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3617
3618 * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
3619 on bad fwrite return.
3620
598c7410
L
36212012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3622
3623 * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
3624 on val.
3625
35c813e2
CC
36262012-10-23 Cary Coutant <ccoutant@google.com>
3627
3628 * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
3629 * testsuite/Makefile.in: Regenerate.
3630 * testsuite/dwp_test.h: New source file.
3631 * testsuite/dwp_test_1.cc: New source file.
3632 * testsuite/dwp_test_1.s: New source file.
3633 * testsuite/dwp_test_1.sh: New source file.
3634 * testsuite/dwp_test_1b.cc: New source file.
3635 * testsuite/dwp_test_1b.s: New source file.
3636 * testsuite/dwp_test_2.cc: New source file.
3637 * testsuite/dwp_test_2.s: New source file.
3638 * testsuite/dwp_test_2.sh: New source file.
3639 * testsuite/dwp_test_main.cc: New source file.
3640 * testsuite/dwp_test_main.s: New source file.
3641
77429909
CC
36422012-10-23 Cary Coutant <ccoutant@google.com>
3643
3644 * dwp.h: New header file.
3645 * dwp.cc: New source file.
3646 * gold.h: Move shared declarations to system.h.
3647 * system.h: New header file.
3648 * Makefile.am: Add dwp.
3649 * Makefile.in: Regenerate.
3650
ed5d6712
CC
36512012-10-23 Cary Coutant <ccoutant@google.com>
3652
3653 * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
3654 Dwarf_info_reader::read_from_pointer.
3655 (Dwarf_pubnames_table::read_header): Likewise.
3656 (Dwarf_pubnames_table::next_name): Likewise.
3657 (Dwarf_die::read_attributes): Likewise.
3658 (Dwarf_die::skip_attributes): Likewise.
3659 (Dwarf_info_reader::read_from_pointer): New function template.
3660 * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
3661 (Dwarf_pubnames_table): Likewise.
3662 (Dwarf_info_reader::read_from_pointer): New function template.
3663 * gdb-index.cc (Gdb_index_info_reader): Adjust call to
3664 Dwarf_pubnames_table ctor.
3665
8787852d
CC
36662012-10-23 Cary Coutant <ccoutant@google.com>
3667
3668 * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
3669 abbrev_shndx.
3670 * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
3671 abbrev_shndx_.
3672 (Dwarf_info_reader::set_abbrev_shndx): New method.
3673 (Dwarf_info_reader::abbrev_shndx_): New data member.
3674
9fc236f3
CC
36752012-10-23 Cary Coutant <ccoutant@google.com>
3676
3677 * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
3678 from object, not parameters.
3679 (Dwarf_info_reader::parse): Likewise.
3680 * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
3681 (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
3682 (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
3683 methods.
3684
effe8365
CC
36852012-10-23 Cary Coutant <ccoutant@google.com>
3686
3687 * fileread.cc (Input_file::Input_file): New constructor.
3688 * fileread.h (class Input_file): Add new constructor.
3689
1698990d
AM
36902012-10-18 Alan Modra <amodra@gmail.com>
3691
3692 PR gold/14727
3693 * object.cc (Relobj::is_section_name_included): Also match
3694 .sdata personality section.
3695
168a4726
AM
36962012-10-18 Alan Modra <amodra@gmail.com>
3697
3698 * target-reloc.h (class Default_comdat_behavior): New, package up..
3699 (get_comdat_behaviour): ..this.
3700 (relocate_section): Add Relocate_comdat_behavior template arg,
3701 adjust code to suit.
3702 * arm.cc (Target_arm::relocate_section): Adjust to suit.
3703 (Target_arm::scan_reloc_section): Likewise.
3704 * i386.cc (Target_i386::relocate_section): Likewise.
3705 * sparc.cc (Target_sparc::relocate_section): Likewise.
3706 * tilegx.cc (Target_tilegx::relocate_section): Likewise.
3707 * x86_64.cc (Target_x86_64::relocate_section): Likewise.
3708 * powerpc.cc (class Relocate_comdat_behavior): New.
3709 (Target_powerpc::relocate_section): Don't zap opd relocs. Supply
3710 gold::relocate_section with new template arg.
3711
acc276d8
AM
37122012-10-18 Alan Modra <amodra@gmail.com>
3713
3714 * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
3715 dynamic relocs for GOT_TPREL got entries, without symbol if
3716 resolving locally.
3717 (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
3718 (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
3719 (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
3720
e10f9870
AM
37212012-10-17 Alan Modra <amodra@gmail.com>
3722
3723 PR gold/14726
3724 * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
3725
ae034989
ST
37262012-10-16 Sriraman Tallam <tmsriram@google.com>
3727
3728 * layout.cc (Layout::include_section): Keep sections marked
3729 SHF_EXCLUDE when doing relocatable links.
3730
f3a0ed29
AM
37312012-10-16 Alan Modra <amodra@gmail.com>
3732
3733 * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
3734 (Target_powerpc::do_finalize_sections): Call it.
3735 (Output_data_save_res): New class and supporting functions.
3736 (Target_powerpc::symval_for_branch): Only look up .opd entry for
3737 normal symbols defined in object files.
3738
c6de8ed4
AM
37392012-10-12 Alan Modra <amodra@gmail.com>
3740
3741 * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
3742 (struct Opd_ent): Make "discard" a bit field. Add "gc_mark".
3743 (Target_powerpc::do_gc_mark_symbol): Delay marking function code
3744 section if scan_opd_relocs not yet called.
3745 (Target_powerpc::gc_process_relocs): Call process_gc_mark.
3746
03e25981
AM
37472012-10-12 Alan Modra <amodra@gmail.com>
3748
3749 * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
3750 add_local_ifunc_entry): Revert last change.
3751 (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
3752
c9824451
AM
37532012-10-05 Alan Modra <amodra@gmail.com>
3754
3755 * powerpc.cc (Target_powerpc::do_plt_address_for_local,
3756 do_plt_address_for_global): New functions.
3757 (Output_data_got_powerpc::do_write): Don't segfault when linking
3758 statically.
3759 (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
3760 add_local_ifunc_entry): Return true on adding entry..
3761 (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
3762 glink->add_entry call. Remove unused symtab param. Adjust calls.
3763 (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
3764 (Target_powerpc::make_iplt_section): Remove symtab param. Don't
3765 set up symbols here.
3766 (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
3767 syms here. Do so even when no .iplt. Don't segfault when linking
3768 statically.
3769 (Output_data_glink::add_entry, find_entry): Rearrange params. Add
3770 new variants without reloc param.
3771 (Glink_sym_ent::Glink_sym_ent): Likewise.
3772 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
3773 reloc when refs will resolve to plt call stub.
3774 (Target_powerpc::Scan::local): Correct ifunc handling. Allow
3775 R_PPC_PLTREL24 to resolve locally.
3776 (Target_powerpc::Scan::global): Correct ifunc handling.
3777 (Target_powerpc::Relocate::relocate): Correct local sym glink
3778 lookup. Don't destroy "value" when we have a plt call stub,
3779 and when checking plt call validity.
3780 (Target_powerpc::do_dynsym_value): Simplify.
3781
19fec8c1
AM
37822012-10-05 Alan Modra <amodra@gmail.com>
3783
3784 * i386.cc (Output_data_plt_i386::address_for_global,
3785 address_for_local): Add plt offset to returned value. Adjust uses.
3786 * sparc.cc (Output_data_plt_sparc::address_for_global,
3787 address_for_local): Likewise.
3788 * tilegx.cc (Output_data_plt_tilegx::address_for_global,
3789 address_for_local): Likewise.
3790 * x86_64.cc (Output_data_plt_x86_64::address_for_global,
3791 address_for_local): Likewise.
3792 * target.h (Target::plt_address_for_global, plt_address_for_local):
3793 Update comment.
3794 * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
3795 (Output_data_got::Got_entry::write): Nor here.
3796 * output.h: Comment fix.
3797
e867b647
WL
37982012-10-02 Jiong Wang <jiwang@tilera.com>
3799
3800 * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
3801 global_offset_table_ value for larget got.
3802 (Target_tilegx::Relocate::relocate): Handle adjusted got value.
3803
e5d5f5ed
AM
38042012-09-29 Alan Modra <amodra@gmail.com>
3805
3806 * powerpc.cc (Target_powerpc::iplt_): New output section.
3807 (Target_powerpc::iplt_section, make_iplt_section,
3808 reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
3809 (Target_powerpc::make_plt_entry): Handle ifunc syms.
3810 Target_powerpc::plt_entry_count): Count iplt entries too.
3811 (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
3812 reloc section in constructor. New params.
3813 (Target_powerpc::make_plt_section): Create reloc section here instead.
3814 (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
3815 functions.
3816 (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
3817 (Output_data_glink::add_entry, find_entry): New functions to
3818 deal with local syms.
3819 (Glink_sym_ent): Add support for local syms.
3820 (Output_data_glink::do_write): Handle ifunc plt entries.
3821 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
3822 (Target_powerpc::Scan::local, global): Handle ifunc syms.
3823 (Target_powerpc::Relocate::relocate): Likewise.
3824 (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
3825
ec4dbad3
AM
38262012-09-25 Alan Modra <amodra@gmail.com>
3827
3828 * object.h (Sized_relobj_file::adjust_local_symbol,
3829 do_adjust_local_symbol): New functions.
3830 * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
3831 * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
3832 (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
3833 and irregular opd entry spacing.
3834 (Powerpc_relobj::do_read_relocs): Add opd size checks.
3835 (Global_symbol_visitor_opd): New functor.
3836 (Target_powerpc::do_finalize_sections): Omit global symbols defined
3837 on deleted opd entries.
3838
5c0b3823
WL
38392012-09-15 Jiong Wang <jiwang@tilera.com>
3840
3841 * tilegx.cc: New file.
3842 * Makefile.am (TARGETSOURCES): Add tilegx.cc
3843 (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
3844 * configure.tgt: Add entries for tilegx*.
3845 * configure.ac: Likewise.
3846 * Makefile.in: Rebuild.
3847 * configure: Likewise.
3848 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
3849 tilegx.
3850
bfdfa4cd
AM
38512012-09-13 Alan Modra <amodra@gmail.com>
3852
3853 * target-reloc.h (scan_relocs): Call scan.local for relocs
3854 against symbols in discarded sections. Pass is_discarded
3855 param.
3856 * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
3857 Add is_discarded param.
3858 * powerpc (Target_powerpc::Scan::local): Likewise. Use
3859 is_discarded to flag opd entry as discarded. Don't emit dyn
3860 relocs on such entries.
3861 (Target_powerpc::Scan::global): Similarly detect and handle
3862 such opd entries.
3863 (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
3864 opd_ent_. Update all uses.
3865 (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
3866 (Target_powerpc::relocate_section): Zero out discarded opd
3867 entry relocs.
3868
d77a0555
ILT
38692012-09-12 Ian Lance Taylor <iant@google.com>
3870
3871 PR gold/14570
3872 * output.cc: Rename Output_data_got template parameter from size
3873 to got_size for all functions. Compile all variants of
3874 Output_data_got.
3875 (Output_data_got::Got_entry::write): Correct use of size for
3876 symbol value. Use local_is_tls rather than casting to
3877 Sized_relobj_file.
3878 * object.h (class Object): Add local_is_tls and do_local_is_tls.
3879 (class Sized_relobj_file): Add do_local_is_tls.
3880 * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
3881
815a1205
AM
38822012-09-11 Alan Modra <amodra@gmail.com>
3883
3884 PR gold/14566
3885 * layout.cc (Layout::set_segment_offsets): When using
3886 common-page-size alignment, ensure we are on a new max-page-size
3887 page.
3888 * output.cc (Output_segment::set_section_addresses): Use
3889 abi_pagesize, not common_pagesize for relro boundary.
3890 (Output_segment::set_offset): Likewise.
3891
bd73a62d
AM
38922012-09-11 Alan Modra <amodra@gmail.com>
3893
3894 * output.h (Output_data_got::add_global_tls, add_local_tls,
3895 add_local_tls_pair): New functions.
3896 (Output_data_got::add_local_pair_with_rel): Remove second
3897 reloc param. Expand comment.
3898 (Output_data_got::Got_entry): Rename use_plt_offset_ to
3899 use_plt_or_tls_offset_, similarly for constructor param.
3900 (Output_data_got::Got_entry::write): Add got_index param.
3901 * output.cc (Output_data_got::add_global_tls, add_local_tls,
3902 add_local_tls_pair): New functions.
3903 (Output_data_got::Got_entry::write): Handle tls symbols
3904 with use_plt_or_tls_offset_ set specially.
3905 (Output_data_got::add_local_pair_with_rel): Only one reloc.
3906 (Output_data_got::do_write): Replace iterator with index, pass
3907 index to entry write function.
3908 * target.h (Target::tls_offset_for_local, tls_offset_for_global,
3909 do_tls_offset_for_local, do_tls_offset_for_global): New functions.
3910 * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
3911 call.
3912 * i386.cc (Target_i386::Scan::local): Likewise.
3913 * sparc.cc (Target_sparc::Scan::local): Likewise.
3914 * x86_64.cc (Target_x86_64::Scan::local): Likewise.
3915 * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
3916 do_tls_offset_for_global): New functions.
3917 (Target_powerpc::Scan::local): Correct TLS relocations and got
3918 entry values.
3919 (Target_powerpc::Scan::global): Don't emit unnecessary
3920 dynamic relocations on TLS GOT entries.
3921
00716ab1
AM
39222012-09-10 Matthias Klose <doko@ubuntu.com>
3923
3924 * config.in: Disable sanity check for kfreebsd.
3925
c891b3f9
SA
39262012-09-10 Sterling Augustine <saugustine@google.com>
3927
3928 * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
3929 (Gdb_index::pubtypes_read): New parameter.
3930 (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
3931 to calls.
3932 * gdb-index.h (Gdb_index): New fields pubnames_object_ and
3933 pubtypes_object_.
3934
e81fea4d
AM
39352012-09-09 Alan Modra <amodra@gmail.com>
3936
3937 * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
3938 (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
3939 * gc.h (gc_process_relocs): Call target gc_add_reference.
3940 * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
3941 * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
3942 (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
3943 unnecessary cast.
3944 * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
3945 to cater for when we don't need code offset. Update use.
3946 (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
3947 (Powerpc_relobj::access_from_map, add_reference, opd_valid,
3948 set_opd_valid): New functions.
3949 (Target_powerpc::do_gc_add_reference): New function.
3950 (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
3951 stashed refs.
3952 (Target_powerpc::do_gc_mark_symbol): New function.
3953
d2d60eef
CC
39542012-09-06 Cary Coutant <ccoutant@google.com>
3955
3956 * dwarf_reader.cc (Dwarf_die::read_attributes): Add
3957 DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
3958 (Dwarf_die::skip_attributes): Likewise.
3959 * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
3960 * testsuite/gdb_index_test.cc (inline_func_1): New function.
3961 (main): Call it.
3962 * testsuite/gdb_index_test_comm.sh: Check index for inline function.
3963
32ed4573
L
39642012-09-05 H.J. Lu <hongjiu.lu@intel.com>
3965
3966 * testsuite/script_test_3.t: Add .got.plt output section
3967 statement.
3968 * testsuite/script_test_4.t: Likewise.
3969
f4baf0d4
AM
39702012-09-05 Alan Modra <amodra@gmail.com>
3971
3972 * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
3973 update all uses and lose "enum" when using type.
3974
864a1b56
AM
39752012-09-05 Alan Modra <amodra@gmail.com>
3976
3977 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
3978 * configure: Regenerate.
3979 * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
3980 (plugin_final_layout.stdout): Likewise.
3981 (memory_test): Set page sizes to 0x1000.
3982 * testsuite/Makefile.in: Regenerate.
3983 * testsuite/discard_locals_test.sh: Add FIXME comment.
3984 * testsuite/justsyms_exec.c: Disable function test for powerpc64.
3985 * testsuite/pr14265.t: Add .got output section statement.
3986 * testsuite/script_test_2.t: Likewise.
3987 * testsuite/script_test_3.t: Likewise.
3988 * testsuite/script_test_4.t: Likewise.
3989 * testsuite/script_test_5.t: Likewise.
3990 * testsuite/script_test_6.t: Likewise.
3991 * testsuite/script_test_7.t: Likewise.
3992 * testsuite/script_test_9.t: Likewise.
3993
3ea0a085
AM
39942012-09-05 Alan Modra <amodra@gmail.com>
3995
3996 * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
3997 (Powerpc_relocate_functions::Status): New typedef.
3998 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
3999 (Target_powerpc::Scan::local): Handle REL64.
4000 (Target_powerpc::Scan::global): Likewise, and dynamic relocs
4001 for REL32 and REL64.
4002 (Target_powerpc::symval_for_branch): New function, extracted from..
4003 (Target_powerpc::Relocate::relocate): ..here. Correct plt call
4004 checks. Report overflow errors.
4005
7404fe1b
AM
40062012-09-05 Alan Modra <amodra@gmail.com>
4007
4008 * object.h (Sized_relobj_file::emit_relocs): Delete.
4009 (Sized_relobj_file::emit_relocs_reltype): Delete.
4010 * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
4011 relocate_relocs for --emit-relocs.
4012 (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
4013 * output.h: Update comment.
4014 (Output_segment::first_section): New function.
4015 (Output_segment::first_section_load_address): Use first_section.
4016 * output.cc (Output_segment::first_section): New function extracted..
4017 (Output_segment::first_section_load_address): ..from here. Delete.
4018 * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
4019 * target.h (Sized_target::relocate_for_relocatable): Likewise.
4020 * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
4021 adjust call to target.h function.
4022 * i386.cc (Target_i386): Likewise.
4023 * sparc.cc (Target_sparc): Likewise.
4024 * x86_64.cc (Target_x86_64): Likewise.
4025 * powerpc.cc (Target_powerpc): Likewise.
4026 (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS. Ensure
4027 first tls section has section symbol for optimised local dynamic
4028 output relocs.
4029 (Target_powerpc::Relocate::relocate): Correct local dynamic value.
4030 (Target_powerpc::relocate_relocs): Adjust relocs emitted for
4031 optimised tls code.
4032 * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
4033 Rename to relocate_relocs. Update error message.
4034
957564c9
AS
40352012-09-04 Andreas Schwab <schwab@linux-m68k.org>
4036
4037 * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
4038 --just-symbols.
4039
dd93cd0a
AM
40402012-08-31 Alan Modra <amodra@gmail.com>
4041
4042 * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
4043 (Powerpc_relobj::toc_base_offset): New stub function.
4044 (Target_powerpc): Add tp_offset, dtp_offset. Rename
4045 got_mod_index_offset to tlsld_got_offset. Update all refs.
4046 (Target_powerpc::Relocate::enum skip_tls): New.
4047 (Target_powerpc::call_tls_get_addr_): New var.
4048 (Target_powerpc::is_branch_reloc): Move to file scope.
4049 (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
4050 (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
4051 New functions.
4052 (Target_powerpc::enum Got_type): Delete old values, add new ones.
4053 (powerpc_info): Correct common_pagesize for ppc64.
4054 (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
4055 (Powerpc_relocate_functions): Add overflow check enums and functions.
4056 Add non-shift version of rela, rela_ua. Delete all rel public
4057 functions. Delete addr16_lo. Add addr64, addr64_u, addr32,
4058 addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
4059 addr16_ha3, addr14 functions.
4060 (Output_data_got_powerpc::add_constant_pair): New function.
4061 (Output_data_got_powerpc::got_base_offset): Likewise.
4062 (Output_data_got_powerpc::do_write): Correct 64-bit got header.
4063 (instruction constants): Sort, add some more.
4064 (Output_data_glink::do_write): Add and use Address typedef. Use
4065 object->toc_base_offset() stub for 64-bit.
4066 (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
4067 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
4068 (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
4069 for R_PPC64_TOC. Handle more relocs. Generate got entries for TLS.
4070 Always treat .opd relocs as against locally defined symbol.
4071 Correct condition for RELATIVE relocs.
4072 (Target_powerpc::do_finalize_sections): Test for NULL sections.
4073 (Target_powerpc::Relocate::relocate): Use plt call stub as value
4074 for 32-bit syms with a plt entry. Correct ppc64 toc base
4075 calculations. Handle TLS relocs, and more. Add overflow
4076 checking and adjust for Powerpc_relocate_functions changes.
4077 (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
4078 Reinstate --emit-relocs code with FIXME.
4079
a1373b60
AM
40802012-08-30 Alan Modra <amodra@gmail.com>
4081
4082 * layout.cc (Layout::set_segment_offsets): Set p_align to
4083 abi_pagesize, not common_pagesize.
4084 (Layout::relaxation_loop_body): Similarly use abi_pagesize
4085 to determine whether file header can go in segment.
4086
703d02da
AM
40872012-08-30 Alan Modra <amodra@gmail.com>
4088
4089 * output.h (Output_reloc::Output_reloc <output section>): Add
4090 is_relative param. Adjust calls.
4091 (Output_reloc::add_output_section_relative): New functions.
4092 * output.cc (Output_reloc::Output_reloc <output section>): Handle
4093 is_relative.
4094 (Output_reloc::symbol_value): Handle SECTION_CODE.
4095
16164a6b
ST
40962012-08-24 Sriraman Tallam <tmsriram@google.com>
4097
4098 * gold.cc (queue_middle_tasks): Call layout again when unique
4099 segments for sections is desired.
4100 * layout.cc (Layout::Layout): Initialize new members.
4101 (Layout::get_output_section_flags): New function.
4102 (Layout::choose_output_section): Call get_output_section_flags.
4103 (Layout::layout): Make output section for mapping to a unique segment.
4104 (Layout::insert_section_segment_map): New function.
4105 (Layout::attach_allocated_section_to_segment): Make unique segment for
703d02da 4106 output sections marked so.
16164a6b
ST
4107 (Layout::segment_precedes): Check for unique segments when sorting.
4108 * layout.h (Layout::Unique_segment_info): New struct.
4109 (Layout::Section_segment_map): New typedef.
4110 (Layout::insert_section_segment_map): New function.
4111 (Layout::get_output_section_flags): New function.
4112 (Layout::is_unique_segment_for_sections_specified): New function.
4113 (Layout::set_unique_segment_for_sections_specified): New function.
4114 (Layout::unique_segment_for_sections_specified_): New member.
4115 (Layout::section_segment_map_): New member.
4116 * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
4117 Rename is_gc_pass_one to is_pass_one.
4118 Rename is_gc_pass_two to is_pass_two.
4119 Rename is_gc_or_icf to is_two_pass.
4120 Check for which pass based on whether symbols data is present.
4121 Make it two pass when unique segments for sections is desired.
4122 * output.cc (Output_section::Output_section): Initialize new
4123 members.
4124 * output.h (Output_section::is_unique_segment): New function.
4125 (Output_section::set_is_unique_segment): New function.
4126 (Output_section::is_unique_segment_): New member.
4127 (Output_section::extra_segment_flags): New function.
4128 (Output_section::set_extra_segment_flags): New function.
4129 (Output_section::extra_segment_flags_): New member.
4130 (Output_section::segment_alignment): New function.
4131 (Output_section::set_segment_alignment): New function.
4132 (Output_section::segment_alignment_): New member.
4133 (Output_segment::Output_segment): Initialize is_unique_segment_.
4134 (Output_segment::is_unique_segment): New function.
4135 (Output_segment::set_is_unique_segment): New function.
4136 (Output_segment::is_unique_segment_): New member.
4137 * plugin.cc (allow_unique_segment_for_sections): New function.
4138 (unique_segment_for_sections): New function.
4139 (Plugin::load): Add new functions to transfer vector.
4140 * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
4141 * Makefile.in: Regenerate.
4142 * testsuite/plugin_final_layout.sh: Check if unique segment
4143 functionality works.
4144 * testsuite/plugin_section_order.c (onload): Check if new interfaces
4145 are available.
4146 (allow_unique_segment_for_sections): New global.
4147 (unique_segment_for_sections): New global.
4148 (claim_file_hook): Call allow_unique_segment_for_sections.
4149 (all_symbols_read_hook): Call unique_segment_for_sections.
16164a6b 4150
1e2bee4f
CC
41512012-08-22 Cary Coutant <ccoutant@google.com>
4152
4153 * layout.cc (Layout::include_section): Don't assert on GROUP
4154 sections with --emit-relocs.
4155
1d5dfe78
CC
41562012-08-21 Cary Coutant <ccoutant@google.com>
4157
4158 * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
4159 if --export-dynamic-symbol names an undef symbol.
4160
c9269dff
AM
41612012-08-18 Alan Modra <amodra@gmail.com>
4162
4163 * powerpc.cc: Formatting and white space.
4164 (Powerpc_relobj): Rename got2_section_ to special_.
4165 Add opd_ent_shndx_ and opd_ent_off_ vectors.
4166 (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
4167 scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
4168 (Target_powerpc): Add Address typedef and invalid_address. Use
4169 throughout.
4170 (Target_powerpc::is_branch_reloc): New function.
4171 (Powerpc_relocate_functions): Add Address typedef, use throughout.
4172 (Powerpc_relocate_functions:rela, rela_ua): Correct type used
4173 for dst_mask, value and addend.
4174 (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
4175 (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
4176 (Output_data_glink::do_write): Correct toc base. Don't try to use
4177 uint16_t for 24-bit offset. Use get_output_section_offset and
4178 check return.
4179 (Target_powerpc::Scan::local): Handle more relocs.
4180 (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
4181 (Target_powerpc::Relocate::relocate): Correct toc base calculation.
4182 Plug in toc restoring insn after plt calls. Translate branches
4183 to function descriptor symbols to corresponding entry point.
4184 (Target_powerpc::relocate_for_relocatable): Check return from
4185 get_output_section_offset.
4186 * symtab.h: Comment typo.
4187
b1759dce
ILT
41882012-08-14 Ian Lance Taylor <iant@google.com>
4189
4190 * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
4191 unsupported_relocal_local to call unsupported_reloc_global.
4192
b9b2ae8b
NC
41932012-08-14 Nick Clifton <nickc@redhat.com>
4194
4195 PR ld/14265
4196 * script-sections.cc (Sections_element::output_section_name): Add
4197 keep return parameter.
4198 (Output_section_element::match_name): Add keep return parameter.
4199 Return the value of the keep_ member.
4200 * script-sections.h (class Output_section): Update
4201 output_section_name prototype.
4202 * layout.cc (Layout::keep_input_section): New public member
4203 function.
4204 (Layout::choose_output_section): Pass keep parameter to
4205 output_section_name.
4206 * layout.h (class Layout): Add keep_input_section.
4207 * object.cc (Sized_relobj_file::do_layout): Check for kept input
4208 sections.
4209 * testsuite/Makefile.am: Add a test.
4210 * testsuite/Makefile.in: Regenerate.
4211 * testsuite/pr14265.c: Source file for the test.
4212 * testsuite/pr14265.t: Linker script for the test.
4213 * testsuite/pr14265.sh: Shell script for the test.
4214
921b5322
AM
42152012-08-14 Alan Modra <amodra@gmail.com>
4216
4217 * target.h (Target::output_section_name): New function.
4218 (Target::do_output_section_name): New function.
4219 * layout.cc (Layout::choose_output_section): Call the above.
4220 * powerpc.cc (Target_powerpc::do_output_section_name): New function.
4221
6ce78956
AM
42222012-08-14 Alan Modra <amodra@gmail.com>
4223
4224 * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
4225 (Output_data_got_powerpc::do_write): Don't rely on base class lookup
4226 for replace_constant call.
4227 (Output_data_plt_powerpc::do_print_to_mapfile): New function.
4228 (Output_data_glink::do_print_to_mapfile): New function.
4229 (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
4230 (Target_powerpc::Relocate::relocate): Likewise.
4231
d1a8cabd
AM
42322012-08-14 Alan Modra <amodra@gmail.com>
4233
4234 * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
4235 (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
4236 (Output_data_glink::add_entry,find_entry): Remove shndx param.
4237 (class Glink_sym_ent): Rename from struct Glink_sym_ent. Remove
4238 all references to shndx_. Handle special case for R_PPC_PLTREL24
4239 here.
4240 (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
4241 (Output_data_glink::do_write): Retrieve got2_shdnx from object.
4242 (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
4243 here.
4244 (Target_powerpc::Scan::global): Nor on make_plt_entry call.
4245 (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
4246
d83ce4e3
AM
42472012-08-12 Alan Modra <amodra@gmail.com>
4248
4249 * powerpc.cc: Whitespace fixes. Wrap overly long lines.
4250 (glink insn constants): Use uint32_t.
4251 (Output_data_glink::add_entry): Use insert, not [] operator.
4252
cf43a2fe
AM
42532012-08-11 Alan Modra <amodra@gmail.com>
4254
4255 * object.h (Sized_relobj_file::find_shdr): New function.
4256 (Sized_relobj_file::find_special_sections): New function.
4257 * object.cc (Sized_relobj_file::find_shdr): New function.
4258 (Sized_relobj_file::find_eh_frame): Use find_shdr.
4259 (Sized_relobj_file::find_special_sections): New function, split out..
4260 (Sized_relobj_file::do_read_symbols): ..from here.
4261 * output.h (Output_data_got::replace_constant): New function.
4262 (Output_data_got::num_entries): New function.
4263 (Output_data_got::last_got_offset,set_got_size): Use num_entries.
4264 (Output_data_got::got_offset): Protected rather than private.
4265 (Output_data_got::replace_got_entry): New function.
4266 * output.cc (Output_data_got::replace_got_entry): New function.
4267 * powerpc.cc (class Powerpc_relobj): New.
4268 (class Powerpc_relocate_functions): Delete all psymval variants or
4269 convert to value,addend type. Delete pcrela, pcrela_unaligned.
4270 Implement _ha functions using corresponding _hi function.
4271 (Powerpc_relobj::find_special_sections): New function.
4272 (Target_powerpc::do_make_elf_object): New function.
4273 (class Output_data_got_powerpc): New.
4274 (class Output_data_glink): New.
4275 (class Powerpc_scan_relocatable_reloc): New.
4276 Many more changes througout file.
4277
3c892704
NC
42782012-08-09 Nick Clifton <nickc@redhat.com>
4279
4280 * po/vi.po: Updated Vietnamese translation.
4281
82435b3b
ILT
42822012-08-07 Ian Lance Taylor <iant@google.com>
4283
4284 * layout.cc (Layout::add_target_dynamic_tags): If
4285 dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
4286 plt_rel.
4287
a6dc81d2
NC
42882012-07-30 Nick Clifton <nickc@redhat.com>
4289
4290 * po/gold.pot: Updated template.
4291 * po/es.po: Updated Spanish translation.
4292
f1415016
CC
42932012-07-18 Cary Coutant <ccoutant@google.com>
4294
4295 PR gold/14344
4296 * configure.ac: Add check for -gpubnames support.
4297 * configure: Regenerate.
4298 * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
4299 support; force -gno-pubnames.
4300 (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
4301 support.
4302 (gdb_index_test_4): New test.
4303 * testsuite/Makefile.in: Regenerate.
4304 * testsuite/gdb_index_test_1.sh: Refactor code into common file.
4305 * testsuite/gdb_index_test_2.sh: Likewise.
4306 * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
4307 * testsuite/gdb_index_test_4.sh: New script.
4308 * testsuite/gdb_index_test_comm.sh: New script with common code;
4309 don't look for space after colon.
4310
b7fd7c37
ST
43112012-07-16 Sriraman Tallam <tmsriram@google.com>
4312
4313 * gold.cc (queue_middle_tasks): Update function order only after
4314 deferred objects due to plugins are processed.
4315
1f3212db
ILT
43162012-07-11 Ian Lance Taylor <iant@google.com>
4317
4318 * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
4319 (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
4320 (Target_arm::scan_reloc_for_stub): Likewise.
4321 * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
4322 * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
4323 * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
4324 * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
4325 * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
4326
81c82a68
ILT
43272012-07-10 Dodji Seketeli <dodji@redhat.com>
4328 Ian Lance Taylor <iant@google.com>
4329
4330 PR gold/14309
4331 * configure.ac: Test whether std::tr1::hash<off_t> works.
4332 * gold.h: Add a specialization for std::tr1::hash<off_t> if
4333 needed.
4334 * output.h (class Output_fill): Add virtual destructor.
4335 * configure, config.in: Rebuild.
4336
eabc84f4
RM
43372012-06-22 Roland McGrath <mcgrathr@google.com>
4338
4339 * layout.cc (finalize): Define __ehdr_start symbol if applicable.
4340
370e30b6
RÁE
43412012-06-12 Rafael Ávila de Espíndola <respindola@mozilla.com>
4342
4343 * plugin.cc (Plugin::load): Handle position independent executables.
4344
fb1b895d
CC
43452012-06-06 Cary Coutant <ccoutant@google.com>
4346
4347 * layout.cc (gdb_sections): Remove ".debug_" prefixes,
4348 add .debug_macro.
4349 (lines_only_debug_sections): Likewise.
4350 (gdb_fast_lookup_sections): New static array.
4351 (is_gdb_debug_section): Rename formal parameter.
4352 (is_lines_only_debug_section): Likewise.
4353 (is_gdb_fast_lookup_section): New function.
4354 (Layout::include_section): Check for ".zdebug_" prefix; pass
4355 section name suffix to is_gdb_debug_section, et al.; check for
4356 fast-lookup sections when building .gdb_index.
4357 * options.h (--strip-debug-gdb): Update GDB version number.
4358
7c0640fa
CC
43592012-06-06 Cary Coutant <ccoutant@google.com>
4360
4361 * configure.ac: Add check for fallocate.
4362 * configure: Regenerate.
4363 * config.in: Regenerate.
4364
4365 * options.h (class General_options): Add --mmap-output-file and
4366 --posix-fallocate options.
4367 * output.cc: (posix_fallocate): Remove; replace with...
4368 (gold_fallocate): New function.
4369 (Output_file::map_no_anonymous): Call gold_fallocate.
4370 (Output_file::map): Check --mmap-output-file option.
4371
2a49eb69
DK
43722012-06-05 Jing Yu <jingyu@google.com>
4373
4374 * gold.h (textdomain): Add do {} to empty while(0).
4375 (bindtextdomain): Likewise.
4376
fad072ac
CC
43772012-06-04 Cary Coutant <ccoutant@google.com>
4378
4379 * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
4380 has_dynsym_index.
4381
8cc69fb6
ST
43822012-05-25 Sriraman Tallam <tmsriram@google.com>
4383
4384 * symtab.cc (Symbol_table::define_special_symbol):
4385 Initialize *poldsym to prevent uninitialized variable errors.
4386
1be75daa
CC
43872012-05-23 Cary Coutant <ccoutant@google.com>
4388
4389 * layout.cc (Layout::section_name_mapping): Add rules to handle
4390 exact match on .data.rel.ro.local or .data.rel.ro.
4391 (Layout::output_section_name): Check for exact matches.
4392
9b689de0
CC
43932012-05-23 Cary Coutant <ccoutant@google.com>
4394
4395 * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
4396 more carefully.
4397
b24fdbf5
CC
43982012-05-22 Cary Coutant <ccoutant@google.com>
4399
4400 * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
4401 object before exporting symbol.
4402
e550e1a2
L
44032012-05-21 H.J. Lu <hongjiu.lu@intel.com>
4404
4405 * testsuite/tls_test.cc: Include "config.h" first.
4406 * testsuite/tls_test_c.c: Likewise.
4407
df7b86aa
NC
44082012-05-17 Daniel Richard G. <skunk@iskunk.org>
4409 Nick Clifton <nickc@redhat.com>
4410
4411 PR 14072
4412 * configure.in: Add check that sysdep.h has been included before
4413 any system header files.
4414 * configure: Regenerate.
4415 * config.in: Regenerate.
4416
1007b503
CC
44172012-05-14 Cary Coutant <ccoutant@google.com>
4418
4419 * layout.cc (Layout::make_output_section): Mark .tdata section
4420 as RELRO.
4421 * testsuite/relro_test.cc: Add a TLS variable.
4422
fd885f3a
L
44232012-05-10 H.J. Lu <hongjiu.lu@intel.com>
4424
4425 PR gold/14091
4426 * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
4427 R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
4428 R_X86_64_64.
4429
80f5885c
CC
44302012-05-08 Cary Coutant <ccoutant@google.com>
4431
4432 * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
4433 (lines_only_debug_sections): Likewise.
4434
2e702c99
RM
44352012-05-02 Roland McGrath <mcgrathr@google.com>
4436
4437 * nacl.cc: New file.
4438 * nacl.h: New file.
4439 * Makefile.am (CCFILES, HFILES): Add them.
4440 * Makefile.in: Regenerate.
4441 * i386.cc (Output_data_plt_i386_nacl): New class.
4442 (Output_data_plt_i386_nacl_exec): New class.
4443 (Output_data_plt_i386_nacl_dyn): New class.
4444 (Target_i386_nacl): New class.
4445 (Target_selector_i386_nacl): New class.
4446 (target_selector_i386): Use it instead of Target_selector_i386.
4447 * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
4448 (Target_x86_64_nacl): New class.
4449 (Target_selector_x86_64_nacl): New class.
4450 (target_selector_x86_64, target_selector_x32): Use it instead of
4451 Target_selector_x86_64.
4452 * arm.cc (Output_data_plt_arm_nacl): New class.
4453 (Target_arm_nacl): New class.
4454 (Target_selector_arm_nacl): New class.
4455 (target_selector_arm, target_selector_armbe): Use it instead of
4456 Target_selector_arm.
4457
4458 * target-select.cc (select_target): Take new Input_file* and off_t
4459 arguments, pass them on to recognize method of selector.
4460 * object.cc (make_elf_sized_object): Update caller.
4461 * parameters.cc (parameters_force_valid_target): Likewise.
4462 * incremental.cc (make_sized_incremental_binary): Likewise.
4463 * target-select.h: Update decl.
4464 (Target_selector::recognize): Take new Input_file* argument,
4465 pass it on to do_recognize.
4466 (Target_selector::do_recognize): Take new Input_file* argument.
4467 * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
4468 * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
4469 * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
4470 * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
4471
4472 * target.h (Target::Target_info): New members isolate_execinstr
4473 and rosegment_gap.
4474 (Target::isolate_execinstr, Target::rosegment_gap): New methods.
4475 * arm.cc (Target_arm::arm_info): Update initializer.
4476 * i386.cc (Target_i386::i386_info): Likewise.
4477 * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
4478 * sparc.cc (Target_sparc::sparc_info): Likewise.
4479 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
4480 * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
4481 * layout.cc (Layout::attach_allocated_section_to_segment):
4482 Take new const Target* argument. If target->isolate_execinstr(), act
4483 like --rosegment.
4484 (Layout::find_first_load_seg): Take new const Target* argument;
4485 if target->isolate_execinstr(), reject PF_X segments.
4486 (Layout::relaxation_loop_body): Update caller.
4487 (Layout::set_segment_offsets): If target->isolate_execinstr(),
4488 reset file offset to zero when we hit LOAD_SEG, and then do a second
4489 loop over the segments before LOAD_SEG to reassign offsets after
4490 addresses have been determined. Handle target->rosegment_gap().
4491 (Layout::attach_section_to_segment): Take new const Target* argument;
4492 pass it to attach_allocated_section_to_segment.
4493 (Layout::make_output_section): Update caller.
4494 (Layout::attach_sections_to_segments): Take new const Target* argument;
4495 pass it to attach_section_to_segment.
4496 * gold.cc (queue_middle_tasks): Update caller.
4497 * layout.h (Layout): Update method decls with new arguments.
4498
4499 * arm.cc (Target_arm::Target_arm): Take optional argument for the
4500 Target_info pointer to use.
4501 (Target_arm::do_make_data_plt): New virtual method.
4502 (Target_arm::make_data_plt): New method that calls it.
4503 (Target_arm::make_plt_entry): Use it.
4504 (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
4505 for the section alignment.
4506 (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
4507 method.
4508 (Output_data_plt_arm::first_plt_entry_offset): Call it.
4509 (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
4510 method.
4511 (Output_data_plt_arm::get_plt_entry_size): Call it.
4512 (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
4513 (Output_data_plt_arm::fill_plt_entry): New method that calls it.
4514 (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
4515 method.
4516 (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
4517 (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
4518 method instead of sizeof(plt_entry).
4519 (Output_data_plt_arm::add_entry): Likewise.
4520 Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
4521 (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
4522 than static method.
4523 (Target_arm::plt_entry_size): Likewise.
4524 (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
4525 Move to ...
4526 (Output_data_plt_arm_standard): ... here, new class.
4527 (Output_data_plt_arm::do_write): Move guts of PLT filling to...
4528 (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
4529 (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
4530
4531 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
4532 Take additional argument for the PLT entry size.
4533 (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
4534 Use get_plt_entry_size method rather than plt_entry_size variable.
4535 (Output_data_plt_x86_64::reserve_slot): Likewise.
4536 (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
4537 (Output_data_plt_x86_64::add_entry): Likewise.
4538 (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
4539 (Output_data_plt_x86_64::address_for_global): Likewise.
4540 (Output_data_plt_x86_64::address_for_local): Likewise.
4541 (Output_data_plt_x86_64::set_final_data_size): Likewise.
4542 (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
4543 Make method non-static.
4544 (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
4545 method.
4546 (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
4547 (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
4548 (Output_data_plt_x86_64::add_eh_frame): New method to call it.
4549 (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
4550 virtual method.
4551 (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
4552 (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
4553 virtual method.
4554 (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
4555 (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
4556 virtual method.
4557 (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
4558 (Output_data_plt_x86_64::plt_entry_size)
4559 (Output_data_plt_x86_64::first_plt_entry)
4560 (Output_data_plt_x86_64::plt_entry)
4561 (Output_data_plt_x86_64::tlsdesc_plt_entry)
4562 (Output_data_plt_x86_64::plt_eh_frame_fde_size)
4563 (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
4564 (Output_data_plt_x86_64_standard): ... here, new class.
4565 (Target_x86_64::Target_x86_64): Take optional argument for the
4566 Target_info pointer to use.
4567 (Target_x86_64::do_make_data_plt): New virtual method.
4568 (Target_x86_64::make_data_plt): New method to call it.
4569 (Target_x86_64::init_got_plt_for_update): Use that.
4570 Call this->plt_->add_eh_frame method here.
4571 (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
4572 (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
4573 rather than static method.
4574 (Target_x86_64::plt_entry_size): Likewise.
4575 (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
4576 rather than plt_entry_size variable. Move guts of PLT filling to...
4577 (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
4578 (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
4579 (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
4580
4581 * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
4582 additional argument for the section alignment.
4583 Don't do add_eh_frame_for_plt here.
4584 (Output_data_plt_i386::first_plt_entry_offset): Make the method
4585 non-static. Use get_plt_entry_size method rather than plt_entry_size
4586 variable.
4587 (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
4588 method.
4589 (Output_data_plt_i386::get_plt_entry_size): Call it.
4590 (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
4591 (Output_data_plt_i386::add_eh_frame): New method to call it.
4592 (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
4593 method.
4594 (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
4595 (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
4596 method.
4597 (Output_data_plt_i386::fill_plt_entry): New method to call it.
4598 (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
4599 method instead of plt_entry_size.
4600 (Output_data_plt_i386::plt_entry_size)
4601 (Output_data_plt_i386::plt_eh_frame_fde_size)
4602 (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
4603 (Output_data_plt_i386_standard): ... here, new class.
4604 (Output_data_plt_i386_exec): New class.
4605 (Output_data_plt_i386::exec_first_plt_entry): Move to ...
4606 (Output_data_plt_i386_exec::first_plt_entry): ... here.
4607 (Output_data_plt_i386::exec_plt_entry): Move to ...
4608 (Output_data_plt_i386_exec::plt_entry): ... here.
4609 (Output_data_plt_i386_dyn): New class.
4610 (Output_data_plt_i386::first_plt_entry): Move to ...
4611 (Output_data_plt_i386_dyn::first_plt_entry): ... here.
4612 (Output_data_plt_i386::dyn_plt_entry): Move to ...
4613 (Output_data_plt_i386_dyn::plt_entry): ... here.
4614 (Target_i386::Target_i386): Take optional argument for the Target_info
4615 pointer to use.
4616 (Target_i386::do_make_data_plt): New virtual method.
4617 (Target_i386::make_data_plt): New method to call it.
4618 (Target_i386::make_plt_section): Use that.
4619 Call this->plt_->add_eh_frame method here.
4620 (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
4621 rather than plt_entry_size variable.
4622 (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
4623 (Output_data_plt_i386::address_for_local): Likewise.
4624 (Output_data_plt_i386::do_write): Likewise.
4625 Move guts of PLT filling to...
4626 (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
4627 (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
4628 (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
4629 (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
4630
b9b9f2ee
CC
46312012-05-01 Cary Coutant <ccoutant@google.com>
4632
4633 * dwarf_reader.cc (Dwarf_die::read_attributes)
4634 (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
4635 (Dwarf_die::uint_attribute): Remove DW_FORM_null.
4636 * reduced_debug_output.cc
4637 (Output_reduced_debug_info_section::get_die_end): Remove
4638 DW_FORM_GNU_ref_index. Add default case.
4639
57923f48
MW
46402012-04-26 Mark Wielaard <mjw@redhat.com>
4641
4642 * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
4643 * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
4644 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
4645 DW_AT_high_pc as offset from DW_AT_low_pc.
4646
4647 * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
4648 * testsuite/Makefile.in: Regenerate.
4649 * testsuite/gdb_index_test_3.c: New test source file.
4650 * testsuite/gdb_index_test_3.sh: New test source file.
4651
2c54b4f4
ILT
46522012-04-25 Ian Lance Taylor <iant@google.com>
4653
4654 * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
4655 pointer.
4656 (Stub_addend_reader::operator()): Declare Arm_relocate_functions
4657 as a class, not a struct.
4658 (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
4659 (Target_arm::apply_cortex_a8_workaround): Likewise.
4660 * gc.h: Declare Reloc_types as a struct, not a class.
4661 * object.h: Declare Symbols_data as a struct.
4662 * reloc.h: Declare Read_relocs_data as a struct.
4663 * target.h: Declare Relocate_info as a struct.
4664
a5a5f7a3
DM
46652012-04-24 David S. Miller <davem@davemloft.net>
4666
4667 * sparc.cc (Target_sparc::Relocate::relax_call): New function.
4668 (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
4669 and R_SPARC_WPLT30.
4670
f038d496
CC
46712012-04-24 Cary Coutant <ccoutant@google.com>
4672
4673 * incremental-dump.cc (find_input_containing_global): Replace
4674 magic number with symbolic constant.
4675 (dump_incremental_inputs): Update version number.
4676 * incremental.cc (Output_section_incremental_inputs): Update version
4677 number; import symbolic constants from Incremental_inputs_reader.
4678 (Incremental_inputs::create_data_sections): Align relocations
4679 section correctly for 64-bit targets.
4680 (Output_section_incremental_inputs::set_final_data_size): Use symbolic
4681 constants; add padding.
4682 (Output_section_incremental_inputs::write_header): Add assert for
4683 header_size.
4684 (Output_section_incremental_inputs::write_input_files): Add assert
4685 for input_entry_size.
4686 (Output_section_incremental_inputs::write_info_blocks): Add padding;
4687 add assert for object_info_size, input_section_entry_size,
4688 global_sym_entry_size.
4689 * incremental.h (Incremental_inputs_reader): Add symbolic constants
4690 for data structure sizes; use them.
4691 (Incremental_input_entry_reader): Import symbolic constants from
4692 Incremental_inputs_reader; use them.
4693
a4d85145
DM
46942012-04-23 David S. Miller <davem@davemloft.net>
4695
4696 * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
4697 and elf_flags_set_.
4698 (Target_sparc::Target_sparc): Initialize new fields.
4699 (Target_sparc::do_make_elf_object): New function.
4700 (Target_sparc::do_adjust_elf_header): New function.
4701
1d509098
CC
47022012-04-23 Cary Coutant <ccoutant@google.com>
4703
4704 * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
4705 CU range table of gdb index.
4706
7ebeff7f
DM
47072012-04-20 David S. Miller <davem@davemloft.net>
4708
4709 * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
4710 instead of false.
4711
13cf9988
DM
47122012-04-16 David S. Miller <davem@davemloft.net>
4713
2a1079e8
DM
4714 * sparc.cc (Target_sparc::got_address): New function.
4715 (Sparc_relocate_functions::gdop_hix22): New function.
4716 (Sparc_relocate_functions::gdop_lox10): New function.
4717 (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
4718 relocs.
4719 (Target_sparc::Scan::local): Likewise if the global symbol is not
4720 preemptible and is not IFUNC.
4721 (Target_sparc::Relocate::relocate): Perform GOTDATA code
4722 transformations for local and non-preemptible non-IFUNC global
4723 symbols.
4724
0bc964fc
DM
4725 * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
4726 writing out 64-bit part of ranges.
4727
661d7a80
DM
4728 * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
4729 -fpic and -fpie respectively.
4730 * Makefile.in: Regenerate.
4731
8c2bf391
DM
4732 * sparc.cc (class Target_sparc): Add rela_ifunc_.
4733 (Target_sparc::Target_sparc): Initialize new field.
4734 (Target_sparc::do_plt_section_for_global): New function.
4735 (Target_sparc::do_plt_section_for_local): New function.
4736 (Target_sparc::reloc_needs_plt_for_ifunc): New function.
4737 (Target_sparc::make_plt_section): New function, broken out of
4738 make_plt_entry. Use ORDER_NON_RELRO_FIRST for ".plt".
4739 (Target_sparc::make_plt_entry): Call make_plt_section.
4740 (Target_sparc::make_local_ifunc_plt_entry): New function.
4741 (Target_sparc::rela_ifunc_section): New function.
4742 (Target_sparc::plt_section): Remove const.
4743 (Output_data_plt_sparc): Update declarations. Define Global_ifunc
4744 and Local_ifunc types. Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
4745 and ifunc_count_ fields.
4746 (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
4747 (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
4748 (Output_data_plt_sparc::add_local_ifunc_entry): New function.
4749 (Output_data_plt_sparc::rela_ifunc): New function.
4750 (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
4751 (Output_data_plt_sparc::has_ifunc_section): New function.
4752 (Output_data_plt_sparc::entry_count): Include ifunc_count_.
4753 (Output_data_plt_sparc::address_for_global): New function.
4754 (Output_data_plt_sparc::address_for_local): New function.
4755 (Output_data_plt_sparc::plt_index_to_offset): New function.
4756 (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
4757 and entry_count.
4758 (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
4759 entry_count.
4760 (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
4761 R_SPARC_JMP_IREL to switch.
4762 (Target_sparc::Scan::check_non_pic): Likewise.
4763 (Target_sparc::Scan::local): Handle IFUNC symbols.
4764 (Target_sparc::Scan::local): Likewise.
4765 (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
4766 and plt_address_for_local.
4767 (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
4768 Define __rel_iplt_start and __rel_iplt_end if doing a static link.
4769
13cf9988
DM
4770 * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
4771 (class Output_data_reloc): Adjust calls to Output_reloc_type.
4772 (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
4773 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
4774 global relocs too.
4775 (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
4776 * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
4777 calls.
4778 * sparc.cc (Target_sparc::Scan::global): Likewise.
4779 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
4780
31821be0
CC
47812012-04-16 Cary Coutant <ccoutant@google.com>
4782
4783 * archive.cc (Library_base::should_include_member): Check for
4784 --export-dynamic-symbol.
4785 * options.h (class General_options): Add --export-dynamic-symbol.
4786 * symtab.cc (Symbol::should_add_dynsym_entry): Check for
4787 --export-dynamic-symbol.
4788 (Symbol_table::gc_mark_undef_symbols): Likewise.
4789 (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
4790
2615994e
DM
47912012-04-12 David S. Miller <davem@davemloft.net>
4792
4793 * sparc.cc (Reloc::wdisp10): New relocation method.
4794 (Reloc::h34): Likewise.
4795 (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
4796 (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
4797 R_SPARC_WDISP10.
4798 (Target_sparc::Scan::local): Likewise.
4799 (Target_sparc::Scan::global): Likewise.
4800 (Target_sparc::Relocate::relocate): Likewise.
4801
6782735d
CC
48022012-04-09 Cary Coutant <ccoutant@google.com>
4803
4804 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
4805 low_pc == 0.
4806
8c7a0b00
ILT
48072012-04-06 Ian Lance Taylor <iant@google.com>
4808
4809 * timer.cc: #include <unistd.h>.
4810
58797674
RM
48112012-04-06 Roland McGrath <mcgrathr@google.com>
4812
4813 * configure.in (AC_CHECK_HEADERS): Add locale.h.
4814 * config.in: Regenerate.
4815 * configure: Regenerate.
4816
44350750
NC
48172012-04-05 Nick Clifton <nickc@redhat.com>
4818
4819 * configure.ac (AC_CHECK_FUNCS): Add setlocale.
4820 (AM_LC_MESSAGES): Add.
4821 * aclocal.m4: Regenerate.
4822 * config.in: Regenerate.
4823 * configure: Regenerate.
4824
c1027032
CC
48252012-03-21 Cary Coutant <ccoutant@google.com>
4826
4827 * Makefile.am: Add gdb-index.cc, gdb-index.h.
4828 * Makefile.in: Regenerate.
4829 * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
4830 (Sized_elf_reloc_mapper::symbol_section): New function.
4831 (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
4832 (make_elf_reloc_mapper): New function.
4833 (Dwarf_abbrev_table::clear_abbrev_codes): New function.
4834 (Dwarf_abbrev_table::do_read_abbrevs): New function.
4835 (Dwarf_abbrev_table::do_get_abbrev): New function.
4836 (Dwarf_ranges_table::read_ranges_table): New function.
4837 (Dwarf_ranges_table::read_range_list): New function.
4838 (Dwarf_pubnames_table::read_section): New function.
4839 (Dwarf_pubnames_table::read_header): New function.
4840 (Dwarf_pubnames_table::next_name): New function.
4841 (Dwarf_die::Dwarf_die): New function.
4842 (Dwarf_die::read_attributes): New function.
4843 (Dwarf_die::skip_attributes): New function.
4844 (Dwarf_die::set_name): New function.
4845 (Dwarf_die::set_linkage_name): New function.
4846 (Dwarf_die::attribute): New function.
4847 (Dwarf_die::string_attribute): New function.
4848 (Dwarf_die::int_attribute): New function.
4849 (Dwarf_die::uint_attribute): New function.
4850 (Dwarf_die::ref_attribute): New function.
4851 (Dwarf_die::child_offset): New function.
4852 (Dwarf_die::sibling_offset): New function.
4853 (Dwarf_info_reader::check_buffer): New function.
4854 (Dwarf_info_reader::parse): New function.
4855 (Dwarf_info_reader::do_parse): New function.
4856 (Dwarf_info_reader::do_read_string_table): New function.
4857 (Dwarf_info_reader::lookup_reloc): New function.
4858 (Dwarf_info_reader::get_string): New function.
4859 (Dwarf_info_reader::visit_compilation_unit): New function.
4860 (Dwarf_info_reader::visit_type_unit): New function.
4861 (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
4862 Sized_elf_reloc_mapper.
4863 (Sized_dwarf_line_info::symbol_section): Remove function.
4864 (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
4865 (Sized_dwarf_line_info::read_line_mappings): Remove object
4866 parameter, adjust callers.
4867 (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
4868 * dwarf_reader.h: Include <sys/types.h>.
4869 (class Track_relocs): Remove forward declaration.
4870 (class Elf_reloc_mapper): New class.
4871 (class Sized_elf_reloc_mapper): New class.
4872 (class Dwarf_abbrev_table): New class.
4873 (class Dwarf_range_list): New class.
4874 (class Dwarf_ranges_table): New class.
4875 (class Dwarf_pubnames_table): New class.
4876 (class Dwarf_die): New class.
4877 (class Dwarf_info_reader): New class.
4878 (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
4879 (Sized_dwarf_line_info::symbol_section): Remove member function.
4880 * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
4881 base class.
4882 * gdb-index.cc: New source file.
4883 * gdb-index.h: New source file.
4884 * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
4885 and .debug_types sections, call Layout::add_to_gdb_index.
4886 (Sized_relobj_incr::do_section_name): Implement.
4887 (Sized_relobj_incr::do_section_contents): Adjust parameter list and
4888 return type; Implement.
4889 (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
4890 return type.
4891 * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
4892 parameter list and return type.
4893 (Sized_incr_dynobj::do_section_contents): Likewise.
4894 * layout.cc: Include gdb-index.h.
4895 (Layout::Layout): Initialize gdb_index_data_.
4896 (Layout::init_fixed_output_section): Check for .gdb_index section.
4897 (Layout::add_to_gdb_index): New function. Instantiate.
4898 * layout.h: Add forward declaration for class Gdb_index.
4899 (Layout::add_to_gdb_index): New member function.
4900 (Layout::gdb_index_data_): New data member.
4901 * main.cc: Include gdb-index.h.
4902 (main): Print statistics for gdb index.
4903 * object.cc (Object::section_contents): Move code into
4904 do_section_contents.
4905 (need_decompressed_section): Check for sections needed when building
4906 gdb index.
4907 (build_compressed_section_map): Likewise.
4908 (Sized_relobj_file::do_read_symbols): Need local symbols when building
4909 gdb index.
4910 (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
4911 sections; call Layout::add_to_gdb_index.
4912 (Sized_relobj_file::do_decompressed_section_contents): Call
4913 do_section_contents directly.
4914 * object.h (Object::do_section_contents): Adjust parameter list and
4915 return type.
4916 (Object::do_decompressed_section_contents): Call do_section_contents
4917 directly.
4918 (Sized_relobj_file::do_section_contents): Adjust parameter list and
4919 return type.
4920 * options.h (class General_options): Add --gdb-index option.
4921 * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
4922 list and return type.
4923 * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
4924 * reloc.h (Track_relocs::checkpoint): New function.
4925 (Track_relocs::reset): New function.
4926
4927 * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
4928 New test cases.
4929 * testsuite/Makefile.in: Regenerate.
4930 * testsuite/gdb_index_test.cc: New test source file.
4931 * testsuite/gdb_index_test_1.sh: New test source file.
4932 * testsuite/gdb_index_test_2.sh: New test source file.
4933
647f1574
DK
49342012-03-19 Doug Kwan <dougkwan@google.com>
4935
4936 * arm.cc (Target_arm::do_define_standard_symbols): New method.
2e702c99 4937 (Target_arm::do_finalize_sections): Remove code which defines
647f1574
DK
4938 __exidx_start and __exidx_end. Make symbol table parameter
4939 anonymous as it is not used.
4940 * gold.cc (queue_middle_tasks): Call target hook to define any
4941 target-specific symbols.
4942 * target.h (Target::define_standard_symbols): New method.
4943 (Target::do_define_standard_symbols): Same.
4944 * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
4945 * testsuite/Makefile.in: Regenerate.
4946 * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
4947 and __exidx_end.
4948 * testsuite/arm_exidx_test.sh: Check that no unused dynamic
4949 relocations are generated for __exidx_start and __exidx_end.
4950
7c6109da
DK
49512012-03-16 Doug Kwan <dougkwan@google.com>
4952
4953 * testsuite/Makefile.am: Disable test initpri3b.
4954 * testsuite/Makefile.in: Regenerate.
4955
7b8957f8
DK
49562012-03-15 Doug Kwan <dougkwan@google.com>
4957
4958 * arm.cc (Target_arm::got_section): Make .got section read-only
4959 if -z now is given.
4960
14dc9ef7
ILT
49612012-03-15 Ian Lance Taylor <iant@google.com>
4962
4963 PR gold/13850
4964 * layout.cc (Layout::make_output_section): Correctly mark
4965 SHT_INIT_ARRAY, et. al., as relro.
4966
fa40b62a
DK
49672012-03-14 Doug Kwan <dougkwan@google.com>
4968
4969 * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
4970 dynamic relocations for protected symbols in shared objects.
4971
fd325007
ILT
49722012-03-13 Ian Lance Taylor <iant@google.com>
4973
4974 * resolve.cc (Symbol_table::resolve): When merging common symbols,
4975 keep the larger alignment.
4976
e8dd54e1
CC
49772012-03-12 Cary Coutant <ccoutant@google.com>
4978
4979 * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
4980 handling of DW_LNE_define_file.
4981
feb5f3b0
CC
49822012-03-12 Cary Coutant <ccoutant@google.com>
4983
4984 * reduced_debug_output.cc
4985 (Output_reduced_debug_info_section::get_die_end): Add new FORM
4986 codes to switch.
4987
a1fb4256
CC
49882012-02-29 Cary Coutant <ccoutant@google.com>
4989
4990 * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
4991
5dd8762a
CC
49922012-02-29 Cary Coutant <ccoutant@google.com>
4993
4994 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
4995 Call Object::decompressed_section_contents.
4996 * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
4997 New dtor.
4998 (Sized_dwarf_line_info::buffer_start_): New data member.
4999 * merge.cc (Output_merge_data::do_add_input_section): Call
5000 Object::decompressed_section_contents.
5001 (Output_merge_string::do_add_input_section): Likewise.
5002 * object.cc (need_decompressed_section): New function.
5003 (build_compressed_section_map): Decompress sections needed later.
5004 (Sized_relobj_file::do_decompressed_section_contents): New function.
5005 (Sized_relobj_file::do_discard_decompressed_sections): New function.
5006 * object.h (Object::decompressed_section_contents): New function.
5007 (Object::discard_decompressed_sections): New function.
5008 (Object::do_decompressed_section_contents): New function.
5009 (Object::do_discard_decompressed_sections): New function.
5010 (Compressed_section_info): New type.
5011 (Compressed_section_map): Include decompressed section contents.
5012 (Sized_relobj_file::do_decompressed_section_contents): New function.
5013 (Sized_relobj_file::do_discard_decompressed_sections): New function.
5014
7b5de7ee
CC
50152012-02-16 Cary Coutant <ccoutant@google.com>
5016
5017 * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
5018 * testsuite/Makefile.in: Regenerate.
5019
f9fa4a63
CC
50202012-02-14 Cary Coutant <ccoutant@google.com>
5021
5022 * options.cc (General_options::finalize): Disallow -pie and -static.
5023
2c175ebc
DK
50242012-02-03 Doug Kwan <dougkwan@google.com>
5025
5026 * arm.cc (Arm_relocate_functions::abs8,
5027 Arm_relocate_functions::abs16): Use
5028 Bits::has_signed_unsigned_overflow32.
5029 (Arm_relocate_functions::thm_abs8): Correct range of
5030 overflow check.
5031 * reloc.h (Bits class): Change minimum number of bits from 0 to 1
5032 in assertions.
5033
90cff06f
DK
50342012-02-02 Doug Kwan <dougkwan@google.com>
5035
5036 * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
5037 position independent outputs, not just shared objects.
5038
63887f3d
L
50392012-01-30 H.J. Lu <hongjiu.lu@intel.com>
5040
5041 * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
5042 * configure: Regenerated.
5043
bef2b434
ILT
50442012-01-27 Ian Lance Taylor <iant@google.com>
5045
5046 * reloc.h (Bits): New class with static functions, copied from
5047 namespace utils in arm.cc.
5048 * arm.cc (namespace utils): Remove. Rewrite all uses to use Bits
5049 instead.
5050
c335b55d
L
50512012-01-27 H.J. Lu <hongjiu.lu@intel.com>
5052
5053 * incremental.cc (write_info_blocks): Correct relocation offset.
5054
41194d9f
L
50552012-01-27 H.J. Lu <hongjiu.lu@intel.com>
5056
5057 * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
5058 (Relocate::tls_gd_to_le): Likewise.
5059
1bae613c
L
50602012-01-27 H.J. Lu <hongjiu.lu@intel.com>
5061
5062 * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
5063
24482ca0
L
50642012-01-27 H.J. Lu <hongjiu.lu@intel.com>
5065
5066 * configure.ac: Check if -mcmodel=medium works.
5067 * configure: Regenerated.
5068
c2c7840a
CC
50692012-01-24 Cary Coutant <ccoutant@google.com>
5070
5071 * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
5072 definition and ...
5073 (read_unsigned_LEB_128_x): ... this new function.
5074 (read_signed_LEB_128): Replaced with inline definition and ...
5075 (read_signed_LEB_128_x): ... this new function.
5076 * int_encoding.h (read_unsigned_LEB_128_x): New function.
5077 (read_unsigned_LEB_128): Add inline definition.
5078 (read_signed_LEB_128_x): New function.
5079 (read_signed_LEB_128): Add inline definition.
5080 * testsuite/Makefile.am (leb128_unittest): New unit test.
5081 * testsuite/Makefile.in: Regenerate.
5082 * testsuite/leb128_unittest.cc: New unit test.
5083
833de760 50842012-01-23 Ian Lance Taylor <iant@google.com>
9dee3b3c
ILT
5085
5086 PR gold/13617
5087 * i386.cc (Target_i386::do_code_fill): When using a jmp
5088 instruction, pad with nop instructions.
5089 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
5090
618d6666
L
50912012-01-22 H.J. Lu <hongjiu.lu@intel.com>
5092
5093 * x86_64.cc (gc_process_relocs): Add typename on types used in
5094 template.
5095 (scan_relocs): Likewise.
5096 (relocate_section): Likewise.
5097 (apply_relocation): Likewise.
5098
3660ff06
L
50992012-01-10 H.J. Lu <hongjiu.lu@intel.com>
5100
5101 * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
5102 (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
5103 under x32.
5104
fc51264f
L
51052012-01-09 H.J. Lu <hongjiu.lu@intel.com>
5106
5107 * x86_64.cc: Initial support for x32.
5108
dd74ae06
CC
51092012-01-03 Cary Coutant <ccoutant@google.com>
5110
5111 * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
5112 Use abstract base class for GOT.
5113 * gold/output.h (class Output_data_got_base): New abstract base class.
5114 (class Output_data_got): Derive from new base class, adjust ctors.
5115 (Output_data_got::reserve_slot): Make virtual; rename to
5116 do_reserve_slot; Adjust callers.
5117 * gold/target.h (Sized_target::init_got_plt_for_update): Return
5118 pointer to abstract base class.
5119 * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
5120
83896202
ILT
51212011-12-18 Ian Lance Taylor <iant@google.com>
5122
5123 * object.h (Relobj::local_symbol_value): New function.
5124 (Relobj::local_plt_offset): New function.
5125 (Relobj::local_has_got_offset): New function.
5126 (Relobj::local_got_offset): New function.
5127 (Relobj::set_local_got_offset): New function.
5128 (Relobj::do_local_symbol_value): New pure virtual function.
5129 (Relobj::do_local_plt_offset): Likewise.
5130 (Relobj::do_local_has_got_offset): Likewise.
5131 (Relobj::do_local_got_offset): Likewise.
5132 (Relobj::do_set_local_got_offset): Likewise.
5133 (Sized_relobj::do_local_has_got_offset): Rename from
5134 local_has_got_offset.
5135 (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
5136 (Sized_relobj::do_set_local_got_offset): Rename from
5137 set_local_got_offset.
5138 (Sized_relobj_file::do_local_plt_offset): Rename from
5139 local_plt_offset.
5140 (Sized_relobj_file::do_local_symbol_value): New function.
5141 * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
5142 local_plt_offset.
5143 * output.cc (Output_data_got::Got_entry::write): Change object to
5144 Relobj. Use local_symbol_value.
5145 (Output_data_got::add_global_with_rel): Change rel_dyn to
5146 Output_data_reloc_generic*. Use add_global_generic.
5147 (Output_data_got::add_global_with_rela): Remove. Change all
5148 callers to use add_global_with_rel.
5149 (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
5150 Output_data_reloc_generic*. Use add_global_generic.
5151 (Output_data_got::add_global_pair_with_rela): Remove. Change all
5152 callers to use add_global_pair_with_rel.
5153 (Output_data_got::add_local): Change object to Relobj*.
5154 (Output_data_got::add_local_plt): Likewise.
5155 (Output_data_got::add_local_with_rel): Change object to Relobj*,
5156 change rel_dyn to Output_data_reloc_generic*. Use
5157 add_local_generic.
5158 (Output_data_got::add_local_with_rela): Remove. Change all
5159 callers to use all_local_with_rel.
5160 (Output_data_got::add_local_pair_with_rel): Change object to
5161 Relobj*, change rel_dyn to Output_data_reloc_generic*. Use
5162 add_output_section_generic.
5163 (Output_data_got::add_local_pair_with_rela): Remove. Change all
5164 callers to use add_local_pair_with_rel.
5165 (Output_data_got::reserve_local): Change object to Relobj*.
5166 * output.h: (class Output_data_reloc_generic): Add pure virtual
5167 declarations for add_global_generic, add_local_generic,
5168 add_output_section_generic.
5169 (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
5170 functions for Output_data_reloc_generic. Update declarations for
5171 changes listed in output.cc.
5172 (class Output_data_got): Change template parameter to got_size.
5173 Don't define Rel_dyn or Rela_dyn. Update declarations per above.
5174 * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
5175 function.
5176 (Sized_relobj_incr::do_local_plt_offset): New function.
5177 * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
5178 add_global_generic.
5179
76677ad0
CC
51802011-12-17 Cary Coutant <ccoutant@google.com>
5181
5182 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
5183 * resolve.cc (Symbol_table::resolve): Likewise.
5184 * i386.cc (Target_i386::do_code_fill): Use char constants for nop
5185 arrays.
5186 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
5187
8b8dd8d5
ILT
51882011-12-16 Ian Lance Taylor <iant@google.com>
5189
5190 * output.h (Output_data_reloc_generic::add): Only call
5191 add_dynamic_reloc if this is a dynamic reloc section.
5192
d55525b9
L
51932011-12-15 H.J. Lu <hongjiu.lu@intel.com>
5194
5195 PR gold/13505
5196 * target-reloc.h (apply_relocation): Replace <64, false> with
5197 <size, big_endian>.
5198
ff81c7c1
NC
51992011-11-25 Nick Clifton <nickc@redhat.com>
5200
5201 * po/it.po: New Italian translation.
5202
628f39be
SA
52032011-11-17 Sterling Augustine <saugustine@google.com>
5204
5205 * script.cc (script_include_directive): Implement.
5206 (read_script_file): New local variables name and search_path. Update
5207 comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
5208 * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
5209 * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
5210
98ef3ea4
SA
52112011-11-11 Sterling Augustine <saugustine@google.com>
5212
5213 * yyscript.y (section_cmd): Add support for INCLUDE directive.
5214 (file_or_sections_cmd): Likewise.
5215
f4a8b6d7
DK
52162011-11-11 Doug Kwan <dougkwan@google.com>
5217
5218 * arm.cc (Target_arm::do_make_elf_object): Allow executable also
5219 if --just-symbols is given.
5220
29ab395d
DK
52212011-11-10 Doug Kwan <dougkwan@google.com>
5222
5223 PR gold/13362
5224 * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
5225 when processing data relocs.
5226 * reloc.h (Relocate_functions::rel_unaligned): New method.
5227 (Relocate_functions::pcrel_unaligned): Ditto.
5228 (Relocate_functions::rel32_unaligned): Ditto.
5229 (Relocate_functions::pcrel32_unaligned): Ditto.
5230
2c339f71
DK
52312011-11-09 Doug Kwan <dougkwan@google.com>
5232
5233 PR gold/13362
5234 * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
5235 Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
5236 * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
5237 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
5238 (Relocate_functions::rel_unaligned): New.
5239 (Relocate_functions::rel32_unaligned): New.
5240 * target-reloc.h (relocate_for_relocatable): Add code to handle
5241 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
5242 * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
5243 arm_unaligned_reloc_r): New targets.
5244 * testsuite/Makefile.in: Regenerate.
5245 * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
5246 linking.
5247
3f3cddf1
ILT
52482011-11-02 Ian Lance Taylor <iant@google.com>
5249
5250 * configure.ac: Add --with-lib-path option. Define LIB_PATH and
5251 NATIVE_LINKER.
5252 * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
5253 * options.cc (General_options::finalize): Use library search path
5254 from configure script if specified. If not native and no sysroot,
5255 only search TOOLLIBDIR.
5256 * options.h (Search_directory::Search_directory): Change name to
5257 const std::string&.
5258 (General_options::add_to_library_path_with_sysroot): Change arg to
5259 const std::string&.
5260 * configure, Makefile.in, config.in: Rebuild.
5261
a8e2273b
ILT
52622011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
5263
5264 * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
5265 we are working around the ARM1176 Erratum.
5266 * options.h (General_options::fix_arm1176): Add option.
5267 * testsuite/Makefile.am: Add testcases, and keep current ones
5268 working.
5269 * testsuite/Makefile.in: Regenerate.
5270 * testsuite/arm_fix_1176.s: New file.
5271 * testsuite/arm_fix_1176.sh: Likewise.
5272
cd6eab1c
ILT
52732011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
5274
5275 * arm.cc (Target_arm::Target_arm): Remove initialisation of
5276 may_use_blx_.
5277 (Target_arm::may_use_blx): Remove method.
5278 (Target_arm::set_may_use_blx): Likewise.
5279 (Target_arm::may_use_v4t_interworking): New method.
5280 (Target_arm::may_use_v5t_interworking): Likewise.
5281 (Target_arm::may_use_blx_): Remove member variable.
5282 (Arm_relocate_functions::arm_branch_common): Check for v5T
5283 interworking.
5284 (Arm_relocate_functions::thumb_branch_common): Likewise.
5285 (Reloc_stub::stub_type_for_reloc): Likewise.
5286 (Target_arm::do_finalize_sections): Correct interworking checks.
5287 * testsuite/Makefile.am: Add new tests.
5288 * testsuite/Makefile.in: Regenerate.
5289 * testsuite/arm_farcall_arm_arm.s: New test.
5290 * testsuite/arm_farcall_arm_arm.sh: Likewise.
5291 * testsuite/arm_farcall_arm_thumb.s: Likewise.
5292 * testsuite/arm_farcall_arm_thumb.sh: Likewise.
5293 * testsuite/arm_farcall_thumb_arm.s: Likewise.
5294 * testsuite/arm_farcall_thumb_arm.sh: Likewise.
5295 * testsuite/arm_farcall_thumb_thumb.s: Likewise.
5296 * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
5297
286adcf4
CC
52982011-10-31 Cary Coutant <ccoutant@google.com>
5299
5300 PR gold/13023
5301 * expression.cc (Expression::eval_with_dot): Add
5302 is_section_dot_assignment parameter.
5303 (Expression::eval_maybe_dot): Likewise. Adjust value when rhs is
5304 absolute and assigning to dot within a section.
5305 * script-sections.cc
5306 (Output_section_element_assignment::set_section_addresses): Pass
5307 dot_section to set_if_absolute.
5308 (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
5309 as is_section_dot_assignment flag to eval_with_dot.
5310 (Output_section_element_dot_assignment::set_section_addresses):
5311 Likewise.
5312 * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
5313 parameter. Also set value if relative to dot_section; set the
5314 symbol's output_section.
5315 * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
5316 parameter. Adjust all callers.
5317 (Expression::eval_maybe_dot): Likewise.
5318 (Symbol_assignment::set_if_absolute): Add dot_section parameter.
5319 Adjust all callers.
5320 * testsuite/script_test_2.t: Test assignment of an absolute value
5321 to dot within an output section element.
5322
9634ed06
CC
53232011-10-31 Cary Coutant <ccoutant@google.com>
5324
5325 * options.h (class General_options): Add --[no-]gnu-unique options.
5326 * symtab.cc (Symbol_table::sized_write_globals): Convert
5327 STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
5328
de4101c7
CC
53292011-10-31 Cary Coutant <ccoutant@google.com>
5330
5331 PR gold/13359
5332 * i386.cc (Target_i386::Relocate::relocate_tls): Remove
5333 unnecessary assertion.
5334 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
5335
7257cc92
ST
53362011-10-31 Sriraman Tallam <tmsriram@google.com>
5337
5338 * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
5339 gc_mark_symbol.
5340 * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
5341 gc_mark_symbol.
5342 Change to just keep the section associated with symbol.
5343 (Symbol_table::add_from_relobj): Mark symbols as not garbage when
5344 they are externally visible and --export-dynamic is turned on.
5345 (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
5346
bfc34b3f
ILT
53472011-10-19 Ian Lance Taylor <iant@google.com>
5348
5349 PR gold/13163
5350 * script-sections.cc
5351 (Output_section_element_dot_assignment::needs_output_section): New
5352 function.
5353
ea0d8c47
ILT
53542011-10-19 Ian Lance Taylor <iant@google.com>
5355
5356 PR gold/13204
5357 * layout.cc (Layout::segment_precedes): Don't assert failure if a
5358 --section-start option was seen.
5359 * options.h (General_options::any_section_start): New function.
5360
abd242a9
DM
53612011-10-18 David S. Miller <davem@davemloft.net>
5362
5363 PR binutils/13301
5364 * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
5365 member to track relocation locations that have moved during TLS
5366 reloc optimizations.
5367 (Target_sparc::Relocate::Relocate): Initialize to NULL.
5368 (Target_sparc::Relocate::relocate): Adjust view down by 4
5369 bytes if it matches reloc_adjust_addr_.
5370 (Target_sparc::Relocate::relocate_tls): Always move the
5371 __tls_get_addr call delay slot instruction forward 4 bytes when
5372 performing relaxation.
5373
bab9090f
CC
53742011-10-18 Cary Coutant <ccoutant@google.com>
5375
5376 * output.cc (posix_fallocate): Return 0 on success, errno on failure.
5377 (Output_file::map_no_anonymous): Check for non-zero
5378 return code from posix_fallocate.
5379
f7c5b166
CC
53802011-10-17 Cary Coutant <ccoutant@google.com>
5381
5382 PR gold/13245
5383 * plugin.cc (is_visible_from_outside): Check for symbols
5384 referenced from dynamic objects.
5385 * resolve.cc (Symbol_table::resolve): Don't count references
5386 from dynamic objects as references from real ELF files.
5387 * testsuite/plugin_test_2.sh: Adjust expected result.
5388
b490c0bb
CC
53892011-10-17 Cary Coutant <ccoutant@google.com>
5390
5391 * gold.cc: Include timer.h.
5392 (queue_middle_tasks): Stamp time.
5393 (queue_final_tasks): Likewise.
5394 * main.cc (main): Store timer in parameters. Print timers
5395 for each pass.
5396 * parameters.cc (Parameters::Parameters): Initialize timer_.
5397 (Parameters::set_timer): New function.
5398 (set_parameters_timer): New function.
5399 * parameters.h (Parameters::set_timer): New function.
5400 (Parameters::timer): New function.
5401 (Parameters::timer_): New data member.
5402 (set_parameters_timer): New function.
5403 * timer.cc (Timer::stamp): New function.
5404 (Timer::get_pass_time): New function.
5405 * timer.h (Timer::stamp): New function.
5406 (Timer::get_pass_time): New function.
5407 (Timer::pass_times_): New data member.
5408
f475cf7b
CC
54092011-10-17 Cary Coutant <ccoutant@google.com>
5410
5411 * readsyms.cc (Read_symbols::run): Don't queue an unblocker
5412 task for members of lib groups.
5413
cdd7e244
CC
54142011-10-17 Cary Coutant <ccoutant@google.com>
5415
5416 PR gold/13288
4f95c8b4 5417 * fileread.cc (File_read::find_view): Add assert.
cdd7e244
CC
5418 (File_read::make_view): Move bounds check (replace with assert)...
5419 (File_read::find_or_make_view): ... to here.
5420
dfb45471
CC
54212011-10-12 Cary Coutant <ccoutant@google.com>
5422
4f95c8b4 5423 * output.cc (Output_file::open_base_file): Handle case where
dfb45471
CC
5424 ::read returns less than requested size.
5425
53bbcc1b
CC
54262011-10-10 Cary Coutant <ccoutant@google.com>
5427
4f95c8b4 5428 * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
53bbcc1b
CC
5429 Initialize defined_count_.
5430 (Sized_relobj_incr::do_add_symbols): Count defined symbols.
5431 (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
5432 (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
5433 (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
5434 (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
4f95c8b4 5435 * incremental.h (Sized_relobj_incr::defined_count_): New data
53bbcc1b
CC
5436 member.
5437 (Sized_incr_dynobj::defined_count_): New data member.
4f95c8b4 5438 * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
53bbcc1b
CC
5439 Return zeroes instead of internal error.
5440
397b129b
CC
54412011-10-10 Cary Coutant <ccoutant@google.com>
5442
5443 PR gold/13249
4f95c8b4 5444 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
397b129b 5445 (Output_reloc::symbol_value): Return PLT offset if flag is set.
4f95c8b4 5446 * output.h (class Output_reloc): Add use_plt_offset flag.
397b129b
CC
5447 (Output_reloc::type_): Adjust size of bit field.
5448 (Output_reloc::use_plt_offset_): New bit field.
5449 (class Output_data_reloc): Adjust all calls to Output_reloc_type.
5450 (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
5451 flag. Adjust all callers.
4f95c8b4 5452 * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
397b129b
CC
5453 creating RELATIVE relocations.
5454
d5698657
NC
54552011-10-10 Nick Clifton <nickc@redhat.com>
5456
5457 * po/es.po: Updated Spanish translation.
5458 * po/fi.po: Updated Finnish translation.
5459
6a59a5c2
DN
54602011-10-03 Diego Novillo <dnovillo@google.com>
5461
5462 * options.cc (parse_uint): Fix dereference of RETVAL.
5463
f0558624
ST
54642011-09-29 Sriraman Tallam <tmsriram@google.com>
5465
5466 * layout.h (section_order_map_): New member.
5467 (get_section_order_map): New member function.
5468 * output.cc (Output_section::add_input_section): Check for patterns
5469 only when --section-ordering-file is specified.
5470 * gold.cc (queue_middle_tasks): Delay updating order of sections till
5471 output_sections have been formed.
5472 * layout.cc (Layout_Layout): Initialize section_order_map_.
5473 * plugin.cc (update_section_order): Store order in order_map. Do not
5474 update the order.
5475 * testsuite/Makefile.am: Add test case for plugin_final_layout.
5476 * testsuite/Makefile.in: Regenerate.
5477 * testsuite/plugin_section_order.c: New file.
5478 * testsuite/plugin_final_layout.cc: New file.
5479 * testsuite/plugin_final_layout.sh: New file.
5480
a7dac153
CC
54812011-09-29 Cary Coutant <ccoutant@google.com>
5482
4f95c8b4 5483 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
a7dac153 5484 Check for NULL.
4f95c8b4 5485 * symtab.cc (Symbol_table::add_from_relobj): Ignore version
a7dac153
CC
5486 symbols during incremental update.
5487 (Symbol_table::add_from_dynobj): Likewise.
5488
eebd87a5
ILT
54892011-09-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5490 Ian Lance Taylor <iant@google.com>
5491
5492 * symtab.cc (Symbol_table::define_special_symbol): Always
5493 canonicalize version string.
5494
403a3331
CC
54952011-09-26 Cary Coutant <ccoutant@google.com>
5496
4f95c8b4
CC
5497 * gold.cc (queue_initial_tasks): Move option checks ...
5498 * options.cc (General_options::finalize): ... to here. Disable
403a3331
CC
5499 some options; make others fatal.
5500
235061c2
CC
55012011-09-26 Cary Coutant <ccoutant@google.com>
5502
5503 gcc PR lto/47247
5504 * plugin.cc (get_symbols_v2): New function.
5505 (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
5506 (is_referenced_from_outside): New function.
5507 (Pluginobj::get_symbol_resolution_info): Add version parameter, return
5508 LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
5509 (get_symbols): Pass version parameter.
5510 (get_symbols_v2): New function.
5511 * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
5512 parameter.
5513 * testsuite/plugin_test.c (get_symbols_v2): New static variable.
5514 (onload): Add LDPT_GET_SYMBOLS_V2.
5515 (all_symbols_read_hook): Use get_symbols_v2; check for
5516 LDPR_PREVAILING_DEF_IRONLY_EXP.
5517 * testsuite/plugin_test_3.sh: Update expected results.
5518
dc87f620
ILT
55192011-09-23 Simon Baldwin <simonb@google.com>
5520
5521 * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
5522 configuration options.
5523 * configure: Regenerate.
5524 * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
5525 * Makefile.in: Regenerate.
5526 * testsuite/Makefile.in: Regenerate.
5527
a8279f82
ST
55282011-09-19 Sriraman Tallam <tmsriram@google.com>
5529
5530 * plugin.h (should_defer_layout): Modify to check for any_claimed_.
5531
0c9350c8
CC
55322011-09-19 Cary Coutant <ccoutant@google.com>
5533
5534 * incremental.cc (can_incremental_update): Fix typo in comment.
5535 * incremental.h (can_incremental_update): Likewise.
5536
aa06ae28
CC
55372011-09-18 Cary Coutant <ccoutant@google.com>
5538
5539 * incremental.cc (can_incremental_update): New function.
5540 * incremental.h (can_incremental_update): New function.
5541 * layout.cc (Layout::init_fixed_output_section): Call it.
5542 (Layout::make_output_section): Don't allow patch space in .eh_frame.
5543 * object.cc (Sized_relobj_file::do_layout): Call
5544 can_incremental_update.
5545
ebb300b2
CC
55462011-09-13 Cary Coutant <ccoutant@google.com>
5547
5548 * configure.ac: Check for glibc support for gnu_indirect_function
5549 support with static linking, setting automake conditional
5550 IFUNC_STATIC.
5551 * Makefile.in: Regenerate.
5552 * configure: Regenerate.
5553
5554 * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
5555 (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
5556 for IFUNC_STATIC.
5557 * testsuite/Makefile.in: Regenerate.
5558
1206d0d5
CC
55592011-09-13 Cary Coutant <ccoutant@google.com>
5560
5561 * incremental.cc (Sized_relobj_incr::do_layout): Call
5562 report_comdat_group for kept comdat sections.
5563 * testsuite/Makefile.am (incremental_comdat_test_1): New test.
5564 * testsuite/Makefile.in: Regenerate.
5565 * testsuite/incr_comdat_test_1.cc: New source file.
5566 * testsuite/incr_comdat_test_2_v1.cc: New source file.
5567 * testsuite/incr_comdat_test_2_v2.cc: New source file.
5568 * testsuite/incr_comdat_test_2_v3.cc: New source file.
5569
40b29874
ILT
55702011-09-13 Ian Lance Taylor <iant@google.com>
5571
5572 * object.cc (Sized_relobj_file::do_layout): Remove unused local
5573 variable external_symbols_offset.
5574
1b045aac
ILT
55752011-09-12 Ian Lance Taylor <iant@google.com>
5576
5577 * object.cc (Sized_relobj_file::do_layout): Remove assertion which
5578 triggered if object has no symbols.
5579
24c6c55a
DM
55802011-09-09 David S. Miller <davem@davemloft.net>
5581
5582 * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
5583 (Output_fill_debug_line::do_write): Likewise.
5584
66570254
CC
55852011-08-29 Cary Coutant <ccoutant@google.com>
5586
5587 * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
5588 casts to match formatting specs.
5589 (Output_fill_debug_line::do_minimum_hole_size): Likewise.
5590
8ea8cd50
CC
55912011-08-26 Cary Coutant <ccoutant@google.com>
5592
5593 * layout.cc (Free_list::allocate): Provide guarantee of minimum
5594 remaining hole size when allocating.
5595 (Layout::make_output_section): Set fill methods for debug sections.
5596 * layout.h (Free_list::Free_list_node): Move from private to
5597 public.
5598 (Free_list::set_min_hole_size): New function.
5599 (Free_list::begin, Free_list::end): New functions.
5600 (Free_list::min_hole_): New data member.
5601 * output.cc: Include dwarf.h.
5602 (Output_fill_debug_info::do_minimum_hole_size): New function.
5603 (Output_fill_debug_info::do_write): New function.
5604 (Output_fill_debug_line::do_minimum_hole_size): New function.
5605 (Output_fill_debug_line::do_write): New function.
5606 (Output_section::Output_section): Initialize new data member.
5607 (Output_section::set_final_data_size): Ensure patch space is larger
5608 than minimum hole size.
5609 (Output_section::do_write): Fill holes in debug sections.
5610 * output.h (Output_fill): New class.
5611 (Output_fill_debug_info): New class.
5612 (Output_fill_debug_line): New class.
5613 (Output_section::set_free_space_fill): New function.
5614 (Output_section::free_space_fill_): New data member.
5615 * testsuite/Makefile.am (incremental_test_3): Add
5616 --incremental-patch option.
5617 (incremental_test_4): Likewise.
5618 (incremental_test_5): Likewise.
5619 (incremental_test_6): Likewise.
5620 (incremental_copy_test): Likewise.
5621 (incremental_common_test_1): Likewise.
5622 * testsuite/Makefile.in: Regenerate.
5623
7cf80422
NC
56242011-08-26 Nick Clifton <nickc@redhat.com>
5625
5626 * po/es.po: Updated Spanish translation.
5627
c3f7b0e5
CC
56282011-08-01 Cary Coutant <ccoutant@google.com>
5629
5630 * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
5631 * gold/testsuite/Makefile.in: Regenerate.
5632 * gold/testsuite/justsyms_exec.c: New source file.
5633 * gold/testsuite/justsyms_lib.c: New source file.
5634
9590bf25
CC
56352011-08-01 Cary Coutant <ccoutant@google.com>
5636
5637 * layout.cc (Layout::set_segment_offsets): Don't realign text
5638 segment if -Ttext was specified.
5639 * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
5640 file type.
5641 * object.h (Sized_relobj_file::e_type): New function.
5642 (Sized_relobj_file::e_type_): New data member.
5643 * symtab.cc (Symbol_table::add_from_relobj): Don't add section
5644 base address for ET_EXEC files.
5645 * target.cc (Target::do_make_elf_object_implementation): Allow
5646 ET_EXEC files with --just-symbols option.
5647
dcd8d12e
CC
56482011-07-28 Cary Coutant <ccoutant@google.com>
5649
5650 * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
5651 Add thread_number parameter.
5652 (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
5653 * workqueue-threads.cc
5654 (Workqueue_threader_threadpool::should_cancel_thread): Cancel
5655 current thread if its thread number is greater than desired thread
5656 count.
5657 * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
5658 Add thread_number parameter.
5659 (Workqueue::should_cancel_thread): Likewise.
5660 (Workqueue::find_runnable_or_wait): Pass thread_number to
5661 should_cancel_thread.
5662 * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
5663 parameter.
5664
804eb480
ST
56652011-07-22 Sriraman Tallam <tmsriram@google.com>
5666
5667 * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
5668 only after checking if it cannot be forced local.
5669 * symtab.h (is_externally_visible): Check if the symbol is not forced
5670 local.
5671
f1ddb600
ILT
56722011-07-15 Ian Lance Taylor <iant@google.com>
5673
5674 * options.h (class General_options): Add --print-output-format.
5675 Move -EL next to -EB, for better --help output.
5676 * target-select.cc: Include <cstdio>, "options.h", and
5677 "parameters.h".
5678 (Target_selector::do_target_bfd_name): New function.
5679 (print_output_format): New function.
5680 * target-select.h (class Target_selector): Update declarations.
5681 (Target_selector::target_bfd_name): New function.
5682 (print_output_format): Declare.
5683 * main.cc: Include "target-select.h".
5684 (main): Handle --print-output-format.
5685 * gold.cc: Include "target-select.h".
5686 (queue_initial_tasks): Handle --print-output-format when there are
5687 no input files.
5688 * parameters.cc (parameters_force_valid_target): Give a better
5689 error message if -EB/-EL does not match target.
5690 * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
5691 function.
5692
7d172687
ILT
56932011-07-15 Ian Lance Taylor <iant@google.com>
5694
5695 * i386.cc (class Output_data_plt_i386): Add layout_ field.
5696 (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
5697 (Output_data_plt_i386::do_write): Write address of .dynamic
5698 section to first entry in .got.plt section.
5699 * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
5700 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
5701 Initialize layout_.
5702 (Output_data_plt_x86_64::do_write): Write address of .dynamic
5703 section to first entry in .got.plt section.
5704 * layout.h (Layout::dynamic_section): New function.
5705
e9552f7e
ST
57062011-07-13 Sriraman Tallam <tmsriram@google.com>
5707
5708 * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
5709 to claim_file call.
5710 * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
5711 input_section_position_, and input_section_glob_.
5712 (read_layout_from_file): Call function section_ordering_specified.
5713 * layout.h (is_section_ordering_specified): New function.
5714 (section_ordering_specified): New function.
5715 (section_ordering_specified_): New boolean member.
5716 * main.cc(main): Call load_plugins after layout object is defined.
5717 * output.cc (Output_section::add_input_section): Use
5718 function section_ordering_specified to check if section ordering is
5719 needed.
5720 * output.cc (Output_section::add_relaxed_input_section): Use
5721 function section_ordering_specified to check if section ordering is
5722 needed.
5723 (Output_section::update_section_layout): New function.
5724 (Output_section::sort_attached_input_sections): Check if input section
5725 must be reordered.
5726 * output.h (Output_section::update_section_layout): New function.
5727 * plugin.cc (get_section_count): New function.
5728 (get_section_type): New function.
5729 (get_section_name): New function.
5730 (get_section_contents): New function.
5731 (update_section_order): New function.
58797674 5732 (allow_section_ordering): New function.
e9552f7e
ST
5733 (Plugin::load): Add the new interfaces to the transfer vector.
5734 (Plugin_manager::load_plugins): New parameter.
5735 (Plugin_manager::all_symbols_read): New parameter.
5736 (Plugin_manager::claim_file): New parameter. Save the elf object for
5737 unclaimed objects.
5738 (Plugin_manager::get_elf_object): New function.
5739 (Plugin_manager::get_view): Change to directly use the bool to check
5740 if get_view is called from claim_file_hook.
5741 * plugin.h (input_objects): New function
5742 (Plugin__manager::load_plugins): New parameter.
5743 (Plugin_manager::claim_file): New parameter.
5744 (Plugin_manager::get_elf_object): New function.
5745 (Plugin_manager::in_claim_file_handler): New function.
5746 (Plugin_manager::in_claim_file_handler_): New member.
5747 (layout): New function.
5748 * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
5749 handler with an extra parameter. Make the elf object before calling
5750 claim_file handler.
5751 * testsuite/plugin_test.c (get_section_count): New function pointer.
5752 (get_section_type): New function pointer.
5753 (get_section_name): New function pointer.
5754 (get_section_contents): New function pointer.
5755 (update_section_order): New function pointer.
5756 (allow_section_ordering): New function pointer.
5757 (onload): Check if the new interfaces exist.
5758
9446efde
ILT
57592011-07-13 Ian Lance Taylor <iant@google.com>
5760
5761 * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
5762 relro section.
5763 * x86_64.cc (Target_x86_64::got_section): Likewise.
5764 * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
5765 (relro_now_test_SOURCES): New variable.
5766 (relro_now_test_DEPENDENCIES): New variable.
5767 (relro_now_test_LDFLAGS): New variable.
5768 (relro_now_test_LDADD): New variable.
5769 (relro_now_test.so): New target.
5770 * testsuite/Makefile.in: Rebuild.
5771
07aa62f2
ILT
57722011-07-12 Ian Lance Taylor <iant@google.com>
5773
5774 PR gold/12980
5775 * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
5776 GLOB_DAT relocation rather than a RELATIVE relocation for a
5777 protected symbol when creating a shared library.
5778 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
5779 * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
5780 * testsuite/protected_main_1.cc (main): Test that protected
5781 function has same address.
5782
e2153196
ILT
57832011-07-11 Ian Lance Taylor <iant@google.com>
5784
5785 PR gold/12979
5786 * options.h (class General_options): Add -Bgroup.
5787 * options.cc (General_options::finalize): If -Bgroup is set,
5788 default to --unresolved-symbols=report-all.
5789 * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
5790 * target-reloc.h (issue_undefined_symbol_error): Handle
5791 --unresolved-symbols=report-all.
5792
6daf5215
ILT
57932011-07-08 Ian Lance Taylor <iant@google.com>
5794
5795 PR gold/11985
5796 * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
5797 if linker script discards key sections.
5798 (Layout::create_dynamic_symtab): Likewise.
5799 (Layout::assign_local_dynsym_offsets): Likewise.
5800 (Layout::sized_create_version_sections): Likewise.
5801 (Layout::create_interp): Likewise.
5802 (Layout::finish_dynamic_section): Likewise.
5803 (Layout::set_dynamic_symbol_size): Likewise.
5804
beabb2c6
ILT
58052011-07-08 Ian Lance Taylor <iant@google.com>
5806
5807 PR gold/12386
5808 * options.h (class General_options): Add --unresolved-symbols.
5809 * target-reloc.h (issue_undefined_symbol_error): Check
5810 --unresolved-symbols. Add comments.
5811
9c16daf1
ILT
58122011-07-08 Ian Lance Taylor <iant@google.com>
5813
5814 * testsuite/odr_violation2.cc (Ordering::operator()): Make
5815 expression more complex.
5816
191f1a2d
ILT
58172011-07-08 Ian Lance Taylor <iant@google.com>
5818
5819 PR gold/11317
5820 * target-reloc.h (issue_undefined_symbol_error): New inline
5821 function, broken out of relocate_section.
5822 (relocate_section): Call issue_undefined_symbol_error.
5823 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
5824 there is no TLS segment if we are about to issue an undefined
5825 symbol error.
5826 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
5827
62855347
ILT
58282011-07-08 Ian Lance Taylor <iant@google.com>
5829
5830 PR gold/12279
5831 * resolve.cc (Symbol_table::should_override): Add fromtype
5832 parameter. Change all callers. Give error when linking together
5833 TLS and non-TLS symbol.
5834 (Symbol_table::should_override_with_special): Add fromtype
5835 parameter. Change all callers.
5836 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
5837 there is no TLS segment if we have reported some errors.
5838 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
5839
67181c72
ILT
58402011-07-08 Ian Lance Taylor <iant@google.com>
5841
5842 PR gold/12372
5843 * target.h (Target::plt_address_for_global): New function.
5844 (Target::plt_address_for_local): New function.
5845 (Target::plt_section_for_global): Remove.
5846 (Target::plt_section_for_local): Remove.
5847 (Target::do_plt_address_for_global): New virtual function.
5848 (Target::do_plt_address_for_local): New virtual function.
5849 (Target::do_plt_section_for_global): Remove.
5850 (Target::do_plt_section_for_local): Remove.
5851 (Target::register_global_plt_entry): Add Symbol_table and Layout
5852 parameters.
5853 * output.cc (Output_data_got::Got_entry::write): Use
5854 plt_address_for_global and plt_address_for_local.
5855 * layout.cc (Layout::add_target_dynamic_tags): Use size and
5856 address of output section.
5857 * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
5858 got_irelative_, and irelative_count_ fields. Update
5859 declarations.
5860 (Output_data_plt_i386::has_irelative_section): New function.
5861 (Output_data_plt_i386::entry_count): Add irelative_count_.
5862 (Output_data_plt_i386::set_final_data_size): Likewise.
5863 (class Target_i386): Add got_irelative_ and rel_irelative_
5864 fields. Update declarations.
5865 (Target_i386::Target_i386): Initialize new fields.
5866 (Target_i386::do_plt_address_for_global): New function replacing
5867 do_plt_section_for_global.
5868 (Target_i386::do_plt_address_for_local): New function replacing
5869 do_plt_section_for_local.
5870 (Target_i386::got_section): Create got_irelative_.
5871 (Target_i386::rel_irelative_section): New function.
5872 (Output_data_plt_i386::Output_data_plt_i386): Initialize new
5873 fields. Don't define __rel_iplt_{start,end}.
5874 (Output_data_plt_i386::add_entry): Add symtab and layout
5875 parameters. Change all callers. Use different PLT and GOT for
5876 IFUNC symbols.
5877 (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
5878 layout parameters. Change all callers. Use different PLT and
5879 GOT.
5880 (Output_data_plt_i386::rel_tls_desc): Fix formatting.
5881 (Output_data_plt_i386::rel_irelative): New function.
5882 (Output_data_plt_i386::address_for_global): New function.
5883 (Output_data_plt_i386::address_for_local): New function.
5884 (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use
5885 IRELATIVE GOT when changing IFUNC GOT entries.
5886 (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
5887 reloc.
5888 (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
5889 if we didn't create an IRELATIVE GOT.
5890 (Target_i386::Relocate::relocate): Use plt_address_for_global and
5891 plt_address_for_local.
5892 (Target_i386::do_dynsym_value): Use plt_address_for_global.
5893 * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
5894 got_irelative_, and irelative_count_ fields. Update
5895 declarations.
5896 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
5897 Initialize new fields. Remove symtab parameter. Change all
5898 callers.
5899 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
5900 irelative_count_.
5901 (Output_data_plt_x86_64::has_irelative_section): New function.
5902 (Output_data_plt_x86_64::entry_count): Add irelative_count_.
5903 (class Target_x86_64): Add got_irelative_ and rel_irelative_
5904 fields. Update declarations.
5905 (Target_x86_64::Target_x86_64): Initialize new fields.
5906 (Target_x86_64::do_plt_address_for_global): New function replacing
5907 do_plt_section_for_global.
5908 (Target_x86_64::do_plt_address_for_local): New function replacing
5909 do_plt_section_for_local.
5910 (Target_x86_64::got_section): Create got_irelative_.
5911 (Target_x86_64::rela_irelative_section): New function.
5912 (Output_data_plt_x86_64::init): Remove symtab parameter. Change
5913 all callers. Don't create __rel_iplt_{start,end}.
5914 (Output_data_plt_x86_64::add_entry): Add symtab and layout
5915 parameters. Change all callers. Use different PLT and GOT for
5916 IFUNC symbols.
5917 (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
5918 layout parameters. Change all callers. Use different PLT and
5919 GOT.
5920 (Output_data_plt_x86_64::add_relocation): Add symtab and layout
5921 parameters. Change all callers. Use different PLT and GOT for
5922 IFUNC symbols.
5923 (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
5924 (Output_data_plt_x86_64::rela_irelative): New function.
5925 (Output_data_plt_x86_64::address_for_global): New function.
5926 (Output_data_plt_x86_64::address_for_local): New function.
5927 (Output_data_plt_x86_64::set_final_data_size): Likewise.
5928 (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
5929 (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
5930 (Target_x86_64::register_global_plt_entry): Add symtab and layout
5931 parameters.
5932 (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
5933 reloc.
5934 (Target_x86_64::do_finalize_sections): Create the __rela_iplt
5935 symbols if we didn't create an IRELATIVE GOT.
5936 (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
5937 plt_address_for_local.
5938 (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
5939 * testsuite/ifuncvar1.c: New test file.
5940 * testsuite/ifuncvar2.c: New test file.
5941 * testsuite/ifuncvar3.c: New test file.
5942 * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
5943 (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
5944 (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
5945 (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
5946 * testsuite/Makefile.in: Rebuild.
5947
33c15b45
CC
59482011-07-07 Cary Coutant <ccoutant@google.com>
5949
5950 * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
5951 (two_file_test_1_ndebug.o): Likewise.
5952 (two_file_test_1b_ndebug.o): Likewise.
5953 (two_file_test_2_ndebug.o): Likewise.
5954 (two_file_test_main_ndebug.o): Likewise.
5955 (incremental_test_2): Link with no-debug versions.
5956
f48b5fb7
CC
59572011-07-06 Cary Coutant <ccoutant@google.com>
5958
5959 * gold/incremental.cc
5960 (Output_section_incremental_inputs::write_info_blocks): Check for
5961 hidden and internal symbols.
5962
221597a5
CC
59632011-07-06 Cary Coutant <ccoutant@google.com>
5964
5965 * incremental.cc (Sized_incremental_binary::do_file_has_changed):
5966 Check disposition for startup file.
5967 (Incremental_inputs::report_command_line): Ignore
5968 --incremental-startup-unchanged option.
5969 * options.cc (General_options::parse_incremental_startup_unchanged):
5970 New function.
5971 (General_options::General_options): Initialize new data member.
5972 * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
5973 (General_options): Add --incremental-startup-unchanged option.
5974 (General_options::incremental_startup_disposition): New function.
5975 (General_options::incremental_startup_disposition_): New data member.
5976
e24719f6
CC
59772011-07-06 Cary Coutant <ccoutant@google.com>
5978
5979 * incremental.cc (Sized_incremental_binary::setup_readers): Pass
5980 input file index to Script_info ctor.
5981 (Sized_incremental_binary::do_file_has_changed): Find the
5982 command-line argument for files named in scripts.
5983 * incremental.h (Script_info::Script_info): New ctor
5984 with input file index.
5985 (Script_info::input_file_index): New function.
5986 (Script_info::input_file_index_): New data member.
5987 (Incremental_binary::get_library): Add const.
5988 (Incremental_binary::get_script_info): Add const.
5989 * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
5990 * testsuite/Makefile.am (incremental_test_5): New test case.
5991 (incremental_test_6): New test case.
5992 * testsuite/Makefile.in: Regenerate.
5993
8f7c81e8
CC
59942011-07-06 Cary Coutant <ccoutant@google.com>
5995
5996 * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
5997 debug output when command lines differ.
5998
9fbd3822
CC
59992011-07-06 Cary Coutant <ccoutant@google.com>
6000
6001 * incremental.cc (Incremental_inputs::report_command_line): Ignore
6002 --incremental-patch option.
6003 * layout.cc (Free_list::allocate): Extend allocation beyond original
6004 end if enabled.
6005 (Layout::make_output_section): Mark sections that should get
6006 patch space.
6007 * options.cc (parse_percent): New function.
6008 * options.h (parse_percent): New function.
6009 (DEFINE_percent): New macro.
6010 (General_options): Add --incremental-patch option.
6011 * output.cc (Output_section::Output_section): Initialize new data
6012 members.
6013 (Output_section::add_input_section): Print section name when out
6014 of patch space.
6015 (Output_section::add_output_section_data): Likewise.
6016 (Output_section::set_final_data_size): Add patch space when
6017 doing --incremental-full.
6018 (Output_section::do_reset_address_and_file_offset): Remove patch
6019 space.
6020 (Output_segment::set_section_list_addresses): Print debug output
6021 only if --incremental-update.
6022 * output.h (Output_section::set_is_patch_space_allowed): New function.
6023 (Output_section::is_patch_space_allowed_): New data member.
6024 (Output_section::patch_space_): New data member.
6025 * parameters.cc (Parameters::incremental_full): New function.
6026 * parameters.h (Parameters::incremental_full): New function
6027 * testsuite/Makefile.am (incremental_test_2): Add test for
6028 --incremental-patch option.
6029 * testsuite/Makefile.in: Regenerate.
6030 * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
6031 (t18): Remove function body.
6032
f6cccc2c
DK
60332011-07-05 Doug Kwan <dougkwan@google.com>
6034
6035 PR gold/12771
6036 * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
6037 Arm_Address type for relocation result.
6038 (Arm_relocate_functions::abs16): Use unaligned access. Also fix
6039 overflow check.
6040 (Arm_relocate_functions::abs32): Use unaligned access.
6041 (Arm_relocate_functions::rel32): Ditto.
6042 (Arm_relocate_functions::prel31): Ditto.
6043 (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
6044 * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
6045 static data relocations.
6046 * testsuite/Makefile.in: Regnerate.
6047 * testsuite/arm_unaligned_reloc.{s,sh}: New files.
6048
28a13fec
ILT
60492011-07-05 Ian Lance Taylor <iant@google.com>
6050
6051 PR gold/12392
6052 * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
6053 symbols if necessary.
6054 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
6055
24d47b34
ILT
60562011-07-05 Ian Lance Taylor <iant@google.com>
6057
6058 PR gold/12952
6059 * resolve.cc (Symbol::override_base_with_special): Simply override
6060 version with special symbol version, ignoring previous version.
6061
41f9cbbe
ILT
60622011-07-05 Ian Lance Taylor <iant@google.com>
6063
6064 * object.cc (Sized_relobj_file::include_section_group): Add
6065 information to comment about signature location.
6066
886288f1
ILT
60672011-07-02 Ian Lance Taylor <iant@google.com>
6068
6069 PR gold/12957
6070 * options.h (class General_options): Add -f and -F.
6071 * options.cc (General_options::finalize): Fatal error if -f/-F
6072 are used without -shared.
6073 * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
6074
ae3a6d4f
ILT
60752011-07-02 Ian Lance Taylor <iant@google.com>
6076
6077 * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
6078
21131061
ILT
60792011-07-01 Ian Lance Taylor <iant@google.com>
6080
6081 PR gold/12525
6082 PR gold/12952
6083 * resolve.cc (Symbol::override_base_with_special): Don't override
6084 the version if the overriding symbol has a different name.
6085 * dynobj.cc (Versions::add_def): Add dynpool parameter. Change
6086 all callers. If we give an error about an undefined version,
6087 define the base version if necessary.
6088 * dynobj.h (class Versions): Update declaration.
6089 * testsuite/weak_alias_test_5.cc: New file.
6090 * testsuite/weak_alias_test.script: New file.
6091 * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
6092 and versioned_alias have the right value, and call t2.
6093 * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
6094 weak_alias_test_5.so.
6095 (weak_alias_test_LDADD): Likewise.
6096 (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
6097 * testsuite/Makefile.in: Rebuild.
6098
611062c0
ILT
60992011-07-01 Ian Lance Taylor <iant@google.com>
6100
6101 PR gold/12525
6102 * options.h (class General_options): Support -z notext.
6103 * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
6104 -Wl,-z,notext.
6105 (two_file_shared_nonpic.so): Likewise.
6106 (two_file_shared_mixed.so): Likewise.
6107 (two_file_shared_mixed_1.so): Likewise.
6108 (weak_undef_lib_nonpic.so): Likewise.
6109 (alt/weak_undef_lib_nonpic.so): Likewise.
6110 (tls_test_shared_nonpic.so): Likewise.
6111 * testsuite/Makefile.in: Rebuild.
6112
328c7c2f
ILT
61132011-07-01 Ian Lance Taylor <iant@google.com>
6114
6115 PR gold/12525
6116 * configure.ac: Test whether static linking works, setting
6117 the automake conditional HAVE_STATIC.
6118 * testsuite/Makefile.am: Disable tests using -static if
6119 HAVE_STATIC is not true.
6120 * configure, testsuite/Makefile.in: Rebuild.
6121
02d7cd44
ILT
61222011-07-01 Ian Lance Taylor <iant@google.com>
6123
6124 PR gold/12525
6125 * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
6126 Assert if we see DW_EH_PE_indirect.
6127 * target.h (Target::ehframe_datarel_base): New function.
6128 (Target::do_ehframe_datarel_base): New target function.
6129 * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
6130 * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
6131 function.
6132
07a60597
ILT
61332011-07-01 Ian Lance Taylor <iant@google.com>
6134
6135 PR gold/12571
6136 * options.h (class General_options): Add
6137 --ld-generated-unwind-info.
6138 * ehframe.cc (Fde::write): Add address parameter. Change all
6139 callers. If associated with PLT, fill in address and size.
6140 (Cie::set_output_offset): Only add merge mapping if there is an
6141 object.
6142 (Cie::write): Add address parameter. Change all callers.
6143 (Eh_frame::add_ehframe_for_plt): New function.
6144 * ehframe.h (class Fde): Update declarations. Move shndx_ and
6145 input_offset_ fields into union u_, with new plt field.
6146 (Fde::Fde): Adjust for new union field.
6147 (Fde::Fde) [Output_data version]: New constructor.
6148 (Fde::add_mapping): Only add merge mapping if there is an object.
6149 (class Cie): Update declarations.
6150 (class Eh_frame): Declare add_ehframe_for_plt.
6151 * layout.cc (Layout::layout_eh_frame): Break out code into
6152 make_eh_frame_section, and call it.
6153 (Layout::make_eh_frame_section): New function.
6154 (Layout::add_eh_frame_for_plt): New function.
6155 * layout.h (class Layout): Update declarations.
6156 * merge.cc (Merge_map::add_mapping): Add assertion.
6157 * i386.cc: Include "dwarf.h".
6158 (class Output_data_plt_i386): Make first_plt_entry,
6159 dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add
6160 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
6161 and plt_eh_frame_fde.
6162 (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
6163 boundary. Call add_eh_frame_for_plt if appropriate.
6164 * x86_64.cc: Include "dwarf.h".
6165 (class Output_data_plt_x86_64): Align to 16-byte boundary. Make
6166 first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add
6167 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
6168 and plt_eh_frame_fde.
6169 (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
6170 appropriate.
6171
14788a3f
ILT
61722011-06-29 Ian Lance Taylor <iant@google.com>
6173
6174 PR gold/12629
6175 * object.cc (Sized_relobj_file::layout_section): Change shdr
6176 parameter to be const.
6177 (Sized_relobj_file::layout_eh_frame_section): New function, broken
6178 out of do_layout.
6179 (Sized_relobj_file::do_layout): Defer .eh_frame sections if
6180 appropriate. Call layout_eh_frame_section.
6181 (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
6182 sections.
6183 * object.h (class Sized_relobj_file): Update declarations.
6184
6c21fce1
ILT
61852011-06-29 Ian Lance Taylor <iant@google.com>
6186
37e41b03 6187 PR gold/12652
6c21fce1
ILT
6188 * script.cc (Token::integer_value): Accept trailing M/m/K/k
6189 modifier.
6190 (Lex::gather_token): Accept trailing M/m/K/k for integers.
6191
4d5e4e62
ILT
61922011-06-29 Ian Lance Taylor <iant@google.com>
6193
6194 PR gold/12675
6195 * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
6196 SHT_X86_64_UNWIND.
6197 * layout.cc (Layout::layout_eh_frame): Likewise.
6198
886f533a
ILT
61992011-06-29 Ian Lance Taylor <iant@google.com>
6200
6201 PR gold/12695
6202 * layout.cc (Layout::symtab_section_shndx): New function.
6203 * layout.h (class Layout): Declare symtab_section_shndx.
6204 * output.cc (Output_section::write_header): Call it.
6205
f3ae1b28
ILT
62062011-06-29 Ian Lance Taylor <iant@google.com>
6207
6208 PR gold/12818
6209 * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
6210 symbols which are not used in a relocation.
6211
aecf301f
ILT
62122011-06-28 Ian Lance Taylor <iant@google.com>
6213
6214 PR gold/12898
6215 * layout.cc (Layout::segment_precedes): Don't crash if a linker
6216 script create indistinguishable segments.
6217 (Layout::set_segment_offsets): Use stable_sort when sorting
6218 segments. Pass this to Compare_segments constructor.
6219 * layout.h (class Layout): Make segment_precedes non-static.
6220 (class Compare_segments): Change from struct to class. Add
6221 layout_ field. Add constructor.
6222 * script-sections.cc
6223 (Script_sections::attach_sections_using_phdrs_clause): Rename
6224 local orphan to is_orphan. Don't report failure to put empty
6225 section in segment. On attachment failure, report name of
6226 section, and attach to first PT_LOAD segment.
6227
03ef7571
ILT
62282011-06-28 Ian Lance Taylor <iant@google.com>
6229
6230 PR gold/12934
6231 * target-select.cc (Target_selector::Target_selector): Add
6232 emulation parameter. Change all callers.
6233 (select_target_by_bfd_name): Rename from select_target_by_name.
6234 Change all callers.
6235 (select_target_by_emulation): New function.
6236 (supported_emulation_names): New function.
6237 * target-select.h (class Target_selector): Add emulation_ field.
6238 Update declarations.
6239 (Target_selector::recognize_by_bfd_name): Rename from
6240 recognize_by_name. Change all callers.
6241 (Target_selector::supported_bfd_names): Rename from
6242 supported_names. Change all callers.
6243 (Target_selector::recognize_by_emulation): New function.
6244 (Target_selector::supported_emulations): New function.
6245 (Target_selector::emulation): New function.
6246 (Target_selector::do_recognize_by_bfd_name): Rename from
6247 do_recognize_by_name. Change all callers.
6248 (Target_selector::do_supported_bfd_names): Rename from
6249 do_supported_names. Change all callers.
6250 (Target_selector::do_recognize_by_emulation): New function.
6251 (Target_selector::do_supported_emulations): New function.
6252 (select_target_by_bfd_name): Change name in declaration.
6253 (select_target_by_emulation): Declare.
6254 (supported_emulation_names): Declare.
6255 * parameters.cc (parameters_force_valid_target): Try to find
6256 target based on emulation from -m option.
6257 * options.h (class General_options): Change doc string for -m.
6258 * options.cc (help): Print emulations.
6259 (General_options::parse_V): Likewise.
6260 * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
6261 Add emulation parameter. Change all callers.
6262
200b2bb9
ILT
62632011-06-28 Ian Lance Taylor <iant@google.com>
6264
6265 * target.h (class Target): Add osabi_ field.
6266 (Target::osabi): New function.
6267 (Target::set_osabi): New function.
6268 (Target::Target): Initialize osabi_.
6269 (Target::do_adjust_elf_header): Make pure virtual.
6270 (Sized_target::do_adjust_elf_header): Declare.
6271 * target.cc (Sized_target::do_adjust_elf_header): New function.
6272 (class Sized_target): Instantiate all versions.
6273 * freebsd.h (class Target_freebsd): Remove.
6274 (Target_selector_freebsd::do_recognize): Call set_osabi on
6275 Target.
6276 (Target_selector_freebsd::do_recognize_by_name): Likewise.
6277 (Target_selector_freebsd::set_osabi): Remove.
6278 * i386.cc (class Target_i386): Inherit from Sized_target rather
6279 than Target_freebsd.
6280 * x86_64.cc (class Target_x86_64): Likewise.
6281
b3ce541e
ILT
62822011-06-28 Ian Lance Taylor <iant@google.com>
6283
6284 * target.h (Target::can_check_for_function_pointers): Rewrite.
6285 Make non-virtual.
6286 (Target::can_icf_inline_merge_sections): Likewise.
6287 (Target::section_may_have_icf_unsafe_poineters): Likewise.
6288 (Target::Target_info): Add can_icf_inline_merge_sections field.
6289 (Target::do_can_check_for_function_pointers): New virtual
6290 function.
6291 (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
6292 * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
6293 from can_check_for_function_pointers, move in file.
6294 (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
6295 section_may_have_icf_unsafe_poineters, move in file.
6296 (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
6297 * i386.cc (Target_i386::do_can_check_for_function_pointers):
6298 Rename from can_check_for_function_pointers, move in file.
6299 (Target_i386::can_icf_inline_merge_sections): Remove.
6300 (Target_i386::i386_info): Initialize
6301 can_icf_inline_merge_sections.
6302 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
6303 Initialize can_icf_inline_merge_sections.
6304 * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
6305 * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
6306 Rename from can_check_for_function_pointers, move in file.
6307 (Target_x86_64::can_icf_inline_merge_sections): Remove.
6308 (Target_x86_64::x86_64_info): Initialize
6309 can_icf_inline_merge_sections.
6310 * testsuite/testfile.cc (Target_test::test_target_info):
6311 Likewise.
6312 * icf.cc (get_section_contents): Correct formatting.
6313
6d1c4efb
ILT
63142011-06-27 Ian Lance Taylor <iant@google.com>
6315
6316 * symtab.cc (Symbol::versioned_name): New function.
6317 (Symbol_table::add_to_final_symtab): Use versioned_name when
6318 appropriate.
6319 (Symbol_table::sized_write_symbol): Likewise.
6320 * symtab.h (class Symbol): Declare versioned_name.
6321 * stringpool.h (class Stringpool_template): Add variant of add
6322 which takes a std::basic_string.
6323 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
6324 (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
6325 (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
6326 (ver_test_12.o): New target.
6327 * testsuite/Makefile.in: Rebuild.
6328
57eb9b50
DK
63292011-06-27 Doug Kwan <dougkwan@google.com>
6330
6331 * arm.cc (Arm_relocate_functions::thm_jump8,
6332 Arm_relocate_functions::thm_jump11): Use a wider signed
6333 type to compute offset.
6334 * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
6335 arm_thm_jump8.
6336 * testsuite/Makefile.in: Regenerate.
6337 * testsuite/arm_branch_in_range.sh: Check test results of
6338 arm_thm_jump11 and arm_thm_jump8.
6339 * testsuite/arm_thm_jump11.s: New test source file.
6340 * testsuite/arm_thm_jump11.t: New linker script.
6341 * testsuite/arm_thm_jump8.s: New test source file.
6342 * testsuite/arm_thm_jump8.t: New linker script.
6343
487b39df
ILT
63442011-06-24 Ian Lance Taylor <iant@google.com>
6345
6346 * layout.cc: Include "object.h".
6347 (ctors_sections_in_init_array): New static variable.
6348 (Layout::is_ctors_in_init_array): New function.
6349 (Layout::layout): Add entry to ctors_sections_in_init_array if
6350 appropriate.
6351 * layout.h (class Layout): Declare is_ctors_in_init_array.
6352 * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
6353 is_ctors_reverse_view is set.
6354 (Sized_relobj_file::write_sections): Add layout parameter. Change
6355 all callers. Set is_ctors_reverse_view field of View_size.
6356 (Sized_relobj_file::reverse_words): New function.
6357 * object.h (Sized_relobj_file::View_size): Add
6358 is_ctors_reverse_view field.
6359 (class Sized_relobj_file): Update declarations.
6360 * testsuite/initpri3.c: New test.
6361 * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
6362 initpri3b.
6363 (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
6364 (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
6365 (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
6366 (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
6367 * testsuite/Makefile.in: Rebuild.
6368
472076e4
CC
63692011-06-24 Cary Coutant <ccoutant@google.com>
6370
6371 * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
6372 (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
6373 (debug_msg_cdebug.err): New targets.
6374 * testsuite/Makefile.in: Regenerate.
6375 * testsuite/debug_msg.sh: Check output of link with compressed debug.
6376 Fix checks for link with shared library.
6377
a60af0db
DK
63782011-06-24 Doug Kwan <dougkwan@google.com>
6379
6380 * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
6381 skip empty text sections.
6382 * testsuite/arm_exidx_test.s: Test handling of an empty text section.
6383
5393d741
ILT
63842011-06-22 Ian Lance Taylor <iant@google.com>
6385
6386 PR gold/12910
6387 * options.h (class General_options): Add --ctors-in-init-array.
6388 * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
6389 friends as SHT_PROGBITS for merging sections.
6390 (Layout::layout): Remove special handling of .init_array and
6391 friends. Don't sort if doing relocatable link. Sort for .ctors
6392 and .dtors if ctors_in_init_array.
6393 (Layout::make_output_section): Force correct section types for
6394 .init_array and friends. Don't sort if doing relocatable link,
6395 Don't sort .ctors and .dtors if ctors_in_init_array.
6396 (Layout::section_name_mapping): Remove .ctors. and .dtorso.
6397 (Layout::output_section_name): Add relobj parameter. Change all
6398 callers. Handle .ctors. and .dtors. in code rather than table.
6399 Handle .ctors and .dtors if ctors_in_init_array.
6400 (Layout::match_file_name): New function, moved from output.cc.
6401 * layout.h (class Layout): Update declarations.
6402 * output.cc: Include "layout.h".
6403 (Input_section_sort_entry::get_priority): New function.
6404 (Input_section_sort_entry::match_file_name): Just call
6405 Layout::match_file_name.
6406 (Output_section::Input_section_sort_init_fini_compare::operator()):
6407 Handle .ctors and .dtors. Sort by explicit priority rather than
6408 by name.
6409 * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
6410 * testsuite/initpri2.c: New test.
6411 * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
6412 (check_PROGRAMS): Add initpri2.
6413 (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
6414 (initpri2_LDFLAGS, initpri2_LDADD): New variables.
6415 * configure, testsuite/Makefile.in: Rebuild.
6416
e1f74f98
ILT
64172011-06-19 Ian Lance Taylor <iant@google.com>
6418
6419 PR gold/12880
6420 * layout.cc (Layout::attach_allocated_section_to_segment): Add a
6421 .interp section to a PT_INTERP segment even if we have seen a
6422 --dynamic-linker option. Don't do it if we have seen a PHDRS
6423 clause in a linker script.
6424 (Layout::finalize): Don't create a .interp section if we've
6425 already create a PT_INTERP segment.
6426 (Layout::create_interp): Always call choose_output_section (revert
6427 patch of 2011-06-17). Don't create PT_INTERP segment.
6428 * script-sections.cc
6429 (Script_sections::create_note_and_tls_segments): Add a .interp
6430 section to a PT_INTERP segment even if we have seen a
6431 --dynamic-linker option.
6432
766f91bb
ILT
64332011-06-18 Ian Lance Taylor <iant@google.com>
6434
6435 * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
6436 merely because a non-PT_LOAD segment has a dynamic reloc.
6437
0d212c3a
ILT
64382011-06-18 Ian Lance Taylor <iant@google.com>
6439
6440 * layout.cc (Layout::finish_dynamic_section): Don't create
6441 DT_FLAGS entry if not needed.
6442
911a5072
ILT
64432011-06-18 Ian Lance Taylor <iant@google.com>
6444
6445 PR gold/12745
6446 * layout.cc (Layout::layout_eh_frame): Correct handling of
6447 writable .eh_frame section.
6448
534b4e5f
ILT
64492011-06-17 Ian Lance Taylor <iant@google.com>
6450
6451 PR gold/12893
6452 * resolve.cc (Symbol_table::resolve): Don't give an error if a
6453 symbol is redefined with the exact same object and value.
6454
10b4f102
ILT
64552011-06-17 Ian Lance Taylor <iant@google.com>
6456
6457 PR gold/12880
6458 * layout.h (class Layout): Add interp_segment_ field.
6459 * layout.cc (Layout::Layout): Initialize interp_segment_ field.
6460 (Layout::attach_allocated_section_to_segment): If making shared
6461 library, put .interp section in PT_INTERP segment.
6462 (Layout::finalize): Also call create_interp if -dynamic-linker
6463 option was used.
6464 (Layout::create_interp): Assert that there is no PT_INTERP
6465 segment. If not using a SECTIONS clause, use make_output_section.
6466 (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
6467 * script-sections.cc
6468 (Script_sections::create_note_and_tls_segments): If making shared
6469 library, put .interp section in PT_INTERP segment.
6470
a29b0dad
ILT
64712011-06-17 Ian Lance Taylor <iant@google.com>
6472
e588ea8d
ILT
6473 * object.cc (Sized_relobj_file::do_layout): Keep warning sections
6474 when making a shared library.
6475
64762011-06-17 Ian Lance Taylor <iant@google.com>
6477
6478 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
6479 parameter. Change all callers. Don't issue warning about PC32
6480 against locally defined symbol.
a29b0dad 6481
9d3b0698
ILT
64822011-06-16 Ian Lance Taylor <iant@google.com>
6483
6484 * symtab.cc (Warnings::issue_warning): Don't warn if relocation
6485 occurs in same object.
6486
85b0f90c
AM
64872011-06-14 Alan Modra <amodra@gmail.com>
6488
6489 * po/POTFILES.in: Regenerate.
6490
a94907d9
ILT
64912011-06-09 Ian Lance Taylor <iant@google.com>
6492
6493 * script-sections.cc
6494 (Orphan_output_section::set_section_addresses): For a relocatable
6495 link set address to 0.
6496
4fb3a1c3
CC
64972011-06-09 Cary Coutant <ccoutant@google.com>
6498
6499 PR gold/12804
6500 * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
6501 used with --compress-debug-sections.
6502 * gold/object.cc (Sized_relobj_file::do_layout): Report
6503 uncompressed size of compressed input sections.
6504
61220854
CC
65052011-06-08 Cary Coutant <ccoutant@google.com>
6506
6507 PR gold/12804
6508 * testsuite/two_file_test_2_v1.cc: Change initialization of
6509 v2 to keep it in .data.
6510
e6455dfb
CC
65112011-06-07 Cary Coutant <ccoutant@google.com>
6512
6513 * common.cc (Symbol_table::do_allocate_commons_list): Call
6514 gold_fallback.
6515 * errors.cc (Errors::fatal): Adjust call to gold_exit.
6516 (Errors::fallback): New function.
6517 (gold_fallback): New function.
6518 * errors.h (Errors::fallback): New function.
6519 * gold.cc (gold_exit): Change status parameter to enum; adjust
6520 all callers.
6521 (queue_initial_tasks): Call gold_fallback.
6522 * gold.h: Include cstdlib.
6523 (Exit_status): New enum type.
6524 (gold_exit): Change status parameter to enum.
6525 (gold_fallback): New function.
6526 * layout.cc (Layout::set_section_offsets): Call gold_fallback.
6527 (Layout::create_symtab_sections): Likewise.
6528 (Layout::create_shdrs): Likewise.
6529 * main.cc (main): Adjust call to gold_exit.
6530 * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
6531 (Output_data_got::add_got_entry_pair): Likewise.
6532 (Output_section::add_input_section): Likewise.
6533 (Output_section::add_output_section_data): Likewise.
6534 (Output_segment::set_section_list_addresses): Likewise.
6535 * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
6536
fb0e076f
CC
65372011-06-07 Cary Coutant <ccoutant@google.com>
6538
6539 * layout.cc (Layout::set_segment_offsets): Don't adjust layout
6540 for incremental links.
6541 * output.cc (Output_segment::set_section_list_addresses): Remove
6542 FIXME and test for TLS or BSS.
6543
a5ee4d5d
CC
65442011-06-07 Cary Coutant <ccoutant@google.com>
6545
6546 * testsuite/Makefile.am: Add incremental_copy_test,
6547 incremental_common_test_1.
6548 * testsuite/Makefile.in: Regenerate.
6549 * testsuite/common_test_1_v1.c: New source file.
6550 * testsuite/common_test_1_v2.c: New source file.
6551 * testsuite/copy_test_v1.cc: New source file.
6552
5146f448
CC
65532011-06-07 Cary Coutant <ccoutant@google.com>
6554
6555 * common.cc (Symbol_table::do_allocate_commons_list): For incremental
6556 update, allocate common from bss section's free list.
6557 * incremental-dump.cc (dump_incremental_inputs): Print flag for
6558 linker-defined symbols.
6559 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
6560 Skip GOT and PLT entries that are no longer referenced.
6561 (Output_section_incremental_inputs::write_info_blocks): Mark
6562 linker-defined symbols.
6563 (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
6564 * output.cc (Output_section::allocate): New function.
6565 * output.h (Output_section::allocate): New function.
6566 * resolve.cc (Symbol_table::report_resolve_problem): Add case for
6567 linker-defined symbols.
6568 (Symbol::override_base_with_special): Copy is_predefined_ flag.
6569 * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
6570 (Symbol::init_base_output_data): Likewise.
6571 (Symbol::init_base_output_segment): Likewise.
6572 (Symbol::init_base_constant): Likewise.
6573 (Sized_symbol::init_output_data): Likewise.
6574 (Sized_symbol::init_output_segment): Likewise.
6575 (Sized_symbol::init_constant): Likewise.
6576 (Symbol_table::do_define_in_output_data): Likewise.
6577 (Symbol_table::do_define_in_output_segment): Likewise.
6578 (Symbol_table::do_define_as_constant): Likewise.
6579 * symtab.h (Symbol::is_predefined): New function.
6580 (Symbol::init_base_output_data): Add is_predefined parameter.
6581 (Symbol::init_base_output_segment): Likewise.
6582 (Symbol::init_base_constant): Likewise.
6583 (Symbol::is_predefined_): New data member.
6584 (Sized_symbol::init_output_data): Add is_predefined parameter.
6585 (Sized_symbol::init_output_segment): Likewise.
6586 (Sized_symbol::init_constant): Likewise.
6587 (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
6588
26d3c67d
CC
65892011-06-07 Cary Coutant <ccoutant@google.com>
6590
6591 * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
6592 instead of emit_copy_reloc.
6593 (Copy_relocs::emit_copy_reloc): Refactor.
6594 (Copy_relocs::make_copy_reloc): New function.
6595 (Copy_relocs::add_copy_reloc): Remove.
6596 * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
6597 section.
6598 (Copy_relocs::make_copy_reloc): New function.
6599 (Copy_relocs::add_copy_reloc): Remove.
6600 * gold.cc (queue_middle_tasks): Emit old COPY relocations from
6601 unchanged input files.
6602 * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
6603 * incremental.cc (Sized_incremental_binary::do_reserve_layout):
6604 Reserve BSS space for COPY relocations.
6605 (Sized_incremental_binary::do_emit_copy_relocs): New function.
6606 (Output_section_incremental_inputs::write_info_blocks): Record
6607 whether a symbol is copied from a shared object.
6608 (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
6609 * incremental.h (enum Incremental_shlib_symbol_flags): New type.
6610 (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
6611 (Incremental_input_entry_reader::get_output_symbol_index): Add
6612 is_copy parameter.
6613 (Incremental_binary::emit_copy_relocs): New function.
6614 (Incremental_binary::do_emit_copy_relocs): New function.
6615 (Sized_incremental_binary::Sized_incremental_binary): Initialize
6616 new data member.
6617 (Sized_incremental_binary::add_copy_reloc): New function.
6618 (Sized_incremental_binary::do_emit_copy_relocs): New function.
6619 (Sized_incremental_binary::Copy_reloc): New struct.
6620 (Sized_incremental_binary::Copy_relocs): New typedef.
6621 (Sized_incremental_binary::copy_relocs_): New data member.
6622 * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
6623 * symtab.h (Symbol_table::add_from_incrobj): Change return type.
6624 * target.h (Sized_target::emit_copy_reloc): New function.
6625 * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
6626
7cdb37d9
CC
66272011-06-02 Cary Coutant <ccoutant@google.com>
6628
6629 PR gold/12163
6630 * gold/archive.cc (Archive::Archive): Initialize new data member.
6631 (Archive::include_all_members): Return if archive has already been
6632 included.
6633 * gold/archive.h (Archive::include_all_members_): New data member.
6634
cc643b88
NC
66352011-06-02 Nick Clifton <nickc@redhat.com>
6636
6637 * dynobj.h: Fix spelling mistake in comment.
6638 * output.cc: Likewise.
6639
f62a3ca7 66402011-05-31 Doug Kwan <dougkwan@google.com>
2e702c99 6641 Asier Llano
f62a3ca7
DK
6642
6643 PR gold/12826
cc643b88 6644 * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
f62a3ca7
DK
6645 arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
6646 * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up. Remove
6647 redundant arm_exidx_test.so.
6648 * testsuite/Makefile.in: Regenerate.
6649 (check_SCRIPTS): Add pr12826.sh
6650 (check_DATA): Add pr12826.stdout
6651 (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
6652 * testsuite/pr12826.sh: New file.
6653 * testsuite/pr12826_1.s: Ditto.
6654 * testsuite/pr12826_1.s: Ditto.
6655
8dbe1edc
ILT
66562011-05-30 Ian Lance Taylor <iant@google.com>
6657
6658 * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
6659 sections.
6660
c49875be
ILT
66612011-05-29 Ian Lance Taylor <iant@google.com>
6662
6663 PR gold/12804
6664 * testsuite/Makefile.am: Use different file name for two_file_test
6665 temporary file for each incremental test.
6666 * testsuite/Makefile.in: Rebuild.
6667
69d53f7a
ILT
66682011-05-29 Ian Lance Taylor <iant@google.com>
6669
6670 * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
6671 binary input file is empty.
6672
41d0ab5f
ILT
66732011-05-27 Ian Lance Taylor <iant@google.com>
6674
6675 * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
6676 (ver_test_9.so): Likewise.
6677 * testsuite/Makefile.in: Rebuild.
6678
89d8a36b
CC
66792011-05-26 Cary Coutant <ccoutant@google.com>
6680
6681 * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
6682 * incremental.cc (Incremental_inputs::report_input_section): Fix
6683 comment, indentation.
6684 (Incremental_inputs::report_comdat_group): New function.
6685 (Output_section_incremental_inputs::set_final_data_size): Adjust size
6686 of data for incremental input file entry.
6687 (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
6688 group count, COMDAT group signatures.
6689 (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
6690 an unchanged input file.
6691 * incremental.h (Incremental_object_entry::Incremental_object_entry):
6692 Initialize new data member.
6693 (Incremental_object_entry::add_comdat_group): New function.
6694 (Incremental_object_entry::get_comdat_group_count): New function.
6695 (Incremental_object_entry::get_comdat_signature_key): New function.
6696 (Incremental_object_entry::groups_): New data member.
6697 (Incremental_inputs::report_comdat_group): New function.
6698 (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
6699 data for incremental input file entry.
6700 (Incremental_input_entry_reader::get_comdat_group_count): New function.
6701 (Incremental_input_entry_reader::get_input_section): Adjust size of
6702 data for incremental input file entry.
6703 (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
6704 (Incremental_input_entry_reader::get_comdat_group_signature): New
6705 function.
6706 * object.cc (Sized_relobj::include_section_group): Report kept
6707 COMDAT groups for incremental links.
6708
1706a06f
ILT
67092011-05-24 David Meyer <pdox@google.com>
6710
6711 * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
6712 with name parameter. Add found_name parameter.
6713 * fileread.cc (Input_file::find_file): Adjust code accordingly.
6714 * dirsearch.h (class Dirsearch): Update declaration.
6715
a10ae760
ILT
67162011-05-24 Ian Lance Taylor <iant@google.com>
6717
6718 * archive.cc (Library_base::should_include_member): Pull in object
6719 from archive if it defines the entry symbol.
6720 * parameters.cc (Parameters::entry): New function.
6721 * parameters.h (class Parameters): Declare entry.
6722 * output.h (class Output_file_header): Remove entry_ field.
6723 * output.cc (Output_file_header::Output_file_header): Remove entry
6724 parameter. Change all callers.
6725 (Output_file_header::entry): Use parameters->entry.
6726 * gold.cc (queue_middle_tasks): Likewise.
6727 * plugin.cc (Plugin_hook::run): Likewise.
6728
aa92d6ed
CC
67292011-05-24 Cary Coutant <ccoutant@google.com>
6730
6731 * gold.cc (queue_initial_tasks): Pass incremental base filename
6732 to Output_file::open_base_file; don't print error message.
6733 * incremental-dump.cc (main): Adjust call to
6734 Output_file::open_for_modification.
6735 * incremental-dump.cc (main): Likewise.
6736 * incremental.cc (Incremental_inputs::report_command_line):
6737 Ignore --incremental-base option when comparing command lines.
6738 Ignore parameter when given as separate argument.
6739 * options.h (class General_options): Add --incremental-base.
6740 * output.cc (Output_file::Output_file):
6741 (Output_file::open_base_file): Add base_name and writable parameters;
6742 read base file into new file; print error message here.
6743 (Output_file::map_no_anonymous): Add writable parameter; adjust all
6744 callers.
6745 * output.h (Output_file::open_for_modification): Rename to...
6746 (Output_file::open_base_file): ...this; add base_name and
6747 writable parameters; adjust all callers.
6748 (Output_file::map_no_anonymous): Add writable parameter; adjust all
6749 callers.
6750 * testsuite/Makefile.am (incremental_test_4): Test
6751 --incremental-base.
6752 * testsuite/Makefile.in: Regenerate.
6753
2eedd706
CC
67542011-05-24 Cary Coutant <ccoutant@google.com>
6755
6756 * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
6757 incremental_test_4.
6758 * testsuite/Makefile.in: Regenerate.
6759 * testsuite/two_file_test_1_v1.cc: New test source file.
6760 * testsuite/two_file_test_1b_v1.cc: New test source file.
6761 * testsuite/two_file_test_2_v1.cc: New test source file.
6762
0f1c85a6
CC
67632011-05-24 Cary Coutant <ccoutant@google.com>
6764
6765 * dynobj.h (Dynobj::do_dynobj): New function.
6766 * incremental-dump.cc (dump_incremental_inputs): Print as_needed
6767 flag and soname for shared objects.
6768 * incremental.cc (Incremental_inputs::report_object): Make
6769 either Incremental_object_entry or Incremental_dynobj_entry; add
6770 soname to string table.
6771 (Incremental_inputs::report_input_section): Add assertion.
6772 (Output_section_incremental_inputs::set_final_data_size): Adjust
6773 type of input file entry for shared libraries; adjust size of
6774 shared library info entry.
6775 (Output_section_incremental_inputs::write_input_files): Write
6776 as_needed flag for shared libraries.
6777 (Output_section_incremental_inputs::write_info_blocks): Adjust type
6778 of input file entry for shared libraries; write soname.
6779 (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
6780 soname from incremental info.
6781 * incremental.h (enum Incremental_input_flags): Add
6782 INCREMENTAL_INPUT_AS_NEEDED.
6783 (Incremental_input_entry::Incremental_input_entry): Initialize new
6784 data member.
6785 (Incremental_input_entry::set_as_needed): New function.
6786 (Incremental_input_entry::as_needed): New function.
6787 (Incremental_input_entry::do_dynobj_entry): New function.
6788 (Incremental_input_entry::as_needed_): New data member.
6789 (Incremental_object_entry::Incremental_object_entry): Don't check
6790 for shared library.
6791 (Incremental_object_entry::do_type): Likewise.
6792 (class Incremental_dynobj_entry): New class.
6793 (Incremental_input_entry_reader::as_needed): New function.
6794 (Incremental_input_entry_reader::get_soname): New function.
6795 (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
6796 (Incremental_input_entry_reader::get_output_symbol_index): Adjust
6797 size of shared library info entry.
58797674 6798 * layout.cc (Layout::finish_dynamic_section): Don't test for
0f1c85a6
CC
6799 incremental link when adding DT_NEEDED entries.
6800 * object.h (Object::Object): Initialize new data member.
6801 (Object::dynobj): New function.
6802 (Object::set_as_needed): New function.
6803 (Object::as_needed): New function.
6804 (Object::do_dynobj): New function.
6805 (Object::as_needed_): New data member.
6806
6fa2a40b
CC
68072011-05-24 Cary Coutant <ccoutant@google.com>
6808
6809 * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
6810 info; adjust display of GOT entries.
6811 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
6812 vector of input objects; remove file_status_.
6813 (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
6814 (Sized_incremental_binary::do_process_got_plt): Adjust calls to
6815 got_plt reader; call target hooks to reserve GOT entries.
6816 (Output_section_incremental_inputs::set_final_data_size): Adjust size
6817 of input file info header and GOT info entry.
6818 (Output_section_incremental_inputs::write_info_blocks): Write dynamic
6819 relocation info.
6820 (Got_plt_view_info::got_descriptor): Remove.
6821 (Got_plt_view_info::sym_index): New data member.
6822 (Got_plt_view_info::input_index): New data member.
6823 (Local_got_offset_visitor::visit): Write input file index.
6824 (Global_got_offset_visitor::visit): Write 0 for input file index.
6825 (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
6826 with sym_index and input_index.
6827 (Output_section_incremental_inputs::write_got_plt): Adjust size of
6828 incremental info GOT entry; replace got_descriptor with input_index.
6829 (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
6830 map from input file index to object.
6831 (Sized_relobj_incr::do_layout): Replace direct data member reference
6832 with accessor function.
6833 (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
6834 * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
6835 Adjust size of input file info header.
6836 (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
6837 (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
6838 (Incremental_input_entry_reader::get_input_section): Adjust size of
6839 input file info header.
6840 (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
6841 of incremental info GOT entry.
6842 (Incremental_got_plt_reader::get_got_desc): Remove.
6843 (Incremental_got_plt_reader::get_got_symndx): New function.
6844 (Incremental_got_plt_reader::get_got_input_index): New function.
6845 (Sized_incremental_binary::Sized_incremental_binary): Remove
6846 file_status_; add input_objects_.
6847 (Sized_incremental_binary::~Sized_incremental_binary): Remove.
6848 (Sized_incremental_binary::set_file_is_unchanged): Remove.
6849 (Sized_incremental_binary::file_is_unchanged): Remove.
6850 (Sized_incremental_binary::set_input_object): New function.
6851 (Sized_incremental_binary::input_object): New function.
6852 (Sized_incremental_binary::file_status_): Remove.
6853 (Sized_incremental_binary::input_objects_): New data member.
6854 (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
6855 references.
6856 (Sized_relobj_incr::invalid_address): Move to base class.
6857 (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
6858 class.
6859 (Sized_relobj_incr::do_output_section_offset): Likewise.
6860 (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
6861 (Sized_relobj_incr::section_offsets_): Likewise.
6862 * object.cc (Sized_relobj::do_for_all_local_got_entries): New
6863 function.
6864 (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
6865 (Sized_relobj_file::layout_section): Replace refs to section_offsets_
6866 with accessor function.
6867 (Sized_relobj_file::do_layout): Likewise.
6868 (Sized_relobj_file::do_layout_deferred_sections): Likewise.
6869 (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
6870 (Sized_relobj_file::compute_final_local_value): Replace refs to
6871 section_offsets_ with accessor function.
6872 (Sized_relobj_file::do_finalize_local_symbols): Likewise.
6873 * object.h (Relobj::Relobj): Initialize new data members.
6874 (Relobj::add_dyn_reloc): New function.
6875 (Relobj::first_dyn_reloc): New function.
6876 (Relobj::dyn_reloc_count): New function.
6877 (Relobj::first_dyn_reloc_): New data member.
6878 (Relobj::dyn_reloc_count_): New data member.
6879 (Sized_relobj): Rename Sized_relobj_base to this; adjust all
6880 references.
6881 (Sized_relobj::Address): New typedef.
6882 (Sized_relobj::invalid_address): Move here from child class.
6883 (Sized_relobj::Sized_relobj): Initialize new data members.
6884 (Sized_relobj::sized_relobj): New function.
6885 (Sized_relobj::is_output_section_offset_invalid): Move here from
6886 child class.
6887 (Sized_relobj::get_output_section_offset): Likewise.
6888 (Sized_relobj::local_has_got_offset): Likewise.
6889 (Sized_relobj::local_got_offset): Likewise.
6890 (Sized_relobj::set_local_got_offset): Likewise.
6891 (Sized_relobj::do_for_all_local_got_entries): Likewise.
6892 (Sized_relobj::clear_got_offsets): New function.
6893 (Sized_relobj::section_offsets): Move here from child class.
6894 (Sized_relobj::do_output_section_offset): Likewise.
6895 (Sized_relobj::do_set_section_offset): Likewise.
6896 (Sized_relobj::Local_got_offsets): Likewise.
6897 (Sized_relobj::local_got_offsets_): Likewise.
6898 (Sized_relobj::section_offsets_): Likewise.
6899 (Sized_relobj_file): Rename Sized_relobj to this; adjust all
6900 references.
6901 (Sized_relobj_file::is_output_section_offset_invalid): Move to base
6902 class.
6903 (Sized_relobj_file::sized_relobj): New function
6904 (Sized_relobj_file::local_has_got_offset): Move to base class.
6905 (Sized_relobj_file::local_got_offset): Likewise.
6906 (Sized_relobj_file::set_local_got_offset): Likewise.
6907 (Sized_relobj_file::get_output_section_offset): Likewise.
6908 (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
6909 (Sized_relobj_file::do_output_section_offset): Likewise.
6910 (Sized_relobj_file::do_set_section_offset): Likewise.
6911 (Sized_relobj_file::Local_got_offsets): Likewise.
6912 (Sized_relobj_file::local_got_offsets_): Likewise.
6913 (Sized_relobj_file::section_offsets_): Likewise.
6914 * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
6915 (all constructors).
6916 (set_needs_dynsym_index): Convert relobj to derived class pointer.
6917 (Output_reloc::get_symbol_index): Likewise.
6918 (Output_reloc::local_section_offset): Likewise.
6919 (Output_reloc::get_address): Likewise.
6920 (Output_reloc::symbol_value): Likewise.
6921 (Output_data_got::reserve_slot): Move to class definition.
6922 (Output_data_got::reserve_local): New function.
6923 (Output_data_got::reserve_slot_for_global): Remove.
6924 (Output_data_got::reserve_global): New function.
6925 * output.h (Output_reloc::Output_reloc): Adjust type of relobj
6926 (all constructors, two instantiations).
6927 (Output_reloc::get_relobj): New function (two instantiations).
6928 (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
6929 (Output_data_reloc_base::add): Convert relobj to derived class pointer.
6930 (Output_data_reloc::add_global): Adjust type of relobj.
6931 (Output_data_reloc::add_global_relative): Likewise.
6932 (Output_data_reloc::add_symbolless_global_addend): Likewise.
6933 (Output_data_reloc::add_local): Likewise.
6934 (Output_data_reloc::add_local_relative): Likewise.
6935 (Output_data_reloc::add_symbolless_local_addend): Likewise.
6936 (Output_data_reloc::add_local_section): Likewise.
6937 (Output_data_reloc::add_output_section): Likewise.
6938 (Output_data_reloc::add_absolute): Likewise.
6939 (Output_data_reloc::add_target_specific): Likewise.
6940 (Output_data_got::reserve_slot): Move definition here.
6941 (Output_data_got::reserve_local): New function.
6942 (Output_data_got::reserve_global): New function.
6943 * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
6944 section_offsets_ with accessor function.
6945 (Sized_relobj_file::write_sections): Likewise.
6946 (Sized_relobj_file::do_relocate_sections): Likewise.
6947 * target.h (Sized_target::reserve_local_got_entry): New function.
6948 (Sized_target::reserve_global_got_entry): New function.
6949 * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
6950 (Target_x86_64::reserve_global_got_entry): New function.
6951 (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
6952
4829d394
CC
69532011-05-23 Cary Coutant <ccoutant@google.com>
6954
6955 * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
6956 * incremental-dump.cc (dump_incremental_inputs): Mask high-order
6957 bit when checking got_type.
6958 * incremental.cc (Sized_incremental_binary::setup_readers):
6959 Store symbol table and string table locations; initialize bit vector
6960 of file status flags.
6961 (Sized_incremental_binary::do_reserve_layout): Set bit flag for
6962 unchanged files.
6963 (Sized_incremental_binary::do_process_got_plt): New function.
6964 (Sized_incremental_binary::get_symtab_view): Use stored locations.
6965 (Output_section_incremental_inputs::set_final_data_size): Record
6966 file index for each input file.
6967 (Output_section_incremental_inputs::write_got_plt): Store file index
6968 instead of input entry offset for each GOT entry.
6969 * incremental.h
6970 (Incremental_input_entry::Incremental_input_entry): Initialize new
6971 data member.
6972 (Incremental_input_entry::set_offset): Store file index.
6973 (Incremental_input_entry::get_file_index): New function.
6974 (Incremental_input_entry::file_index_): New data member.
6975 (Incremental_binary::process_got_plt): New function.
6976 (Incremental_binary::do_process_got_plt): New function.
6977 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
6978 data members.
6979 (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
6980 (Sized_incremental_binary::set_file_is_unchanged): New function.
6981 (Sized_incremental_binary::file_is_unchanged): New function.
6982 (Sized_incremental_binary::do_process_got_plt): New function.
6983 (Sized_incremental_binary::file_status_): New data member.
6984 (Sized_incremental_binary::main_symtab_loc_): New data member.
6985 (Sized_incremental_binary::main_strtab_loc_): New data member.
6986 * output.cc (Output_data_got::Got_entry::write): Add case
6987 RESERVED_CODE.
6988 (Output_data_got::add_global): Call add_got_entry.
6989 (Output_data_got::add_global_plt): Likewise.
6990 (Output_data_got::add_global_with_rel): Likewise.
6991 (Output_data_got::add_global_with_rela): Likewise.
6992 (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
6993 (Output_data_got::add_global_pair_with_rela): Likewise.
6994 (Output_data_got::add_local): Call add_got_entry.
6995 (Output_data_got::add_local_plt): Likewise.
6996 (Output_data_got::add_local_with_rel): Likewise.
6997 (Output_data_got::add_local_with_rela): Likewise.
6998 (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
6999 (Output_data_got::add_local_pair_with_rela): Likewise.
7000 (Output_data_got::reserve_slot): New function.
7001 (Output_data_got::reserve_slot_for_global): New function.
7002 (Output_data_got::add_got_entry): New function.
7003 (Output_data_got::add_got_entry_pair): New function.
7004 (Output_section::add_output_section_data): Edit FIXME.
7005 * output.h
7006 (Output_section_data_build::Output_section_data_build): New
7007 constructor with size parameter.
7008 (Output_data_space::Output_data_space): Likewise.
7009 (Output_data_got::Output_data_got): Initialize new data member; new
7010 constructor with size parameter.
7011 (Output_data_got::add_constant): Call add_got_entry.
7012 (Output_data_got::reserve_slot): New function.
7013 (Output_data_got::reserve_slot_for_global): New function.
7014 (class Output_data_got::Got_entry): Add RESERVED_CODE.
7015 (Output_data_got::add_got_entry): New function.
7016 (Output_data_got::add_got_entry_pair): New function.
7017 (Output_data_got::free_list_): New data member.
7018 * target.h (Sized_target::init_got_plt_for_update): New function.
7019 (Sized_target::register_global_plt_entry): New function.
7020 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
7021 Initialize new data member; call init; add constructor with PLT count.
7022 (Output_data_plt_x86_64::init): New function.
7023 (Output_data_plt_x86_64::add_relocation): New function.
7024 (Output_data_plt_x86_64::reserve_slot): New function.
7025 (Output_data_plt_x86_64::free_list_): New data member.
7026 (Target_x86_64::init_got_plt_for_update): New function.
7027 (Target_x86_64::register_global_plt_entry): New function.
7028 (Output_data_plt_x86_64::add_entry): Allocate from free list for
7029 incremental updates.
7030 (Output_data_plt_x86_64::add_relocation): New function.
7031 * testsuite/object_unittest.cc (Object_test): Set default options.
7032
ec69d6da
ILT
70332011-05-16 Ian Lance Taylor <iant@google.com>
7034
7035 * options.h (class General_options): Make -i a synonym for -r.
7036
732e31de
ILT
70372011-05-16 Ian Lance Taylor <iant@google.com>
7038
7039 * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
7040
403676b5
CC
70412011-05-10 Cary Coutant <ccoutant@google.com>
7042
7043 * object.cc (Sized_relobj::do_count_local_symbols): Check for
7044 strip_all (-s).
7045
5b7b7d6e
ILT
70462011-05-06 Ian Lance Taylor <iant@google.com>
7047
7048 * layout.cc (Layout::layout): If the output section flags change,
7049 update the ordering.
7050
f0f9babf
CC
70512011-04-25 Cary Coutant <ccoutant@google.com>
7052
7053 * incremental-dump.cc (dump_incremental_inputs): Print local
7054 symbol info for each input file.
7055 * incremental.cc
7056 (Output_section_incremental_inputs::set_final_data_size): Add local
7057 symbol info to input file entries in incremental info.
7058 (Output_section_incremental_inputs::write_info_blocks): Likewise.
7059 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
7060 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
7061 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
7062 implementation.
7063 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
7064 (Sized_incr_relobj::do_relocate): Write the local symbols.
7065 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
7066 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
7067 Adjust size of input file header.
7068 (Incremental_inputs_reader::get_local_symbol_offset): New function.
7069 (Incremental_inputs_reader::get_local_symbol_count): New function.
7070 (Incremental_inputs_reader::get_input_section): Adjust size of input
7071 file header.
7072 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
7073 (Sized_incr_relobj::This): New typedef.
7074 (Sized_incr_relobj::sym_size): New const data member.
7075 (Sized_incr_relobj::Local_symbol): New struct.
7076 (Sized_incr_relobj::do_output_local_symbol_count): New function.
7077 (Sized_incr_relobj::do_local_symbol_offset): New function.
7078 (Sized_incr_relobj::local_symbol_count_): New data member.
7079 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
7080 (Sized_incr_relobj::local_symbol_index_): New data member.
7081 (Sized_incr_relobj::local_symbol_offset_): New data member.
7082 (Sized_incr_relobj::local_dynsym_offset_): New data member.
7083 (Sized_incr_relobj::local_symbols_): New data member.
7084 * object.h (Relobj::output_local_symbol_count): New function.
7085 (Relobj::local_symbol_offset): New function.
7086 (Relobj::do_output_local_symbol_count): New function.
7087 (Relobj::do_local_symbol_offset): New function.
7088 (Sized_relobj::do_output_local_symbol_count): New function.
7089 (Sized_relobj::do_local_symbol_offset): New function.
7090
d0a9ace3
ILT
70912011-04-22 Vladimir Simonov <sv@sw.ru>
7092
7093 * descriptors.cc (set_close_on_exec): New function.
7094 (Descriptors::open): Use set_close_on_exec.
7095 * output.cc (S_ISLNK): Define if not defined.
7096
94a3fc8b
CC
70972011-04-22 Cary Coutant <ccoutant@google.com>
7098
7099 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
7100 global symbol map.
7101 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
7102 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
7103 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
7104 relocations.
7105 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
7106 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
7107 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
7108 * incremental.h
7109 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
7110 function.
7111 (Incremental_binary::apply_incremental_relocs): New function.
7112 (Incremental_binary::do_apply_incremental_relocs): New function.
7113 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
7114 data member.
7115 (Sized_incremental_binary::add_global_symbol): New function.
7116 (Sized_incremental_binary::global_symbol): New function.
7117 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
7118 (Sized_incremental_binary::symbol_map_): New data member.
7119 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
7120 * target.h (Sized_target::apply_relocation): New function.
7121 * target-reloc.h (apply_relocation): New function.
7122 * x86_64.cc (Target_x86_64::apply_relocation): New function.
7123
c87e4302
DK
71242011-04-22 Doug Kwan <dougkwan@google.com>
7125
7126 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
7127 flag of a SHT_ARM_EXIDX section.
2e702c99 7128 * testsuite/Makefile.am (arm_exidx_test): New test rules.
c87e4302
DK
7129 * testsuite/Makefile.in: Regenerate.
7130 * testsuite/arm_exidx_test.s: New file.
7131 * testsuite/arm_exidx_test.sh: Same.
7132
e7782cf6
CC
71332011-04-20 Cary Coutant <ccoutant@google.com>
7134
7135 PR gold/12689
7136 * archive.h (Incremental_archive_entry::Archive_member):
7137 Initialize arg_serial_ (second constructor).
7138
308ecdc7
ILT
71392011-04-17 Ian Lance Taylor <iant@google.com>
7140
7141 * object.cc (Relocate_info::location): Simplify location string.
7142 * errors.cc (Errors::error_at_location): Don't print program
7143 name.
7144 (Errors::warning_at_location): Likewise.
7145 (Errors::undefined_symbol): Likewise.
7146 * testsuite/debug_msg.sh: Update accordingly.
7147
bec5b579
CC
71482011-04-14 Cary Coutant <ccoutant@google.com>
7149
7150 * gold/layout.cc (Layout::symtab_section_offset): New function.
7151 * gold/layout.h (Layout::symtab_section_offset): New function.
7152 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
7153
88597d34
ILT
71542011-04-12 Ian Lance Taylor <iant@google.com>
7155
7156 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
7157 with MREMAP_MAYMOVE.
7158 * output.h (class Output_file): Add map_is_allocated_ field.
7159 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
7160 not available, provide stubs. If mremap is not available, #define
7161 it to gold_mremap.
7162 (MREMAP_MAYMOVE): Define if not defined.
7163 (Output_file::Output_file): Initialize map_is_allocated_.
7164 (Output_file::resize): Check map_is_allocated_.
7165 (Output_file::map_anonymous): If mmap fails, use malloc.
7166 (Output_file::unmap): Don't do anything for an anonymous map.
7167 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
7168 is not available, provide stubs.
7169 (File_read::View::~View): Use free rather than delete[].
7170 (File_read::make_view): Use malloc rather than new[]. If mmap
7171 fails, use malloc.
7172 (File_read::find_or_make_view): Use malloc rather than new[].
7173 * gold.h: Remove HAVE_REMAP code.
7174 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
7175 exists. Rename mremap to gold_mremap. If mmap is not available
7176 don't do anything.
7177 * configure, config.in: Rebuild.
7178
11e361bc
ILT
71792011-04-11 Ian Lance Taylor <iant@google.com>
7180
7181 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
7182 initialize local variable v.
7183
cdc29364
CC
71842011-04-11 Cary Coutant <ccoutant@google.com>
7185
7186 * archive.cc (Archive::include_member): Adjust call to
7187 report_object.
7188 (Add_archive_symbols::run): Track argument serial numbers.
7189 (Lib_group::include_member): Likewise.
7190 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
7191 * archive.h (Incremental_archive_entry::Archive_member):
7192 Initialize arg_serial_.
7193 (Archive_member::arg_serial_): New data member.
7194 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
7195 (Sized_dynobj::do_add_symbols): Track symbols when doing an
7196 incremental link.
7197 (Sized_dynobj::do_for_all_local_got_entries): New function.
7198 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
7199 function.
7200 * fileread.cc (get_mtime): New function.
7201 * fileread.h (get_mtime): New function.
7202 * gold.cc (queue_initial_tasks): Check for incremental update.
7203 (process_incremental_input): New function.
7204 (queue_middle_tasks): Don't force valid target for incremental
7205 update.
7206 * incremental-dump.cc (find_input_containing_global): Adjust
7207 size of symbol info entry.
7208 (dump_incremental_inputs): Dump argument serial number and
7209 in_system_directory flag; bias shndx by 1; print symbol names
7210 when dumping per-file symbol lists; use new symbol info readers.
7211 * incremental.cc
7212 (Output_section_incremental_inputs:update_data_size): New function.
7213 (Sized_incremental_binary::setup_readers): Setup input readers
7214 for each input file; build maps for files added from libraries
7215 and scripts.
7216 (Sized_incremental_binary::check_input_args): New function.
7217 (Sized_incremental_binary::do_check_inputs): Build map of argument
7218 serial numbers to input arguments.
7219 (Sized_incremental_binary::do_file_has_changed): Rename
7220 do_file_is_unchanged to this; compare file modification times.
7221 (Sized_incremental_binary::do_init_layout): New function.
7222 (Sized_incremental_binary::do_reserve_layout): New function.
7223 (Sized_incremental_binary::do_get_input_reader): Remove.
7224 (Sized_incremental_binary::get_symtab_view): New function.
7225 (Incremental_checker::can_incrementally_link_output_file): Remove.
7226 (Incremental_inputs::report_command_line): Exclude --debug options.
7227 (Incremental_inputs::report_archive_begin): Add parameter; track
7228 argument serial numbers; don't put input file entry for archive
7229 before archive members.
7230 (Incremental_inputs::report_archive_end): Put input file entry
7231 for archive after archive members.
7232 (Incremental_inputs::report_object): Add parameter; track argument
7233 serial numbers and in_system_directory flag.
7234 (Incremental_inputs::report_script): Add parameter; track argument
7235 serial numbers.
7236 (Output_section_incremental_inputs::set_final_data_size): Adjust
7237 size of symbol info entry; check for forwarding symbols.
7238 (Output_section_incremental_inputs::write_input_files): Write
7239 in_system_directory flag and argument serial number.
7240 (Output_section_incremental_inputs::write_info_blocks): Map section
7241 indices between incremental info and original input file; store
7242 input section index for each symbol.
7243 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
7244 change operator() to visit().
7245 (class Global_got_offset_visitor): Likewise.
7246 (class Global_symbol_visitor_got_plt):
7247 (Output_section_incremental_inputs::write_got_plt): Use new visitor
7248 classes.
7249 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
7250 (Sized_incr_relobj::do_read_symbols): New function.
7251 (Sized_incr_relobj::do_layout): New function.
7252 (Sized_incr_relobj::do_layout_deferred_sections): New function.
7253 (Sized_incr_relobj::do_add_symbols): New function.
7254 (Sized_incr_relobj::do_should_include_member): New function.
7255 (Sized_incr_relobj::do_for_all_global_symbols): New function.
7256 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
7257 (Sized_incr_relobj::do_section_size): New function.
7258 (Sized_incr_relobj::do_section_name): New function.
7259 (Sized_incr_relobj::do_section_contents): New function.
7260 (Sized_incr_relobj::do_section_flags): New function.
7261 (Sized_incr_relobj::do_section_entsize): New function.
7262 (Sized_incr_relobj::do_section_address): New function.
7263 (Sized_incr_relobj::do_section_type): New function.
7264 (Sized_incr_relobj::do_section_link): New function.
7265 (Sized_incr_relobj::do_section_info): New function.
7266 (Sized_incr_relobj::do_section_addralign): New function.
7267 (Sized_incr_relobj::do_initialize_xindex): New function.
7268 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
7269 (Sized_incr_relobj::do_read_relocs): New function.
7270 (Sized_incr_relobj::do_gc_process_relocs): New function.
7271 (Sized_incr_relobj::do_scan_relocs): New function.
7272 (Sized_incr_relobj::do_count_local_symbols): New function.
7273 (Sized_incr_relobj::do_finalize_local_symbols): New function.
7274 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
7275 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
7276 (Sized_incr_relobj::do_relocate): New function.
7277 (Sized_incr_relobj::do_set_section_offset): New function.
7278 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
7279 (Sized_incr_dynobj::do_read_symbols): New function.
7280 (Sized_incr_dynobj::do_layout): New function.
7281 (Sized_incr_dynobj::do_add_symbols): New function.
7282 (Sized_incr_dynobj::do_should_include_member): New function.
7283 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
7284 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
7285 (Sized_incr_dynobj::do_section_size): New function.
7286 (Sized_incr_dynobj::do_section_name): New function.
7287 (Sized_incr_dynobj::do_section_contents): New function.
7288 (Sized_incr_dynobj::do_section_flags): New function.
7289 (Sized_incr_dynobj::do_section_entsize): New function.
7290 (Sized_incr_dynobj::do_section_address): New function.
7291 (Sized_incr_dynobj::do_section_type): New function.
7292 (Sized_incr_dynobj::do_section_link): New function.
7293 (Sized_incr_dynobj::do_section_info): New function.
7294 (Sized_incr_dynobj::do_section_addralign): New function.
7295 (Sized_incr_dynobj::do_initialize_xindex): New function.
7296 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
7297 (make_sized_incremental_object): New function.
7298 (Incremental_library::copy_unused_symbols): New function.
7299 (Incremental_library::do_for_all_unused_symbols): New function.
7300 * incremental.h (enum Incremental_input_flags): New type.
7301 (class Incremental_checker): Remove.
7302 (Incremental_input_entry::Incremental_input_entry): Add argument
7303 serial number.
7304 (Incremental_input_entry::arg_serial): New function.
7305 (Incremental_input_entry::set_is_in_system_directory): New function.
7306 (Incremental_input_entry::is_in_system_directory): New function.
7307 (Incremental_input_entry::arg_serial_): New data member.
7308 (Incremental_input_entry::is_in_system_directory_): New data member.
7309 (class Script_info): Move here from script.h.
7310 (Script_info::Script_info): Add filename parameter.
7311 (Script_info::filename): New function.
7312 (Script_info::filename_): New data member.
7313 (Incremental_script_entry::Incremental_script_entry): Add argument
7314 serial number.
7315 (Incremental_object_entry::Incremental_object_entry): Likewise.
7316 (Incremental_object_entry::add_input_section): Build list of input
7317 sections with map to original shndx.
7318 (Incremental_object_entry::get_input_section_index): New function.
7319 (Incremental_object_entry::shndx_): New data member.
7320 (Incremental_object_entry::name_key_): Rename; adjust all refs.
7321 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
7322 (Incremental_archive_entry::Incremental_archive_entry): Add argument
7323 serial number.
7324 (Incremental_inputs::report_archive_begin): Likewise.
7325 (Incremental_inputs::report_object): Likewise.
7326 (Incremental_inputs::report_script): Likewise.
7327 (class Incremental_global_symbol_reader): New class.
7328 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
7329 and store flags and input file type.
7330 (Incremental_input_entry_reader::arg_serial): New function.
7331 (Incremental_input_entry_reader::type): Extract type from flags.
7332 (Incremental_input_entry_reader::is_in_system_directory): New function.
7333 (Incremental_input_entry_reader::get_input_section_count): Call
7334 accessor function for type.
7335 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
7336 function for type; adjust size of global symbol entry.
7337 (Incremental_input_entry_reader::get_global_symbol_count): Call
7338 accessor function for type.
7339 (Incremental_input_entry_reader::get_object_count): Likewise.
7340 (Incremental_input_entry_reader::get_object_offset): Likewise.
7341 (Incremental_input_entry_reader::get_member_count): Likewise.
7342 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
7343 (Incremental_input_entry_reader::get_member_offset): Likewise.
7344 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
7345 (Incremental_input_entry_reader::Global_symbol_info): Remove.
7346 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
7347 (Incremental_input_entry_reader::get_global_symbol_reader): New
7348 function.
7349 (Incremental_input_entry_reader::get_output_symbol_index): New
7350 function.
7351 (Incremental_input_entry_reader::type_): Remove.
7352 (Incremental_input_entry_reader::flags_): New data member.
7353 (Incremental_inputs_reader::input_file_offset): New function.
7354 (Incremental_inputs_reader::input_file_index): New function.
7355 (Incremental_inputs_reader::input_file): Call input_file_offset.
7356 (Incremental_inputs_reader::input_file_at_offset): New function.
7357 (Incremental_relocs_reader::get_r_type): Reformat.
7358 (Incremental_relocs_reader::get_r_shndx): Reformat.
7359 (Incremental_relocs_reader::get_r_offset): Reformat.
7360 (Incremental_relocs_reader::data): New function.
7361 (Incremental_binary::Incremental_binary): Initialize new data members.
7362 (Incremental_binary::check_inputs): Add cmdline parameter.
7363 (Incremental_binary::file_is_unchanged): Remove.
7364 (Input_reader::arg_serial): New function.
7365 (Input_reader::get_unused_symbol_count): New function.
7366 (Input_reader::get_unused_symbol): New function.
7367 (Input_reader::do_arg_serial): New function.
7368 (Input_reader::do_get_unused_symbol_count): New function.
7369 (Input_reader::do_get_unused_symbol): New function.
7370 (Incremental_binary::input_file_count): New function.
7371 (Incremental_binary::get_input_reader): Change signature to use
7372 index instead of filename.
7373 (Incremental_binary::file_has_changed): New function.
7374 (Incremental_binary::get_input_argument): New function.
7375 (Incremental_binary::get_library): New function.
7376 (Incremental_binary::get_script_info): New function.
7377 (Incremental_binary::init_layout): New function.
7378 (Incremental_binary::reserve_layout): New function.
7379 (Incremental_binary::output_file): New function.
7380 (Incremental_binary::do_check_inputs): New function.
7381 (Incremental_binary::do_file_is_unchanged): Remove.
7382 (Incremental_binary::do_file_has_changed): New function.
7383 (Incremental_binary::do_init_layout): New function.
7384 (Incremental_binary::do_reserve_layout): New function.
7385 (Incremental_binary::do_input_file_count): New function.
7386 (Incremental_binary::do_get_input_reader): Change signature.
7387 (Incremental_binary::input_args_map_): New data member.
7388 (Incremental_binary::library_map_): New data member.
7389 (Incremental_binary::script_map_): New data member.
7390 (Sized_incremental_binary::Sized_incremental_binary): Initialize
7391 new data members.
7392 (Sized_incremental_binary::output_section): New function.
7393 (Sized_incremental_binary::inputs_reader): Add const.
7394 (Sized_incremental_binary::symtab_reader): Add const.
7395 (Sized_incremental_binary::relocs_reader): Add const.
7396 (Sized_incremental_binary::got_plt_reader): Add const.
7397 (Sized_incremental_binary::get_symtab_view): New function.
7398 (Sized_incremental_binary::Inputs_reader): New typedef.
7399 (Sized_incremental_binary::Input_entry_reader): New typedef.
7400 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
7401 (Sized_incremental_binary::do_file_is_unchanged): Remove.
7402 (Sized_incremental_binary::do_file_has_changed): New function.
7403 (Sized_incremental_binary::do_init_layout): New function.
7404 (Sized_incremental_binary::do_reserve_layout): New function.
7405 (Sized_input_reader::Inputs_reader): Remove.
7406 (Sized_input_reader::Input_entry_reader): Remove.
7407 (Sized_input_reader::do_arg_serial): New function.
7408 (Sized_input_reader::do_get_unused_symbol_count): New function.
7409 (Sized_input_reader::do_get_unused_symbol): New function.
7410 (Sized_incremental_binary::do_input_file_count): New function.
7411 (Sized_incremental_binary::do_get_input_reader): Change signature;
7412 use index instead of filename.
7413 (Sized_incremental_binary::section_map_): New data member.
7414 (Sized_incremental_binary::input_entry_readers_): New data member.
7415 (class Sized_incr_relobj): New class.
7416 (class Sized_incr_dynobj): New class.
7417 (make_sized_incremental_object): New function.
7418 (class Incremental_library): New class.
7419 * layout.cc (Free_list::num_lists): New static data member.
7420 (Free_list::num_nodes): New static data member.
7421 (Free_list::num_removes): New static data member.
7422 (Free_list::num_remove_visits): New static data member.
7423 (Free_list::num_allocates): New static data member.
7424 (Free_list::num_allocate_visits): New static data member.
7425 (Free_list::init): New function.
7426 (Free_list::remove): New function.
7427 (Free_list::allocate): New function.
7428 (Free_list::dump): New function.
7429 (Free_list::print_stats): New function.
7430 (Layout_task_runner::run): Resize output file for incremental updates.
7431 (Layout::Layout): Initialize new data members.
7432 (Layout::set_incremental_base): New function.
7433 (Layout::init_fixed_output_section): New function.
7434 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
7435 incremental updates.
7436 (Layout::create_gold_note): Do not create gold note section for
7437 incremental updates.
7438 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
7439 for incremental updates.
7440 (Layout::set_section_offsets): For incremental updates, allocate space
7441 from free list.
7442 (Layout::create_symtab_sections): Layout with offsets relative to
7443 start of section; for incremental updates, allocate space from free
7444 list.
7445 (Layout::create_shdrs): For incremental updates, allocate space from
7446 free list.
7447 (Layout::finish_dynamic_section): For incremental updates, do not
7448 check --as-needed (fixed in subsequent patch).
7449 * layout.h (class Free_list): New class.
7450 (Layout::set_incremental_base): New function.
7451 (Layout::incremental_base): New function.
7452 (Layout::init_fixed_output_section): New function.
7453 (Layout::allocate): New function.
7454 (Layout::incremental_base_): New data member.
7455 (Layout::free_list_): New data member.
7456 * main.cc (main): Print Free_list statistics.
7457 * object.cc (Relobj::finalize_incremental_relocs): Add
7458 clear_counts parameter; clear counts only when clear_counts is set.
7459 (Sized_relobj::Sized_relobj): Initialize new base class.
7460 (Sized_relobj::do_layout): Don't report special sections.
7461 (Sized_relobj::do_for_all_local_got_entries): New function.
7462 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
7463 symtab_off to all symbol table offsets.
7464 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
7465 * object.h (class Got_offset_list): Move to top of file.
7466 (Object::Object): Allow case where input_file == NULL.
7467 (Object::~Object): Likewise.
7468 (Object::input_file): Assert that input_file != NULL.
7469 (Object::lock): Allow case where input_file == NULL.
7470 (Object::unlock): Likewise.
7471 (Object::is_locked): Likewise.
7472 (Object::token): Likewise.
7473 (Object::release): Likewise.
7474 (Object::is_incremental): New function.
7475 (Object::get_mtime): New function.
7476 (Object::for_all_local_got_entries): New function.
7477 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
7478 (Object::set_is_in_system_directory): New function.
7479 (Object::is_in_system_directory): New function.
7480 (Object::do_is_incremental): New function.
7481 (Object::do_get_mtime): New function.
7482 (Object::do_for_all_local_got_entries): New function.
7483 (Object::is_in_system_directory_): New data member.
7484 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
7485 (class Sized_relobj_base): New class.
7486 (class Sized_relobj): Derive from Sized_relobj_base.
7487 (class Sized_relobj::Symbols): Redeclare from base class.
7488 (class Sized_relobj::local_got_offset_list): Remove.
7489 (class Sized_relobj::Output_sections): Redeclare from base class.
7490 (class Sized_relobj::do_for_all_local_got_entries): New function.
7491 (class Sized_relobj::write_local_symbols): Add offset parameter.
7492 (class Sized_relobj::local_symbol_offset_): Update comment.
7493 (class Sized_relobj::local_dynsym_offset_): Update comment.
7494 * options.cc (Input_arguments::add_file): Remove const.
7495 * options.h (Input_file_argument::Input_file_argument):
7496 Initialize arg_serial_ (all constructors).
7497 (Input_file_argument::set_arg_serial): New function.
7498 (Input_file_argument::arg_serial): New function.
7499 (Input_file_argument::arg_serial_): New data member.
7500 (Input_arguments::Input_arguments): Initialize file_count_.
7501 (Input_arguments::add_file): Remove const.
7502 (Input_arguments::number_of_input_files): New function.
7503 (Input_arguments::file_count_): New data member.
7504 (Command_line::number_of_input_files): Call
7505 Input_arguments::number_of_input_files.
7506 * output.cc (Output_segment_headers::Output_segment_headers):
7507 Set current size.
7508 (Output_section::Input_section::current_data_size): New function.
7509 (Output_section::Output_section): Initialize new data members.
7510 (Output_section::add_input_section): Don't do merge sections for
7511 an incremental link; allocate space from free list for an
7512 incremental update.
7513 (Output_section::add_output_section_data): Allocate space from
7514 free list for an incremental update.
7515 (Output_section::update_data_size): New function.
7516 (Output_section::set_fixed_layout): New function.
7517 (Output_section::reserve): New function.
7518 (Output_segment::set_section_addresses): Remove const.
7519 (Output_segment::set_section_list_addresses): Remove const; allocate
7520 space from free list for an incremental update.
7521 (Output_segment::set_offset): Adjust size of RELRO segment for an
7522 incremental update.
7523 * output.h (Output_data::current_data_size): Move here from
7524 child classes.
7525 (Output_data::pre_finalize_data_size): New function.
7526 (Output_data::update_data_size): New function.
7527 (Output_section_headers::update_data_size): new function.
7528 (Output_section_data_build::current_data_size): Move to Output_data.
7529 (Output_data_strtab::update_data_size): New function.
7530 (Output_section::current_data_size): Move to Output_data.
7531 (Output_section::set_fixed_layout): New function.
7532 (Output_section::has_fixed_layout): New function.
7533 (Output_section::reserve): New function.
7534 (Output_section::update_data_size): New function.
7535 (Output_section::has_fixed_layout_): New data member.
7536 (Output_section::free_list_): New data member.
7537 (Output_segment::set_section_addresses): Remove const.
7538 (Output_segment::set_section_list_addresses): Remove const.
7539 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
7540 New function.
7541 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
7542 New function.
7543 * readsyms.cc (Read_symbols::do_read_symbols): Add library
7544 parameter when calling Add_symbols constructor; store argument
7545 serial number for members of a lib group.
7546 (Add_symbols::locks): Allow case where token == NULL.
7547 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
7548 (Read_member::~Read_member): New function.
7549 (Read_member::is_runnable): New function.
7550 (Read_member::locks): New function.
7551 (Read_member::run): New function.
7552 (Check_script::~Check_script): New function.
7553 (Check_script::is_runnable): New function.
7554 (Check_script::locks): New function.
7555 (Check_script::run): New function.
7556 (Check_library::~Check_library): New function.
7557 (Check_library::is_runnable): New function.
7558 (Check_library::locks): New function.
7559 (Check_library::run): New function.
7560 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
7561 (Add_symbols::library_): New data member.
7562 (class Read_member): New class.
7563 (class Check_script): New class.
7564 (class Check_library): New class.
7565 * reloc.cc (Read_relocs::is_runnable): Allow case where
7566 token == NULL.
7567 (Read_relocs::locks): Likewise.
7568 (Scan_relocs::locks): Likewise.
7569 (Relocate_task::locks): Likewise.
7570 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
7571 to clear counters.
7572 (Sized_relobj::incremental_relocs_scan): Fix comment.
7573 (Sized_relobj::do_relocate): Pass output file offset to
7574 write_local_symbols.
7575 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
7576 from class declaration.
7577 * script.cc (read_input_script): Allocate Script_info; pass
7578 argument serial number to report_script.
7579 * script.h (class Script_info): Move to incremental.h.
7580 * symtab.cc (Symbol_table::add_from_incrobj): New function.
7581 * symtab.h (Symbol_table::add_from_incrobj): New function.
7582 (Symbol_table::set_file_offset): New function.
7583
b961d0d7
CC
75842011-04-05 Cary Coutant <ccoutant@google.com>
7585
7586 * incremental-dump.cc (dump_incremental_inputs): Change signature
7587 to take a Sized_incremental_binary; change caller. Use readers
7588 in Sized_incremental_binary.
7589 * incremental.cc
7590 (Sized_incremental_binary::find_incremental_inputs_sections):
7591 Rename do_find_incremental_inputs_sections to this.
7592 (Sized_incremental_binary::setup_readers): New function.
7593 (Sized_incremental_binary::do_check_inputs): Check
7594 has_incremental_info_ flag; move setup code to setup_readers;
7595 use input readers.
7596 (Sized_incremental_binary::do_file_is_unchanged): New function.
7597 (Sized_incremental_binary::do_get_input_reader): New function.
7598 * incremental.h (class Incremental_binary): Move to end of file.
7599 (Incremental_binary::file_is_unchanged): New function.
7600 (Incremental_binary::do_file_is_unchanged): New function.
7601 (Incremental_binary::Input_reader): New class.
7602 (Incremental_binary::get_input_reader): New function.
7603 (class Sized_incremental_binary): Move to end of file.
7604 (Sized_incremental_binary::Sized_incremental_binary): Setup the
7605 input section reader classes.
7606 (Sized_incremental_binary::has_incremental_info): New function.
7607 (Sized_incremental_binary::inputs_reader): New function.
7608 (Sized_incremental_binary::symtab_reader): New function.
7609 (Sized_incremental_binary::relocs_reader): New function.
7610 (Sized_incremental_binary::got_plt_reader): New function.
7611 (Sized_incremental_binary::do_file_is_unchanged): New function.
7612 (Sized_incremental_binary::Sized_input_reader): New class.
7613 (Sized_incremental_binary::get_input_reader): New function.
7614 (Sized_incremental_binary::find_incremental_inputs_sections):
7615 Rename do_find_incremental_inputs_sections to this.
7616 (Sized_incremental_binary::setup_readers): New function.
7617 (Sized_incremental_binary::has_incremental_info_): New data member.
7618 (Sized_incremental_binary::inputs_reader_): New data member.
7619 (Sized_incremental_binary::symtab_reader_): New data member.
7620 (Sized_incremental_binary::relocs_reader_): New data member.
7621 (Sized_incremental_binary::got_plt_reader_): New data member.
7622 (Sized_incremental_binary::current_input_file_): New data member.
7623
a869183f
PP
76242011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
7625
7626 PR gold/12640
7627 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
7628 violation.
7629
76302011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
7631
7632 * archive.cc (Archive::include_member): Adjust call to report_object.
7633 (Add_archive_symbols::run): Add script_info to call to
7634 report_archive_begin.
7635 (Lib_group::include_member): Adjust call to report_object.
7636 (Add_lib_group_symbols::run): Adjust call to report_object.
7637 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
7638 blocks. Add object count for script input files.
7639 * incremental.cc (Incremental_inputs::report_archive_begin): Add
7640 script_info parameter; change all callers.
7641 (Incremental_inputs::report_object): Add script_info parameter;
7642 change all callers.
7643 (Incremental_inputs::report_script): Store backpointer to
7644 incremental info entry.
7645 (Output_section_incremental_inputs::set_final_data_size): Record
7646 additional information for scripts.
7647 (Output_section_incremental_inputs::write_info_blocks): Likewise.
7648 * incremental.h (Incremental_script_entry::add_object): New function.
7649 (Incremental_script_entry::get_object_count): New function.
7650 (Incremental_script_entry::get_object): New function.
7651 (Incremental_script_entry::objects_): New data member; adjust
7652 constructor.
7653 (Incremental_inputs::report_archive_begin): Add script_info parameter.
7654 (Incremental_inputs::report_object): Add script_info parameter.
7655 (Incremental_inputs_reader::get_object_count): New function.
7656 (Incremental_inputs_reader::get_object_offset): New function.
7657 * options.cc (Input_arguments::add_file): Return reference to
7658 new input argument.
7659 * options.h (Input_argument::set_script_info): New function.
7660 (Input_argument::script_info): New function.
7661 (Input_argument::script_info_): New data member; adjust all
7662 constructors.
7663 (Input_file_group::add_file): Return reference to new input argument.
7664 (Input_file_lib::add_file): Likewise.
7665 (Input_arguments::add_file): Likewise.
7666 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
7667 * script.cc (Parser_closure::Parser_closure): Add script_info
7668 parameter; adjust all callers.
7669 (Parser_closure::script_info): New function.
7670 (Parser_closure::script_info_): New data member.
7671 (read_input_script): Report scripts earlier to incremental info.
7672 (script_add_file): Set script_info in Input_argument.
7673 (script_add_library): Likewise.
7674 * script.h (Script_options::Script_info): Rewrite class.
7675
a869183f 76762011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
7677
7678 * archive.cc (Library_base::should_include_member): Move
7679 method here from class Archive.
7680 (Archive::Archive): Initialize base class.
7681 (Archive::should_include_member): Move to base class.
7682 (Archive::do_for_all_unused_symbols): New function.
7683 (Add_archive_symbols::run): Remove redundant access to
7684 incremental_inputs.
7685 (Lib_group::Lib_group): Initialize base class.
7686 (Lib_group::do_filename): New function.
7687 (Lib_group::include_member): Pass pointer to Lib_group to
7688 report_object.
7689 (Lib_group::do_for_all_unused_symbols): New function.
7690 (Add_lib_group_symbols::run): Report archive information for
7691 incremental links.
7692 * archive.h (class Library_base): New base class.
7693 (class Archive): Derive from Library_base.
7694 (Archive::filename): Move to base class.
7695 (Archive::set_incremental_info): Likewise.
7696 (Archive::incremental_info): Likewise.
7697 (Archive::Should_include): Likewise.
7698 (Archive::should_include_member): Likewise.
7699 (Archive::Armap_entry): Remove.
7700 (Archive::Unused_symbol_iterator): Remove.
7701 (Archive::unused_symbols_begin): Remove.
7702 (Archive::unused_symbols_end): Remove.
7703 (Archive::do_filename): New function.
7704 (Archive::do_get_mtime): New function.
7705 (Archive::do_for_all_unused_symbols): New function.
7706 (Archive::task_): Move to base class.
7707 (Archive::incremental_info_): Likewise.
7708 (class Lib_group): Derive from Library_base.
7709 (Lib_group::do_filename): New function.
7710 (Lib_group::do_get_mtime): New function.
7711 (Lib_group::do_for_all_unused_symbols): New function.
7712 (Lib_group::task_): Move to base class.
7713 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
7714 function.
7715 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
7716 function.
7717 * incremental.cc (Incremental_inputs::report_archive_begin):
7718 Use Library_base; call library's get_mtime; add incremental inputs
7719 entry before members.
7720 (class Unused_symbol_visitor): New class.
7721 (Incremental_inputs::report_archive_end): Use Library_base; use
7722 visitor class to record unused symbols; don't add incremental inputs
7723 entry after members.
7724 (Incremental_inputs::report_object): Use Library_base.
7725 * incremental.h
7726 (Incremental_archive_entry::Incremental_archive_entry): Remove
7727 unused Archive parameter.
7728 (Incremental_inputs::report_archive_begin): Use Library_base.
7729 (Incremental_inputs::report_archive_end): Likewise.
7730 (Incremental_inputs::report_object): Likewise.
7731 * object.cc (Sized_relobj::do_for_all_global_symbols): New
7732 function.
7733 * object.h (Object::for_all_global_symbols): New function.
7734 (Object::do_for_all_global_symbols): New function.
7735 (Sized_relobj::do_for_all_global_symbols): New function.
7736 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
7737 function.
7738 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
7739 function.
7740
61ab3e40
ILT
77412011-03-27 Ian Lance Taylor <iant@google.com>
7742
7743 * archive.cc (Archive::interpret_header): Return -1 if something
7744 goes wrong. Change callers accordingly.
7745
30e1f9e6
CC
77462011-03-25 Cary Coutant <ccoutant@google.com>
7747
7748 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
7749 * testsuite/Makefile.in: Regenerate.
7750
9370ce59 77512011-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
9c793f14
RÁE
7752
7753 * plugin.cc (get_view): New.
7754 (Plugin::load): Pass get_view to the plugin.
7755 (Plugin_manager::get_view): New.
7756
9312bb0a
ILT
77572011-03-21 Ian Lance Taylor <iant@google.com>
7758
7759 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 7760 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 7761
7e12ba9e
ST
77622011-03-21 Sriraman Tallam <tmsriram@google.com>
7763
7764 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
7765 Change == to -eq.
7766 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
7767 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
7768 Change == to -eq.
7769 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
7770 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
7771
fd7a005d
ILT
77722011-03-14 Ian Lance Taylor <iant@google.com>
7773
7774 * script-sections.cc (Sort_output_sections::script_compare):
7775 Rename from is_before, change return type.
7776 (Sort_output_sections::operator()): Adjust accordingly.
7777
ed16fd1b
ILT
77782011-03-11 Jeffrey Yasskin <jyasskin@google.com>
7779
7780 PR gold/12572
7781 * testsuite/odr_violation2.cc: Add comment to make all error line
7782 numbers double digits.
7783 * testsuite/debug_msg.sh: Adjust expected errors.
7784
71ff8986
ILT
77852011-03-09 Jeffrey Yasskin <jyasskin@google.com>
7786
7787 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
7788 but mark earlier ones as non-canonical
7789 (offset_to_iterator): Update search target and example
7790 (do_addr2line): Return extra lines in a vector*
7791 (format_file_lineno): Extract from do_addr2line
7792 (one_addr2line): Add vector* out-param
7793 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
7794 when a lineno entry appeared last for its instruction
7795 (Dwarf_line_info): Add vector* out-param
7796 * object.cc (Relocate_info): Pass NULL for the vector* out-param
7797 * symtab.cc (Odr_violation_compare): Include the lineno in the
7798 comparison again.
7799 (linenos_from_loc): New. Combine the canonical line for an
7800 address with its other lines.
7801 (True_if_intersect): New. Helper functor to make
7802 std::set_intersection a query.
7803 (detect_odr_violations): Compare sets of lines instead of just
7804 one line for each function. This became less deterministic, but
7805 has fewer false positives.
7806 * symtab.h: Declarations.
7807 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
7808 mix an optimized and non-optimized object in the same binary
7809 (odr_violation2.so): Same.
7810 * testsuite/Makefile.in: Regenerate from Makefile.am.
7811 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
7812 * testsuite/debug_msg.sh: Update line numbers and add
7813 assertions.
7814 * testsuite/odr_violation1.cc: Use OdrDerived, in a
7815 non-optimized context.
7816 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
7817 isn't inlined, and use OdrDerived in an optimized context.
7818 * testsuite/odr_header1.h: Defines OdrDerived, where
7819 optimization will change the
7820 first-instruction-in-the-destructor's file and line number.
7821 * testsuite/odr_header2.h: Defines OdrBase.
7822
a19fefdc
ILT
78232011-03-09 Ian Lance Taylor <iant@google.com>
7824
7825 * fileread.cc (File_read::clear_views): Don't delete the whole
7826 file view.
7827
ecb351e9
ILT
78282011-03-08 Ian Lance Taylor <iant@google.com>
7829
7830 PR gold/12525
7831 * fileread.cc: #include <climits>.
7832 (GOLD_IOV_MAX): Define.
7833 (File_read::read_multiple): Limit number of entries by iov_max.
7834 * fileread.h (class File_read): Always set max_readv_entries to
7835 128.
7836
b821d13c
ILT
78372011-03-07 Ian Lance Taylor <iant@google.com>
7838
7839 PR gold/12525
7840 * options.h (class General_options): Add -dy and -dn.
7841
89243142
CC
78422011-03-02 Cary Coutant <ccoutant@google.com>
7843
7844 * testsuite/script_test_9.t: Add TLS segment.
7845
d0773f31
ILT
78462011-03-02 Simon Baldwin <simonb@google.com>
7847
7848 * configure.ac: Add check for gnu_indirect_function support in
7849 the toolchain building binutils.
7850 * configure: Rebuild.
7851
9370ce59 78522011-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
badc8139
RÁE
7853
7854 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
7855 plugin only symbols.
7856 (Symbol_table::sized_finalize_symbol) Mark symbol only present
7857 in plugin files as not needed in the symbol table.
7858
4cf7a849
ST
78592011-02-11 Sriraman Tallam <tmsriram@google.com>
7860
7861 * output.cc (Output_section::add_input_section): Delay fill
7862 generation for section ordering.
7863
b578bd7d
ILT
78642011-02-09 Ian Lance Taylor <iant@google.com>
7865
7866 PR gold/12316
7867 * object.h (class Sized_relobj): Remove clear_local_symbols.
7868 * reloc.cc (Sized_relobj::do_relocate): Don't call
7869 clear_local_symbols.
7870
9370ce59 78712011-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
84ced98a
RÁE
7872
7873 * plugin.cc (is_visible_from_outside): Return true for symbols
7874 in the -u option.
7875
55382fb7
ILT
78762011-02-04 Jeffrey Yasskin <jyasskin@google.com>
7877
7878 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
7879 filename.
7880
4e271fff
ST
78812011-02-02 Sriraman Tallam <tmsriram@google.com>
7882
7883 * icf.h (is_section_foldable_candidate): Change type of parameter
2e702c99 7884 to std::string.
4e271fff 7885 * icf.cc (Icf::find_identical_sections): Change type of local variable
2e702c99 7886 section_name to be std::string.
4e271fff
ST
7887 (is_function_ctor_or_dtor): Change type of parameter to std::string.
7888
d433c3ac
ILT
78892011-01-25 Ian Lance Taylor <iant@google.com>
7890
7891 * script.cc (script_add_extern): Rewrite to use
7892 add_symbol_reference.
7893
880473a6
DK
78942011-01-25 Doug Kwan <dougkwan@google.com>
7895
d433c3ac 7896 * icf.cc (get_section_contents): Always lock section's object.
880473a6 7897
f30f86fa
ILT
78982011-01-24 Ian Lance Taylor <iant@google.com>
7899
7900 * options.h (class General_options): Accept
7901 --no-detect-odr-violations.
7902
8e51a0b9
ILT
79032011-01-24 Ian Lance Taylor <iant@google.com>
7904
7905 * version.cc (version_string): Bump to 1.11.
7906
0f3b89d8
ILT
79072011-01-24 Ian Lance Taylor <iant@google.com>
7908
7909 * plugin.cc (class Plugin_rescan): Define new class.
7910 (Plugin_manager::claim_file): Set any_claimed_.
7911 (Plugin_manager::save_archive): New function.
7912 (Plugin_manager::save_input_group): New function.
7913 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
7914 necessary.
7915 (Plugin_manager::new_undefined_symbol): New function.
7916 (Plugin_manager::rescan): New function.
7917 (Plugin_manager::rescannable_defines): New function.
7918 (Plugin_manager::add_input_file): Set any_added_.
7919 * plugin.h (class Plugin_manager): define new fields rescannable_,
7920 undefined_symbols_, any_claimed_, and any_added_. Declare
7921 Plugin_rescan as friend. Declare new functions.
7922 (Plugin_manager::Rescannable): Define type.
7923 (Plugin_manager::Rescannable_list): Define type.
7924 (Plugin_manager::Undefined_symbol_list): Define type.
7925 (Plugin_manager::Plugin_manager): Initialize new fields.
7926 * archive.cc (Archive::defines_symbol): New function.
7927 (Add_archive_symbols::run): Pass archive to plugins if any.
7928 * archive.h (class Archive): Declare defines_symbol.
7929 * readsyms.cc (Input_group::~Input_group): New function.
7930 (Finish_group::run): Pass input_group to plugins if any.
7931 * readsyms.h (class Input_group): Declare destructor.
7932 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
7933 any.
7934
3bb951e5
ILT
79352011-01-10 Ian Lance Taylor <iant@google.com>
7936
7937 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
7938 section as relro.
7939 (Layout::set_segment_offsets): Reset increase_relro before calling
7940 set_section_addresses a second time.
7941
0aa45fac
CC
79422011-01-04 Cary Coutant <ccoutant@google.com>
7943
7944 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
7945 sections before NOBITS sections.
7946
0db46eb4
L
79472011-01-01 H.J. Lu <hongjiu.lu@intel.com>
7948
7949 * version.cc (print_version): Update copyright to 2011.
7950
829c9745
CC
79512010-12-23 Cary Coutant <ccoutant@google.com>
7952
7953 * output.h (Output_data_reloc::add_output_section): Pass OD instead
7954 of OS to this->add. Add OD parameter to second form of the function.
7955
7500420b
ILT
79562010-12-20 Ian Lance Taylor <iant@google.com>
7957
7958 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
7959 second of two consecutive entries with same offset.
7960
f8e9a930
RW
79612010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7962
7963 * testsuite/Makefile.am (ifuncmain2static_LDADD)
7964 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
7965 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
7966 to avoid unneeded links against $(LDADD).
7967 * testsuite/Makefile.in: Regenerate.
7968
2fbb4320
ILT
79692010-12-15 Ian Lance Taylor <iant@google.com>
7970
7971 PR gold/12324
7972 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
7973 for R_X86_64_32 and R_X86_64_PC32.
7974 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
7975 ver_matching_def_pic.o.
7976 (ver_matching_def_pic.o): New target.
7977
fedb228d
RW
79782010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7979
7980 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
7981 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
7982 Move definition before File_read::View member definitions.
7983 (File_read::View::~View): Initialize and hold lock before
7984 updating current_mapped_bytes.
7985
9b547ce6
RW
79862010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7987
7988 * dwarf_reader.cc: Remove outdated comment.
7989 * gold-threads.cc: Fix typo in error message.
7990 * archive.cc: Fix typos in comments.
7991 * archive.h: Likewise.
7992 * arm-reloc-property.cc: Likewise.
7993 * arm-reloc-property.h: Likewise.
7994 * arm-reloc.def: Likewise.
7995 * arm.cc: Likewise.
7996 * attributes.h: Likewise.
7997 * cref.cc: Likewise.
7998 * ehframe.cc: Likewise.
7999 * fileread.h: Likewise.
8000 * gold.h: Likewise.
8001 * i386.cc: Likewise.
8002 * icf.cc: Likewise.
8003 * incremental.h: Likewise.
8004 * int_encoding.cc: Likewise.
8005 * layout.h: Likewise.
8006 * main.cc: Likewise.
8007 * merge.h: Likewise.
8008 * object.cc: Likewise.
8009 * object.h: Likewise.
8010 * options.cc: Likewise.
8011 * readsyms.cc: Likewise.
8012 * reduced_debug_output.cc: Likewise.
8013 * reloc.cc: Likewise.
8014 * script-sections.cc: Likewise.
8015 * sparc.cc: Likewise.
8016 * symtab.h: Likewise.
8017 * target-reloc.h: Likewise.
8018 * target.cc: Likewise.
8019 * target.h: Likewise.
8020 * timer.cc: Likewise.
8021 * timer.h: Likewise.
8022 * x86_64.cc: Likewise.
8023
83e17bd5
CC
80242010-12-09 Cary Coutant <ccoutant@google.com>
8025
8026 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
8027 stack.
8028 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
8029 parameter; change all callers.
8030 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
8031 * options.h (warn_execstack): New option.
8032
017257f8
DK
80332010-12-07 Doug Kwan <dougkwan@google.com>
8034
8035 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
8036 like function call relocations.
8037
c20cbc06
ILT
80382010-12-07 Ian Lance Taylor <iant@google.com>
8039
8040 * archive.cc (Archive::get_elf_object_for_member): Permit
8041 punconfigured to be NULL.
8042 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
8043 (Archive::include_member): Pass NULL to get_elf_object_for_member
8044 if we searched for the archive and this is the first included
8045 object.
8046
4dbfafcc
ILT
80472010-12-01 Ian Lance Taylor <iant@google.com>
8048
8049 * dwarf_reader.h (class Sized_dwarf_line_info): Add
8050 track_relocs_type_ field.
8051 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
8052 Set track_relocs_type_.
8053 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
8054 contents when using RELA relocs.
8055 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
8056 reloc_map_.
8057 * reloc.cc (Track_relocs::next_addend): New function.
8058 * reloc.h (class Track_relocs): Declare next_addend.
8059
e5e19edd
ILT
80602010-12-01 Ian Lance Taylor <iant@google.com>
8061
8062 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
8063 virtual destructor.
8064
9a5ce24c
ILT
80652010-12-01 Ian Lance Taylor <iant@google.com>
8066
8067 * README: Update compilers known to work and fail.
8068
c7791212
NC
80692010-11-23 Matthias Klose <doko@ubuntu.com>
8070
8071 * configure.in: For --enable-gold, handle value `default' instead of
8072 `both*'. Always install ld as ld.bfd, install as ld if gold is
8073 not the default.
8074 * configure: Regenerate.
8075
0ad220c9
DK
80762010-11-18 Doug Kwan <dougkwan@google.com>
8077
8078 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
8079 and right_alignment to be zero. Store result alignment only if it is
8080 greater than existing alignment.
8081
ab8056e0
CC
80822010-11-16 Cary Coutant <ccoutant@google.com>
8083
8084 PR gold/12220
8085 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
8086 Check for ".zdebug_line".
8087
fd064a5b
CC
80882010-11-16 Doug Kwan <dougkwan@google.com>
8089 Cary Coutant <ccoutant@google.com>
8090
8091 * output.h (Output_segment::set_section_addresses): Pass increase_relro
8092 by reference; adjust all callers.
8093 * output.cc (Output_segment::set_section_addresses): Adjust references
8094 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
8095 list is empty.
8096 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
8097 end at page boundary.
8098
6fc6ea19
CC
80992010-11-16 Cary Coutant <ccoutant@google.com>
8100
8101 PR gold/12220
8102 * layout.cc (Layout::choose_output_section): Transform names of
8103 compressed sections even when using a script with a SECTIONS clause.
8104 (Layout::output_section_name): Remove code to transform
8105 compressed debug section names.
8106 * output.cc (Output_section::add_input_section): Use uncompressed
8107 section size when tracking input sections.
8108
95a2c8d6
RS
81092010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
8110
8111 * symtab.h (Symbol::NON_PIC_REF): Remove.
8112 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
8113 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
8114 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
8115 (Symbol::use_plt_offset): Take a flags argument and pass it
8116 directly to needs_dynamic_reloc. Restrict check for undefined
8117 weak symbols to function calls.
8118 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
8119 (Target_arm::Scan::global): Use it.
8120 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
8121 (Target_arm::Relocate::relocate): Likewise.
8122 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
8123 parameter with an r_type parameter. Use get_reference_flags
8124 to get the flags.
8125 (Target_arm::Relocate::relocate): Update accordingly.
8126 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
8127 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
8128 (Target_i386::Scan::global): Likewise.
8129 (Target_i386::Relocate::relocate): Likewise.
8130 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
8131 parameter with an r_type parameter. Use get_reference_flags
8132 to get the flags.
8133 (Target_i386::Relocate::relocate): Update accordingly.
8134 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
8135 (Target_powerpc::Scan::global): Use it.
8136 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
8137 (Target_powerpc::Relocate::relocate): Likewise.
8138 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
8139 (Target_sparc::Scan::global): Use it.
8140 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
8141 (Target_sparc::Relocate::relocate): Likewise.
8142 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
8143 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
8144 (Target_x86_64::Scan::global): Likewise.
8145 (Target_x86_64::Relocate::relocate): Likewise.
8146
f625ae50
DK
81472010-11-08 Doug Kwan <dougkwan@google.com>
8148 Cary Coutant <ccoutant@google.com>
8149
8150 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
8151 (Arm_exidx_merge_section::section_contents_): New data member.
8152 (Arm_input_section::Arm_input_section): Initialize original_contents_.
8153 (Arm_input_section::~Arm_input_section): De-allocate memory.
58797674 8154 (Arm_input_section::original_contents_): New data member.
f625ae50
DK
8155 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
8156 in parameters instead of calling Object::section_contents without
8157 locking.
8158 (Arm_output_section::group_section): New parameter TASK. Pass it
8159 to callees that need locking objects.
8160 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
8161 to lock EXIDX input sections. Fix a formatting issue. Call
8162 Arm_exidx_merged_section::build_contents to create merged section
8163 contents.
8164 (Arm_output_section::create_stub_group): New parameter TASK. Use it
8165 to lock object of stub table owner.
8166 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
8167 TEXT_SIZE to initialize data member TEXT_SIZE_.
8168 (Arm_exidx_input_section::addralign): Fix typo in comment.
8169 (Arm_exidx_input_section::text_size): New method.
8170 (Target_arm::do_relax): New parameter TASK. Pass it to callees
8171 that require locking objects. Lock objects before scanning for stubs
8172 and updating local symbols.
8173 (Arm_input_section<big_endian>::init): Copy contents of original
8174 input section.
2e702c99 8175 (Arm_input_section<big_endian>::do_write): Use saved contents of
f625ae50
DK
8176 original input section instead of calling Object::section_contents
8177 without locking.
8178 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
8179 size without calling Object::section_size().
8180 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
8181 for size. Allocate a buffer for merged EXIDX entries.
8182 (Arm_exidx_merged_section::build_contents): New method.
2e702c99 8183 (Arm_exidx_merged_section::do_write): Move merge section contents
f625ae50
DK
8184 building code to Arm_exidx_merged_section::build_contetns. Write
8185 out contetns in buffer instead of building it on the fly.
8186 (Arm_relobj::make_exidx_input_section): Also pass text section size
8187 to Arm_exidx_input_section constructor.
8188 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
8189 (Arm_dynobj::do_read_symbols): Fix memory leak.
8190 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
8191 * target.h: (class Task): Add forward declaration.
8192 (Target::relax): Add new parameter TASK and pass it to
8193 Target::do_relax().
8194 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
8195
5f9bcf58
CC
81962010-11-05 Cary Coutant <ccoutant@google.com>
8197
8198 PR gold/10708
8199 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
8200 object when reading from the file.
8201 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
8202 second layout pass.
8203 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
8204 when reading section contents.
8205 (get_section_contents): Likewise.
8206 (icf::find_identical_sections): Likewise.
8207 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
8208 object when reading from the file.
8209 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
8210 the object when doing deferred section layout.
8211
e597fa08
NC
82122010-11-03 Nick Clifton <nickc@redhat.com>
8213
8214 PR gold/12001
8215 * script.h (class Symbol_assignment: name): New member. Returns
8216 the name of the symbol.
8217 * scrfipt.cc (Script_options::is_pending_assignment): New member.
8218 Returns true if the given symbol name is on the list of
8219 assignments wating to be processed.
8220 * archive.cc (should_incldue_member): If the symbol is undefined,
8221 check to see if it is on the list of symbols pending assignment.
8222
3f9a3278
ILT
82232010-11-03 Ryan Mansfield <rmansfield@qnx.com>
8224
8225 * script-sections.cc (Script_sections::find_memory_region): Check
8226 for a NULL output section pointer.
8227
d06fb4d1
DK
82282010-10-29 Doug Kwan <dougkwan@google.com>
8229
8230 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
8231 Output_section::add_relaxed_input_section.
8232 * output.cc (Output_section::add_relaxed_input_section): Add new
8233 arguments LAYOUT and NAME. Set section order index.
8234 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
8235 Copy section order index.
8236 * output.h (Output_section::add_relaxed_input_section): Add new
8237 arguments LAYOUT and NAME.
8238
90e24de5
ILT
82392010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8240
8241 * testsuite/Makefile.am: Move gcctestdir/ld rule to
2e702c99 8242 NATIVE_OR_CROSS_LINKER.
90e24de5
ILT
8243 * testsuite/Makefile.in: Regenerate.
8244
c9484ea5
DK
82452010-10-20 Doug Kwan <dougkwan@google.com>
8246
8247 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
8248 without SHF_LINK_ORDER flags.
8249 * layout.cc (Layout::choose_output_section): Do not filter
8250 SHF_LINK_ORDER flag in a relocatable link.
8251
5bc2f5be
CC
82522010-10-17 Cary Coutant <ccoutant@google.com>
8253
8254 * output.h (Output_segment::set_section_addresses): Change function
8255 signature. Update all callers.
8256 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
8257 sections.
8258 (Output_segment::set_section_addresses): Align after last TLS
8259 section. Add padding before last relro section instead of after.
8260
0c91cf04
DK
82612010-10-17 Doug Kwan <dougkwan@google.com>
8262
8263 * gold/arm.cc (Target_arm::got_section): Use correct order and set
8264 GOT output section to be writable.
8265
8c21d9d3
CC
82662010-10-14 Cary Coutant <ccoutant@google.com>
8267
8268 * debug.h (DEBUG_INCREMENTAL): New flag.
2e702c99
RM
8269 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
8270 * gold.cc (queue_initial_tasks): Check parameters for incremental link
8271 mode.
8272 * incremental.cc (report_command_line): Ignore all forms of
8273 --incremental.
8274 * layout.cc (Layout::Layout): Check parameters for incremental link
8275 mode.
8276 * options.cc (General_options::parse_incremental): New function.
8277 (General_options::parse_no_incremental): New function.
8278 (General_options::parse_incremental_full): New function.
8279 (General_options::parse_incremental_update): New function.
8280 (General_options::incremental_mode_): New data member.
8281 (General_options::finalize): Check incremental_mode_.
8282 * options.h (General_options): Update help text for --incremental.
8283 Add --no-incremental, --incremental-full, --incremental-update.
8284 (General_options::Incremental_mode): New enum type.
8285 (General_options::incremental_mode): New function.
8286 (General_options::incremental_mode_): New data member.
8287 * parameters.cc (Parameters::incremental_mode_): New data member.
8288 (Parameters::set_options): Set incremental_mode_.
8289 (Parameters::set_incremental_full): New function.
8290 (Parameters::incremental): New function.
8291 (Parameters::incremental_update): New function.
8292 (set_parameters_incremental_full): New function.
8293 * parameters.h (Parameters::set_incremental_full): New function.
8294 (Parameters::incremental): New function.
8295 (Parameters::incremental_update): New function.
8296 (Parameters::incremental_mode_): New data member.
8297 (set_parameters_incremental_full): New function.
8298 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
8299 incremental link mode.
8300 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
8301 (Sized_relobj::do_relocate_sections): Likewise.
8302 * testsuite/Makefile.am (incremental_test): Use --incremental-full
8303 option.
8304 * testsuite/Makefile.in: Regenerate.
8305 * testsuite/incremental_test.sh: Filter all forms of --incremental.
8c21d9d3 8306
bb32aa18 83072010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
8308
8309 * script-sections.h (class Script_sections): Make
8310 Sections_elements typedef public.
8311 * script-sections.cc (class Sort_output_sections): Add elements_
8312 field. Add constructor which sets it; change all callers.
8313 (Sort_output_sections::is_before): New function.
8314 (Sort_output_sections::operator()): Call is_before.
8315 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
8316 conditional.
8317 * testsuite/script_test_10.sh: New test. Test script section
8318 order.
8319 * testsuite/script_test_10.t: Likewise.
8320 * testsuite/script_test_10.s: Likewise.
8321 * testsuite/Makefile.am: Wrap the cross linker tests and the
8322 common tests into NATIVE_OR_CROSS_LINKER.
8323 (check_SCRIPTS): Add script_test_10.sh.
8324 (check_DATA): Add script_test_10.stdout.
8325 (script_test_10.o, script_test_10): New targets.
8326 (script_test_10.stdout): New target.
8327 * configure, testsuite/Makefile.in: Regenerate.
8328
3cef7179
ILT
83292010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8330
8331 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
8332 error for the deprecated relocations.
8333 (Target_arm::Scan::global): Likewise.
8334 (Target_arm::Relocate::relocate): Likewise.
8335
7411e9a8
RS
83362010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
8337
8338 * fileread.cc (Input_file::find_file): Initialize *found_name
8339 and *namep when using the fallback search for case 4.
8340
6a9da32a
CC
83412010-10-11 Cary Coutant <ccoutant@google.com>
8342
8343 * options.h (class General_options): Redefine -z lazy as an alias for
8344 the negation of -z now.
8345
ac897c20
ILT
83462010-10-11 Ian Lance Taylor <iant@google.com>
8347
8348 * resolve.cc (symbol_to_bits): Report the value of the unsupported
8349 binding.
8350
ea5cae92
NC
83512010-10-06 Nick Clifton <nickc@redhat.com>
8352
8353 * script-sections.cc(class Memory_region): Remove
8354 current_lma_offset_ field. Rename current_vma_offset_ to
8355 current_offset_. Add last_section_ field.
8356 (Memory_region::get_current_vma_address): Rename to
8357 get_current_address.
8358 (Memory_region::get_current_lma_address): Delete.
8359 (Memory_region::increment_vma_offset): Rename to
8360 increment_offset.
8361 (Memory_region::increment_lma_offset): Delete.
8362 (Memory_region::attributes_compatible): New method. Returns
8363 true if the provided section is compatible with the region.
8364 (Memory_region::get_last_section): New method. Returns the last
8365 section to use the region.
8366 (Memory_region::set_last_section): New method. Stores the last
8367 section to use the region.
8368 (Script_sections::block_in_region): New method. Returns true if
8369 a block of memory is contained within a region.
8370 (Script_sections::find_memory_region): New method. Locates a
8371 memory region to be used to set a VMA or LMA address.
8372 (Output_section_definition::set_section_addresses): Add code to
8373 check for addresses set by memory regions.
8374 (Output_segment::set_section_addresses): Remove memory region
8375 walking code.
8376 (Script_sections::create_segment): Add a warning if a header
8377 segment is created outside of any region.
8378 * script-sections.h (class Script_sections): Add prototypes for
8379 find_memory_region and block_in_region methods.
8380 * testsuite/memory_test.s: Use .long instead of .word.
8381 * testsuite/memory_test.t: Add some more output sections.
8382 * testsuite/memory_test.sh: Update expected output.
8383
a9bfd952
DK
83842010-10-02 Doug Kwan <dougkwan@google.com>
8385
8386 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
8387 defintion to symtab.h
8388 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
8389 declaration to defintion.
8390
bacff3ab
NC
83912010-10-01 Nick Clifton <nickc@redhat.com>
8392
8393 * expression.cc (eval): Replace dummy argument with NULL.
8394 (eval_maybe_dot): Check for a NULL result section pointer.
8395 (Symbol_expression::value): Likewise.
8396 (Dot_expression::value): Likewise.
8397 (BINARY_EXPRESSION): Likewise.
8398 (Max_expression::value): Likewise.
8399 (Min_expression::value): Likewise.
8400 (Absolute_expression::value): Likewise.
8401 (Addr_expression::value_from_output_section): Likewise.
8402 (Loaddddr_expression::value_from_output_section): Likewise.
8403 (Segment_start_expression::value): Likewise.
8404 * script-sections.cc
8405 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
8406 argument with NULL.
8407 (Sections_elememt_dot_assignment::set_section_addresses):
8408 Likewise.
8409 (Output_data_expression::do_write_to_buffer): Likewise.
8410 (Output_section_definition::finalize_symbols): Likewise.
8411 (Output_section_definition::set_section_addresses): Likewise.
8412
f81bc8b5
DK
84132010-09-30 Doug Kwan <dougkwan@google.com>
8414
8415 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
8416
c95e9f27
ST
84172010-09-28 Sriraman Tallam <tmsriram@google.com>
8418
8419 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 8420 function.
c95e9f27
ST
8421 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
8422 virtual function.
8423 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
8424 virtual function.
8425 * icf.cc (get_section_contents): Inline merge sections only when
8426 target allows it.
8427
3cac54d2
RW
84282010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8429
8430 * configure: Regenerate.
8431
2904037a
ILT
84322010-09-17 Ian Lance Taylor <iant@google.com>
8433
8434 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
8435 * testsuite/Makefile.am (memory_test.o): New target.
8436 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
8437 memory_test.t.
8438 * testsuite/Makefile.in: Rebuild.
2904037a 8439
bca7fb63
DK
84402010-09-17 Doug Kwan <dougkwan@google.com>
8441
8442 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
8443 defintion if relocation uses GOT entries of the symbol.
8444 * testsuite/icf_safe_test.sh: Fix test.
8445 * testsuite/icf_safe_so_test.sh: Fix test.
8446
4ef28648
CC
84472010-09-16 Cary Coutant <ccoutant@google.com>
8448
8449 * script_sections.cc (class Memory_region): Remove "NULL" from
8450 vector initializations.
8451
793990de
CC
84522010-09-15 Cary Coutant <ccoutant@google.com>
8453
8454 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
8455 Resolve forwarding symbols.
8456
81e015e2
DK
84572010-09-15 Doug Kwan <dougkwan@google.com>
8458
8459 * gold/testsuite/script_test_3.t: Add ARM special sections.
8460 * gold/testsuite/script_test_4.t: Same.
8461 * gold/testsuite/script_test_5.t: Same.
8462 * gold/testsuite/script_test_6.t: Same.
8463 * gold/testsuite/script_test_7.t: Same.
8464 * gold/testsuite/script_test_7.t: Same.
8465 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
8466
36171d64
CC
84672010-09-14 Cary Coutant <ccoutant@google.com>
8468
8469 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
8470 (Target_x86_64::Relocate::relocate_tls): Replace check for
8471 saw_tls_block_reloc_ with test for executable section.
8472
d89051bd
CC
84732010-09-12 Cary Coutant <ccoutant@google.com>
8474
8475 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
8476 position-independent executables to shared libraries need dynamic
8477 relocations.
8478 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
8479 position-independent executables.
8480 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
8481 * testsuite/Makefile.in: Regenerate.
8482
fca41f0f
NC
84832010-09-10 Nick Clifton <nickc@redhat.com>
8484
8485 PR gold/11997
8486 * testsuite/memory_test.t: Discard any sections that are not
8487 needed.
8488
6695e4b3
L
84892010-09-09 H.J. Lu <hongjiu.lu@intel.com>
8490
8491 PR gold/11996
8492 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
8493 "This::" to work around a bug in gcc 4.2.
8494
8495 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
8496
0f72bf6f
RÁE
84972010-09-09 Rafael Espindola <espindola@google.com>
8498
8499 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
8500 sections with different PF_X flags in the same segment.
8501 (Layout::find_first_load_seg): Search all segments to find the first
8502 one.
8503 * options.h (rosegment): New.
8504
85052010-09-08 Rafael Espindola <espindola@google.com>
a6577478 8506
05a79166 8507 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 8508
aa98ff75
DK
85092010-09-08 Doug Kwan <dougkwan@google.com>
8510
8511 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
8512 (Arm_relobj::do_relocate_sections): Add new parameter for output
8513 file to match the parent.
8514 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
8515 of local symbols instead of input values. Update code to track
8516 changes in gold::relocate_section.
8517 * object.cc (Sized_relobj::compute_final_local_value): New methods.
8518 (Sized_relobj::compute_final_local_value_internal): New methods.
8519 (Sized_relobj::do_finalize_local_symbols): Move code from loop
8520 body into private version of Sized_relobj::compute_final_local_value.
8521 Call the inline method.
8522 * object.h (Symbol_value::Symbol_value): Define destructor. Free
8523 merged symbol value if there is one.
8524 (Symbol_value::has_output_value): New method defintiion.
8525 (Sized_relobj::Compute_final_local_value_status): New enum type.
8526 (Sized_relobj::compute_final_local_value): New methods.
8527 (Sized_relobj::compute_final_local_value_internal): New methods.
8528 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
8529 and arm_cortex_a8.sh.
8530 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
8531 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
8532 New tests.
8533 * Makefile.in: Regenerate.
8534 * testsuite/arm_bl_out_of_range.s: Update test.
8535 * testsuite/thumb_bl_out_of_range.s: Ditto.
8536 * testsuite/thumb_blx_out_of_range.s: Ditto.
8537 * testsuite/arm_branch_out_of_range.sh: New file.
8538 * testsuite/arm_cortex_a8.sh: Ditto.
8539 * testsuite/arm_cortex_a8_b.s: Ditto.
8540 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
8541 * testsuite/arm_cortex_a8_b_local.s: Ditto.
8542 * testsuite/arm_cortex_a8_bl.s: Ditto.
8543 * testsuite/arm_cortex_a8_blx.s: Ditto.
8544 * testsuite/arm_cortex_a8_local.s: Ditto.
8545 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
8546 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
8547
05a79166
L
85482010-09-08 Rafael Espindola <espindola@google.com>
8549
8550 * Makefile.am (memory_test.stdout): Run readelf with -W.
8551 * Makefile.in: Regenerate.
8552 * testsuite/memory_test.sh: Make the regexps accept both 32 and
8553 64 bit output.
8554
33dbc701
RÁE
85552010-09-08 Rafael Espindola <espindola@google.com>
8556
8557 * script-sections.cc (Script_sections::add_memory_region): Convert
8558 field precision to int.
8559 * script.cc (script_set_section_region, script_set_section_region):
8560 Convert field precision to int.
8561
731ca54a
RÁE
85622010-09-08 Rafael Espindola <espindola@google.com>
8563
8564 * arm.cc (do_finalize_sections): Create the __exidx_start and
8565 __exdix_end symbols even when the section is missing.
8566
7f8cd844
NC
85672010-09-08 Nick Clifton <nickc@redhat.com>
8568
8569 * README: Remove claim that MEMORY is not supported.
8570 * expression.cc (script_exp_function_origin)
8571 (script_exp_function_length): Move from here to ...
8572 * script.cc: ... here.
8573 (script_set_section_region, script_add_memory)
8574 (script_parse_memory_attr, script_include_directive): New
8575 functions.
8576 * script-sections.cc
8577 (class Memory_region): New class.
8578 (class Output_section_definition): Add set_memory_region,
8579 set_section_vma, set_section_lma and get_section_name methods.
8580 (class Script_Sections): Add add_memory_region,
8581 find_memory_region, find_memory_region_origin,
8582 find_memory_region_length and set_memory_region methods.
8583 Have set_section_addresses method walk the list of set memory
8584 regions.
8585 Extend the print methos to display memory regions.
8586 * script-sections.h: Add prototypes for new methods.
8587 Add enum for MEMORY region attributes.
8588 * yyscript.y: Add support for parsing MEMORY regions.
8589 * script-c.h: Add prototypes for new functions.
8590 * testsuite/Makefile.am: Add test of MEMORY region functionality.
8591 * testsuite/Makefile.in: Regenerate.
8592 * testsuite/memory_test.sh: New script.
8593 * testsuite/memory_test.s: New assembler source file.
8594 * testsuite/memory_test.t: New linker script.
8595
a4649286
DK
85962010-08-27 Doug Kwan <dougkwan@google.com>
8597
8598 * gold/resolve.cc (Symbol_table::should_override): Let a weak
8599 reference override an existing dynamic weak reference.
8600 * testsuite/Makefile.am: Add new test dyn_weak_ref.
8601 * testsuite/Makefile.in: Regenerate.
8602 * testsuite/dyn_weak_ref.sh: New file.
8603 * testsuite/dyn_weak_ref_1.c: Ditto.
8604 * testsuite/dyn_weak_ref_2.c: Ditto.
8605
b56648ad
ILT
86062010-08-27 Ian Lance Taylor <iant@google.com>
8607
8608 * incremental.h (class Incremental_input_entry): Add virtual
8609 destructor.
8610
809313cb
ILT
86112010-08-27 Ian Lance Taylor <iant@google.com>
8612
8613 * testsuite/start_lib_test_3.c: Mark t3 as used.
8614
11e32464
NC
86152010-08-27 Nick Clifton <nickc@redhat.com>
8616
8617 * options.cc (version_script): Fix small typo in previous
8618 whitespace tidyup.
8619
ca09d69a
NC
86202010-08-25 Nick Clifton <nickc@redhat.com>
8621
8622 * archive.cc: Formatting fixes: Remove whitespace between
8623 typename and following asterisk. Remove whitespace between
8624 function name and opening parenthesis.
8625 * archive.h: Likewise.
8626 * arm.cc: Likewise.
8627 * attributes.cc: Likewise.
8628 * attributes.h: Likewise.
8629 * common.cc: Likewise.
8630 * copy-relocs.cc: Likewise.
8631 * dirsearch.h: Likewise.
8632 * dynobj.cc: Likewise.
8633 * ehframe.cc: Likewise.
8634 * ehframe.h: Likewise.
8635 * expression.cc: Likewise.
8636 * fileread.cc: Likewise.
8637 * fileread.h: Likewise.
8638 * gc.h: Likewise.
8639 * gold-threads.cc: Likewise.
8640 * gold.cc: Likewise.
8641 * i386.cc: Likewise.
8642 * icf.h: Likewise.
8643 * incremental-dump.cc: Likewise.
8644 * incremental.cc: Likewise.
8645 * layout.cc: Likewise.
8646 * layout.h: Likewise.
8647 * main.cc: Likewise.
8648 * merge.cc: Likewise.
8649 * merge.h: Likewise.
8650 * object.cc: Likewise.
8651 * object.h: Likewise.
8652 * options.cc: Likewise.
8653 * options.h: Likewise.
8654 * output.cc: Likewise.
8655 * output.h: Likewise.
8656 * plugin.cc: Likewise.
8657 * plugin.h: Likewise.
8658 * powerpc.cc: Likewise.
8659 * reloc.cc: Likewise.
8660 * script-c.h: Likewise.
8661 * script-sections.cc: Likewise.
8662 * script.cc: Likewise.
8663 * stringpool.cc: Likewise.
8664 * symtab.cc: Likewise.
8665 * symtab.h: Likewise.
8666 * target.cc: Likewise.
8667 * timer.cc: Likewise.
8668 * timer.h: Likewise.
8669 * version.cc: Likewise.
8670 * x86_64.cc: Likewise.
8671
b8fa8750
NC
86722010-08-24 Nick Clifton <nickc@redhat.com>
8673
8674 PR 11899
8675 * layout.cc (segment_precedes): Sort segments by their physical
8676 addresses, if they have been set.
8677
9919d93b
CC
86782010-08-23 Cary Coutant <ccoutant@google.com>
8679
8680 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
8681 symbols data.
8682 (Lib_group::include_member): Unlock object after deleting its
8683 symbols data.
8684 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
8685 the bug fixed here.
8686
97b4be1c
CC
86872010-08-19 Neil Vachharajani <nvachhar@google.com>
8688 Cary Coutant <ccoutant@google.com>
8689
8690 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
8691 constructor, and set_blocker.
8692 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
8693 readsyms_blocker_.
8694 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
8695 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
8696 * testsuite/Makefile.am (start_lib_test): New test case.
8697 * testsuite/Makefile.in: Regenerate.
8698 * testsuite/start_lib_test_main.c: New file.
8699 * testsuite/start_lib_test_1.c: New file.
8700 * testsuite/start_lib_test_2.c: New file.
8701 * testsuite/start_lib_test_3.c: New file.
8702
dd0b1884
ILT
87032010-08-19 Ian Lance Taylor <iant@google.com>
8704
8705 * Makefile.in: Rebuild with automake 1.11.1.
8706 * aclocal.m4: Likewise.
8707 * testsuite/Makefile.in: Likewise.
8708
7223e9ca
ILT
87092010-08-19 Ian Lance Taylor <iant@google.com>
8710
8711 PR 10893
8712 * i386.cc (class Output_data_plt_i386): Update declarations.
8713 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
8714 local_ifuncs_ fields.
8715 (Target_i386::do_plt_section_for_global): New function.
8716 (Target_i386::do_plt_section_for_local): New function.
8717 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
8718 parameter; change all callers. Initialize global_ifuncs_ and
8719 local_ifuncs_. If doing a static link define __rel_iplt_start and
8720 __rel_iplt_end.
8721 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
8722 (Output_data_plt_i386::add_local_ifunc_entry): New function.
8723 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
8724 symbols.
8725 (Target_i386::make_plt_section): New function, broken out of
8726 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
8727 (Target_i386::make_plt_entry): Call make_plt_section.
8728 (Target_i386::make_local_ifunc_plt_entry): New function.
8729 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
8730 (Target_i386::Scan::local): Handle IFUNC symbols. Add
8731 R_386_IRELATIVE to switch.
8732 (Target_i386::Scan::global): Likewise.
8733 (Target_i386::Relocate::relocate): Likewise.
8734 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
8735 switch.
8736 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
8737 (Target_x86_64::do_plt_section_for_global): New function.
8738 (Target_x86_64::do_plt_section_for_local): New function.
8739 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
8740 parameter; change all callers. If doing a static link define
8741 __rela_iplt_start and __rela_iplt_end.
8742 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
8743 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
8744 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
8745 to point to .plt.
8746 (Target_x86_64::make_local_ifunc_plt_entry): New function.
8747 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
8748 switch.
8749 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
8750 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
8751 R_X86_64_IRELATIVE to switch.
8752 (Target_x86_64::Scan::global): Likewise.
8753 (Target_x86_64::Relocate::relocate): Likewise.
8754 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
8755 switch.
8756 * target.h (class Target): Add plt_section_for_global and
8757 plt_section_for_local functions. Add do_plt_section_for_global
8758 and do_plt_section_for_local virtual functions.
8759 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
8760 clarifying comments.
8761 (Symbol::use_plt_offset): Handle IFUNC symbol.
8762 * object.cc (Sized_relobj::Sized_relobj): Initialize
8763 local_plt_offsets_.
8764 (Sized_relobj::local_has_plt_offset): New function.
8765 (Sized_relobj::local_plt_offset): New function.
8766 (Sized_relobj::set_local_plt_offset): New function.
8767 (Sized_relobj::do_count): Handle IFUNC symbol.
8768 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
8769 a bit away from input_shndx_ field. Add set_is_func_symbol and
8770 is_ifunc_symbol functions.
8771 (class Sized_relobj): Update declarations. Remove Tls_got_entry
8772 and Local_tls_got_offsets. Define Local_plt_offsets. Add
8773 local_plt_offsets_ field.
8774 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
8775 * output.h (class Output_section_data): Add non-const
8776 output_section function.
8777 (class Output_data_got): Update declarations.
8778 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
8779 Add use_plt_offset parameter to global and local constructors.
8780 Change all callers. Change local_sym_index_ field to 31 bits.
8781 Change GSYM_CODE and CONSTANT_CODE accordingly.
8782 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
8783 doing a static link don't set sh_link field.
8784 (Output_data_got::Got_entry::write): Use PLT offset if
8785 appropriate.
8786 (Output_data_got::add_global_plt): New function.
8787 (Output_data_got::add_local_plt): New function.
8788 * target-reloc.h (relocate_section): Handle IFUNC symbol.
8789 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
8790 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
8791 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
8792 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
8793 IFUNC conditional.
8794 * testsuite/ifunc-sel.h: New file.
8795 * testsuite/ifuncmain1.c: New file.
8796 * testsuite/ifuncmain1vis.c: New file.
8797 * testsuite/ifuncmod1.c: New file.
8798 * testsuite/ifuncdep2.c: New file.
8799 * testsuite/ifuncmain2.c: New file.
8800 * testsuite/ifuncmain3.c: New file.
8801 * testsuite/ifuncmod3.c: New file.
8802 * testsuite/ifuncmain4.c: New file.
8803 * testsuite/ifuncmain5.c: New file.
8804 * testsuite/ifuncmod5.c: New file.
8805 * testsuite/ifuncmain6pie.c: New file.
8806 * testsuite/ifuncmod6.c: New file.
8807 * testsuite/ifuncmain7.c: New file.
8808 * configure, testsuite/Makefile.in: Rebuild.
8809
56f75c03
ILT
88102010-08-18 Ian Lance Taylor <iant@google.com>
8811
8812 * incremental.cc
8813 (Output_section_incremental_inputs::write_input_files): Add cast
8814 to avoid signed/unsigned comparison warning.
8815 (Output_section_incremental_inputs::write_info_blocks): Likewise.
8816
55455f89
CC
88172010-08-12 Cary Coutant <ccoutant@google.com>
8818
8819 * common.cc (Sort_commons::operator()): Remove unnecessary code.
8820
e2054bcb
ILT
88212010-08-13 Ian Lance Taylor <iant@google.com>
8822
8823 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
8824
74f67560
DK
88252010-08-12 Cary Coutant <ccoutant@google.com>
8826 Doug Kwan <dougkwan@google.com>
8827
8828 * resolve.cc (Symbol_table::should_override): When a weak dynamic
8829 defintion overrides non-weak undef, remember that the original undef
8830 is not weak.
8831 * symtab.cc (Symbol_table::sized_write_global): For undef without
8832 an original weak binding, set binding to global in output.
8833 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
8834 * testsuite/Makefile.in: Regenerate.
8835 * testsuite/strong_ref_weak_def.sh: New file.
8836 * testsuite/strong_ref_weak_def_1.c: Ditto.
8837 * testsuite/strong_ref_weak_def_2.c: Ditto.
8838
d1238d12
CC
88392010-08-12 Cary Coutant <ccoutant@google.com>
8840
8841 * testsuite/incremental_test.sh: Rewrite.
8842 * testsuite/incremental_test_1.c: Rewrite.
8843 * testsuite/incremental_test_2.c: Rewrite.
8844
0e70b911
CC
88452010-08-12 Cary Coutant <ccoutant@google.com>
8846
8847 * arm.cc (Target_arm::got_size): Add const.
8848 (Target_arm::got_entry_count): New function.
8849 (Target_arm::plt_entry_count): New function.
8850 (Target_arm::first_plt_entry_offset): New function.
8851 (Target_arm::plt_entry_size): New function.
8852 (Output_data_plt_arm::entry_count): New function.
8853 (Output_data_plt_arm::first_plt_entry_offset): New function.
8854 (Output_data_plt_arm::get_plt_entry_size): New function.
8855 * i386.cc (Target_i386::got_size): Add const.
8856 (Target_i386::got_entry_count): New function.
8857 (Target_i386::plt_entry_count): New function.
8858 (Target_i386::first_plt_entry_offset): New function.
8859 (Target_i386::plt_entry_size): New function.
8860 (Output_data_plt_i386::entry_count): New function.
8861 (Output_data_plt_i386::first_plt_entry_offset): New function.
8862 (Output_data_plt_i386::get_plt_entry_size): New function.
8863 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
8864 find_incremental_inputs_sections. Dump incremental_got_plt section.
8865 * incremental.cc: Include target.h.
8866 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
8867 parameter. Adjust all callers. Find incremental_got_plt section.
8868 (Incremental_inputs::create_data_sections): Create incremental_got_plt
8869 section.
8870 (Output_section_incremental_inputs::set_final_data_size): Calculate
8871 size of incremental_got_plt section.
8872 (Output_section_incremental_inputs::do_write): Write the
8873 incremental_got_plt section.
8874 (Got_plt_view_info): New struct.
8875 (Local_got_offset_visitor): New class.
8876 (Global_got_offset_visitor): New class.
8877 (Global_symbol_visitor_got_plt): New class.
8878 (Output_section_incremental_inputs::write_got_plt): New function.
8879 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
8880 Add parameter. Adjust all callers.
8881 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
8882 (Incremental_inputs::got_plt_section): New function.
8883 (Incremental_inputs::got_plt_section_): New data member.
8884 (Incremental_got_plt_reader): New class.
8885 * layout.cc (Layout::create_incremental_info_sections): Add the
8886 incremental_got_plt section.
8887 * object.h (Got_offset_list::get_list): New function.
8888 (Got offset_list::for_all_got_offsets): New function.
8889 (Sized_relobj::local_got_offset_list): New function.
8890 * powerpc.cc (Target_powerpc::got_size): Add const.
8891 (Target_powerpc::got_entry_count): New function.
8892 (Target_powerpc::plt_entry_count): New function.
8893 (Target_powerpc::first_plt_entry_offset): New function.
8894 (Target_powerpc::plt_entry_size): New function.
8895 (Output_data_plt_powerpc::entry_count): New function.
8896 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
8897 (Output_data_plt_powerpc::get_plt_entry_size): New function.
8898 * sparc.cc (Target_sparc::got_size): Add const.
8899 (Target_sparc::got_entry_count): New function.
8900 (Target_sparc::plt_entry_count): New function.
8901 (Target_sparc::first_plt_entry_offset): New function.
8902 (Target_sparc::plt_entry_size): New function.
8903 (Output_data_plt_sparc::entry_count): New function.
8904 (Output_data_plt_sparc::first_plt_entry_offset): New function.
8905 (Output_data_plt_sparc::get_plt_entry_size): New function.
8906 * symtab.h (Symbol::got_offset_list): New function.
8907 (Symbol_table::for_all_symbols): New function.
8908 * target.h (Sized_target::got_entry_count): New function.
8909 (Sized_target::plt_entry_count): New function.
8910 (Sized_target::plt_entry_size): New function.
8911 * x86_64.cc (Target_x86_64::got_size): Add const.
8912 (Target_x86_64::got_entry_count): New function.
8913 (Target_x86_64::plt_entry_count): New function.
8914 (Target_x86_64::first_plt_entry_offset): New function.
8915 (Target_x86_64::plt_entry_size): New function.
8916 (Output_data_plt_x86_64::entry_count): New function.
8917 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
8918 (Output_data_plt_x86_64::get_plt_entry_size): New function.
8919
09ec0418
CC
89202010-08-12 Cary Coutant <ccoutant@google.com>
8921
8922 * archive.cc: Include incremental.h.
8923 (Archive::Archive): Initialize incremental_info_.
8924 (Archive::include_member): Record archive members in incremental info.
8925 (Add_archive_symbols::run): Record begin and end of an archive in
8926 incremental info.
8927 (Lib_group::include_member): Record objects in incremental info.
8928 * archive.h (Incremental_archive_entry): Forward declaration.
8929 (Archive::set_incremental_info): New member function.
8930 (Archive::incremental_info): New member function.
8931 (Archive::Unused_symbol_iterator): New class.
8932 (Archive::unused_symbols_begin): New member function.
8933 (Archive::unused_symbols_end): New member function.
8934 (Archive::incremental_info_): New data member.
8935 * incremental-dump.cc (find_input_containing_global): New function.
8936 (dump_incremental_inputs): Dump new incremental info sections.
8937 * incremental.cc: Include symtab.h.
8938 (Output_section_incremental_inputs): New class.
8939 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
8940 new incremental info sections.
8941 (Sized_incremental_binary::do_check_inputs): Likewise.
8942 (Incremental_inputs::report_archive): Remove.
8943 (Incremental_inputs::report_archive_begin): New function.
8944 (Incremental_inputs::report_archive_end): New function.
8945 (Incremental_inputs::report_object): New function.
8946 (Incremental_inputs::finalize_inputs): Remove.
8947 (Incremental_inputs::report_input_section): New function.
8948 (Incremental_inputs::report_script): Rewrite.
8949 (Incremental_inputs::finalize): Do nothing but finalize string table.
8950 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
8951 (Incremental_inputs::sized_create_inputs_section_data): Remove.
8952 (Incremental_inputs::create_data_sections): New function.
8953 (Incremental_inputs::relocs_entsize): New function.
8954 (Output_section_incremental_inputs::set_final_data_size): New function.
8955 (Output_section_incremental_inputs::do_write): New function.
8956 (Output_section_incremental_inputs::write_header): New function.
8957 (Output_section_incremental_inputs::write_input_files): New function.
8958 (Output_section_incremental_inputs::write_info_blocks): New function.
8959 (Output_section_incremental_inputs::write_symtab): New function.
8960 * incremental.h (Incremental_script_entry): Forward declaration.
8961 (Incremental_object_entry): Forward declaration.
8962 (Incremental_archive_entry): Forward declaration.
8963 (Incremental_inputs): Forward declaration.
8964 (Incremental_inputs_header_data): Remove.
8965 (Incremental_inputs_header): Remove.
8966 (Incremental_inputs_header_write): Remove.
8967 (Incremental_inputs_entry_data): Remove.
8968 (Incremental_inputs_entry): Remove.
8969 (Incremental_inputs_entry_write): Remove.
8970 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
8971 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
8972 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
8973 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
8974 Likewise.
8975 (Incremental_input_entry): New class.
8976 (Incremental_script_entry): New class.
8977 (Incremental_object_entry): New class.
8978 (Incremental_archive_entry): New class.
8979 (Incremental_inputs::Incremental_inputs): Initialize new data members.
8980 (Incremental_inputs::report_inputs): Remove.
8981 (Incremental_inputs::report_archive): Remove.
8982 (Incremental_inputs::report_archive_begin): New function.
8983 (Incremental_inputs::report_archive_end): New function.
8984 (Incremental_inputs::report_object): Change prototype.
8985 (Incremental_inputs::report_input_section): New function.
8986 (Incremental_inputs::report_script): Change prototype.
8987 (Incremental_inputs::get_reloc_count): New function.
8988 (Incremental_inputs::set_reloc_count): New function.
8989 (Incremental_inputs::create_data_sections): New function.
8990 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
8991 (Incremental_inputs::inputs_section): New function.
8992 (Incremental_inputs::symtab_section): New function.
8993 (Incremental_inputs::relocs_section): New function.
8994 (Incremental_inputs::get_stringpool): Add const.
8995 (Incremental_inputs::command_line): Add const.
8996 (Incremental_inputs::inputs): Remove.
8997 (Incremental_inputs::command_line_key): New function.
8998 (Incremental_inputs::input_file_count): New function.
8999 (Incremental_inputs::input_files): New function.
9000 (Incremental_inputs::relocs_entsize): New function.
9001 (Incremental_inputs::sized_create_inputs_section_data): Remove.
9002 (Incremental_inputs::finalize_inputs): Remove.
9003 (Incremental_inputs::Input_info): Remove.
9004 (Incremental_inputs::lock_): Remove.
9005 (Incremental_inputs::inputs_): Change type.
9006 (Incremental_inputs::inputs_map_): Remove.
9007 (Incremental_inputs::current_object_entry_): New data member.
9008 (Incremental_inputs::inputs_section_): New data member.
9009 (Incremental_inputs::symtab_section_): New data member.
9010 (Incremental_inputs::relocs_section_): New data member.
9011 (Incremental_inputs::reloc_count_): New data member.
9012 (Incremental_inputs_reader): New class.
9013 (Incremental_symtab_reader): New class.
9014 (Incremental_relocs_reader): New class.
9015 * layout.cc (Layout::finalize): Move finalization of incremental info
9016 and creation of incremental info sections to follow finalization of
9017 symbol table. Set offsets for postprocessing sections.
9018 (Layout::create_incremental_info_sections): Call
9019 Incremental_inputs::create_data_sections. Add incremental symtab
9020 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
9021 sections to layout after input sections.
9022 * layout.h (struct Timespec): Forward declaration.
9023 (Layout::incremental_inputs): Add const.
9024 (Layout::create_incremental_info_sections): Add parameter.
9025 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
9026 * object.cc: Include incremental.h.
9027 (Relobj::finalize_incremental_relocs): New function.
9028 (Sized_relobj::do_layout): Record input sections in incremental info.
9029 * object.h (Object::output_section): New function.
9030 (Object::output_section_offset): Moved from Relobj.
9031 (Object::get_incremental_reloc_base): New function.
9032 (Object::get_incremental_reloc_count): New function.
9033 (Object::do_output_section): New function.
9034 (Object::do_output_section_offset): Moved from Relobj.
9035 (Object::do_get_incremental_reloc_base): New function.
9036 (Object::do_get_incremental_reloc_count): New function.
9037 (Object::Object): Initialize new data members.
9038 (Relobj::output_section): Renamed do_output_section and moved to
9039 protected.
9040 (Relobj::output_section_offset): Moved to Object.
9041 (Relobj::do_get_incremental_reloc_base): New function.
9042 (Relobj::do_get_incremental_reloc_count): New function.
9043 (Relobj::allocate_incremental_reloc_counts): New function.
9044 (Relobj::count_incremental_reloc): New function.
9045 (Relobj::finalize_incremental_relocs): New function.
9046 (Relobj::next_incremental_reloc_index): New function.
9047 (Relobj::reloc_counts_): New data member.
9048 (Relobj::reloc_bases_): New data member.
9049 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
9050 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
9051 (Sized_relobj::incremental_relocs_scan): New function.
9052 (Sized_relobj::incremental_relocs_scan_reltype): New function.
9053 (Sized_relobj::incremental_relocs_write): New function.
9054 (Sized_relobj::incremental_relocs_write_reltype): New function.
9055 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
9056 incremental link.
9057 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
9058 archives and object files elsewhere.
9059 (Add_symbols::run): Report object files here.
9060 (Finish_group::run): Report end of archive at end of group.
9061 * reloc.cc: Include layout.h, incremental.h.
9062 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
9063 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
9064 (Sized_relobj::incremental_relocs_scan): New function.
9065 (Sized_relobj::incremental_relocs_scan_reltype): New function.
9066 (Sized_relobj::do_relocate_sections): Write incremental relocations.
9067 (Sized_relobj::incremental_relocs_write): New function.
9068 (Sized_relobj::incremental_relocs_write_reltype): New function.
9069 * script.cc (read_input_script): Rewrite test for incremental link.
9070 Change call to Incremental_inputs::report_script.
9071 * symtab.h (Symbol_table::first_global_index): New function.
9072 (Symbol_table::output_count): New function.
9073
ce0d1972
DK
90742010-08-12 Doug Kwan <dougkwan@google.com>
9075
9076 * arm.cc (Target_arm::merge_object_attributes): Check command line
9077 options --no-wchar-size-warning and --no-enum-size-warning.
9078 * options.h (General_options): Add ld-compatible options
9079 --no-enum-size-warning and --no-wchar-size-warning.
9080
6e5710ce
ILT
90812010-08-04 Ian Lance Taylor <iant@google.com>
9082
9083 * x86_64.cc (Target_x86_64::Scan::local): Use
9084 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
9085 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
9086 (Target_x86_64::Scan::global): Likewise.
9087 (Target_x86_64::Relocate::relocate): Likewise.
9088 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
9089 Likewise.
9090
fef830db
CC
90912010-08-03 Cary Coutant <ccoutant@google.com>
9092
9093 * merge.cc (Output_merge_string::do_add_input_section): Count strings
9094 to reserve space in merged_strings vector. Keep total input size
9095 for stats.
9096 (Output_merge_string::do_print_merge_stats): Print total input size.
9097 * merge.h (Output_merge_string): Add input_size_ field.
9098 * stringpool.cc (Stringpool_template::string_length): Move
9099 implementations out of Stringpool_template class and place in
9100 stringpool.h.
9101 * stringpool.h (string_length): Move out of Stringpool_template.
9102
1e3811b0
ILT
91032010-08-03 Ian Lance Taylor <iant@google.com>
9104
9105 PR 11712
9106 * layout.cc (relaxation_loop_body): If address of load segment is
9107 set, adjust address to include headers if possible.
9108
7af0c620
ILT
91092010-08-03 Ian Lance Taylor <iant@google.com>
9110
9111 * version.cc (version_string): Bump to 1.10.
9112
22f0da72
ILT
91132010-08-03 Ian Lance Taylor <iant@google.com>
9114
9115 PR 11805
9116 * layout.h (enum Output_section_order): Define.
9117 (class Layout): Update declarations.
9118 * layout.cc (Layout::get_output_section): Add order parameter.
9119 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
9120 is_first_non_relro parameters. Change all callers.
9121 (Layout::choose_output_section): Likewise.
9122 (Layout::add_output_section_data): Likewise.
9123 (Layout::make_output_section): Likewise. Set order.
9124 (Layout::default_section_order): New function.
9125 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
9126 * output.cc (Output_section::Output_section): Initialize order_.
9127 Don't initialize deleted fields.
9128 (Output_segment::Output_segment): Don't initialize deleted
9129 fields.
9130 (Output_segment::add_output_section_to_load): New function
9131 replacing add_output_section. Change all callers to call this or
9132 add_output_section_to_nonload.
9133 (Output_segment::add_output_section_to_nonload): New function.
9134 (Output_segment::remove_output_section): Rewrite.
9135 (Output_segment::add_initial_output_data): Likewise.
9136 (Output_segment::has_any_data_sections): Likewise.
9137 (Output_segment::is_first_section_relro): Likewise.
9138 (Output_segment::maximum_alignment): Likewise.
9139 (Output_segment::has_dynamic_reloc): New function replacing
9140 dynamic_reloc_count. Change all callers.
9141 (Output_segment::has_dynamic_reloc_list): New function replacing
9142 dynamic_reloc_count_list. Change all callers.
9143 (Output_segment::set_section_addresses): Rewrite.
9144 (Output_segment::set_offset): Rewrite.
9145 (Output_segment::find_first_and_last_list): Remove.
9146 (Output_segment::set_tls_offsets): Rewrite.
9147 (Output_segment::first_section_load_address): Likewise.
9148 (Output_segment::output_section_count): Likewise.
9149 (Output_segment::section_with_lowest_load_address): Likewise.
9150 (Output_segment::write_section_headers): Likewise.
9151 (Output_segment::print_sections_to_map): Likewise.
9152 * output.h (class Output_data): Remove dynamic_reloc_count_
9153 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
9154 (Output_data::add_dynamic_reloc): Rewrite.
9155 (Output_data::has_dynamic_reloc): New function.
9156 (Output_data::dynamic_reloc_count): Remove.
9157 (class Output_section): Add order_ field. Remvoe is_relro_local_,
9158 is_last_relro_, is_first_non_relro_, is_interp_,
9159 is_dynamic_linker_section_ fields. Add order and set_order
9160 functions. Remove is_relro_local, set_is_relro_local,
9161 is_last_relro, set_is_last_relro, is_first_non_relro,
9162 set_is_first_non_relro functions, is_interp, set_is_interp,
9163 is_dynamic_linker_section, and set_is_dynamic_linker_section
9164 functions.
9165 (class Output_segment): Change Output_data_list from std::list to
9166 std:;vector. Add output_lists_ field. Remove output_data_ and
9167 output_bss_ fields. Update declarations.
9168
3ff2ccb0
ILT
91692010-08-02 Ian Lance Taylor <iant@google.com>
9170
9171 * arm.cc (Target_arm::gc_process_relocs): Use typename.
9172 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
9173 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
9174
88a4108b
ILT
91752010-08-02 Ian Lance Taylor <iant@google.com>
9176
9177 PR 11855
9178 * script.cc (Script_options::Script_options): Initialize
9179 symbol_definitions_ and symbol_references_.
9180 (Script_options::add_symbol_assignment): Update
9181 symbol_definitions_ and symbol_references_.
9182 (Script_options::add_symbol_reference): New function.
9183 (script_symbol): New function.
9184 * script.h (class Script_options): Add symbol_definitions_ and
9185 symbol_references_ fields.
9186 (Script_options::referenced_const_iterator): New type.
9187 (Script_options::referenced_begin): New function.
9188 (Script_options::referenced_end): New function.
9189 (Script_options::is_referenced): New function.
9190 (Script_options::any_unreferenced): New function.
9191 * script-c.h (script_symbol): Declare.
9192 * yyscript.y (exp): Call script_symbol.
9193 * symtab.cc: Include "script.h".
9194 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
9195 Change all callers. Check symbols referenced by scripts.
9196 (Symbol_table::add_undefined_symbols_from_command_line): Add
9197 layout parameter. Change all callers.
9198 (Symbol_table::do_add_undefined_symbols_from_command_line):
9199 Likewise. Break out loop body. Check symbols referenced by
9200 scripts.
9201 (Symbol_table::add_undefined_symbol_from_command_line): New
9202 function broken out of
9203 do_add_undefined_symbols_from_command_line.
9204 * symtab.h (class Symbol_table): Update declarations.
9205 * archive.cc: Include "layout.h".
9206 (Archive::should_include_member): Add layout parameter. Change
9207 all callers. Check for symbol mentioned in expression.
9208 * archive.h (class Archive): Update declaration.
9209 * object.cc (Sized_relobj::do_should_include_member): Add layout
9210 parameter.
9211 * object.h (Object::should_include_member): Add layout parameter.
9212 Change all callers.
9213 (Object::do_should_include_member): Add layout parameter.
9214 (class Sized_relobj): Update declaration.
9215 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
9216 parameter.
9217 * dynobj.h (class Sized_dynobj): Update declaration.
9218 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
9219 layout parameter.
9220 * plugin.h (class Sized_pluginobj): Update declaration.
9221
5f1ab67a
ILT
92222010-08-02 Ian Lance Taylor <iant@google.com>
9223
9224 PR 11866
9225 * output.cc (Output_segment::set_offset): Search for the first and
9226 last sections rather than assuming that the list is in order.
9227 (Output_segment::find_first_and_last_list): New function.
9228 * output.h (class Output_segment): Update declarations.
9229 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
9230 (relro_strip_test_SOURCES): New variable.
9231 (relro_strip_test_DEPENDENCIES): New variable.
9232 (relro_strip_test_LDFLAGS): New variable.
9233 (relro_strip_test_LDADD): New variable.
9234 (relro_strip_test.so): New target.
9235
a8df5856
ILT
92362010-08-02 Ian Lance Taylor <iant@google.com>
9237
9238 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
9239 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
9240 (Target_i386::got_tlsdesc_section): New function.
9241 (Target_i386::got_section): Create space for GOT entries for
9242 TLSDESC relocations.
9243 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
9244 R_386_TLS_GOTDESC.
9245 (Target_i386::Scan::global): Likewise.
9246 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
9247 using TLSDESC GOT.
9248 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
9249 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
9250 (Target_x86_64::got_tlsdesc_section): New function.
9251 (Target_x86_64::got_section): Create space for GOT entries for
9252 TLSDESC relocations.
9253 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
9254 R_386_TLS_GOTDESC.
9255 (Target_x86_64::Scan::global): Likewise.
9256 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
9257 using TLSDESC GOT.
9258
0c10a0a6
ILT
92592010-08-02 Ian Lance Taylor <iant@google.com>
9260
9261 * testsuite/final_layout.sh: Use dc to convert from hex to
9262 decimal.
9263
41cbeecc
ST
92642010-07-29 Sriraman Tallam <tmsriram@google.com>
9265
9266 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
9267 paramter to the call to gold::gc_process_relocs.
9268 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
9269 paramter to the call to gold::gc_process_relocs.
9270 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
9271 parameter to the call to gold::gc_process_relocs.
9272 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
9273 template parameter to the call to gold::gc_process_relocs.
9274 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
9275 paramter to the call to gold::gc_process_relocs.
9276 * gc.h (get_embedded_addend_size): New function.
9277 (gc_process_relocs): Save the size of the reloc for use by ICF.
9278 * icf.cc (get_section_contents): Get the addend from the text section
9279 for SHT_REL relocation sections.
9280 * icf.h (Icf::Reloc_addend_size_info): New typedef.
9281 (Icf::Reloc_info): Add new member reloc_addend_size_info.
9282 * int_encoding.h (read_from_pointer): New overloaded function.
9283 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
9284 * testsuite/icf_sht_rel_addend_test.sh: New file.
9285 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
9286 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
9287
6ea55b82
RW
92882010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9289
9290 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
9291 * Makefile.in: Regenerate.
9292 * testsuite/Makefile.in: Regenerate.
9293
9691462b
ILT
92942010-07-27 Jeffrey Yasskin <jyasskin@google.com>
9295
9296 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
9297 * gold/testsuite/debug_msg.cc: Likewise.
9298 * gold/testsuite/odr_violation1.cc
9299 * gold/testsuite/odr_violation2.cc
9300
76897331
CC
93012010-07-21 Cary Coutant <ccoutant@google.com>
9302
9303 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
9304 string, and length fields.
9305 (Output_merge_string::Merged_strings_list): New type.
9306 (Output_merge_string::Merged_strings_lists): New typedef.
9307 (Output_merge_string): Replace merged_strings_ with
9308 merged_strings_lists_.
9309 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
9310 Merged_strings_list per input object and section. Don't store pointer
9311 to the string. Don't store length with each merged string entry.
9312 (Output_merge_string::finalize_merged_data): Loop over list of merged
9313 strings lists. Recompute length of each merged string.
9314
78384e8f
CC
93152010-07-15 Cary Coutant <ccoutant@google.com>
9316
9317 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
9318 here.
9319
783659f9
ILT
93202010-07-14 Ian Lance Taylor <iant@google.com>
9321
9322 * descriptors.cc (Descriptors::open): Report correct name in error
9323 message.
9324
131687b4
DK
93252010-07-13 Doug Kwan <dougkwan@google.com>
9326
9327 * arm.cc (Arm_input_section::Arm_input_section): For a
9328 SHT_ARM_EXIDX section, always keeps the input sections.
9329 (Arm_input_section::set_exidx_section_link): New method.
9330 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
9331 has_errors_ to false.
9332 (Arm_exidx_input_section::has_errors,
9333 Arm_exidx_input_section::set_has_errors): New methods.
9334 (Arm_exidx_input_section::has_errors_): New data member.
9335 (Arm_relobj::get_exidx_shndx_list): New method.
9336 (Arm_output_section::append_text_sections_to_list): Do not skip
9337 section without SHF_EXECINSTR.
9338 (Arm_output_section::fix_exidx_coverage): Skip input sections with
9339 errors.
2e702c99 9340 (Arm_relobj::make_exidx_input_section): Add new parameter for text
131687b4
DK
9341 section header. Make error messages more verbose. Check for
9342 a non-executable section linked to an EXIDX section.
9343 (Arm_relobj::do_read_symbols): Remove error checking, which has been
9344 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
9345 check that there is no deferred EXIDX section if we exit early.
9346 Instead of not making an EXIDX section in case of an error, make one
9347 and set the has_errors flag of it.
9348 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
9349 in a relocatable link.
9350 (Target_arm::do_relax): Look for the EXIDX output section instead of
9351 assuming that it is called .ARM.exidx.
2e702c99 9352 (Target_arm::fix_exidx_coverage): Add a new parameter for input
131687b4
DK
9353 section list. Do not check for SHF_EXECINSTR section flags but
9354 skip any input section with errors.
9355 * output.cc (Output_section::Output_section): Initialize
9356 always_keeps_input_sections_ to false.
9357 (Output_section::add_input_section): Check for
9358 always_keeps_input_sections_.
9359 * output.h (Output_section::always_keeps_input_sections,
9360 Output_section::set_always_keeps_input_sections): New methods.
9361 (Output_section::always_keeps_input_sections): New data member.
9362
69517287
RÁE
93632010-07-13 Rafael Espindola <espindola@google.com>
9364
9365 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
9366 * fileread.h (Input_file): Add try_extra_search_path and find_file.
9367
82742395
ILT
93682010-07-13 Philip Herron <herron.philip@googlemail.com>
9369 Ian Lance Taylor <iant@google.com>
9370
9371 * output.h (Output_section_lookup_maps::add_merge_section):
9372 Correct check of whether value was inserted.
9373 (Output_section_lookup_maps::add_merge_input_section): Likewise.
9374 (Output_section_lookup_maps::add_relaxed_input_section):
9375 Likewise.
9376 * arm.cc (Target_arm::got_section): Remove used local os.
9377 * i386.cc (Target_i386::got_section): Likewise.
9378 * x86_64.cc (Target_x86_64::got_section): Likewise.
9379 * sparc.cc (Target_sparc::got_section): Likewise.
9380 (Target_sparc::relocate): Remove unused local have_got_offset.
9381 * powerpc.cc (Target_powerpc::relocate): Likewise.
9382
f2d707b5
ILT
93832010-07-13 Ian Lance Taylor <iant@google.com>
9384
241531d6
ILT
9385 * compressed_output.cc (zlib_decompress): Fix signature in
9386 !HAVE_ZLIB_H case.
9387
f2d707b5
ILT
9388 * archive.cc (Archive::include_member): Unlock an external member
9389 of a thin archive. Don't bother to delete an object we know is
9390 NULL.
9391
a2e47362
CC
93922010-07-12 Cary Coutant <ccoutant@google.com>
9393
9394 * compressed_output.cc (zlib_decompress): New function.
9395 (get_uncompressed_size): New function.
9396 (decompress_input_section): New function.
9397 * compressed_output.h (get_uncompressed_size): New function.
9398 (decompress_input_section): New function.
9399 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
9400 Handle compressed debug sections.
9401 * layout.cc (is_compressed_debug_section): New function.
9402 (Layout::output_section_name): Map compressed section names to
9403 canonical names.
9404 * layout.h (is_compressed_debug_section): New function.
9405 (is_debug_info_section): Recognize compressed debug sections.
9406 * merge.cc: Include compressed_output.h.
9407 (Output_merge_data::do_add_input_section): Handle compressed
9408 debug sections.
9409 (Output_merge_string::do_add_input_section): Handle compressed
9410 debug sections.
9411 * object.cc: Include compressed_output.h.
9412 (Sized_relobj::Sized_relobj): Initialize new data members.
9413 (build_compressed_section_map): New function.
9414 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
9415 * object.h (Object::section_is_compressed): New method.
9416 (Object::do_section_is_compressed): New method.
9417 (Sized_relobj::Compressed_section_map): New type.
9418 (Sized_relobj::do_section_is_compressed): New method.
9419 (Sized_relobj::compressed_sections_): New data member.
9420 * output.cc (Output_section::add_input_section): Handle compressed
9421 debug sections.
9422 * reloc.cc: Include compressed_output.h.
9423 (Sized_relobj::write_sections): Handle compressed debug sections.
9424
ce279a62
CC
94252010-07-08 Cary Coutant <ccoutant@google.com>
9426
9427 * resolve.cc (Symbol_table::resolve): Remember whether undef was
9428 weak when resolving to a dynamic def.
9429 (Symbol_table::should_override): Add adjust_dyndef flag; set it
9430 for weak undef/dynamic def cases. Adjust callers.
9431 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
9432 undef_binding_weak_.
9433 (Symbol_table::sized_write_globals): Adjust symbol binding.
9434 (Symbol_table::sized_write_symbol): Add binding parameter.
9435 * symtab.h (Symbol::set_undef_binding): New method.
9436 (Symbol::is_undef_binding_weak): New method.
9437 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
9438 (Symbol_table::should_override): Add new parameter.
9439 (Symbol_table::sized_write_symbol): Add new parameter.
9440
9441 * testsuite/weak_undef_file1.cc: Add new test case.
9442 * testsuite/weak_undef_file2.cc: Fix header comment.
9443 * testsuite/weak_undef_test.cc: Add new test case.
9444
b2286c10
DK
94452010-06-29 Doug Kwan <dougkwan@google.com>
9446
9447 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
9448 Initialize USE_SYMBOL_.
9449 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
9450 definition.
9451 (Arm_reloc_property::uses_symbol_): New data member declaration.
9452 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
9453 uses symbol value and symbol is undefined but not weakly undefined.
9454
4802450a
RÁE
94552010-06-28 Rafael Espindola <espindola@google.com>
9456
9457 * plugin.cc (Plugin::load): Use dlerror.
9458
e5ca47ba
ILT
94592010-06-26 Jeffrey Yaskin <jyasskin@google.com>
9460
9461 * symtab.cc (detect_odr_violations): When reporting an ODR
9462 violation, report an object where the symbol is defined.
9463
8a75a161
DK
94642010-06-25 Doug Kwan <dougkwan@google.com>
9465
9466 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
9467 (Target_arm::section_may_have_icf_unsafe_pointers): New method
9468 definition.
9469 (Target_arm::Scan::local_reloc_may_be_function_pointer,
9470 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
9471 target hook to detect function points.
9472 (Target_arm::Scan::possible_function_pointer_reloc): New method.
9473 * icf.h (Icf::check_section_for_function_pointers): Change type of
9474 parameter SECTION_NAME to const reference to std::string. Use
9475 target hook to determine if section may have unsafe pointers.
9476 * target.h (Target::section_may_have_icf_unsafe_pointers): New
9477 method definition.
9478
42218b9f
RÁE
94792010-06-21 Rafael Espindola <espindola@google.com>
9480
9481 * fileread.cc (Input_file::find_fie): New
9482 (Input_file::open): Use Input_file::find_fie.
9483 * fileread.h (Input_file::find_fie): New
9484 * plugin.cc (set_extra_library_path): New.
9485 (Plugin::load): Add set_extra_library_path to the transfer vector.
9486 (Plugin_manager::set_extra_library_path): New.
9487 (Plugin_manager::add_input_file): Use the extra search path if set.
9488 (set_extra_library_path(): New.
9489 * plugin.h (Plugin_manager): Add set_extra_library_path and
9490 extra_search_path_.
9491
a0506cca
CC
94922010-06-19 Cary Coutant <ccoutant@google.com>
9493
9494 * layout.cc (gdb_sections): Add .debug_types.
9495 (lines_only_debug_sections): Likewise.
9496
6508b958
RÁE
94972010-06-18 Rafael Espindola <espindola@google.com>
9498
9499 * plugin.cc (add_input_file,add_input_library)
9500 (Plugin_manager::add_input_file): Make filename arguments const.
9501 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
9502 const.
9503
3e235302
DK
95042010-06-16 Doug Kwan <dougkwan@google.com>
9505
9506 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
9507 .ARM.attributes section if we have not merged any input
9508 attributes sections.
9509
106e8a6c
DK
95102010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9511
9512 * arm.cc: Allow combining objects with no EABI version
9513 information.
9514
91ff43fe
RÁE
95152010-06-15 Rafael Espindola <espindola@google.com>
9516
9517 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
9518
68ed838c
ILT
95192010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9520
9521 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
9522 (struct iovec): Correct !HAVE_READV definition.
9523
f3a2388f
CC
95242010-06-10 Cary Coutant <ccoutant@google.com>
9525
9526 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
9527 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
9528 reloc sections.
9529 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
9530
9531 PR 11683
9532 * symtab.h (Symbol::is_placeholder): New member function.
9533 * target-reloc.h (relocate_section): Check for placeholder symbols.
9534
9535 * testsuite/Makefile.am (plugin_test_8): New test.
9536 (plugin_test_9): New test.
9537 * testsuite/Makefile.in: Regenerate.
9538
e1df38aa
NC
95392010-06-09 Nick Clifton <nickc@redhat.com>
9540
9541 * yyscript.y (input_list_element): Allow strings prefixed with
9542 the '-' character. Treat these as libraries.
9543 * script.cc (script_add_library): New function. Adds a library
9544 specified by "-l<name>" found in an input script.
9545 * script-c.h: Add prototype for script_add_library.
9546
25bbe950
DK
95472010-06-07 Doug Kwan <dougkwan@google.com>
9548
9549 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
9550 Restrict stub-group size to be within long conditional branch
9551 range when working around cortex-A8 erratum.
9552
0f32ea4c
ILT
95532010-06-07 Damien Diederen <dd@crosstwine.com>
9554
9555 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
9556 #ifdef typo.
9557
8fe2a369
ST
95582010-06-03 Sriraman Tallam <tmsriram@google.com>
9559
9560 PR gold/11658
9561 * output.cc
9562 (Output_section::Input_section_sort_entry::compare_section_ordering):
9563 Change to return non-zero correctly.
9564 (Output_section::Input_section_sort_section_order_index_compare
9565 ::operator()): Change to fix ambiguity in comparisons.
9566
6e9ba2ca
ST
95672010-06-01 Sriraman Tallam <tmsriram@google.com>
9568
9569 * gold.h (is_wildcard_string): New function.
9570 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
9571 (Layout::layout_eh_frame): Ditto.
9572 (Layout::find_section_order_index): New method.
9573 (Layout::read_layout_from_file): New method.
9574 * layout.h (Layout::find_section_order_index): New method.
9575 (Layout::read_layout_from_file): New method.
9576 (Layout::input_section_position_): New private member.
9577 (Layout::input_section_glob_): New private member.
9578 * main.cc (main): Call read_layout_from_file here.
9579 * options.h (--section-ordering-file): New option.
9580 * output.cc (Output_section::input_section_order_specified_): New
9581 member.
9582 (Output_section::Output_section): Initialize new member.
9583 (Output_section::add_input_section): Add new parameter.
9584 Keep input sections when --section-ordering-file is used.
9585 (Output_section::set_final_data_size): Sort input sections when
9586 section ordering file is specified.
9587 (Output_section::Input_section_sort_entry): Add new parameter.
9588 Check sorting type.
9589 (Output_section::Input_section_sort_entry::compare_section_ordering):
9590 New method.
9591 (Output_section::Input_section_sort_compare::operator()): Change to
9592 consider section_order_index.
9593 (Output_section::Input_section_sort_init_fini_compare::operator()):
9594 Change to consider section_order_index.
9595 (Output_section::Input_section_sort_section_order_index_compare
9596 ::operator()): New method.
9597 (Output_section::sort_attached_input_sections): Change to sort
9598 according to section order when specified.
e1df38aa
NC
9599 (Output_section::add_input_section<32, true>): Add new parameter.
9600 (Output_section::add_input_section<64, true>): Add new parameter.
9601 (Output_section::add_input_section<32, false>): Add new parameter.
9602 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
9603 * output.h (Output_section::add_input_section): Add new parameter.
9604 (Output_section::input_section_order_specified): New
9605 method.
9606 (Output_section::set_input_section_order_specified): New method.
9607 (Input_section::Input_section): Initialize section_order_index_.
9608 (Input_section::section_order_index): New method.
9609 (Input_section::set_section_order_index): New method.
9610 (Input_section::section_order_index_): New member.
9611 (Input_section::Input_section_sort_section_order_index_compare): New
9612 struct.
9613 (Output_section::input_section_order_specified_): New member.
9614 * script-sections.cc (is_wildcard_string): Delete and move modified
9615 method to gold.h.
9616 (Output_section_element_input::Output_section_element_input): Modify
9617 call to is_wildcard_string.
9618 (Output_section_element_input::Input_section_pattern
9619 ::Input_section_pattern): Ditto.
9620 (Output_section_element_input::Output_section_element_input): Ditto.
9621 * testsuite/Makefile.am (final_layout): New test case.
9622 * testsuite/Makefile.in: Regenerate.
9623 * testsuite/final_layout.cc: New file.
9624 * testsuite/final_layout.sh: New file.
9625
3537c84b
RÁE
96262010-06-01 Rafael Espindola <espindola@google.com>
9627
9628 * plugin.cc (Plugin::load): Pass the output name to the plugin.
9629
105b6afd
RÁE
96302010-06-01 Rafael Espindola <espindola@google.com>
9631
9632 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
9633 visibility of symbols.
9634
29e11421
DK
96352010-05-27 Doug Kwan <dougkwan@google.com>
9636
9637 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
9638 from start of output section instead of address for a local symbol
9639 in a merged or relaxed section when doing a relocatable link.
9640
5e0f337e
RÁE
96412010-05-26 Rafael Espindola <espindola@google.com>
9642
703d02da 9643 PR 11604
5e0f337e
RÁE
9644 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
9645 adding sections the garbage collector removed.
9646 * gold/testsuite/Makefile.am: Add test.
9647 * gold/testsuite/Makefile.in: Regenerate.
9648 * gold/testsuite/plugin_test_7.sh: New.
9649 * gold/testsuite/plugin_test_7_1.c: New.
9650 * gold/testsuite/plugin_test_7_2.c: New.
9651
f4187277
RÁE
96522010-05-26 Rafael Espindola <espindola@google.com>
9653
9654 * script-sections.cc (Output_section_definition::set_section_addresses):
9655 Check for --section-start.
9656
5c388529
DK
96572010-05-26 Doug Kwan <dougkwan@google.com>
9658
9659 * arm.cc (Arm_scan_relocatable_relocs): New class.
9660 (Target_arm::relocate_special_relocatable): New method.
9661 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
9662 (Arm_relocate_functions::thumb_branch_common): Same.
9663 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
9664 instead of Default_scan_relocatable_relocs.
9665 * target-reloc.h (relocate_for_relocatable): Let target handle
9666 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
9667 * target.h (Sized_target::relocate_special_relocatable): New method.
9668
bca1c3ae
ILT
96692010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9670
9671 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
9672
0439c796
DK
96732010-05-23 Doug Kwan <dougkwan@google.com>
9674
9675 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
9676 instead of a cast.
9677 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
9678 with a direct branch, not a conditional branch, to a stub.
9679 * merge.cc (Output_merge_base::record_input_section): New method
9680 defintion.
9681 (Output_merge_data::do_add_input_section): Record input section if
9682 keeps-input-sections flag is set.
9683 (Output_merge_string::do_add_input_section): Ditto.
9684 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
9685 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
9686 INPUT_SECTIONS_.
9687 (Output_merge_base::keeps_input_sections,
9688 Output_merge_base::set_keeps_input_sections,
9689 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
9690 method definitions.
9691 (Output_merge_base::Input_sections): New type declaration.
9692 (Output_merge_base::input_sections_begin,
9693 Output_merge_base::input_sections_end,
9694 Output_merge_base::do_set_keeps_input_sections): New method definitions.
9695 (Output_merge_base::bool keeps_input_sections_,
9696 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
9697 Output_merge_base::input_sections_): New data members.
9698 (Output_merge_data::do_set_keeps_input_sections): New method
9699 defintion.
9700 (Output_merge_string::do_set_keeps_input_sections): Ditto.
9701 * output.cc (Output_section::Input_section::relobj): Move method
9702 defintion from class declaration to here and handle merge sections.
9703 (Output_section::Input_section::shndx): Ditto.
9704 (Output_section::Output_section): Remove initializations of removed
9705 data members and initialize new data member LOOKUP_MAPS_.
9706 (Output_section::add_input_section): Set keeps-input-sections flag
9707 for a newly created merge output section as appropriate. Adjust code
9708 to use Output_section_lookup_maps class.
9709 (Output_section::add_relaxed_input_section): Adjst code for lookup
9710 maps code refactoring.
2e702c99 9711 (Output_section::add_merge_input_section): Add a new parameter
0439c796
DK
9712 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
9713 class. If adding input section to a newly created merge output
9714 section fails, remove the new merge section.
9715 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 9716 Adjust code for use of the Output_section_lookup_maps class.
2e702c99 9717 (Output_section::find_merge_section): Ditto.
0439c796 9718 (Output_section::build_lookup_maps): New method defintion.
2e702c99 9719 (Output_section::find_relaxed_input_section): Adjust code to use
0439c796
DK
9720 Output_section_lookup_maps class.
9721 (Output_section::get_input_sections): Export merge sections. Adjust
9722 code to use Output_section_lookup_maps class.
9723 (Output_section:::add_script_input_section): Adjust code to use
9724 Output_section_lookup_maps class. Update lookup maps for merge
9725 sections also.
9726 (Output_section::discard_states): Use Output_section_lookup_maps.
9727 (Output_section::restore_states): Same.
9728 * output.h (Merge_section_properties): Move class defintion out of
9729 Output_section.
9730 (Output_section_lookup_maps): New class.
9731 (Output_section::Input_section::is_merge_section): New method
9732 defintion.
9733 (Output_section::Input_section::relobj): Move defintion out of class
9734 defintion. Declare method only.
9735 (Output_section::Input_section::shndx): Ditto.
9736 (Output_section::Input_section::output_merge_base): New method defintion.
2e702c99 9737 (Output_section::Input_section::u2_.pomb): New union field.
0439c796
DK
9738 (Output_section::Merge_section_by_properties_map,
9739 Output_section::Output_section_data_by_input_section_map,
9740 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
9741 Remove types.
2e702c99 9742 (Output_section::add_merge_input_section): Add new parameter
0439c796
DK
9743 KEEPS_INPUT_SECTIONS.
9744 (Output_section::build_lookup_maps): New method declaration.
9745 (Output_section::merge_section_map_,
9746 Output_section::merge_section_by_properties_map_,
9747 Output_section::relaxed_input_section_map_,
9748 Output_section::is_relaxed_input_section_map_valid_): Remove data
9749 members.
9750 (Output_section::lookup_maps_): New data member.
9751
76295588
L
97522010-05-21 Doug Kwan <dougkwan@google.com>
9753
9754 PR gold/11619
9755 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
9756 avoid a compilation error.
9757
d103a984
RÁE
97582010-05-19 Rafael Espindola <espindola@google.com>
9759
9760 * script-sections.cc (Output_section_definition::allocate_to_segment):
9761 Update the phdrs_list even when the output section is NULL.
9762 * testsuite/Makefile.am: Add test.
9763 * testsuite/Makefile.in: Regenerate.
9764 * testsuite/script_test_9.cc: New.
9765 * testsuite/script_test_9.sh: New.
9766 * testsuite/script_test_9.t: New.
9767
6625d24e
DK
97682010-05-19 Doug Kwan <dougkwan@google.com>
9769
9770 * arm.cc (Arm_input_section::original_size): New method.
9771 (Arm_input_section::do_addralign): Add a cast.
9772 (Arm_input_section::do_output_offset): Remove static cast.
9773 (Arm_input_section::original_addralign,
9774 Arm_input_section::original_size_): Change type to uint32_t.
9775 (Arm_input_section::init): Add safe casts for section alignment
9776 and size.
9777 (Arm_input_section::set_final_data_size): Do not set address and
9778 offset of stub table.
9779 (Arm_output_section::fix_exidx_coverage): Change use of of
9780 Output_section::Simple_input_section to that of
9781 Output_section::Input_section.
9782 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
9783 except for the first pass.
9784 * output.cc (Output_section::get_input_sections): Change type of
9785 input_sections to std::list<Input_section>.
9786 (Output_section::add_script_input_section): Rename from
9787 Output_section::add_simple_input_section. Change type of SIS
9788 parameter from Simple_input_section to Input_section.
9789 * output.h (Output_section::Simple_input_section): Remove class.
9790 (Output_section::Input_section): Change class visibility to public.
9791 (Output_section::Input_section::addralign): Use stored alignments
9792 for special input sections if set.
9793 (Output_section::Input_section::set_addralign): New method.
9794 (Output_section::get_input_sections): Change parameter type from
9795 list of Simple_input_section to list of Input_section.
9796 (Output_section::add_script_input_section): Rename from
9797 Output_section::add_simple_input_section. Change first parameter's
9798 type from Simple_input_section to Input_section and remove the
9799 second and third parameters.
9800 * script-sections.cc (Input_section::Input_section_list): Change
9801 type to list of Output_section::Input_section/
9802 (Input_section_info::Input_section_info): Change parameter type of
9803 INPUT_SECTION to Output_section::Input_section.
9804 (Input_section_info::input_section): Change return type.
9805 (Input_section_info::input_section_): Change type to
9806 Output_section::Input_section.
9807 (Output_section_element_input::set_section_addresses): Adjust code
9808 to use Output_section::Input_section instead of
9809 Output_section::Simple_input_section. Adjust code for renaming
9810 of Output_section::add_simple_input_section.
9811 (Orphan_output_section::set_section_addresses): Ditto.
9812
e1e82ea4
RW
98132010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9814
9815 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
9816 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
9817
91e75c8a
RÁE
98182010-05-18 Rafael Espindola <espindola@google.com>
9819
9820 * options.cc (General_options::finalize): Handle -nostdlib.
9821 * options.h (nostdlib): New option.
9822 * script.cc (script_add_search_dir): Handle -nostdlib.
9823
da59ad79
DK
98242010-05-12 Doug Kwan <dougkwan@google.com>
9825
9826 * arm.cc (Target_arm::do_finalize_sections): Create an empty
9827 attributes section only if there no attributes section after merging.
9828 (Target_arm::merge_object_attributes): Move value of
e1df38aa 9829 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
9830 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
9831 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
9832 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
9833 and arm_attr_merge_7.stdout.
9834 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
9835 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
9836 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
9837 arm_attr_merge_7b.o): New rules.
9838 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
9839 arm_attr_merge_7
9840 * testsuite/Makefile.in: Regenerate.
9841 * testsuite/arm_attr_merge.sh: New file.
9842 * testsuite/arm_attr_merge_[67][ab].s: Same.
9843
3e01a7fd
NC
98442010-05-05 Nick Clifton <nickc@redhat.com>
9845
9846 * po/es.po: Updated Spanish translation.
9847
7ad2014a
L
98482010-04-27 H.J. Lu <hongjiu.lu@intel.com>
9849
9850 * Makefile.am (install-exec-local): Properly install gold as
9851 default cross linker.
9852 * Makefile.in: Regenerated.
9853
4fda8867
NC
98542010-04-27 H.J. Lu <hongjiu.lu@intel.com>
9855 Nick Clifton <nickc@redhat.com>
9856
9857 * configure.ac (install_as_default): Define and set to false
9858 unless --enable-gold or --enable-gold=both/gold has been
9859 specified.
9860 * configure: Regenerate.
9861
9862 * Makefile.am (install-exec-local): Install the executable as
9863 'ld.gold'. If install_as_default is true then also install it as
9864 'ld'.
9865 * Makefile.in: Regenerated.
9866
bd288ea2
ILT
98672010-04-24 Ian Lance Taylor <iant@google.com>
9868
9869 * layout.cc (Layout::layout_reloc): In relocatable link don't
9870 combine reloc sections for grouped sections.
9871
ef38fd8a
ST
98722010-04-23 Sriraman Tallam <tmsriram@google.com>
9873
9874 * gc.h (gc_process_relocs): Pass information on relocs pointing to
9875 sections that are not ordinary to icf.
9876 * icf.cc (get_section_contents): Handle relocation pointing to section
9877 with no object or shndx information.
9878 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
9879 * testsuite/Makefile.in: Regenerate.
9880 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
9881 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
9882
f6973bdc
ILT
98832010-04-22 Ian Lance Taylor <iant@google.com>
9884
9885 * expression.cc (Expression::Expression_eval_info): Add
9886 result_alignment_pointer field.
9887 (Expression::eval_with_dot): Add result_alignment_pointer
9888 parameter. Change all callers.
9889 (Expression::eval_maybe_dot): Likewise.
9890 (class Binary_expression): Add alignment_pointer parameter to
9891 left_value and right_value. Change all callers.
9892 (BINARY_EXPRESSION): Set result alignment.
9893 (class Trinary_expression): Add alignment_pointer parameter to
9894 arg2_value and arg3_value. Change all callers.
9895 (Trinary_cond::value): Set result alignment.
9896 (Max_expression::value, Min_expression::value): Likewise.
9897 (Align_expression::value): Likewise.
9898 * script-sections.cc (class Sections_element): Add dot_alignment
9899 parameter to set_section_addresses virtual function. Update
9900 instantiations.
9901 (class Output_section_element): Likewise.
9902 (Script_sections::create_segments): Add dot_alignment parameter.
9903 Change all callers.
9904 (Script_sections::create_segments_from_phdrs_clause): Likewise.
9905 (Script_sections::set_phdrs_clause_addresses): Likewise.
9906 * script-sections.h: Update declarations.
9907 * script.h: Update declarations.
9908 * output.h (Output_segment::set_minimum_p_align): Don't decrease
9909 min_p_align.
9910 * testsuite/script_test_3.t: Set large alignment.
9911 * testsuite/script_test_3.sh: Make sure that at least one LOAD
9912 segment has expected alignment.
9913
9c9c98a5
NC
99142010-04-22 Nick Clifton <nickc@redhat.com>
9915
9916 * po/gold.pot: Updated by the Translation project.
9917 * po/vi.po: Updated Vietnamese translation.
9918
2253bfba
L
99192010-04-22 H.J. Lu <hongjiu.lu@intel.com>
9920
9921 * testsuite/Makefile.am (check_PROGRAMS): Add
9922 icf_virtual_function_folding_test.
9923 * testsuite/Makefile.in: Regenerated.
9924
85fdf906
AH
99252010-04-15 Andrew Haley <aph@redhat.com>
9926
9927 * options.h (merge_exidx_entries): New option.
9928 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
9929 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
9930 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
9931 (Target_arm::merge_exidx_entries): New function.
9932 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
9933 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
9934 to Arm_exidx_fixup constructor.
9935 Add new arg, merge_exidx_entries.
9936 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
9937 Arm_output_section::fix_exidx_coverage.
9938
ce97fa81
ST
99392010-04-18 Sriraman Tallam <tmsriram@google.com>
9940
9941 * icf.cc (get_section_contents): Check for preemptible functions.
9942 Ignore addend when appropriate.
9943 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
9944 section folded.
9945 (add_from_relobj): Check for section folded.
9946 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
9947 * symtab.h (should_add_dynsym_entry): Add new parameter.
9948 * target-reloc.h (scan_relocs): Check for section folded.
9949 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
9950 Check reloc types for function pointers in shared objects.
9951 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
9952 case.
9953 (icf_preemptible_functions_test): New test case.
9954 (icf_string_merge_test): New test case.
9955 * testsuite.Makefile.in: Regenerate.
9956 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
9957 bar_glob. Refactor code.
9958 * testsuite/icf_preemptible_functions_test.cc: New file.
9959 * testsuite/icf_preemptible_functions_test.sh: New file.
9960 * testsuite/icf_string_merge_test.cc: New file.
9961 * testsuite/icf_string_merge_test.sh: New file.
9962 * testsuite/icf_virtual_function_folding_test.cc: New file.
9963 * testsuite/icf_virtual_function_folding_test.sh: New file.
9964
04ceb17c
DK
99652010-04-14 Doug Kwan <dougkwan@google.com>
9966
9967 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
9968 for local symbol recounting if we remove a section due to ICF.
9969 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
9970 there are no regular objects in input.
9971
153e7da4
DK
99722010-04-13 Doug Kwan <dougkwan@google.com>
9973
9974 * arm.cc (Arm_input_section::set_final_data_size): Compute
9975 accurate final data size instead of using current data size.
9976
4dbd9faf
DK
99772010-04-09 Doug Kwan <dougkwan@google.com>
9978
9979 * layout.cc (Layout::choose_output_section): Handle script section
9980 types.
9981 (Layout::make_output_section_for_script): Add section type parameter.
9982 Handle script section types.
9983 * layout.h (Layout::make_output_section_for_script): Add section
9984 type parameter.
9985 * output.cc (Output_section::Output_section): Initialize data member
9986 is_noload_.
9987 (Output_section::do_reset_address_and_file_offset): Do not set address
9988 to 0 if section is a NOLOAD section.
9989 * output.h (Output_section::is_noload): New method.
9990 (Output_section::set_is_noload): Ditto.
9991 (Output_section::is_noload_): New data member.
9992 * script-c.h (Script_section_type): New enum type.
9993 (struct Parser_output_section_header): Add new file section_type.
9994 * script-sections.cc (Sections_element::output_section_name): Add
9995 parameter for returning script section type.
9996 (Output_section_definition::output_section_name): Ditto.
9997 (Output_section_definition::section_type)P; New method.
9998 (Output_section_definiton::script_section_type_name): Ditto.
9999 (Output_section_definition::script_section_type_): New data member.
10000 (Output_section_definition::Output_section_definition): Initialize
10001 data member Output_section_definition::script_section_type_.
10002 (Output_section_definition::create_sections): Pass script section type
10003 to Layout::make_output_section_for_script.
10004 (Output_section_definition::output_section_name): Return script
10005 section type to caller.
10006 (Output_section_definition::set_section_address): Do not advance
10007 dot value and load address if section type is NOLOAD. Set address
10008 of NOLOAD sections regardless of section flags.
10009 (Output_section_definition::print): Print section type if it is
10010 not SCRIPT_SECTION_TYPE_NONE.
10011 (Output_section_definition::section_type): New method.
10012 (Output_section_definition::script_section_type_name): Ditto.
10013 (Script_sections::output_section_name): Add new parameter
10014 PSECTION_TYPE for returning script section type. Pass it to
10015 section elements. Handle discard sections.
10016 (Sort_output_sections::operator()): Handle NOLOAD sections.
10017 * script-sections.h (Script_sections::Section_type): New enum type.
2e702c99 10018 (Script_sections::output_section_name): Add a new parameter for
4dbd9faf
DK
10019 returning script section type.
10020 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
10021 INFO and NOLOAD.
10022 * yyscript.y (union): Add new field SECTION_TYPE.
10023 (COPY, DSECT, INFO, NOLOAD): New tokens.
10024 (opt_address_and_section_type): Change type to output_section_header.
10025 (section_type): New non-terminal
10026 (section_header): Handle section type.
2253bfba 10027 (opt_address_and_section_type): Return section type value.
4dbd9faf 10028
721ea635
L
100292010-04-09 H.J. Lu <hongjiu.lu@intel.com>
10030
10031 * testsuite/plugin_common_test_1.c (foo): Add prototype.
10032 * testsuite/plugin_common_test_2.c (foo): Likewise.
10033
6bf924b0
DK
100342010-04-08 Doug Kwan <dougkwan@google.com>
10035
10036 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
10037 Output_merge_data.
10038 * output.cc (Output_section::add_merge_input_section): Simplify
10039 code and return status of Output_merge_base::add_input_section.
e1df38aa 10040 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
10041 returns true.
10042
24af6f92
DK
100432010-04-07 Doug Kwan <dougkwan@google.com>
10044
10045 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
10046 if section is marked as containing instructions but has no mapping
10047 symbols.
10048 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
10049 correct section index.
10050 (Arm_relobj::find_linked_text_section): Ditto.
10051
00698fc5
CC
100522010-04-07 Cary Coutant <ccoutant@google.com>
10053
10054 * archive.cc (include_member): Destroy Read_symbols_data object before
10055 releasing file.
10056 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
10057 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
10058 (Read_symbols_data::~Read_symbols_data) New destructor.
10059 (Section_relocs::Section_relocs) New constructor.
10060 (Section_relocs::~Section_relocs) New destructor.
10061 (Read_relocs_data::Read_relocs_data) New constructor.
10062 (Read_relocs_data::~Read_relocs_data) New destructor.
10063 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
10064 pointers to NULL after deleting.
10065
7296d933
DK
100662010-04-07 Doug Kwan <dougkwan@google.com>
10067
10068 * arm.cc: Replace "endianity" with "endianness" in comments.
10069 (Arm_exidx_cantunwind): Ditto.
10070 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
10071 (Arm_relobj::merge_flags_and_attributes): New method.
10072 (Arm_relobj::merge_flags_and_attributes_): New data member.
10073 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
10074 (Arm_relobj::scan_sections_for_stubs): Ditto.
10075 (Arm_relobj::do_read_symbols): Check to see if we really want to
10076 merge processor-specific flags and attributes. Exit early if
10077 an object is empty except for section names and the undefined symbol.
10078 (Target_arm::do_finalize_sections): Move check for ELF format to
10079 Arm_relobj::do_read_symbols. Merge processor specific flags and
10080 attributes from a regular object only when we have determined that
10081 it is aapropriate. Do not create an .ARM.attributes section in
10082 output if there is no regular input object.
10083 (Target_arm::merge_processor_specific_flags): Check
10084 --warn-mismatch before printing any error.
10085 (Target_arm::merge_object_attributes): Ditto.
10086 * gold.cc (queue_middle_tasks): Handle the case in which there is
10087 no regular object in input.
10088 * options.cc (General_options::parse_EB): New method.
10089 (General_options::parse_EL): Same.
10090 (General_options::General_options): Initialize endianness_.
10091 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
10092 New options.
10093 (General_options::Endianness): New enum.
10094 (General_options::endianness): New method.
10095 (General_options::endianness_): New data member.
10096 * parameters.cc (Parameters::set_options): Check target endianness.
10097 (Parameters::set_target_once): Ditto.
10098 (Parameters::check_target_endianness): New method.
10099 (parameters_force_valid_target): If either -EL or -EB is specified,
10100 use it to define endianness of default target.
10101 * parameters.h (Parameters::check_target_endianness): New method
10102 declaration.
10103 * target.h (class Target): Change "endianity" to "endianness"
10104 in comments.
10105
efc8d4f2
RW
101062010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
10107
10108 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
10109 * configure: Regenerate.
10110 * Makefile.in: Regenerate.
10111 * testsuite/Makefile.in: Regenerate.
10112
be234d88
CC
101132010-04-06 Cary Coutant <ccoutant@google.com>
10114
10115 gcc PR lto/42757
10116 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
10117 prevailing definitions of common symbols.
10118 * testsuite/plugin_test_6.sh: New test case.
10119 * testsuite/plugin_common_test_1.c: New test case.
10120 * testsuite/plugin_common_test_2.c: New test case.
10121 * testsuite/Makefile.am (plugin_test_6): New test case.
10122 * testsuite/Makefile.in: Regenerate.
10123
bd32c6bd
NC
101242010-04-06 Nick Clifton <nickc@redhat.com>
10125
10126 * po/vi.po: New Vietnamese translation.
10127
323c532f
DK
101282010-03-30 Doug Kwan <dougkwan@google.com>
10129
10130 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
10131
4fcd97eb
DK
101322010-03-25 Doug Kwan <dougkwan@google.com>
10133
10134 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
10135 to avoid a conversion warning on a 32-bit host.
10136
4ebf39db
ILT
101372010-03-24 Ian Lance Taylor <iant@google.com>
10138
10139 * testsuite/script_test_3.t: Add a TLS segment.
10140 * testsuite/Makefile.am (check_PROGRAMS): Add
10141 tls_phdrs_script_test.
10142 (tls_phdrs_script_test_SOURCES): Define.
10143 (tls_phdrs_script_test_DEPENDENCIES): Define.
10144 (tls_phdrs_script_test_LDFLAGS): Define.
10145 (tls_phdrs_script_test_LDADD): Define.
10146 * testsuite/Makefile.in: Rebuild.
10147
4a599bdd
CC
101482010-03-23 Cary Coutant <ccoutant@google.com>
10149
10150 * fileread.cc (find_or_make_view): Fix comment.
10151
6c93b22c
ILT
101522010-03-23 Ian Lance Taylor <iant@google.com>
10153
10154 * script-sections.cc (class Orphan_section_placement): Define
10155 PLACE_TLS and PLACE_TLS_BSS.
10156 (Orphan_section_placement::Orphan_section_placement): Initialize
10157 new places.
10158 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
10159 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
10160 (tls_script_test_SOURCES): Define.
10161 (tls_script_test_DEPENDENCIES): Define.
10162 (tls_script_test_LDFLAGS): Define.
10163 (tls_script_test_LDADD): Define.
10164 * testsuite/Makefile.in: Rebuild.
10165
a2c7281b
DK
101662010-03-22 Doug Kwan <dougkwan@google.com>
10167
10168 * arm.cc (Arm_relocate_functions::abs8,
10169 Arm_relocate_functions::abs16): Use correct check for overflow
10170 specified in the ARM ELF specs.
10171 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
10172 target of a BLX instruction specially.
10173 (Reloc_stub::stub_type_for_reloc): Ditto.
10174 (Relocate::relocate): Use symbolic names instead of numeric relocation
10175 codes to report error.
10176 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
10177 workaround.
10178 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
10179 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
10180 thumb2_blx_out_of_range.stdout
10181 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
10182 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
10183 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
10184 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
10185 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
10186 thumb2_blx_in_range, thumb2_blx_in_range.o,
10187 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
10188 thumb2_blx_out_of_range.o): New rules.
2e702c99 10189 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
a2c7281b
DK
10190 thumb2_blx_in_range and thumb2_blx_out_of_range.
10191 * testsuite/Makefile.in: Regenerate.
10192 * arm_branch_in_range.sh: Add tests for THUMB BLX.
10193 * testsuite/thumb_blx_in_range.s: New file.
10194 * testsuite/thumb_blx_out_of_range.s: New file.
10195
b0193076
RÁE
101962010-03-22 Rafael Espindola <espindola@google.com>
10197
10198 * archive.cc (Should_include): Move to archive.h.
10199 (should_include_member): Make it a member of Archive.
10200 (Lib_group): New.
10201 (Add_lib_group_symbols): New.
10202 * archive.h: Include options.h.
10203 (Archive_member): Moved from Archive.
10204 (Should_include): Moved from archive.cc.
10205 (Lib_group): New.
10206 (Add_lib_group_symbols): New.
10207 * dynobj.cc (do_should_include_member): New.
10208 * dynobj.h (do_should_include_member): New.
10209 * gold.cc (queue_initial_tasks): Update call to queue.
10210 * main.cc (main): Print lib group stats.
10211 * object.cc (do_should_include_member): New.
10212 * object.h: Include archive.h.
10213 (Object::should_include_member): New.
10214 (Object::do_should_include_member): New.
10215 (Sized_relobj::do_should_include_member): New.
10216 * options.cc (General_options::parse_start_lib): New.
10217 (General_options::parse_end_lib): New.
10218 (Input_arguments::add_file): Handle lib groups.
10219 (Input_arguments::start_group): Check we are not in a lib.
10220 (Input_arguments::start_lib): New.
10221 (Input_arguments::end_lib): New.
10222 * options.h (General_options): Add start_lib and end_lib.
10223 (Input_argument::lib_): New.
10224 (Input_argument::lib): New.
10225 (Input_argument::is_lib): New.
10226 (Input_file_lib): New.
10227 (Input_arguments::in_lib_): New.
10228 (Input_arguments::in_lib): New.
10229 (Input_arguments::start_lib): New.
10230 (Input_arguments::end_lib_): New.
10231 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
10232 in unused members as preempted.
10233 (Sized_pluginobj::do_should_include_member): New.
10234 * plugin.h (Sized_pluginobj::do_should_include_member): New.
10235 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
10236 return the blocker.
10237 (Read_symbols::do_whole_lib_group): New.
10238 (Read_symbols::do_lib_group): New.
10239 (Read_symbols::do_read_symbols): Handle lib groups.
10240 (Read_symbols::get_name): Handle lib groups.
10241 * readsyms.h (Read_symbols): Add an archive member pointer.
10242 (Read_symbols::do_whole_lib_group): New.
10243 (Read_symbols::do_lib_group): New.
10244 (Read_symbols::member_): New.
10245 * script.cc (read_input_script): Update call to queue_soon.
10246
d099120c
DK
102472010-03-19 Doug Kwan <dougkwan@google.com>
10248
10249 * arm.cc (Stub_table::Stub_table): Initialize new data members
10250 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
10251 (Stub_table::add_reloc_stub): Assign stub offset and update
10252 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
10253 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
10254 New data members.
2e702c99 10255 (Stub_table::update_data_size_and_addralign): Use
d099120c
DK
10256 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
10257 instead of going over all reloc stubs.
2e702c99 10258 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
d099120c
DK
10259 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
10260 Stringpool_template::offset_ to size of Stringpool_char.
2e702c99 10261 (Stringpool_template::new_key_offset): Remove code to initialize
d099120c
DK
10262 Stringpool_template::offset_.
10263 * stringpool.h (Stringpool_template::set_no_zero_null): Set
10264 Stringpool_template::offset_ to zero.
10265
1aa37384
DK
102662010-03-15 Doug Kwan <dougkwan@google.com>
10267
10268 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
10269 offset_.
10270 (Stringpool_template::new_key_offset): New method.
10271 (Stringpool_template::add_string): Assign offsets when adding new
10272 strings.
10273 (Stringpool_template::set_string_offsets): Do not set string offsets
10274 when not optimizing.
10275 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
10276 member size_.
2e702c99
RM
10277 (Chunked_vector::clear): Clear size_.
10278 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
10279 (Chunked_vector::size): Return size_.
10280 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 10281 (Chunked_vector::size_): New data member.
1aa37384
DK
10282 (Stringpool_template::set_no_zero_null): Assert string set is empty.
10283 (Stringpool_template::new_key_offset): New method declaration.
10284 (Stringpool_template::offset_): New data member.
10285
b672b057
RÁE
102862010-03-15 Rafael Espindola <espindola@google.com>
10287
10288 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
10289 Add_symbols' constructor.
10290 * readsyms.h (Add_symbols): Remove the input_group member.
10291
b6848d3c
ILT
102922010-03-10 Ian Lance Taylor <iant@google.com>
10293
10294 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
10295 target to ask whether a reference to a symbol requires a stack
10296 split.
10297 * target.h (Target::is_call_to_non_split): New function.
10298 (Target::do_is_call_to_non_split): Declare virtual function.
10299 * target.cc: Include "symtab.h".
10300 (Target::do_is_call_to_non_split): New function.
10301 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
10302
a2a5469e
CC
103032010-03-10 Cary Coutant <ccoutant@google.com>
10304
10305 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
10306 (File_read::open[1]): Remove initial mapping of whole_file_view_.
10307 (File_read::open[2]): Add whole_file_view_ to list of views.
10308 (File_read::make_view): Remove test of whole_file_view_.
10309 (File_read::find_or_make_view): Create whole_file_view_ if
10310 necessary.
10311 (File_read::clear_views): Replace bool parameter with enum;
10312 adjust all callers. Don't delete views with permanent data;
10313 do delete cached views and views from archives if
10314 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
10315 if clearing the corresponding view.
10316 * fileread.h (File_read::Clear_views_mode): New enum.
10317 (File_read::View::is_permanent_view): New method.
10318 (File_read::clear_views): Replace bool parameter
10319 with enum; adjust all callers.
10320 * options.h (General_options): Change keep_files_mapped option;
10321 add map_whole_files.
10322 * readsyms.cc (Add_symbols::run): Delete sd_ object before
10323 releasing the file.
10324 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
10325 the file.
10326
8861f32b
DM
103272010-03-10 David S. Miller <davem@davemloft.net>
10328
10329 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
10330
d62d0f5f
ST
103312010-03-09 Sriraman Tallam <tmsriram@google.com>
10332
10333 * icf.cc (get_section_contents): Add '@' marker after processing the
10334 merge reloc.
10335
9177756d
DK
103362010-03-08 Doug Kwan <dougkwan@google.com>
10337
10338 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
10339 due to a conversion warning.
10340 (Arm_relobj::update_output_local_symbol_count): Check for local
10341 symbol with unset output index.
10342
9e9e071b
ILT
103432010-03-05 Ian Lance Taylor <iant@google.com>
10344
10345 * options.h (class General_options): Add --spare-dynamic-tags.
10346 * output.cc (Output_data_dynamic::set_final_data_size): Implement
10347 --spare-dynamic-tags.
10348
a81ee015
ILT
103492010-03-05 Ian Lance Taylor <iant@google.com>
10350
10351 * incremental.cc: Include "libiberty.h".
10352
44ec90b9
RO
103532010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10354
10355 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
10356 function, is_info_ member.
10357 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
10358 (Versions::Versions): Update caller.
10359 (Versions::define_base_version): Likewise.
10360 (Versions::add_def): Likewise.
10361
0897ed3b
ST
103622010-03-03 Sriraman Tallam <tmsriram@google.com>
10363
10364 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
10365 (Scan::possible_function_pointer_reloc): New function.
10366 (Scan::local_reloc_may_be_function_pointer): Change to call
10367 possible_function_pointer_reloc.
10368 (Scan::global_reloc_may_be_function_pointer): Ditto.
10369 * icf.h (Icf::check_section_for_function_pointers): Change to reject
10370 relocations in ".data.rel.ro._ZTV" section.
10371 * testsuite/icf_safe_so_test.sh: Change to pass i386.
10372 * testsuite/icf_safe_so_test.cc: Ditto.
10373 * testsuite/icf_safe_test.cc: Ditto.
10374 * testsuite/icf_safe_test.sh: Ditto.
10375
d3bbad62
ILT
103762010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10377 Ian Lance Taylor <iant@google.com>
10378
10379 * target-reloc.h (relocate_section): Check the symbol table index
10380 for -1U before setting the local symbol index.
10381 (scan_relocatable_relocs): If copying the relocation, record that
10382 the local symbol is required.
10383 * object.h (Symbol_value::is_output_symtab_index_set): New
10384 function.
10385 (Symbol_value::may_be_discarded_from_output_symtab): New
10386 function.
10387 (Symbol_value::has_output_symtab_entry): New function.
10388 (Symbol_value::needs_output_symtab_entry): Remove.
10389 (Symbol_value::output_symtab_index): Make sure the symbol index is
10390 set.
10391 (Symbol_value::set_output_symtab_index): Make sure the symbol
10392 index is not set. Make sure the new index is valid.
10393 (Symbol_value::set_must_have_output_symtab_entry): New function.
10394 (Symbol_value::has_output_dynsym_entry): New function.
10395 (Symbol_value::set_output_dynsym_index): Make sure the new index
10396 is valid.
10397 (Sized_relobj::set_must_have_output_symtab_entry): New function.
10398 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
10399 local symbol if permitted.
10400 (Sized_relobj::do_finalize_local_symbols): Call
10401 is_output_symtab_index_set rather than needs_output_symtab_entry.
10402 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
10403 rather than needs_output_symtab_entry. Call
10404 has_output_dynsym_entry rather than needs_output_dynsym_entry.
10405 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
10406 is_output_symtab_index_set rather than needs_output_symtab_entry.
10407 * testsuite/discard_locals_relocatable_test.c: New file.
10408 * testsuite/discard_locals_test.sh: Test -r.
10409 * testsuite/Makefile.am (check_DATA): Add
10410 discard_locals_relocatable_test1.syms,
10411 discard_local_relocatable_test2.syms.
10412 (MOSTLYCLEANFILES): Likewise. Also add
10413 discard_locals_relocatable_test1.lout and
10414 discard_locals_relocatable_test2.out.
10415 (discard_locals_relocatable_test1.syms): New target.
10416 (discard_locals_relocatable_test.o): New target.
10417 (discard_locals_relocatable_test1.out): New target.
10418 (discard_locals_relocatable_test2.syms): New target.
10419 (discard_locals_relocatable_test2.out): New target.
10420 (various): Add missing ../ld-new dependencies.
10421 * testsuite/Makefile.in: Rebuild.
10422
7e8ccf26
NC
104232010-03-03 Nick Clifton <nickc@redhat.com>
10424
10425 * po/fi.po: New Finnish translation.
10426
2a0ff005
DK
104272010-03-01 Doug Kwan <dougkwan@google.com>
10428
10429 * layout.cc (Layout::Layout): Force section types of .init_array*,
10430 .preinit_array* and .fini_array* sections.
10431 * output.cc (Output_section::Input_section_sort_entry::has_priority):
10432 Fix check of return value of std::string::find.().
10433 (Output_section::Input_section_sort_compare::operator()): Remove
10434 comment about .init_array.
10435 (Output_section::Input_section_sort_init_fini_compare::operator()):
10436 New method.
10437 (Output_section::sort_attached_input_sections): Handle .init_array
10438 and .fini_array specially.
10439 * output.h (Output_section::Inut_section_sort_compare): Update
10440 comment.
10441 (Output_section::Input_section_sort_init_fini_compare): New struct.
10442
c3e4ae29
DK
104432010-02-26 Doug Kwan <dougkwan@google.com>
10444
10445 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
10446 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
10447 * testsuite/debug_msg.sh: Avoid matching source line number for
10448 use of global variable undef_int.
10449
2fd9ae7a
DK
104502010-02-26 Doug Kwan <dougkwan@google.com>
10451
10452 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
10453 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
10454 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
10455 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
10456 * options.cc (General_options::General_options): Initialize member
10457 fix_v4bx_.
10458 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
10459 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
10460 and rm_no_fix_v4bx.stdout
10461 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
10462 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
10463 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
10464 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
10465 and arm_no_fix_v4bx.
10466 * Makefile.in: Regenerate.
10467 * testsuite/arm_fix_v4bx.s: New file.
10468 * testsuite/arm_fix_v4bx.sh: Ditto.
10469
67ec7d0b
DK
104702010-02-24 Doug Kwan <dougkwan@google.com>
10471
10472 * arm.cc (Target_arm::got_section): Make the .got section the first
10473 non RELRO section in the data segment.
10474 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
10475 suffixes of section names.
10476
10165461
DK
104772010-02-24 Doug Kwan <dougkwan@google.com>
10478
10479 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
10480 flags and attributes merging if an input file is a binary file.
10481 * fileread.cc (Input_file::open): Record format of original file.
10482 * fileread.h (Input_file::Format): New enum type.
2e702c99 10483 (Input_file::Input_file): Initialize data member format_.
10165461
DK
10484 (Input_file::format): New method definition.
10485 (Input_file::format_):: New data member.
10486
4a54abbb
DK
104872010-02-24 Doug Kwan <dougkwan@google.com>
10488
10489 * arm.cc (Arm_output_data_got): New class.
10490 (ARM_TCB_SIZE): New constant
10491 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
10492 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
10493 If user uses a script with a SECTIONS clause, issue only a warning
10494 for a misplaced EXIDX input section. Otherwise, issue an error.
2e702c99 10495 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
4a54abbb
DK
10496 garbage collection.
10497 (Target_arm::got_mode_index_entry): Handle static linking.
10498 (Target_arm::Scan::local): Ditto.
10499 (Target_arm::Scan::global): Ditto.
10500 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
10501 all incorrectly implemented relocations.
e1df38aa 10502 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
10503 Arm_output_section::fix_exidx_coverage.
10504 * layout.cc (Layout::section_name_mapping): Remove trailing dots
10505 from ".ARM.exidx." and ".ARM.extab.".
10506
ca419a6f
ILT
105072010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10508
10509 * arm.cc (Target_arm::do_finalize_sections): Create attribute
10510 section if it does not already exist.
10511 * attributes.cc (Attributes_section_data::Attributes_section_data):
10512 Don't crash if size is zero.
10513
135b9c78
ILT
105142010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10515 Ian Lance Taylor <iant@google.com>
10516
10517 * gold.cc (queue_middle_tasks): If no input files were opened,
10518 exit.
10519 * workqueue.h (Task_function::Task_function): Assert that there is
10520 a blocker.
10521
bb0bfe4f
DK
105222010-02-22 Doug Kwan <dougkwan@google.com>
10523
10524 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
10525 * icf.cc (get_section_contents): Cast snprintf arguments to long long
10526 types to avoid warnings due to different uint64_t implementations
10527 on different hosts.
10528
2a2b6d42
DK
105292010-02-21 Doug Kwan <dougkwan@google.com>
10530
10531 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
10532 handling of the maximum backward branch offset.
2e702c99 10533 (Arm_relocate_functions::thumb_branch_common): Ditto.
2a2b6d42
DK
10534 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
10535 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 10536 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
10537 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
10538 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
10539 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
10540 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
10541 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
10542 thumb_bl_out_of_range thumb_bl_out_of_range.o,
10543 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
10544 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
10545 thumb2_bl_out_of_range.o): New rules.
10546 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
10547 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
10548 thumb2_bl_out_of_range
10549 * testsuite/Makefile.in: Regenerate.
10550 * testsuite/arm_bl_in_range.s: New file.
10551 * testsuite/arm_bl_out_of_range.s: Ditto.
10552 * testsuite/arm_branch_in_range.sh: Ditto.
10553 * testsuite/arm_branch_range.t: Ditto.
10554 * testsuite/thumb2_branch_range.t: Ditto.
10555 * testsuite/thumb_bl_in_range.s: Ditto.
10556 * testsuite/thumb_bl_out_of_range.s: Ditto.
10557 * testsuite/thumb_branch_range.t: Ditto.
10558
b487ad64
ST
105592010-02-20 Sriraman Tallam <tmsriram@google.com>
10560
10561 * gc.h (gc_process_relocs): Change vectors to point to the new list.
10562 Add reloc offset information.
10563 * icf.cc (get_section_contents): Change iterators to point to the new
10564 vectors. Add reloc offset information to the contents.
10565 * icf.h (Icf::Sections_reachable_info): New typedef.
10566 (Icf::Sections_reachable_list): New typedef.
10567 (Icf::Offset_info): New typedef.
10568 (Icf::Reloc_info): New struct typedef.
10569 (Icf::Reloc_info_list): New typedef.
10570 (Icf::symbol_reloc_list): Delete method.
10571 (Icf::addend_reloc_list): Delete method.
10572 (Icf::section_reloc_list): Delete method.
10573 (Icf::reloc_info_list): New method.
10574 (Icf::reloc_info_list_): New member.
10575
f96accdf
DK
105762010-02-19 Doug Kwan <dougkwan@google.com>
10577
10578 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
10579 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
10580 * arm.cc (Arm_relocation_functions): New forward declaration.
10581 (Target_arm::Target_arm): Initialize new data members
10582 got_mod_index_offset_ and tls_base_symbol_defined_.
10583 (Target_arm::Relocate::relocate_tls): New method.
10584 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
10585 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
10586 New methods.
2e702c99 10587 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
f96accdf
DK
10588 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
10589 (Target_arm::got_mod_index_offset_,
10590 Target_arm::tls_base_symbol_defined_): New data members.
10591 (Target_arm::Scan::local, Target::Scan::global,
10592 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
10593 relocations.
10594
c8761b9a
DK
105952010-02-18 Doug Kwan <dougkwan@google.com>
10596
10597 * arm.cc (Arm_relobj::find_linked_text_section): New method.
10598 (Arm_relobj::make_exidx_input_section): Pass section index of linked
10599 text section as a parameter becuase some broken tools may not set
10600 the link in section header.
10601 (Target_arm::has_got_section): New method.
10602 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
10603 without any mapping symbol as data only. Remove warning.
10604 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
10605 link in its section header, try to discover the link by inspecting the
10606 REL31 relocation at the beginning of the section.
10607 (Target_arm::Scan::check_non_pic): Report name of offending relocation
10608 in error message.
10609 (Target_arm::Scan::global): Treat any reference to the symbol
10610 _GLOBAL_OFFSET_TABLE_ as a GOT access.
10611
21bb3914
ST
106122010-02-12 Sriraman Tallam <tmsriram@google.com>
10613
10614 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
10615 (Scan::global_reloc_may_be_function_pointer): New function.
10616 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
10617 (Scan::global_reloc_may_be_function_pointer): New function.
10618 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
10619 (Scan::global_reloc_may_be_function_pointer): New function.
10620 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
10621 (Scan::global_reloc_may_be_function_pointer): New function.
10622 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
10623 (Scan::global_reloc_may_be_function_pointer): New function.
10624 (Scan::possible_function_pointer_reloc): New function.
10625 (Target_x86_64::can_check_for_function_pointers): New function.
10626 * gc.h (gc_process_relocs): Scan relocation types to determine if
10627 function pointers were taken for targets that support it.
10628 * icf.cc (Icf::find_identical_sections): Include functions for
10629 folding in safe ICF whose pointer is not taken.
10630 * icf.h (Secn_fptr_taken_set): New typedef.
10631 (fptr_section_id_): New member.
10632 (section_has_function_pointers): New function.
10633 (set_section_has_function_pointers): New function.
10634 (check_section_for_function_pointers): New function.
10635 * options.h: Fix comment for safe ICF option.
10636 * target.h (can_check_for_function_pointers): New function.
10637 * testsuite/Makefile.am: Add icf_safe_so_test test case.
10638 Modify icf_safe_test for X86-64.
10639 * testsuite/Makefile.in: Regenerate.
10640 * testsuite/icf_safe_so_test.cc: New file.
10641 * testsuite/icf_safe_so_test.sh: New file.
10642 * testsuite/icf_safe_test.cc (kept_func_3): New function.
10643 (main): Change to take pointer to function kept_func_3.
10644 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
10645 folding is done correctly for X86-64.
10646
0da6fa6c
DM
106472010-02-12 David S. Miller <davem@davemloft.net>
10648
10649 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
10650 is_symbolless parameter.
10651 (Output_reloc<SHT_REL>::is_symbolless): New.
10652 (Output_reloc<SHT_REL>::is_symbolless_): New.
10653 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
10654 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
10655 (Output_reloc<SHT_RELA>::is_symbolless): New.
10656 (Output_data_reloc::add_global): Handle is_symbolless.
10657 (Output_data_reloc::add_global_relative): Likewise.
10658 (Output_data_reloc::add_local): Likewise.
10659 (Output_data_reloc::add_local_relative): Likewise.
10660 (Output_data_reloc::add_symbolless_global_addend): New.
10661 (Output_data_reloc::add_symbolless_local_addend): New.
10662 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
10663 is_symbolless.
10664 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
10665 instead of ->is_relative_
10666 (Output_reloc::write): Likewise.
10667 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
10668 (Output_reloc::write_rel): Simplify.
10669
10670 * sparc.cc (Target_sparc::Scan::local): Use
10671 ->add_symbolless_local_addend as needed.
10672 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
10673 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
10674 based upon relocation offset.
10675
e4782e83
DK
106762010-02-11 Doug Kwan <dougkwan@google.com>
10677
10678 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
10679 (Target_arm::Scan::global): Ditto. Also remove a comment before the
10680 beginning of function.
10681 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
10682 and MOVT_ABS relocations. Those are non issued in scanning. Fix
10683 parameter is_32bit in calls to should_apply_static_reloc.
10684 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
10685 (check_DATA): Add arm_abs_global.stdout.
10686 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
10687 arm_abs_global.stdout): New rules.
10688 (MOSTLLYCLEANFILES): Add arm_abs_global
10689 * Makefile.in: Regenerate.
10690 * testsuite/arm_abs_global.s: New file.
10691 * testsuite/arm_abs_global.sh: Ditto.
10692 * testsuite/arm_abs_lib.s: Ditto.
10693
93ceb764
ILT
106942010-02-11 Ian Lance Taylor <iant@google.com>
10695
10696 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
10697 Read_relocs task.
10698 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
10699 Allocate_commons_task first.
10700 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
10701 task, rather than symtab_lock_.
10702 (Gc_process_relocs::~Gc_process_relocs): New function.
10703 (Gc_process_relocs::is_runnable): Check this_blocker_.
10704 (Gc_process_relocs::locks): Use next_blocker_ rather than
10705 blocker_.
10706 (Scan_relocs::~Scan_relocs): New function.
10707 (Scan_relocs::is_runnable): Check this_blocker_ rather than
10708 symtab_lock_.
10709 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
10710 next_blocker_.
10711 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
10712 fields. Add this_blocker_ and next_blocker_ fields. Adjust
10713 constructor accordingly.
10714 (class Gc_process_relocs): Likewise.
10715 (class Scan_relocs): Likewise.
10716 * common.h (class Allocate_commons_task): Remove symtab_lock_
10717 field, and corresponding constructor parameter.
10718 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
10719 symtab_lock_.
10720 (Allocate_commons_task::locks): Likewise.
10721
114dfbe1
ILT
107222010-02-11 Ian Lance Taylor <iant@google.com>
10723
10724 * gold-threads.h (class Once): Define.
10725 (class Initialize_lock): Rewrite as child of Once.
10726 * gold-threads.cc (class Once_initialize): Define.
10727 (once_pointer_control): New static variable.
10728 (once_pointer, once_arg): New static variables.
10729 (c_run_once): New static function.
10730 (Once::Once, Once::run_once, Once::internal_run): New functions.
10731 (class Initialize_lock_once): Remove.
10732 (initialize_lock_control): Remove.
10733 (initialize_lock_pointer): Remove.
10734 (initialize_lock_once): Remove.
10735 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
10736 (Initialize_lock::initialize): Rewrite.
10737 (Initialize_lock::do_run_once): New function.
10738 * archive.cc (Archive::interpret_header): Only clear name if it is
10739 not already empty.
10740 * fileread.cc: Include "gold-threads.h"
10741 (file_counts_lock): New static variable.
10742 (file_counts_initialize_lock): Likewise.
10743 (File_read::release): Only increment counts when using --stats.
10744 Use a lock around the increment.
10745 * parameters.cc (class Set_parameters_target_once): Define.
10746 (set_parameters_target_once): New static variable.
10747 (Parameters::Parameters): Move here from parameters.h.
10748 (Parameters::set_target): Rewrite.
10749 (Parameters::set_target_once): New function.
10750 (Parameters::clear_target): Move here and rewrite.
10751 * parameters.h (class Parameters): Update declarations. Add
10752 set_parameters_target_once_ field.
10753 (Parameters::Parameters): Move to parameters.cc.
10754 (Parameters::clear_target): Likewise.
10755 * readsyms.cc (Read_symbols::do_group): Create a Start_group
10756 task.
10757 (Start_group::~Start_group): New function.
10758 (Start_group::is_runnable): New function.
10759 (Start_group::locks, Start_group::run): New functions.
10760 (Finish_group::run): Change saw_undefined to size_t.
10761 * readsyms.h (class Start_group): Define.
10762 (class Finish_group): Change saw_undefined_ field to size_t.
10763 (Finish_group::Finish_group): Remove saw_undefined and
10764 this_blocker parameters. Change all callers.
10765 (Finish_group::set_saw_undefined): New function.
10766 (Finish_group::set_blocker): New function.
10767 * symtab.h (class Symbol_table): Change saw_undefined to return
10768 size_t. Change saw_undefined_ field to size_t.
10769 * target-select.cc (Set_target_once::do_run_once): New function.
10770 (Target_selector::Target_selector): Initialize set_target_once_
10771 field. Don't initialize lock_ and initialize_lock_ fields.
10772 (Target_selector::instantiate_target): Rewrite.
10773 (Target_selector::set_target): New function.
10774 * target-select.h (class Set_target_once): Define.
10775 (class Target_selector): Update declarations. Make
10776 Set_target_once a friend. Remove lock_ and initialize_lock_
10777 fields. Add set_target_once_ field.
10778
fa17a3f4
ILT
107792010-02-10 Ian Lance Taylor <iant@google.com>
10780
10781 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
10782 queueing any tasks.
10783 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
10784 (queue_middle_tasks): Add all blockers before queueing any tasks.
10785 (queue_final_tasks): Likewise.
10786 * token.h (Task_token::add_blockers): New function.
10787 * object.h (Input_objects::number_of_relobjs): New function.
10788
c7177d31
ILT
107892010-02-10 Ian Lance Taylor <iant@google.com>
10790
5de0e392
ILT
10791 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
10792 shared, not if not position independent.
10793 * x86_64.cc (Relocate::relocate_tls): Likewise.
10794 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
10795 (tls_pie_pic_test): New target.
10796 * testsuite/Makefile.in: Rebuild.
10797
c7177d31
ILT
10798 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
10799 (tls_test_main_pie.o, tls_test_pie.o): New targets.
10800 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
10801 * testsuite/Makefile.in: Rebuild.
10802
684b268a
DM
108032010-02-09 David S. Miller <davem@davemloft.net>
10804
10805 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
10806 R_SPARC_RELATIVE using ->add_local_relative().
10807 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
10808
612a8d3d
DM
10809 * output.h (Output_data_dynamic::add_section_size): New method
10810 that takes two Output_data objects.
10811 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
10812 entry param. Handle it in initializers.
10813 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
10814 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
10815 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
10816 arg.
10817 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
10818 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
10819 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
10820 for dynrel_includes_plt.
10821 * i386.cc (Target_i386::do_finalize_sections): Likewise.
10822 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
10823 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
10824 before .rela.plt
10825 (Target_sparc::do_finalize_sections): Update to pass true for
10826 dynrel_includes_plt.
10827 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
10828 output before .rela.plt
10829 (Target_powerpc::do_finalize_sections): Update to pass true for
10830 dynrel_includes_plt when 32-bit.
10831
cb1be87e
DK
108322010-02-08 Doug Kwan <dougkwan@google.com>
10833
10834 * arm.cc (Arm_relobj::simple_input_section_output_address): New
10835 method.
10836 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
10837 Arm_relobj::scan_section_for_cortex_a8_stubs,
10838 Arm_relobj::do_relocation_section): Instead of calling
10839 Output_section::output_address, use faster
10840 Arm_relobj::simple_input_section_output_address.
10841
705b5121
DM
108422010-02-08 David S. Miller <davem@davemloft.net>
10843
10844 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
10845 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
10846 relocation helper function.
10847
024c4466
DM
10848 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
10849 just like R_SPARC_GOT{10,13,22}.
10850 (Target_sparc::Scan::local): Likewise.
10851 (Target_sparc::Relocate:relocate): Likewise.
10852
9109c078
ILT
108532010-02-06 Ian Lance Taylor <iant@google.com>
10854
10855 * configure.ac: Rewrite targetobjs duplicate removal code to use
10856 only shell constructs.
10857 * configure: Rebuild.
10858
cf846138
DK
108592010-02-05 Doug Kwan <dougkwan@google.com>
10860
10861 PR 11247
10862 * arm.cc (Arm_relobj::section_is_scannable): New method.
10863 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
10864 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
10865
6cfaf60b
DK
108662010-02-04 Doug Kwan <dougkwan@google.com>
10867
10868 PR 11247
10869 * arm-reloc-property.cc (cstdio): Include.
10870 * configure.ac (targetobjs): Remove duplicates.
10871 * configure: Regenerate.
10872 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
10873 big and little endian version for a given address size.
10874
5c57f1be
DK
108752010-02-03 Doug Kwan <dougkwan@google.com>
10876
10877 * arm-reloc-property.cc
10878 (Arm_reloc_property_table::reloc_name_in_error_message): New method
10879 definition.
10880 * arm-reloc-property.h
10881 (Arm_reloc_property_table::get_implemented_static_reloc_property):
10882 New method definition.
10883 (Arm_reloc_property_table::reloc_name_in_error_message): New method
10884 declaration.
10885 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
10886 overflow to N.
10887 (GOT_PREL): Change implemented to Y.
10888 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
10889 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
10890 (Arm_relocate_functions::movw_abs_nc): Remove method.
10891 (Arm_relocate_functions::movt_abs): Ditto.
10892 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
10893 (Arm_relocate_functions::thm_movt_abs): Ditto.
10894 (Arm_relocate_functions::movw_rel_nc): Ditto.
10895 (Arm_relocate_functions::movw_rel): Ditto.
10896 (Arm_relocate_functions::movt_rel): Ditto.
10897 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
10898 (Arm_relocate_functions:thm_movw_rel): Ditto.
10899 (Arm_relocate_functions:thm_movt_rel): Ditto.
10900 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
10901 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
10902 New method definitions.
10903 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
10904 (Arm_relocation_functions::arm_grp_ldr): Ditto.
10905 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
10906 (Arm_relocation_functions::arm_grp_ldc): Ditto.
10907 (Target_arm::Relocate::relocate): Check for non-static or
10908 unimplemented relocation code and exit early. Change calls to
10909 Target_arm::reloc_uses_thumb_bit and
10910 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
10911 instead. Refactor code to handle similar relocations to increase
10912 code sharing. Remove check for unsupported relocation code in switch
10913 statement.
10914 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
10915 relocation property table to find out size. Change error message to
10916 print out the name of a relocation code instead of the numeric value.
10917 (Target_arm::scan_reloc_for_stub): Use relocation property table
10918 instead of calling Target_arm::reloc_uses_thumb_bit().
10919
218c5831
DK
109202010-02-02 Doug Kwan <dougkwan@google.com>
10921
10922 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
10923 types of relaxed input section.
10924
0d31c79d
DK
109252010-02-02 Doug Kwan <dougkwan@google.com>
10926
10927 * Makefile.am (HFILES): Add arm-reloc-property.h.
10928 (DEFFILES): New.
2e702c99
RM
10929 (TARGETSOURCES): Add arm-reloc-property.cc
10930 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
0d31c79d
DK
10931 (libgold_a_SOURCES): $(DEFFILES)
10932 * Makefile.in: Regenerate.
10933 * arm-reloc-property.cc: New file.
10934 * arm-reloc-property.h: New file.
10935 * arm-reloc.def: New file.
10936 * arm.cc: Update comments.
10937 (arm-reloc-property.h): New included header.
10938 (arm_reloc_property_table): New global variable.
10939 (Target_arm::do_select_as_default_target): New method definition.
10940 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
10941 arm-reloc-property to targ_extra_obj.
10942 * parameters.cc (set_parameters_target): Call
10943 Target::select_as_default_target().
10944 * target.h (Target::select_as_default_target): New method definition.
10945 (Target::do_select_as_default_target): Same.
10946
546c7457
DK
109472010-02-01 Doug Kwan <dougkwan@google.com>
10948
10949 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
10950 first_output_text_section_.
10951 (Arm_exidx_fixup::first_output_text_section): New method definition.
10952 (Arm_exidx_fixup::first_output_text_section_): New data member.
10953 (Arm_exidx_fixup::process_exidx_section): Record the first text
10954 output section seen.
10955 (Arm_output_section::fix_exidx_coverage): Set correct linked section
10956 and entsize in output section header.
10957
11b861d5
DK
109582010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10959
10960 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
10961 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
10962 (Arm_relocate_functions::thm_alu11): New Method.
10963 (Arm_relocate_functions::thm_pc8): New Method.
10964 (Arm_relocate_functions::thm_pc12): New Method.
10965 (Target_arm::Scan::local): Handle the relocations.
10966 (Target_arm::Scan::global): Likewise.
10967 (Target_arm::Relocate::relocate): Likewise.
10968 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
10969
c9a2c125
DK
109702010-01-29 Doug Kwan <dougkwan@google.com>
10971
10972 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
10973 of relocation types as ld.
10974
1521477a
DK
109752010-01-29 Doug Kwan <dougkwan@google.com>
10976
10977 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
10978 to public.
10979 (Arm_relocate_functions::thumb_branch_common): Ditto.
10980 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
10981 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
10982 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
10983 Arm_relocate_functions::jump24): Remove.
10984 (Target_arm::Relocate::relocate): Adjust code to call
10985 Arm_relocation_functions::arm_branch_common and
10986 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 10987 wrappers. Merge switch-cases together to reduce source code size.
1521477a 10988
e7eca48c
DK
109892010-01-29 Doug Kwan <dougkwan@google.com>
10990
10991 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
10992 output_local_symbol_count_needs_update_.
10993 (Arm_relobj::output_local_symbol_count_needs_update,
10994 Arm_relobj::set_output_local_symbol_count_needs_update,
10995 Arm_relobj::update_output_local_symbol_count): New methods.
10996 (Arm_relobj::output_local_symbol_count_needs_update_): New data
10997 member.
10998 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
10999 of pointed function as in a R_ARM_PREL31 relocation.
11000 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
11001 for output local symbol count updating.
11002 (Target_arm::do_relax): Update output local symbol counts in objects
11003 if necessary.
11004 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
11005
02961d7e
ILT
110062010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11007
11008 * arm.cc: Added support for the ARM relocations:
11009 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
11010 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
11011 (Arm_relocate_functions::movw_rel_nc): Renamed (was
11012 movw_prel_nc).
11013 (Arm_relocate_functions::movw_rel): New method.
11014 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
11015 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
11016 thm_movw_prel_nc).
11017 (Arm_relocate_functions::thm_movw_rel): New method.
11018 (Arm_relocate_functions::thm_movt_rel): Renamed (was
11019 thm_movt_prel).
11020 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
11021 relocations.
11022 (Target_arm::Scan::global): Likewise.
11023 (Target_arm::Relocate::relocate): Likewise.
11024 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
11025 Likewise.
11026
b10d2873
ILT
110272010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11028
11029 * arm.cc: Added support for ARM group relocations.
11030 (Target_arm::reloc_needs_sym_origin): New method.
11031 (Arm_relocate_functions::calc_grp_kn): New method.
11032 (Arm_relocate_functions::calc_grp_residual): New method.
11033 (Arm_relocate_functions::calc_grp_gn): New method.
11034 (Arm_relocate_functions::arm_grp_alu): New Method.
11035 (Arm_relocate_functions::arm_grp_ldr): New Method.
11036 (Arm_relocate_functions::arm_grp_ldrs): New Method.
11037 (Arm_relocate_functions::arm_grp_ldc): New Method.
11038 (Target_arm::Scan::local): Handle the ARM group relocations.
11039 (Target_arm::Scan::global): Likewise.
11040 (Target_arm::Relocate::relocate): Likewise.
11041 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
11042 Likewise.
11043
2b328d4e
DK
110442010-01-26 Doug Kwan <dougkwan@google.com>
11045
11046 * arm.cc (set): Include.
11047 (class Arm_exidx_fixup): Change type of last_input_section_ to const
11048 pointer type.
2e702c99 11049 (Arm_output_section::Text_section_list): New type.
2b328d4e
DK
11050 (Arm_output_section::append_text_sections_to_list): New method.
11051 (Arm_output_section::fix_exidx_coverage): Ditto.
11052 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
2e702c99 11053 (Arm_relobj::convert_input_section_to_relaxed_section): Use
2b328d4e
DK
11054 Relobj::set_section_offset() instead of
11055 Sized_relobj::invalidate_section_offset().
2e702c99 11056 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
2b328d4e
DK
11057 parameter for section headers. Ignore relocation sections for
11058 unallocated sections and EXIDX sections.
11059 (Target_arm::fix_exidx_coverage): New method.
11060 (Target_arm::output_section_address_less_than): New type.
11061 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
11062 linked text section instead of the EXIDX section.
11063 (Arm_output_section::create_stub_group): Add an assertion to check
11064 that this is not an EXIDX output section.
11065 (Arm_output_section::append_text_sections_to_list): New method.
11066 (Arm_output_section::fix_exidx_coverage): Ditto.
11067 (Arm_relobj::scan_sections_for_stubs): Adjust call to
2e702c99 11068 Arm_relobj::section_needs_reloc_stub_scanning.
2b328d4e
DK
11069 (Target_arm::do_relax): Fix EXIDX output section coverage in the
11070 first pass.
11071 (Target_arm::fix_exidx_coverage): New method.
11072 * object.h (Relobj::set_output_section): New method.
11073 (Sized_relobj::invalidate_section_offset): Remove method.
11074 (Sized_relobj::do_invalidate_section_offset): Remove method.
11075 (Sized_relobj::do_set_section_offset): Handle offset value -1.
11076
c7f3c371
DK
110772010-01-25 Doug Kwan <dougkwan@google.com>
11078
11079 * arm.cc (Arm_exidx_merged_section::do_output_offset):
11080 Fix warning due to signed and unsigned comparison on a 32-bit host.
11081
8923b24c
DK
110822010-01-22 Doug Kwan <dougkwan@google.com>
11083
11084 * arm.cc (Target_arm::do_relax): Record an output section for section
11085 offset adjustment it contains any stub table that has changed.
11086 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
11087 offsets in an output section if necessary.
11088 * output.cc (Output_section::Output_section): Initialize
11089 section_offsets_need_adjustments_.
11090 (Output_section::add_input_section_for_script): Renamed to
11091 Output_section::add_simple_input_section.
11092 (Output_section::save_states): Add a comment.
11093 (Output_section::discard_states): New method defintion.
11094 (Output_section::adjust_section_offsets): Same.
11095 * output.h (Output_section::add_input_section_for_script): Renamed to
11096 Output_section::add_simple_input_section.
11097 (Output_section::discard_states): New method declaration.
11098 (Output_section::adjust_section_offsets): Same.
11099 (Output_section::section_offsets_need_adjustment,
11100 Output_section::set_section_offsets_need_adjustment): New method
11101 definitions.
11102 (Output_section::section_offsets_need_adjustment_): New data member.
11103 * script-sections.cc
11104 (Output_section_element_input::set_section_address): Adjust code for
11105 renaming of Output_section::add_input_section_for_script.
11106 (Orphan_output_section::set_section_address): Same.
11107
9b2fd367
DK
111082010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11109
11110 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
11111 Fix_v4bx enum values .
11112 * gold/options.h (General_options): New option definitions.
11113 (General_options::fix_v4bx): New method.
11114 (General_options::Fix_v4bx): New enum.
11115 * gold/options.cc (General_options::parse_fix_v4bx): New method.
11116 (General_options::parse_fix_v4bx_interworking): New method.
11117
80d0d023
DK
111182010-01-22 Doug Kwan <dougkwan@google.com>
11119
11120 * arm.cc (Arm_exidx_fixup): New class.
11121
af2cdeae
DK
111222010-01-21 Doug Kwan <dougkwan@google.com>
11123
11124 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
11125 classes.
11126 (Arm_exidx_section_offset_map): New type.
11127
993d07c1
DK
111282010-01-21 Doug Kwan <dougkwan@google.com>
11129
11130 * arm.cc (Arm_exidx_input_section): New class.
11131 (Arm_relobj::exidx_input_section_by_link,
11132 Arm_relobj::exidx_input_section_by_shndx,
11133 Arm_relobj::make_exidx_input_section): New methods.
11134 (read_arm_attributes_section): Remove.
11135 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
11136 information about them.
11137 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
11138 to here.
11139
5ac169d4
DK
111402010-01-20 Doug Kwan <dougkwan@google.com>
11141
11142 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
11143 Input_section_specifier to Section_id.
11144 (Target_arm::new_arm_input_section: Adjust code for change of key
11145 type.
11146 (Target_arm::find_arm_input_section): Ditto.
11147 * gc.h (object.h): Include for Section_id nand Section_id_hash.
11148 (Section_id): Remove.
11149 (Garbage_collection::Section_id_hash): Remove.
11150 * icf.h (object.h): Include for Section_id nand Section_id_hash.
11151 (Section_id): Remove.
11152 (Icf::Section_id_hash): Remove.
11153 * object.h (Section_id, Const_section_id, Section_id_hash,
11154 Const_section_id_hash): New type definitions.
11155 * output.cc (Output_section::add_relaxed_input_section): Change to
11156 use Const_section_id instead of Input_section_specifier as key type.
11157 (Output_section::add_merge_input_section): Ditto.
11158 (Output_section::build_relaxation_map): Change to use Section_id
11159 instead of Input_section_specifier as key type.
2e702c99 11160 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5ac169d4
DK
11161 Ditto.
11162 (Output_section::convert_input_sections_to_relaxed_sections): Change
11163 to use Const_section_id instead of Input_section_specifier as key type.
2e702c99 11164 (Output_section::find_merge_section): Ditto.
5ac169d4
DK
11165 (Output_section::find_relaxed_input_section): Ditto.
11166 * output.h (Input_section_specifier): Remove class.
11167 (Output_section::Output_section_data_by_input_section_map): Change
11168 key type to Const_section_id.
11169 (Output_section::Output_relaxed_input_section_by_input_section_map):
11170 Ditto.
11171 (Output_section::Relaxation_map): Change key type to Section_id.
11172
a2162063
ILT
111732010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11174
11175 * gold/arm.cc: Added support for R_ARM_V4BX relocation
11176 (class Arm_v4bx_stub): New class.
11177 (DEF_STUBS): Updated definition to support v4_veneer_bx.
11178 (Stub_factory::make_arm_v4bx_stub): New method.
11179 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
11180 (Stub_table::empty): Handle v4bx stubs.
11181 (Stub_table::add_arm_v4bx_stub): New method.
11182 (Stub_table::find_arm_v4bx_stub): New method.
11183 (Arm_relocate_functions::v4bx): New method.
11184 (Target_arm::fix_v4bx): New method.
11185 (Target_arm::Target_arm): Handle R_ARM_V4BX.
11186 (Stub_table::relocate_stubs): Likewise.
11187 (Stub_table::do_write): Likewise.
11188 (Stub_table::update_data_size_and_addralign): Likewise.
11189 (Stub_table::finalize_stubs): Likewise.
11190 (Target_arm::Scan::local): Likewise.
11191 (Target_arm::Scan::global): Likewise.
11192 (Target_arm::do_finalize_sections): Likewise.
11193 (Target_arm::Relocate::relocate): Likewise.
11194 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
11195 Likewise.
11196 (Target_arm::scan_reloc_for_stub): Likewise.
11197 (Target_arm::scan_reloc_section_for_stubs): Likewise.
11198
5696ab0b
ILT
111992010-01-19 Ian Lance Taylor <iant@google.com>
11200
11201 * output.cc (Output_section_headers::do_sized_write): Write large
11202 segment count to sh_info field.
11203 (Output_file_header::do_sized_write): For large segment count,
11204 write PN_XNUM to e_phnum field.
11205
800d0f56
ILT
112062010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11207
11208 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
11209 (Arm_relocate_functions::thm_jump8): New function.
11210 (Arm_relocate_functions::thm_jump11): New function.
11211 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
11212 R_ARM_THM_JUMP11.
11213 (Target_arm::Scan::global): Likewise.
11214 (Target_arm::Relocate::relocate): Likewise.
11215 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
11216 Likewise.
11217
41263c05
DK
112182010-01-14 Doug Kwan <dougkwan@google.com>
11219
11220 * arm.cc (map, utility): Include headers.
11221 (Target_arm::apply_cortex_a8_workaround): New method.
11222 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
11223 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
11224 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
11225 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
11226 the --[no-]fix-cortex-a8 command line options.
11227 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
11228 (Target_arm::relocate_stub): Use addend in instruction template.
11229 * options.h (DEFINE_bool): Set the user-set flag.
11230 (General_options): Add --[no-]-fix-cortex options.
11231 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 11232 : Update fast look-up map after conversion.
41263c05 11233
459e9b03
ST
112342010-01-14 Sriraman Tallam <tmsriram@google.com>
11235
11236 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
11237 in the first pass of do_layout.
11238
b521dfe4
DK
112392010-01-13 Doug Kwan <dougkwan@google.com>
11240
11241 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
11242 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
11243 apparent compiler problem of not folding static constant integral
11244 data members of elfcpp::Elf_sizes<32>.
11245
44272192
DK
112462010-01-13 Doug Kwan <dougkwan@google.com>
11247
11248 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
11249 Arm_relobj::section_needs_cortex_a8_stub_scanning,
11250 Arm_relobj::scan_section_for_cortex_a8_erratum,
11251 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
11252 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
11253 sections to scan for relocation stubs into a new method
11254 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
11255 relocation and Cortex-A8 stub scanning.
11256 (Target_arm::do_relax): Force stubs to be after stubbed sections
11257 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 11258 the beginning of a new relaxation pass. Update a comment.
44272192
DK
11259 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
11260
44b71ece
ILT
112612010-01-12 Ian Lance Taylor <iant@google.com>
11262
11263 * target-reloc.h (visibility_error): New inline function.
11264 (relocate_section): Call visibility_error.
11265 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
11266 (MOSTLYCLEANFILES): Likewise.
11267 (protected_4_pic.o, protected_3.err): New targets.
11268 * testsuite/protected_4.cc: New file.
11269
a120bc7f
DK
112702010-01-12 Doug Kwan <dougkwan@google.com>
11271
11272 * arm.cc (Cortex_a8_reloc): New class.
11273 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
11274 and cortex_a8_relocs_info_.
11275 (Target_arm::fix_cortex_a8): New method definition.
11276 (Target_arm::Cortex_a8_relocs_info): New type.
11277 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
11278 New data member declarations.
11279 (Target_arm::scan_reloc_for_stub): Record information about
11280 relocations for THUMB branches that might be exempted from the
11281 Cortex-A8 workaround.
11282 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
11283 at the beginning of a relaxation pass.
11284
20138696
DK
112852010-01-12 Doug Kwan <dougkwan@google.com>
11286
11287 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
11288 (Arm_relobj::Mapping_symbol_position,
11289 Arm_reloj::Mapping_symbol_position_less,
11290 Arm_relobj::Mapping_symbols_info): New types.
11291 (Target_arm::is_mapping_symbol_name): New method definition.
11292 (Arm_relobj::do_count_local_symbols): Save information about mapping
11293 symbols.
11294
089d69dc
DK
112952010-01-11 Doug Kwan <dougkwan@google.com>
11296
11297 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
11298 Arm_relocate_functions::thumb32_branch_upper,
11299 Arm_relocate_functions::thumb32_branch_lower,
11300 Arm_relocate_functions::thumb32_cond_branch_offset,
11301 Arm_relocate_functions::thumb32_cond_branch_upper,
11302 Arm_relocate_functions::thumb32_cond_branch_lower,
11303 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
11304 branch offset encoding.
11305 (Arm_relocate_functions::thumb_branch_common): Use new branch
11306 offset encoding methods to avoid code duplication.
11307 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
11308 (Stub_addend_reader::operator()): Use new branch encoding method
11309 to avoid code duplication.
11310
99e5bff2
DK
113112010-01-11 Doug Kwan <dougkwan@google.com>
11312
11313 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
11314 (Target_arm::do_finalize_sections): Define special EXIDX section
11315 symbols only if referenced.
11316 * gc.h (Garbage_collection::add_reference): New method.
11317 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
11318 code duplication.
11319
98e090bd
ILT
113202010-01-11 Ian Lance Taylor <iant@google.com>
11321
d0a91bd8
ILT
11322 * script.cc (Version_script_info::build_expression_list_lookup):
11323 Change complaing about duplicate wildcard match from error to
11324 warning.
11325
98e090bd
ILT
11326 * script.cc (class Lazy_demangler): Recreate--revert part of patch
11327 of 2009-12-30.
11328 (Version_script_info::Version_script_info): Initialize globs_,
11329 default_version_, default_is_global_, and exact_. Don't
11330 initialize globals_ or locals_.
11331 (Version_script_info::build_lookup_tables): Build local symbols
11332 first.
11333 (Version_script_info::unquote): New function.
11334 (Version_script_info::add_exact_match): New function.
11335 (Version_script_info::build_expression_list_lookup): Remove lookup
11336 parameter. Add is_global parameter. Change all callers. Handle
11337 wildcard pattern specially. Unquote pattern. Call
11338 add_exact_match.
11339 (Version_script_info::get_name_to_match): New function.
11340 (Version_script_info::get_symbol_version): New function.
11341 (Version_script_info::get_symbol_version_helper): Remove.
11342 (Version_script_info::check_unmatched_names): Call unquote.
11343 * script.h (class Version_script_info): Change get_symbol_version
11344 to be non-inline and add is_global parameter; change all callers.
11345 Rewrite symbol_is_local. Update declarations. Define struct
11346 Version_tree_match, Exact, Globs. Don't define struct Lookup.
11347 Remove globals_ and locals_ members. Add exact_, globs_,
11348 default_version_, is_global_.
11349 (Version_script_info::Glob): Remove pattern, add expression and
11350 is_global. Update constructor. Change all callers.
11351 * dynobj.cc (Versions::finalize): Mark the version symbol as the
11352 default version.
11353 (Versions::symbol_section_contents): If a symbol is undefined, or
11354 defined in a dynamic object, set the version index to
11355 VER_NDX_LOCAL.
11356 * symtab.cc (Symbol_table::add_from_relobj): Don't call
11357 symbol_is_local.
11358 (Symbol_table::add_from_pluginobj): Likewise.
11359 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
11360
d56962d3
DK
113612010-01-11 Doug Kwan <dougkwan@google.com>
11362
11363 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
11364 (incremental_dump_LDADD): Add linking option for libintl.
11365 * Makefile.in: Regenerate.
11366
94e6ee91
L
113672010-01-11 H.J. Lu <hongjiu.lu@intel.com>
11368
11369 PR gold/11144
11370 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
11371 instead of -Ds.
11372 * testsuite/Makefile.in: Regenerated.
11373
e96c574b
DK
113742010-01-10 Doug Kwan <dougkwan@google.com>
11375
11376 * options.h (DEFINE_var): Use parentheses around argument varname__
11377 in macro body to avoid any unintended subsequent substitutions.
11378
7198066b
ILT
113792010-01-10 Ian Lance Taylor <iant@google.com>
11380
ba4d53bf
ILT
11381 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
11382 candidates before doing symbol resolution.
11383
7198066b
ILT
11384 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
11385 ODR candidates if only one is weak.
11386
a2beed37
ILT
113872010-01-08 Ian Lance Taylor <iant@google.com>
11388
11389 * script.cc (Version_script_info::build_expression_list_lookup):
11390 Don't warn about ambiguous version, just record the ambiguity.
11391 (Version_script_info::get_symbol_version_helper): Give error if
11392 version is ambiguous.
11393
2fb7225c
DK
113942010-01-08 Doug Kwan <dougkwan@google.com>
11395
11396 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
703d02da
AM
11397 prev_data_size_ and prev_addralign_. Remove initializer for
11398 deleted data member has_been_changed_.
11399 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
11400 to determine if the table is empty.
11401 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
11402 Remove.
11403 (Stub_table::add_reloc_stub): Define method in class definition
11404 instead of just declaring it there.
11405 (Stub_table::add_cortex_a8_stub): New method definition.
11406 (Stub_table::update_data_size_and_addralign): Ditto.
11407 (Stub_table::finalize_stubs): Ditto.
11408 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
11409 (Stub_table::do_addralign_): Return address alignment in the
11410 (Stub_table::do_reset_address_and_file_offset): Define method in
11411 class definition instead of declaring it there. Set current data
11412 size to be the data size of the previous pass.
11413 (Stub_table::set_final_data_size): Use current data size as the
11414 final data size.
11415 (Stub_table::relocate_stub): Change parameter type of stub from
11416 Reloc_stub pointer to Stub pointer.
11417 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
11418 (Stub_table::Cortex_a8_stub_list): New typedef.
11419 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
11420 Stub_table::prev_addralign_): New data member.
11421 (Arm_relobj::Arm_relobj): Initialize data member
11422 section_has_cortex_a8_workaround_.
11423 (Arm_relobj::section_has_cortex_a8_workaround,
11424 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
11425 definitions.
11426 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
11427 declarations.
11428 (Target_arm::relocate_stub): Change parameter type of stub from
11429 Reloc_stub pointer to Stub pointer.
11430 (Insn_template::size, Insn_template::alignment): Handle
11431 THUMB16_SPECIAL_TYPE.
11432 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
11433 Stub_table::update_data_size_and_addralign,
11434 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
11435 definitions.
11436 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
11437 (Stub_table::do_write): Ditto.
11438 (Target_arm::do_relax): Adjust code for changes in Stub_table.
2fb7225c 11439
880cd20d
ILT
114402010-01-08 Ian Lance Taylor <iant@google.com>
11441
11442 PR 11108
11443 * symtab.h (class Symbol): Remove fields is_target_special_ and
11444 has_plt_offset_. Add field is_defined_in_discarded_section_.
11445 (Symbol::is_defined_in_discarded_section): New function.
11446 (Symbol::set_is_defined_in_discarded_section): New function.
11447 (Symbol::has_plt_offset): Rewrite.
11448 (Symbol::set_plt_offset): Verify that new offset is not -1U.
11449 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
11450 Don't initialize is_target_special_ or has_plt_offset_.
11451 Initialize is_defined_in_discarded_section_.
11452 (Symbol_table::add_from_relobj): If appropriate, set
11453 is_defined_in_discarded_section.
11454 * resolve.cc (Symbol::override_base_with_special): Don't test
11455 is_target_special_. Change has_plt_offset_ to has_plt_offset().
11456 * target-reloc.h (relocate_section): Do special handling for
11457 symbols defined in discarded sections for global symbols as well
11458 as local symbols.
11459
2703e3eb
ILT
114602010-01-08 Ian Lance Taylor <iant@google.com>
11461
11462 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
11463 the SHT_SYMTAB case.
11464
339d40a3
ILT
114652010-01-08 Ian Lance Taylor <iant@google.com>
11466
11467 * object.cc (Sized_relobj::do_layout): Don't get confused if
11468 layout_eh_frame returns NULL.
11469
abecea76
ILT
114702010-01-08 Ian Lance Taylor <iant@google.com>
11471
11472 PR 11084
11473 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
11474 dynamic symbol table, use the normal symbol table.
11475 (Sized_dynobj::do_read_symbols): Remove assertion about type of
11476 symbol table.
11477
6b7dd3f3
ILT
114782010-01-08 Ian Lance Taylor <iant@google.com>
11479
11480 PR 11072
11481 * layout.cc (Layout::include_section): Remove .gnu_debuglink
11482 sections.
11483
36c50e63
L
114842010-01-08 H.J. Lu <hongjiu.lu@intel.com>
11485
11486 * version.cc (print_version): Change to "Copyright 2010".
11487
e291e7b9
ILT
114882010-01-08 Ian Lance Taylor <iant@google.com>
11489
11490 PR 10287
11491 PR 11063
11492 * i386.cc (class Target_i386): Change return type of plt_section
11493 to be non-const.
11494 (class Output_data_plt_i386): Add tls_desc_rel_ field.
11495 (Output_data_plt_i386::Output_data_plt_i386): Initialize
11496 tls_desc_rel_ field.
11497 (Output_data_plt_i386::rel_tls_desc): New function.
11498 (Target_i386::rel_tls_desc_section): New function.
11499 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
11500 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
11501 R_386_TLS_DESC reloc in rel_tls_desc_section.
11502 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
11503 Define struct Tlsdesc_info.
11504 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
11505 (Target_x86_64::do_reloc_symbol_index): New function.
11506 (Target_x86_64::add_tlsdesc_info): New function.
11507 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
11508 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
11509 tlsdesc_rel_ field.
11510 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
11511 all callers.
11512 (Output_data_plt_x86_64::rela_tlsdesc): New function.
11513 (Target_x86_64::rela_tlsdesc_section): New function.
11514 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
11515 handling.
11516 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
11517 (Target_x86_64::do_reloc_addend): New function.
11518 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
11519 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
11520 declarations. Define TARGET_CODE. Add arg field to u1_ union.
11521 (Output_reloc::type): New function.
11522 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
11523 (Output_reloc::is_target_specific): New function.
11524 (Output_reloc::target_arg): New function.
11525 (class Output_reloc) [SHT_RELA]: Add four new constructors for
11526 absolute relocs and target specific relocs.
11527 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
11528 add_target_specific.
11529 (class Output_data_reloc) [SHT_RELA]: Likewise.
11530 * output.cc (Output_reloc::Output_reloc): Add four new versions
11531 for absolute relocs and target specific relocs.
11532 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
11533 (Output_reloc::get_symbol_index): Likewise.
11534 (Output_reloc::local_section_offset): Check that local_sym_index_
11535 is not TARGET_CODE or 0.
11536 (Output_reloc::symbol_value): Likewise.
11537 (Output_reloc::write) [SHT_RELA]: Call target for target specific
11538 reloc.
11539 * target.h (class Target): Add reloc_symbol_index and reloc_addend
11540 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
11541 functions.
11542 * layout.cc (add_target_dynamic_tags): Use output section for
11543 DT_PLTRELSZ and DT_JMPREL.
11544
3a44184e
ILT
115452010-01-07 Ian Lance Taylor <iant@google.com>
11546
11547 PR 11061
11548 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
11549 function.
11550 (class Output_data_reloc_generic): Define.
11551 (class Output_data_reloc_base): Change base class to
11552 Output_data_reloc_generic. Change add() method to call
11553 bump_relative_reloc_count for a relative reloc. Remove
11554 sort_relocs_ field.
11555 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
11556 to sort_relocs().
11557 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
11558 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
11559 appropriate.
11560 * layout.h (class Layout): Update declaration.
11561
ea715a34
ILT
115622010-01-07 Ian Lance Taylor <iant@google.com>
11563
11564 * output.h (class Output_data): Add const version of
11565 output_section and do_output_section.
11566 (class Output_section_data): Add const version of
11567 do_output_section.
11568 (class Output_section): Likewise.
11569 * layout.cc (Layout::add_target_dynamic_tags): New function.
11570 * layout.h (class Layout): Update declarations.
11571 * arm.cc (Target_arm::do_finalize_sections): Use
11572 add_target_dynamic_tags.
11573 * i386.cc (Target_i386::do_finalize_sections): Likewise.
11574 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
11575 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
11576 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
11577
659948a4
ILT
115782010-01-07 Ian Lance Taylor <iant@google.com>
11579
11580 PR 11042
11581 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
11582 object as needed.
11583
9d3b86f6
ILT
115842010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
11585 Ian Lance Taylor <iant@google.com>
11586
11587 PR 11019
11588 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
11589 Xindex::read_symtab_xindex.
11590
bb0d3eb0
DK
115912010-01-07 Doug Kwan <dougkwan@google.com>
11592
11593 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
11594 (Insn_template::thumb16_bcond_insn): New method declaration.
11595 (Insn_template): Fix spelling.
11596 (Stub::thumb16_special): New method declaration.
11597 (Stub::do_write): Define virtual method which was previously pure
11598 virtual.
11599 (Stub::do_thumb16_special): New method declaration.
11600 (Stub::do_fixed_endian_write): New template member.
11601 (Reloc_stub::do_write): Remove.
11602 (Reloc_stub::do_fixed_endian_write): Remove.
11603 (Cortex_a8_stub): New class definition.
11604 (Stub_factory::make_cortex_a8_stub): New method definition.
11605 (Stub_factory::Stub_factory): Add missing static storage class
11606 qualifier for elf32_arm_stub_a8_veneer_blx.
11607
ffeef7df
ILT
116082010-01-07 Ian Lance Taylor <iant@google.com>
11609
dc3f80fe
ILT
11610 PR 10980
11611 * options.h (class General_options): Add --warn-unresolved-symbols
11612 and --error-unresolved-symbols.
11613 * errors.cc (Errors::undefined_symbol): Implement
11614 --warn-unresolved-symbols.
11615
ffeef7df
ILT
11616 * options.h (class General_options): Add -z text and -z textoff.
11617 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
11618
f1ec9ded
ST
116192010-01-06 Sriraman Tallam <tmsriram@google.com>
11620
11621 * gc.h (Garbage_collection::Cident_section_map): New typedef.
11622 (Garbage_collection::cident_sections): New function.
11623 (Garbage_collection::add_cident_section): New function.
11624 (Garbage_collection::cident_sections_): New member.
11625 (gc_process_relocs): Add references to sections whose names are C
11626 identifiers.
11627 * gold.h (cident_section_start_prefix): New constant.
11628 (cident_section_stop_prefix): New constant.
11629 (is_cident): New function.
11630 * layout.cc (Layout::define_section_symbols): Replace string constants
11631 with the newly defined constants.
11632 * object.cc (Sized_relobj::do_layout): Track sections whose names are
11633 C identifiers.
11634 * testsuite/Makefile.am: Add gc_orphan_section_test.
11635 * testsuite/Makefile.in: Regenerate.
11636 * testsuite/gc_orphan_section_test.cc: New file.
11637 * testsuite/gc_orphan_section_test.sh: New file.
11638
6eda8c29
ILT
116392010-01-06 Ian Lance Taylor <iant@google.com>
11640
b9674e17
ILT
11641 PR 10980
11642 * options.h (class General_options): Add --warn-shared-textrel.
11643 * layout.cc (Layout::finish_dynamic_section): Implement
11644 --warn-shared-textrel.
11645
6eda8c29
ILT
11646 PR 10980
11647 * options.h (class General_options): Add --warn-multiple-gp.
11648
32dcd44e
ILT
116492010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11650
11651 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
11652 $(THREADSLIB) and $(LIBDL).
11653 * Makefile.in: Rebuild.
11654
a192ba05
ILT
116552010-01-06 Ian Lance Taylor <iant@google.com>
11656
11657 PR 10980
11658 * options.cc (General_options::parse_section_start): New function.
11659 (General_options::section_start): New function.
11660 (General_options::General_options): Initialize all members.
11661 * options.h: Include <map>
11662 (class General_options): Add --section-start. Add section_starts_
11663 member.
11664 * layout.cc (Layout::attach_allocated_section_to_segment): If
11665 --section-start was used, set the address of the segment. Remove
11666 local sort_sections.
11667 (Layout::relaxation_loop_body): If the address of the load segment
11668 has been set by --section-start, don't use it.
11669 * output.h (Output_segment::update_flags_for_output_section): New
11670 function.
11671 * output.cc (Output_segment::add_output_section): Call
11672 update_flags_for_output_section.
11673
dde3f402
ILT
116742010-01-05 Ian Lance Taylor <iant@google.com>
11675
62dfdd4d
ILT
11676 PR 10980
11677 * options.h (class General_options): Add --undefined-version.
11678 * script.cc (struct Version_expression): Add was_matched_by_symbol
11679 field.
11680 (Version_script_info::matched_symbol): New function.
11681 (Version_script_info::get_symbol_version_helper): Call
11682 matched_symbol.
11683 (Version_script_info::check_unmatched_names): New function.
11684 * script.h (class Version_script_info): Update declarations.
11685 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
11686
9c4ae156
ILT
11687 * options.h (class General_options): Use DEFINE_bool_alias for
11688 allow_multiple_definition.
11689 * resolve.cc (Symbol_table::should_override): Don't test
11690 allow_multiple_definition.
11691
dde3f402
ILT
11692 PR 10980
11693 * options.h (class General_options): Add --cref.
11694 * main.cc (main): Print cref table if --cref. Don't close mapfile
11695 until after printing cref table.
11696 * cref.cc: Include "symtab.h".
11697 (class Cref_inputs): Define Cref_table_compare and Cref_table.
11698 (Cref_table_compare::operator()): New function.
11699 (Cref_inputs::gather_cref): New function.
11700 (filecol): New static const.
11701 (Cref_inputs::print_cref): New function.
11702 (Cref::print_cref): New function.
11703 * cref.h: Include <cstdio>.
11704 (class Cref): Update declarations.
11705 * mapfile.h (Mapfile::file): New function.
11706 * object.h (class Object): Define Symbols. Declare virtual
11707 do_get_global_symbols.
11708 (Object::get_global_symbols): New function.
11709 * object.cc (Input_objects::add_object): Pass object to cref_ if
11710 --cref.
11711 (Input_objects::archive_start): Likewise.
11712 (Input_objects::archive_stop): Likewise.
11713 (Input_objects::print_cref): New function.
11714 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
11715 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
11716 --cref.
11717 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
11718 function.
11719 * plugin.h (class Sized_pluginobj): Update declarations.
11720
8781f709
ILT
117212010-01-05 Ian Lance Taylor <iant@google.com>
11722
11723 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
11724 to is_default_version. Rename insdef to insdefault.
11725 (Symbol_table::add_from_relobj): Rename def to is_default_version
11726 and local to is_forced_local.
11727 (Symbol_table::add_from_pluginobj): Likewise.
11728 (Symbol_table::add_from_dynobj): Likewise.
11729 (Symbol_table::define_special_symbol): Rename insdef to
11730 insdefault.
11731
fe35d28d
ILT
117322010-01-04 Ian Lance Taylor <iant@google.com>
11733
30bc8c46
ILT
11734 PR 10980
11735 * options.h (class General_options): Add
11736 --allow-multiple-definition and -z muldefs.
11737 * resolve.cc (Symbol_table::should_override): Don't warn about a
11738 multiple symbol definition if --allow-multiple-definition or -z
11739 muldefs.
11740
7eaea549
ILT
11741 PR 10980
11742 * options.h (class General_options): Add --add-needed and
11743 --copy-dt-needed-entries. Tweak --as-needed help entry.
11744 * object.cc (Input_objects::check_dynamic_dependencies): Give an
11745 error if --copy-dt-needed-entries aka --add-needed is used and
11746 would cause a change in behaviour.
11747
fe35d28d
ILT
11748 PR 10980
11749 * options.h (class General_options): Add -G as a short version of
11750 --shared. Add no-op options -assert, -g, and -i.
11751
55a2bb35
ST
117522010-01-04 Sriraman Tallam <tmsriram@google.com>
11753
11754 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
11755 check for .text or .gnu.linkonce.t sections.
11756 * icf.cc (Icf::find_identical_sections): Ditto.
11757 Change the detection for mangled function name within the section
11758 name.
11759 * icf.h (is_section_foldable_candidate): New function.
11760
719328e1
ILT
117612009-12-30 Ian Lance Taylor <iant@google.com>
11762
11763 PR 10980
11764 * options.h (class General_options): Permit two dashes with
11765 --retain-symbols-file.
11766
d7bb5745
ILT
117672009-12-30 Ian Lance Taylor <iant@google.com>
11768
403a15dd
ILT
11769 PR 10979
11770 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
11771 don't put the file header and segment headers in the text
11772 segment.
11773
eda294df
ILT
11774 PR 10979
11775 * common.cc (Sort_commons::operator()): Stabilize sort when both
11776 entries are NULL.
11777 (Symbol_table::do_allocate_commons_list): When allocating common
11778 symbols, skip a symbol which is no longer common.
11779 * symtab.h (Symbol::is_common): Test whether the symbol comes from
11780 an object before checking its type.
11781 * testsuite/common_test_2.c: New file.
11782 * testsuite/common_test_3.c: New file.
11783 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
11784 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
11785 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
11786 (common_test_2_pic.o, common_test_2.so): New targets.
11787 (common_test_3_pic.o, common_test_3.so): New targets.
11788 * testsuite/Makefile.in: Rebuild.
11789
d7bb5745
ILT
11790 PR 10979
11791 * script.cc (read_input_script): If we see a new SECTIONS clause,
11792 and we have added an input section, give an error.
11793 * layout.h (class Layout): Add have_added_input_section function.
11794 Add have_added_input_section_ field.
11795 * layout.cc (Layout::Layout): Initialize
11796 have_added_input_section_.
11797 (Layout::layout): Set have_added_input_section_.
11798 (Layout::layout_eh_frame): Likewise.
11799
fc59c572
ILT
118002009-12-30 Ian Lance Taylor <iant@google.com>
11801
11802 PR 10931
11803 * options.h (class General_options): Add --sort-common option.
11804 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
11805 * common.cc (Sort_common): Add sort_order parameter to
11806 constructor. Add sort_order_ field.
11807 (Sort_commons::operator): Check sort_order_.
11808 (Symbol_table::allocate_commons): Determine the sort order.
11809 (Symbol_table::do_allocate_commons): Add sort_order parameter.
11810 Change all callers.
11811 (Symbol_table::do_allocate_commons_list): Likewise.
11812
1c74fab0
ILT
118132009-12-30 Ian Lance Taylor <iant@google.com>
11814
11815 PR 10916
11816 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
11817 symbols from this object, don't change the visibility of an
11818 undefined symbol.
11819 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
11820
6affe781
ILT
118212009-12-30 Ian Lance Taylor <iant@google.com>
11822
11823 PR 10861
11824 * script.h (class Version_script_info): Define Language enum.
11825 Update declarations. Define Glob, Exact, and Lookup types. Add
11826 new fields globals_, locals_, and is_finalized_.
11827 * script.cc: Various formatting fixes.
11828 (class Parser_closure): Change language_stack_ from a vector of
11829 std::string to one of Version_script_info::Language. Adjust all
11830 uses accordingly.
11831 (class Lazy_demangler): Remove.
11832 (struct Version_expression): Change language from std::string to
11833 Version_script_info::Language.
11834 (Version_script_info::Version_script_info): New function.
11835 (Version_script_info::~Version_script_info): Don't call clear.
11836 (Version_script_info::finalize): New function.
11837 (Version_script_info::build_lookup_tables): New function.
11838 (Version_script_info::build_expression_list_lookup): New
11839 function.
11840 (Version_script_info::get_symbol_version_helper): Rewrite to use
11841 lookup tables.
11842 (Version_script_info::print_expression_list): Adjust to use
11843 Version_script_info::Language.
11844 (script_push_lex_into_version_mode): Check that the version script
11845 has not been finalized.
11846 (version_script_push_lang): Change language string to
11847 Version_script_info::Language.
11848 * options.cc (Command_line::version_script): New function.
11849 * options.h (class General_options): Add finalize_dynamic_list
11850 function. Change version_script from declaration to definition.
11851 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
11852 * testsuite/version_script.map: Remove duplicate def of foo.
11853 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
11854 version_script.map.
11855 * testsuite/Makefile.in: Rebuild.
11856
818bf354
ILT
118572009-12-30 Ian Lance Taylor <iant@google.com>
11858
11859 PR 10843
11860 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
11861 if the input symbol index is 0, make the output symbol index 0.
11862
ebcc8304
ILT
118632009-12-30 Ian Lance Taylor <iant@google.com>
11864
11865 PR 10670
11866 * options.h (class General_options): Add -x/--discard-all.
11867 * object.cc (Sized_relobj::do_count_local_symbols): Handle
11868 --discard-all. If the local symbol needs a dynamic entry, check
11869 that before handling --discard-locals.
11870
176fe33f
ILT
118712009-12-30 Ian Lance Taylor <iant@google.com>
11872
bb321bb1
ILT
11873 PR 10450
11874 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
11875 flags to PF_R.
11876 (Output_segment::add_output_section): Don't change the flags if
11877 the type is PT_TLS.
11878
176fe33f
ILT
11879 PR 10450
11880 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
11881 GNU hash table if they need a dynamic value. Otherwise, don't add
11882 them if they are defined in a dynamic object or are forced local.
11883
e8cd95c7
ILT
118842009-12-29 Ian Lance Taylor <iant@google.com>
11885
1b81fb71
ILT
11886 PR 10450
11887 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
11888 .gnu.hash table for a 32-bit target.
11889
8d6d383d
ILT
11890 PR 10450
11891 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
11892 regular and a dynamic object only needs a dynamic symbol table
11893 entry if it is externally visible.
11894
e785ec03
ILT
11895 PR 10450
11896 * i386.cc (class Target_i386): Initialize global_offset_table_ in
11897 constructor. Add global_offset_table_ field.
11898 (Target_i386::got_section): Set global_offset_table_.
11899 (Target_i386::do_finalize_sections): Set global_offset_table_
11900 size.
11901 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
11902 in constructor. Add global_offset_table_ field.
11903 (Target_x86_64::got_section): Set global_offset_table_.
11904 (Target_x86_64::do_finalize_sections): Set global_offset_table_
11905 size.
11906
1a2dff53
ILT
11907 * layout.cc (Layout::Layout): Initialize increase_relro_.
11908 (Layout::get_output_section): Add is_relro, is_last_relro, and
11909 is_first_non_relro parameters. Change all callers.
11910 (Layout::choose_output_section): Likewise.
11911 (Layout::add_output_section_data): Likewise.
11912 (Layout::make_output_section): Likewise.
11913 (Layout::set_segment_offsets): Clear increase_relro when using a
11914 linker script.
11915 * layout.h (class Layout): Add increase_relro method. Add
11916 increase_relro_ field. Update declarations.
11917 * output.cc (Output_section::Output_section): Initialize
11918 is_last_relro_ and is_first_non_relro_.
11919 (Output_segment::add_output_section): Group relro sections is
11920 do_sort is true. Handle is_last_relro and is_first_non_relro.
11921 (Output_segment::maximum_alignment): Remove relro handling.
11922 (Output_segment::set_section_addresses): Add increase_relro
11923 parameter. Change all callers. Add initial alignment to align
11924 relro sections on separate page. Remove old relro handling.
11925 (Output_segment::set_section_list_addresses): Remove in_relro
11926 parameter. Change all callers.
11927 (Output_segment::set_offset): Add increase parameter. Change all
11928 callers. Remove old relro handling.
11929 * output.h (class Output_section): Add new methods: is_last_relro,
11930 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
11931 Add is_last_relro_ and is_first_non_relro_ fields.
11932 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
11933 Create separate .got.plt section. Call increase_relro.
11934 * x86_64.cc (Target_x86_64::got_section): Likewise.
11935 * testsuite/relro_script_test.t: Add .got.plt.
11936
f0ba79e2
ILT
11937 PR 10450
11938 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
11939 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
11940 (Layout::finalize): Call set_dynamic_symbol_size.
11941 (Layout::set_dynamic_symbol_size): New function.
11942 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
11943 set_dynamic_symbol_size.
11944
e8cd95c7
ILT
11945 PR 10450
11946 * output.h (class Output_section): Add is_entsize_zero_ field.
11947 * output.cc (Output_section::Output_section): Initialize
11948 is_entsize_zero_.
11949 (Output_section::set_entsize): If two different entsizes are
11950 requested, force it to zero.
11951 (Output_section::add_input_section): Set flags for .debug_str
11952 before updating section flags. Set entsize.
11953 (Output_section::update_flags_for_input_section): Set SHF_MERGE
11954 and SHF_STRING if all input sections have those flags.
11955
3e1b9a8a
RÁE
119562009-12-29 Rafael Espindola <espindola@google.com>
11957
11958 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
11959 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
11960 reporting.
3e1b9a8a 11961
3dcad376
ST
119622009-12-29 Sriraman Tallam <tmsriram@google.com>
11963
11964 * options.cc (General_options::parse_version): Allow -v to exit
11965 without an error if there is nothing to link.
11966
084e2665
ILT
119672009-12-29 Ian Lance Taylor <iant@google.com>
11968
11969 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
11970 using a version of gcc before 4.1.
11971 * configure: Rebuild.
11972
250acde3
CD
119732009-12-28 Chris Demetriou <cgd@google.com>
11974
11975 * attributes.cc (Output_attributes_section_data::do_write): Use
11976 std::vector::front rather than std::vector::data.
11977
99fff23b
ILT
119782009-12-28 Ian Lance Taylor <iant@google.com>
11979
11980 * symtab.h (class Symbol_table): Add enum Defined.
11981 * resolve.cc (Symbol_table::should_override): Add defined
11982 parameter. Change all callers. Test whether object is NULL
11983 before calling a method on it.
11984 (Symbol_table::report_resolve_problem): Add defined parameter.
11985 Change all callers.
11986 (Symbol_table::should_override_with_special): Likewise.
11987 * symtab.cc (Symbol_table::define_in_output_data): Add defined
11988 parameter. Change all callers.
11989 (Symbol_table::do_define_in_output_data): Likewise.
11990 (Symbol_table::define_in_output_segment): Likewise.
11991 (Symbol_table::do_define_in_output_segment): Likewise.
11992 (Symbol_table::define_as_constant): Likewise.
11993 (Symbol_table::do_define_as_constant): Likewise.
11994 * script.h (class Symbol_assignment): Add is_defsym parameter to
11995 constructor; change all callers.
11996 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
11997 parameter. Change all callers. Add is_defsym_ field.
11998 (class Parser_closure): Add parsing_defsym parameter to
11999 constructor; change all callers. Add parsing_defsym accessor
12000 function. Add parsing_defsym_ field.
12001
556bd683
ILT
120022009-12-28 Ian Lance Taylor <iant@google.com>
12003
12004 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 12005 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 12006
1782c879
ILT
120072009-12-23 Ian Lance Taylor <iant@google.com>
12008
12009 * i386.cc (Target_i386::do_calls_non_split): Recognize
12010 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
12011 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
12012 -fsplit-stack prologue when using %r11.
1782c879 12013
329ca2b1
ST
120142009-12-21 Sriraman Tallam <tmsriram@google.com>
12015
12016 * options.cc (General_options::parse_version): Make -v continue and do
12017 the link like GNU ld does.
12018
d675ff46
RÁE
120192009-12-17 Rafael Avila de Espindola <espindola@google.com>
12020
12021 * Makefile.am (CCFILES): Add timer.cc.
12022 (HFILES): Add timer.h.
12023 * configure.ac: Check for sysconf and times.
12024 * main.cc: include timer.h.
12025 (main): Use Timer instead of get_run_time.
12026 * timer.cc: New.
12027 * timer.h: New.
12028 * workqueue.cc: include timer.h.
12029 (Workqueue::find_and_run_task):
12030 Report user, sys and wall time.
12031 * Makefile.in: Regenerate.
12032 * config.in: Regenerate.
12033 * configure: Regenerate.
12034
d6344fb5
DK
120352009-12-16 Doug Kwan <dougkwan@google.com>
12036
12037 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
12038 sections.
12039 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
12040 relaxed input sections.
12041 * output.cc (Output_section::find_relaxed_input_section): Change
12042 return type to Output_relaxed_input_section pointer. Adjust code
12043 for new type of relaxed_input_section_map_.
12044 * output.h (Output_section::find_relaxed_input_section): Change
12045 return type to Output_relaxed_input_section pointer.
12046 (Output_section::Output_relaxed_input_section_by_input_section_map):
12047 New type.
12048 (Output_section::relaxed_input_section_map_): Change type to
12049 Output_section::Output_relaxed_input_section_by_input_section_map.
12050 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
12051 input section.
12052
0e0d5469
ILT
120532009-12-15 Ian Lance Taylor <iant@google.com>
12054
12055 * layout.cc (Layout::create_shstrtab): Only write out after input
12056 sections if we are compressing debug sections.
12057
0649a889
ILT
120582009-12-15 Ian Lance Taylor <iant@google.com>
12059
12060 * archive.cc (Archive::add_symbols): Only look up a symbol without
12061 a version if there is, in fact, a version.
12062
2ea97941
ILT
120632009-12-14 Ian Lance Taylor <iant@google.com>
12064
12065 Revert -Wshadow changes, all changes from:
12066 2009-12-11 Doug Kwan <dougkwan@google.com>
12067 2009-12-11 Nick Clifton <nickc@redhat.com>
12068 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
12069
b0eec2cc
DK
120702009-12-11 Doug Kwan <dougkwan@google.com>
12071
12072 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
12073 due to -Wshadow.
12074 * attributes.cc (Object_attribute::size): Ditto.
12075 (Attributes_section_data::size): Ditto.
12076 (Attributes_section_data::Attributes_section_data): Ditto.
12077 (Output_attributes_section_data::do_write): Ditto.
12078 * attributes.h (Object_attribute::set_type): Ditto.
12079 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
12080
91d6fa6a
NC
120812009-12-11 Nick Clifton <nickc@redhat.com>
12082
12083 * archive.cc: Fix shadowed variable warnings.
12084 * arm.cc: Likewise.
12085 * compressed_output.cc: Likewise.
12086 * compressed_output.h: Likewise.
12087 * configure: Likewise.
12088 * dwarf_reader.cc: Likewise.
12089 * dynobj.cc: Likewise.
12090 * dynobj.h: Likewise.
12091 * ehframe.cc: Likewise.
12092 * ehframe.h: Likewise.
12093 * errors.cc: Likewise.
12094 * expression.cc: Likewise.
12095 * fileread.cc: Likewise.
12096 * fileread.h: Likewise.
12097 * freebsd.h: Likewise.
12098 * i386.cc: Likewise.
12099 * icf.cc: Likewise.
12100 * incremental.h: Likewise.
12101 * layout.cc: Likewise.
12102 * layout.h: Likewise.
12103 * mapfile.cc: Likewise.
12104 * merge.cc: Likewise.
12105 * merge.h: Likewise.
12106 * object.cc: Likewise.
12107 * object.h: Likewise.
12108 * options.h: Likewise.
12109 * output.cc: Likewise.
12110 * output.h: Likewise.
12111 * parameters.cc: Likewise.
12112 * plugin.cc: Likewise.
12113 * powerpc.cc: Likewise.
12114 * reduced_debug_output.cc: Likewise.
12115 * reduced_debug_output.h: Likewise.
12116 * reloc.cc: Likewise.
12117 * reloc.h: Likewise.
12118 * resolve.cc: Likewise.
12119 * script-sections.cc: Likewise.
12120 * script.cc: Likewise.
12121 * script.h: Likewise.
12122 * sparc.cc: Likewise.
12123 * symtab.cc: Likewise.
12124 * symtab.h: Likewise.
12125 * target-select.cc: Likewise.
12126 * target-select.h: Likewise.
12127 * token.h: Likewise.
12128 * workqueue.cc: Likewise.
12129 * workqueue.h: Likewise.
12130 * x86_64.cc: Likewise.
12131
a0351a69
DK
121322009-12-10 Doug Kwan <dougkwan@google.com>
12133
12134 * arm.cc (attributes.h): New include.
12135 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
12136 (Arm_relobj::~Arm_relobj): Delete object pointed by
12137 attributes_section_data_.
12138 (Arm_relobj::attributes_section_data): New method definition.
12139 (Arm_relobj::attributes_section_data_): New data member declaration.
12140 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
12141 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
12142 attributes_section_data_.
12143 (Arm_dynobj::attributes_section_data): New method definition.
12144 (Arm_dynobj::attributes_section_data_): New data member declaration.
12145 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
12146 initialization value of may_use_blx_ to false.
2e702c99 12147 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
a0351a69
DK
12148 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
12149 object attributes to compute results instead of hard-coding.
12150 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
12151 Target_arm::get_secondary_compatible_arch,
12152 Target_arm::set_secondary_compatible_arch
12153 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
12154 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
12155 New method declarations.
12156 (Target_arm::get_aeabi_object_attribute): New method definition.
12157 (Target_arm::attributes_section_data_): New data member declaration.
12158 (read_arm_attributes_section): New template definition.
12159 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
12160 (Arm_dynobj::do_read_symbols): Ditto.
12161 (Target_arm::do_finalize_sections): Merge attributes sections from
12162 input. Check for BLX use after attributes section merging.
12163 Fix __exidx_start and __exidx_end visibility. Create an
12164 .ARM.attributes section if necessary.
12165 (Target_arm::get_secondary_compatible_arch,
12166 Target_arm::set_secondary_compatible_arch,
12167 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
12168 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 12169 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
12170 New method definitions.
12171
b59befec
ILT
121722009-12-09 Ian Lance Taylor <iant@google.com>
12173
12174 * plugin.cc (Plugin::load): Don't cast from void* to a function
12175 pointer.
12176
1276bc89
ILT
121772009-12-09 Ian Lance Taylor <iant@google.com>
12178
12179 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
12180 information fields.
12181
2f2de248
L
121822009-12-09 H.J. Lu <hongjiu.lu@intel.com>
12183
12184 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
12185 Replace two_file_shared_1.so with two_file_shared_2.so.
12186 * testsuite/Makefile.in: Regenerated.
12187
4f787271
DK
121882009-12-08 Doug Kwan <dougkwan@google.com>
12189
12190 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
12191 (HFILES): Add attributes.h and int_encoding.h.
12192 * Makefile.in: Regenerate.
12193 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
12194 function definitions to int_encoding.cc
12195 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
12196 prototypes to int_encoding.h
12197 * reduced_debug_output.cc (int_encoding.h): New include.
12198 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
12199 function definitions to int_encoding.cc
12200 (insert_into_vector, read_from_pointer): Move template definitions to
12201 int_encoding.h
12202 * attributes.cc: New file.
12203 * attributes.h: New file.
12204 * int_encoding.cc: New file.
12205 * int_encoding.h: New file.
12206
20b52f1a
RÁE
122072009-12-07 Rafael Avila de Espindola <espindola@google.com>
12208
12209 PR gold/11055
12210 * incremental-dump.cc (dump_incremental_inputs): New.
12211 (main): Use dump_incremental_inputs.
12212
53d7974c
L
122132009-12-07 H.J. Lu <hongjiu.lu@intel.com>
12214
12215 PR gold/10893
12216 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
12217 checking elfcpp::STT_FUNC.
12218 (Target_i386::Relocate::relocate): Likewise.
12219 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
12220
12221 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
12222 symbols from shared libraries into normal FUNC symbols.
12223
12224 * symtab.h (Symbol): Add is_func and use it.
12225
05a352e6
DK
122262009-12-05 Doug Kwan <dougkwan@google.com>
12227
12228 * arm.cc (Target_arm::arm_info): Initialize new fields
12229 attributes_section and attributes_vendor.
12230 * i386.cc (Target_i386::i386_info): Same.
12231 * object.cc (Sized_relobj::do_layout): Skip attribute section.
12232 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
12233 fields attributes_section and attributes_vendor.
53d7974c 12234 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
12235 * target.h (Target::attributes_section, Target::attributes_vendor,
12236 Target::is_attributes_section, Target::attribute_arg_type,
12237 Target::attributes_order): New method definitions.
12238 (Target::Target_info::attributes_section,
12239 Target::Target_info::attributes_vendor): New fields.
12240 (Target::do_attribute_arg_type, Target::do_attributes_order): New
12241 virtual method definitions.
12242 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
12243 attributes_section and attributes_vendor.
12244 * testsuite/testfile.cc (Target_test::test_target_info): Same.
12245
f4e5969c
DK
122462009-12-05 Doug Kwan <dougkwan@google.com>
12247
12248 * arm.cc: Update comments about interworking and stub generation.
12249 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
12250 considered as non-PIC.
12251 (Arm_relocate_functions::base_abs): Fix formatting.
12252 (Arm_relocate_functions::got_prel): Fix comment. Change interface
12253 of function to use GOT entry address instead of offset.
12254 (Target_arm::Scan::global): Issue an error if a symbol would need a
12255 PLT does not get one because it is untyped. Remove code to create
12256 dynamic symbols for relative branches.
12257 (Target_arm::Relocate::relocate: Use 0 instead of false since function
12258 takes unsigned integer instead of boolean.
12259
1abce4a6
L
122602009-12-05 H.J. Lu <hongjiu.lu@intel.com>
12261
12262 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
12263 (two_file_test_LDADD): Likewise.
12264 (common_test_1_LDADD): Likewise.
12265 (exception_test_LDADD) Likewise.
12266 (weak_test_LDADD): Likewise.
12267 (many_sections_test_LDADD): Likewise.
12268 (initpri1_LDADD): Likewise.
12269 (script_test_1_LDADD): Likewise.
12270 (script_test_2_LDADD): Likewise.
12271 (justsyms_LDADD): Likewise.
12272 (binary_test_LDADD): Likewise.
12273 (large_LDADD): Likewise.
12274 * testsuite/Makefile.in: Regenerated.
12275
adcf2816 122762009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 12277
adcf2816
L
12278 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
12279 (Symbol_table::override_with_special): Likewise.
12280 (Symbol_table::add_from_object): Likewise.
12281
28e67f5d
RÁE
122822009-12-04 Rafael Avila de Espindola <espindola@google.com>
12283
12284 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
12285 Don't set the data_offset twice.
12286
ae10a101
RÁE
122872009-12-04 Rafael Avila de Espindola <espindola@google.com>
12288
12289 * testsuite/Makefile.in: Regenerate.
12290
f59f41f3
DK
122912009-12-03 Doug Kwan <dougkwan@google.com>
12292
12293 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
12294 (Target_arm::do_finalize_sections): Add parameter for symbol table
12295 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
12296 * i386.cc (Target_i386::do_finalize_sections): Add an additional
12297 parameter for symbol table pointer.
12298 * layout.cc (Layout::finalize): Call Target::finalize_sections with
12299 an additional parameter for a pointer to symbol table.
12300 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
12301 parameter for a symbol table pointer.
12302 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
12303 * target.h (Target::finalize_sections, Target::do_finalize_sections):
12304 Ditto.
12305 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
12306 parameter for a symbol table pointer.
12307
ca55d848
RÁE
123082009-12-03 Rafael Avila de Espindola <espindola@google.com>
12309
12310 * incremental.cc (Incremental_inputs_header)
12311 (Incremental_inputs_header_write, Incremental_inputs_entry)
12312 (Incremental_inputs_entry_write): Move ...
12313 * incremental.h (Incremental_inputs_header)
12314 (Incremental_inputs_header_write, Incremental_inputs_entry)
12315 (Incremental_inputs_entry_write): here.
12316
3aec4f9c
RÁE
123172009-12-02 Rafael Avila de Espindola <espindola@google.com>
12318
12319 * incremental.cc (make_sized_incremental_binary): Set the target.
12320 Error if it is incompatible.
12321 * output.h (Output_file): Add filename method.
12322
9c0ae74d
RÁE
123232009-12-02 Rafael Avila de Espindola <espindola@google.com>
12324
12325 * incremental.cc (Incremental_inputs_entry): Remove unused argument
12326 from the get_* methods.
12327
a45500ae
RÁE
123282009-12-02 Rafael Avila de Espindola <espindola@google.com>
12329
12330 * incremental-dump.cc (main): Check that the offeset of a script is 0.
12331 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
12332 Write 0 for the data_offset of scripts.
12333
325e6408
RÁE
123342009-12-02 Rafael Avila de Espindola <espindola@google.com>
12335
12336 * testsuite/Makefile.am: Add the incremental_test.sh test.
12337 * testsuite/incremental_test.sh: New.
12338 * testsuite/incremental_test_1.c: New.
12339 * testsuite/incremental_test_2.c: New.
12340
954c3e2e
RÁE
123412009-12-01 Rafael Avila de Espindola <espindola@google.com>
12342
703d02da 12343 * incremental-dump.cc (main): Fix typos.
954c3e2e 12344
f8086623
RÁE
123452009-11-27 Rafael Avila de Espindola <espindola@google.com>
12346
12347 PR gold/11025
12348 * incremental-dump.cc (main): Use llu to print 64 bit values.
12349
3b0dd6ac
L
123502009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
12351 H.J. Lu <hongjiu.lu@intel.com>
12352
12353 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
12354 $(LIBDL).
12355 (incremental_dump_LDADD): Likewise.
12356 * Makefile.in: Regenerated.
12357
a6d1ef57 123582009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 12359
a6d1ef57
DK
12360 Revert:
12361
12362 2009-11-25 Doug Kwan <dougkwan@google.com>
12363
12364 * arm.cc (Target_arm::Target_arm): Move method definition
12365 outside of class definition. Add code to handle
12366 --target1-rel, --target1-abs and --target2= options.
12367 (Target_arm::get_reloc_reloc_type): Change method to be
12368 non-static and const.
12369 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
12370 New data member declaration.
12371 (Target_arm::Scan::local, Target_arm::Scan::global,
12372 Target_arm::Relocate::relocate,
12373 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
12374 Adjust call to Target_arm::get_real_reloc_type.
12375 (Target_arm::get_real_reloc_type): Use command line options
12376 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
12377 * options.h (--target1-rel, --target1-abs, --target2): New
12378 ARM-only options.
12379
50aeb7d4
DK
123802009-11-25 Doug Kwan <dougkwan@google.com>
12381
12382 * arm.cc (Target_arm::Target_arm): Move method definition outside of
12383 class definition. Add code to handle --target1-rel, --target1-abs
12384 and --target2= options.
12385 (Target_arm::get_reloc_reloc_type): Change method to be non-static
12386 and const.
12387 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
12388 member declaration.
12389 (Target_arm::Scan::local, Target_arm::Scan::global,
12390 Target_arm::Relocate::relocate,
12391 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
12392 call to Target_arm::get_real_reloc_type.
12393 (Target_arm::get_real_reloc_type): Use command line options to
12394 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
12395 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
12396 options.
12397
51938283
DK
123982009-11-25 Doug Kwan <dougkwan@google.com>
12399
12400 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
12401 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
12402 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
12403 formatting.
12404 (Arm_relocate_functions::thm_call): Replace body with a call to
12405 Arm_relocate_functions::thumb_branch_common.
12406 (Arm_relocate_functions::thm_jump24,
12407 Arm_relocate_functions::thm_xpc22): New method definitions.
12408 (Arm_relocate_functions::thumb_branch_common): New method definition.
12409 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
12410 operator.
12411 (Target_arm::Relocate::relocate): Adjust call to thm_call.
12412 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
12413
e2b8f3c4
RÁE
124142009-11-24 Rafael Avila de Espindola <espindola@google.com>
12415
12416 * Makefile.am: Build incremental-dump
12417 * Makefile.in: Regenerate.
12418 * incremental-dump.cc: New.
12419 * incremental.cc (Incremental_inputs_header_data,
12420 Incremental_inputs_entry_data): Move to incremental.h
12421 * incremental.h: (Incremental_inputs_header_data,
12422 Incremental_inputs_entry_data): Move from incremental.cc
12423
bcba9aec
RÁE
124242009-11-24 Rafael Avila de Espindola <espindola@google.com>
12425
12426 * incremental.cc (Incremental_inputs_header,
12427 Incremental_inputs_header_write, Incremental_inputs_entry,
12428 Incremental_inputs_entry_write): Add a typedef with the data type.
12429
7c3afe08
RÁE
124302009-11-24 Rafael Avila de Espindola <espindola@google.com>
12431
12432 * incremental.cc (Incremental_inputs_header,
12433 Incremental_inputs_header_write, Incremental_inputs_entry,
12434 Incremental_inputs_entry_write): Update comment about which
12435 type has the filed descriptions.
12436
d204b6e9
DK
124372009-11-15 Doug Kwan <dougkwan@google.com>
12438
12439 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
12440 (Arm_relocate_functions::arm_branch_common): Change method defintion
12441 in class definition to a method declaration and update list of formal
12442 parameters.
12443 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
12444 Arm_relocation_functions::jump24): Adjust call to
12445 Arm_relocate_functions::arm_branch_common. Update list of formal
12446 parameters.
12447 (Arm_relocate_functions::xpc25): New method definition.
12448 (Arm_relocate_functions::arm_branch_common): Move method defintion
12449 out from class definition. Use stubs for mode-switching and extending
12450 branch ranges.
12451 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
12452 specially. Change code to enable use of stubs in ARM branches.
12453
43d12afe
DK
124542009-11-10 Doug Kwan <dougkwan@google.com>
12455
12456 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
12457 in method declaration.
12458 (Target_arm::relocate_stub): New method declaration.
12459 (Target_arm::default_target): Change to return a pointer instead of
12460 a const reference.
12461 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
12462 Target_arm::default_target.
12463 (Arm_Relobj::do_relocate_sections): Remove options paramater in
12464 method definition.
12465 (Target_arm::relocate_section): Adjust view.
12466 (Target_arm::relocate_stub): New method definition.
12467
ac33a407
DK
124682009-11-10 Doug Kwan <dougkwan@google.com>
12469
12470 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
12471 a format warning.
12472 * incremental.cc (open_incremental_binary): Initialized local
12473 variables to avoid warnings.
12474 * object.cc (make_elf_object): Ditto.
12475 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
12476 a format warning.
e1df38aa 12477
88ee28e9
L
12478009-11-09 H.J. Lu <hongjiu.lu@intel.com>
12479
12480 PR gold/10930
12481 * testsuite/plugin_test.c: Include "config.h".
12482
2daedcd6
DK
124832009-11-09 Doug Kwan <dougkwan@google.com>
12484
12485 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
12486 (arm_symbol_value): Remove.
12487 (Arm_relocate_functions::arm_branch_common,
12488 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
12489 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
12490 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
12491 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
12492 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
12493 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
12494 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
12495 Arm_relocate_functions::thm_mobw_abs_nc,
12496 Arm_relocate_functions::thm_mov_abs,
12497 Arm_relocate_functions::movw_prel_nc,
12498 Arm_relocate_functions::thm_movt_abs,
12499 Arm_relocate_functions::movt_prel,
12500 Arm_relocate_functions::thm_movw_prel_nc,
12501 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
12502 (Target_arm::Relocate::relocate): Only decompose address into two
12503 parts if relocation type uses the thumb-bit and pass the actual
12504 bit instead of a flag indicating that the thumb-bit is used. Adjust
12505 calls to methods in Arm_relocate_functions for this change.
12506
1276bc89 125072009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
12508
12509 PR 10925
12510 * reloc.cc: Instantiate
12511 Sized_relobj::initialize_input_to_output_maps and
12512 Sized_relobj:free_input_to_output_maps.
12513
e53ad1b5
ILT
125142009-11-06 Ian Lance Taylor <iant@google.com>
12515
12516 PR 10876
12517 * defstd.cc (in_segment): Set only_if_ref true for "end".
12518
eb44217c
DK
125192009-11-06 Doug Kwan <dougkwan@google.com>
12520
12521 * arm.cc (class Reloc_stub): Correct a comment.
12522 (Target_arm::Target_arm): Initialize arm_input_section_map_.
12523 (Target_arm::scan_section_for_stubs): New method declaration.
12524 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
12525 Change methods from private to protected.
12526 (Target_arm::do_may_relax): New method definition.
12527 (Target_arm::do_relax, Target_arm::group_sections,
12528 Target_arm::scan_reloc_for_stub,
12529 Target_arm::scan_reloc_section_for_stubs): New method declarations.
12530 (Target_arm::arm_input_section_map_): New data member declaration.
12531 (Target_arm::scan_reloc_for_stub,
12532 Target_arm::scan_reloc_section_for_stubs,
12533 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
12534 Target_arm::do_relax): New method definitions.
12535
5d329b7d
ILT
125362009-11-06 Mikolaj Zalewski <mikolaj@google.com>
12537
12538 * configure.ac: Check for (struct stat)::st_mtim
12539 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
12540 * config.in: Regenerate.
12541 * configure: Regenerate.
12542
96a0d71b
ILT
125432009-11-05 Ian Lance Taylor <iant@google.com>
12544
12545 PR 10910
12546 * output.cc (Output_segment::add_output_section): Add missing
12547 return statement.
12548
594c8e5e
ILT
125492009-11-04 Ian Lance Taylor <iant@google.com>
12550
12551 PR 10880
12552 * object.h (class Object): Add is_needed and set_is_needed
12553 methods. Add is_needed_ field. Make bool fields into bitfields.
12554 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
12555 defined in a dynamic object and referenced by a regular object,
12556 set is_needed for the dynamic object.
12557 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
12558 if the file is marked with as_needed and it is not needed.
12559
22b127cc
ILT
125602009-11-04 Ian Lance Taylor <iant@google.com>
12561
12562 PR 10887
12563 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
12564 tags if data is discarded by linker script.
12565 * i386.cc (Target_i386::do_finalize_sections): Likewise.
12566 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
12567 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
12568 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
12569
f5c870d2
ILT
125702009-11-04 Ian Lance Taylor <iant@google.com>
12571
12572 * layout.cc (Layout::get_output_section): Add is_interp and
12573 is_dynamic_linker_section parameters. Change all callers.
12574 (Layout::choose_output_section): Likewise.
12575 (Layout::make_output_section): Likewise.
12576 (Layout::add_output_section_data): Add is_dynamic_linker_section
12577 parameter. Change all callers.
12578 * layout.h (class Layout): Update declarations.
12579 * output.h (class Output_section): Add is_interp, set_is_interp,
12580 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
12581 Add is_interp_, is_dynamic_linker_section_ fields. Change
12582 generate_code_fills_at_write_ to a bitfield.
12583 * output.cc (Output_section::Output_sections): Initialize new
12584 fields.
12585 (Output_segment::add_output_section): Add do_sort parameter.
12586 Change all callers.
12587
1ae4d23b
ILT
125882009-11-03 Ian Lance Taylor <iant@google.com>
12589
12590 PR 10860
12591 * options.h (class General_options): Add --warn-common.
12592 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
12593 merging two common symbols.
12594 (Symbol_table::should_override): Handle --warn-common when merging
12595 a common symbol with a defined symbol. Use report_resolve_problem
12596 for multiple definitions.
12597 (Symbol_table::report_resolve_problem): New function.
12598 * symtab.h (class Symbol_table): Declare report_resolve_problem.
12599
55da9579
DK
126002009-11-03 Doug Kwan <dougkwan@google.com>
12601
12602 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
12603 stub_factory_.
12604 (Target_arm::stub_factory): New method definition.
12605 (Target_arm::new_arm_input_section,
12606 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
12607 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 12608 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
12609 New type definitions.
12610 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
12611 member declarations.
12612 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
12613 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
12614 New method definitions.
12615
37a9ac43
ILT
126162009-11-03 Ian Lance Taylor <iant@google.com>
12617
12618 * options.h (class General_options): Add --warn_constructors.
12619
b3d6a3d4
ILT
126202009-11-03 Ian Lance Taylor <iant@google.com>
12621
12622 PR 10893
12623 * defstd.cc (in_section): Add entries for __rel_iplt_start,
12624 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
12625
934b01dd
ILT
126262009-11-03 Ian Lance Taylor <iant@google.com>
12627
12628 PR 10895
12629 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
12630 --msgid-bugs-address.
12631 (install-pdf): New target.
12632 (install-data_yes): Look up one directory to find mkinstalldirs.
12633
03c1939b
L
126342009-11-03 H.J. Lu <hongjiu.lu@intel.com>
12635
12636 * po/Make-in (.po.gmo): Don't generate .gmo files in source
12637 tree.
12638
ebd95253
DK
126392009-10-30 Doug Kwan <dougkwan@google.com>
12640
12641 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
12642
e9bbb538
DK
126432009-10-30 Doug Kwan <dougkwan@google.com>
12644
12645 * arm.cc (Stub_addend_reader): New struct template definition
12646 and partial specializations.
12647 (Stub_addend_reader::operator()): New method definition for a
12648 partially specialized template.
12649
d5b40221
DK
126502009-10-30 Doug Kwan <dougkwan@google.com>
12651
12652 * arm.cc (Arm_relobj::processor_specific_flags): New method
12653 definition.
12654 (Arm_relobj::do_read_symbols): New method declaration.
12655 (Arm_relobj::processor_specific_flags_): New data member declaration.
12656 (Arm_dynobj): New class definition.
12657 (Target_arm::do_finalize_sections): Add input_objects parameter.
12658 (Target_arm::do_adjust_elf_header): New method declaration.
12659 (Target_arm::are_eabi_versions_compatible,
12660 (Target_arm::merge_processor_specific_flags): New method declaration.
12661 (Target_arm::do_make_elf_object): New overloaded method definitions
12662 and declaration.
12663 (Arm_relobj::do_read_symbols): New method definition.
12664 (Arm_dynobj::do_read_symbols): Ditto.
12665 (Target_arm::do_finalize_sections): Add input_objects parameters.
12666 Merge processor-specific flags from all input objects.
12667 (Target_arm::are_eabi_versions_compatible,
12668 Target_arm::merge_processor_specific_flags,
12669 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
12670 New method definitions.
12671 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
12672 Input_objects pointer type parameter.
12673 * layout.cc (Layout::finalize): Pass input objects to target's.
12674 finalize_sections function.
12675 * output.cc (Output_file_header::do_sized_write): Set ELF file
12676 header's processor-specific flags.
12677 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
12678 Input_objects pointer type parameter.
12679 * sparc.cc (Target_sparc::do_finalize_sections): Same.
12680 * target.h (Input_objects): New forward class declaration.
12681 (Target::processor_specific_flags,
12682 Target::are_processor_specific_flags_sect): New method definitions.
12683 (Target::finalize_sections): Add input_objects parameter.
12684 (Target::Target): Initialize processor_specific_flags_ and
12685 are_processor_specific_flags_set_.
12686 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
12687 parameter.
12688 (Target::set_processor_specific_flags): New method definition.
12689 (Target::processor_specific_flags_,
12690 Target::are_processor_specific_flags_set_): New data member
12691 declarations.
12692 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
12693 Input_objects pointer type parameter.
12694
ebabffbd
DK
126952009-10-30 Doug Kwan <dougkwan@google.com>
12696
12697 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
12698
ad0f2072
ILT
126992009-10-28 Ian Lance Taylor <iant@google.com>
12700
12701 * object.h (class Relobj): Drop options parameter from
12702 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
12703 do_scan_relocs, do_relocate. Change all callers.
12704 (class Sized_relobj): Drop options parameters from
12705 do_gc_process_relocs, do_scan_relocs, do_relocate,
12706 do_relocate_sections, relocate_sections, emit_relocs_scan,
12707 emit_relocs_scan_reltype. Change all callers.
12708 (struct Relocate_info): Remove options field and all references to
12709 it.
12710 * reloc.h (class Read_relocs): Remove options constructor
12711 parameter and options_ field. Change all callers.
12712 (class Gc_process_relocs, class Scan_relocs): Likewise.
12713 (class Relocate_task): Likewise.
12714 * target-reloc.h (scan_relocs): Remove options parameter. Change
12715 all callers.
12716 (scan_relocatable_relocs): Likewise.
12717 * target.h (class Sized_target): Remove options parameter from
12718 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
12719 all callers.
12720 * gc.h (gc_process_relocs): Remove options parameter. Change all
12721 callers.
12722 * arm.cc: Update functions to remove options parameters.
12723 * i386.cc: Likewise.
12724 * powerpc.cc: Likewise.
12725 * sparc.cc: Likewise.
12726 * x86_64.cc: Likewise.
12727 * testsuite/testfile.cc: Likewise.
12728
8ffa3667
DK
127292009-10-28 Doug Kwan <dougkwan@google.com>
12730
12731 * arm.cc (Arm_relobj): New class definition.
e1df38aa 12732 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
12733 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
12734 New method definitions.
12735
40f36857
CC
127362009-10-28 Cary Coutant <ccoutant@google.com>
12737
12738 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
12739 (Plugin::cleanup_done_): New member.
12740 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
12741 (Plugin_manager::cleanup_done_): Remove.
12742 (Plugin_manager::add_input_file): Edit error message.
12743 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
12744 (Plugin_manager::cleanup): Remove use of cleanup_done_.
12745
2c849493
ILT
127462009-10-27 Mikolaj Zalewski <mikolajz@google.com>
12747
12748 * fileread.cc: (File_read::View::~View): Use the new
12749 data_ownership_ filed.
12750 (File_read::~File_read): Dispose the new whole_file_view_.
12751 (File_read::open): Mmap the whole file if needed.
12752 (File_read::open): Use whole_file_view_ instead of contents_.
12753 (File_read::find_view): Use whole_file_view_ if applicable.
12754 (File_read::do_read): Use whole_file_view_ instead of contents_.
12755 (File_read::make_view): Use whole_file_view_ instead of contents_,
12756 update File_read::View::View call.
12757 (File_read::find_or_make_view): Update File_read::View::View
12758 call.
12759 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
12760 remove contents_
12761 (File_read::View::Data_ownership): New enum.
12762 (File_read::View::View): Replace bool mapped_ with Data_ownership
12763 argument.
12764 (File_read::View::mapped_): Remove (replaced by data_ownership_).
12765 (File_read::View::data_ownership_): New field.
12766 (File_read::contents_): Remove (replaced by whole_file_view_).
12767 (File_read::whole_file_view_): New field.
12768 * options.h (class General_options): Add --keep-files-mapped.
12769
24998053
CC
127702009-10-27 Cary Coutant <ccoutant@google.com>
12771
12772 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
12773 * testsuite/Makefile.am (plugin_test_5): New test case.
12774 * testsuite/Makefile.in: Regenerate.
12775
72adc4fa
DK
127762009-10-25 Doug Kwan <dougkwan@google.com>
12777
12778 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
12779 from private to protected to allow access by child class.
12780 (Sized_relobj::do_relocate_sections): New method declaration.
12781 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 12782 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
12783 Sized_relobj::relocate_sections. Instantiate template explicitly
12784 for different target sizes and endianity.
12785
07f508a2
DK
127862009-10-24 Doug Kwan <dougkwan@google.com>
12787
12788 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
12789 (Arm_input_section::as_arm_input_section): New method.
12790 (Arm_output_section): New class definition.
12791 (Arm_output_section::create_stub_group,
12792 Arm_output_section::group_sections): New method definitions.
12793
10ad9fe5
DK
127942009-10-22 Doug Kwan <dougkwan@google.com>
12795
12796 * arm.cc (Arm_input_section): New class definition.
12797 (Arm_input_section::init, Arm_input_section:do_write,
12798 Arm_input_section::set_final_data_size,
12799 Arm_input_section::do_reset_address_and_file_offset): New method
12800 definitions.
12801
56ee5e00
DK
128022009-10-21 Doug Kwan <dougkwan@google.com>
12803
12804 * arm.cc (Stub_table, Arm_input_section): New forward class
12805 declarations.
12806 (Stub_table): New class defintion.
12807 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
12808 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
12809 New method definition.
12810
b569affa
DK
128112009-10-21 Doug Kwan <dougkwan@google.com>
12812
12813 * arm.cc: Update copyright comments.
12814 (Target_arm): New forward class template declaration.
12815 (Arm_address): New type.
12816 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
12817 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
12818 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
12819 constants.
12820 (Insn_template): Same.
12821 (DEF_STUBS): New macro.
12822 (Stub_type): New enum type.
12823 (Stub_template): New class definition.
12824 (Stub): Same.
12825 (Reloc_stub): Same.
12826 (Stub_factory): Same.
12827 (Target_arm::Target_arm): Initialize may_use_blx_ and
12828 should_force_pic_veneer_.
12829 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
12830 Target_arm::should_force_pic_veneer,
12831 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
12832 Target_arm::using_thumb_only, Target_arm:;default_target): New
12833 method defintions.
12834 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
12835 New data member declarations.
12836 (Insn_template::size, Insn_template::alignment): New method defintions.
12837 (Stub_template::Stub_template): New method definition.
12838 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
12839 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
12840 (Stub_factory::Stub_factory): New method definition.
12841 * gold.h (string_hash): New template.
12842 * output.h (Input_section_specifier::hash_value): Use
12843 gold::string_hash.
12844 (Input_section_specifier::string_hash): Remove.
12845 * stringpool.cc (Stringpool_template::string_hash): Use
12846 gold::string_hash.
12847
6c172549
DK
128482009-10-20 Doug Kwan <dougkwan@google.com>
12849
12850 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
12851 symbols of relaxed input sections.
12852 * output.h (Output_section::find_relaxed_input_section): Make
12853 method public.
12854
c5617f2f
DK
128552009-10-16 Doug Kwan <dougkwan@google.com>
12856
12857 * dynobj.cc (Versions::Versions): Initialize version_script_.
12858 Only insert base version symbol definition for a shared object
12859 if version script defines any version versions.
12860 (Versions::define_base_version): New method definition.
12861 (Versions::add_def): Check that base version is not needed.
12862 (Versions::add_need): Define base version lazily.
12863 * dynobj.h (Versions::define_base_version): New method declaration.
12864 (Versions::needs_base_version_): New data member declaration.
12865 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
12866 (check_DATA): Add no_version_test.stdout.
12867 (libno_version_test.so, no_version_test.o no_version_test.stdout):
12868 New make rules.
12869 * testsuite/Makefile.in: Regenerate.
12870 * testsuite/no_version_test.c: New file.
12871 * testsuite/no_version_test.sh: Ditto.
12872
3c12dcdb
DK
128732009-10-16 Doug Kwan <dougkwan@google.com>
12874
12875 * expression.cc (class Segment_start_expression): New class definition.
12876 (Segment_start_expression::value): New method definition.
12877 (script_exp_function_segment_start): Return a new
12878 Segment_start_expression.
12879 * gold/script-c.h (script_saw_segment_start_expression): New function
12880 prototype.
12881 * script-sections.cc (Script_sections::Script_sections): Initialize
12882 SAW_SEGMENT_START_EXPRESSION_ to false.
12883 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
12884 and -Tbbs options to specify section addresses if given in
12885 command line and no SEGMENT_START expression is seen in a script.
12886 * script-sections.h (Script_sections::saw_segment_start_expression,
12887 Script_sections::set_saw_segment_start_expression): New method
12888 definition.
12889 (Script_sections::saw_segment_start_expression_): New data member
12890 declaration.
12891 * script.cc (script_saw_segment_start_expression): New function.
12892 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
12893 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
12894 script_test_7.sh and script_test_8.sh.
12895 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
12896 script_test_8.stdout.
12897 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
12898 (script_test_6, script_test_6.stdout, script_test_7,
12899 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
12900 * Makefile.in: Regenerate.
12901 * testsuite/script_test_6.sh: New file.
12902 * testsuite/script_test_6.t: Same.
12903 * testsuite/script_test_7.sh: Same.
12904 * testsuite/script_test_7.t: Same.
12905 * testsuite/script_test_8.sh: Same.
12906
64b1ae37
DK
129072009-10-16 Doug Kwan <dougkwan@google.com>
12908
12909 * output.cc (Output_segment::set_section_list_address): Cast
12910 expressions to unsigned long long type to avoid format warnings.
12911
661be1e2
ILT
129122009-10-15 Ian Lance Taylor <iant@google.com>
12913
12edd763 12914 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 12915 dot assignment to script_sections_.
12edd763
ILT
12916 * script-sections.cc (Script_sections::add_dot_assignment):
12917 Initialize if necessary.
12918
68b6574b
ILT
12919 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
12920 program headers with no load segment if there is a linker script.
12921
661be1e2
ILT
12922 * layout.cc (Layout::set_segment_offsets): Align the file offset
12923 to the segment aligment for -N or -n with no load segment.
12924 * output.cc (Output_segment::add_output_section): Don't crash if
12925 the first section is a TLS section.
12926 (Output_segment::set_section_list_addresses): Print an error
12927 message if the address moves backward in a linker script.
12928 * script-sections.cc
12929 (Output_section_element_input::set_section_addresses): Don't
12930 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
12931 (Orphan_output_section::set_section_addresses): Likewise.
12932
f15f61a7
DK
129332009-10-15 Doug Kwan <dougkwan@google.com>
12934
12935 * layout.cc (Layout::finish_dynamic_section): Generate tags
12936 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
12937 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
12938 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
12939
82bb573a
ILT
129402009-10-14 Ian Lance Taylor <iant@google.com>
12941
12942 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
12943 fields.
12944 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
12945 data_shdr fields of relinfo.
12946 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
12947 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
12948 R_386_TLS_LDO_32, adjust based on section flags.
12949 (Target_i386::Relocate::fix_up_ldo): Remove.
12950
374ad285
ILT
129512009-10-13 Ian Lance Taylor <iant@google.com>
12952
12953 Add support for -pie.
12954 * options.h (class General_options): Add -pie and
12955 --pic-executable.
12956 (General_options::output_is_position_independent): Test -pie.
12957 (General_options::output_is_executable): Return true if not shared
12958 and not relocatable.
12959 (General_options::output_is_pie): Remove.
12960 * options.cc (General_options::finalize): Reject incompatible uses
12961 of -pie.
12962 * gold.cc (queue_middle_tasks): A -pie link is not static.
12963 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
12964 * symtab.cc (Symbol::final_value_is_known): Return false if
12965 output_is_position_independent.
12966 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
12967 output_is_position_independent.
12968 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
12969 output_is_position_independent.
12970 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
12971 output_is_position_independent.
12972 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
12973 two_file_pie_test.
12974 (basic_pie_test.o, basic_pie_test): New targets.
12975 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
12976 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
12977 (two_file_pie_test): New target.
12978 * testsuite/Makefile.in: Rebuild.
12979 * README: Remove note saying that -pie is not supported.
12980
c6585162
ILT
129812009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
12982
12983 * options.h (class General_options): Add -init and -fini.
12984 * layout.cc (Layout::finish_dynamic_section): Emit
12985 given init and fini functions.
12986
032ce4e9
ST
129872009-10-13 Sriraman Tallam <tmsriram@google.com>
12988
12989 * gc.h (gc_process_relocs): Check if icf is enabled using new
12990 function.
12991 * gold.cc (queue_initial_tasks): Likewise.
12992 (queue_middle_tasks): Likewise.
12993 * object.cc (do_layout): Likewise.
12994 * symtab.cc (is_section_folded): Likewise.
12995 * main.cc (main): Likewise.
12996 * reloc.cc (Read_relocs::run): Likewise.
12997 (Sized_relobj::do_scan_relocs): Likewise.
12998 * icf.cc (is_function_ctor_or_dtor): New function.
12999 (Icf::find_identical_sections): Check if function is ctor or dtor when
13000 safe icf is chosen.
13001 * options.h (General_options::icf): Change option to be an enum.
13002 (Icf_status): New enum.
13003 (icf_enabled): New method.
13004 (icf_safe_folding): New method.
13005 (set_icf_status): New method.
13006 (icf_status_): New variable.
13007 * (options.cc) (General_options::finalize): Set icf_status_.
13008 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
13009 icf_test and icf_keep_unique_test to use the --icf enum flag.
13010 * testsuite/icf_safe_test.sh: New file.
e1df38aa 13011 * testsuite/icf_safe_test.cc: New file.
032ce4e9 13012
f345227a
ST
130132009-10-12 Sriraman Tallam <tmsriram@google.com>
13014
13015 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
13016 includes to gc.h and icf.h.
13017 * arm.cc: Include gc.h.
13018 * gold.cc: Likewise.
13019 * i386.cc: Likewise.
13020 * powerpc.cc: Likewise.
13021 * sparc.cc: Likewise.
13022 * x86_64.cc: Likewise.
13023 * gc.h: Include icf.h.
13024
1c7814ed
ILT
130252009-10-11 Ian Lance Taylor <iant@google.com>
13026
13027 * plugin.cc: Include "gold.h" before other header files.
13028
ae3b5189
CD
130292009-10-10 Chris Demetriou <cgd@google.com>
13030
13031 * options.h (Input_file_argument::Input_file_type): New enum.
13032 (Input_file_argument::is_lib_): Replace with...
13033 (Input_file_argument::type_): New member.
13034 (Input_file_argument::Input_file_argument): Take Input_file_type
13035 'type' rather than boolean 'is_lib' as second argument.
13036 (Input_file_argument::is_lib): Use type_.
13037 (Input_file_argument::is_searched_file): New function.
13038 (Input_file_argument::may_need_search): Handle is_searched_file.
13039 * options.cc (General_options::parse_library): Support -l:filename.
13040 (General_options::parse_just_symbols): Update for Input_file_argument
13041 changes.
13042 (Command_line::process): Likewise.
13043 * archive.cc (Archive::get_file_and_offset): Likewise.
13044 * plugin.cc (Plugin_manager::release_input_file): Likewise.
13045 * script.cc (read_script_file, script_add_file): Likewise.
13046 * fileread.cc (Input_file::Input_file): Likewise.
13047 (Input_file::will_search_for): Handle is_searched_file.
13048 (Input_file::open): Likewise.
13049 * readsyms.cc (Read_symbols::get_name): Likewise.
13050 * testsuite/Makefile.am (searched_file_test): New test.
13051 * testsuite/Makefile.in: Regenerate.
13052 * testsuite/searched_file_test.cc: New file.
13053 * testsuite/searched_file_test_lib.cc: New file.
13054
f3048a1d
ILT
130552009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
13056 Ian Lance Taylor <iant@google.com>
13057
13058 * descriptor.cc: Include <cstdio> and "binary-io.h".
13059 (Descriptors::open): Open the files in binary mode always.
13060 * script.cc (Lex::get_token): Treat \r as whitespace.
13061
d4780e57
ILT
130622009-10-09 Ian Lance Taylor <iant@google.com>
13063
13064 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
13065
d9a893b8
ILT
130662009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
13067 Ian Lance Taylor <iant@google.com>
13068
13069 * configure.ac: Check for readv function also.
13070 * fileread.cc (readv): Define if not HAVE_READV.
13071 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
13072 does not exist.
13073 * config.in: Regenerate.
13074 * configure: Regenerate.
13075
c0a62865
DK
130762009-10-09 Doug Kwan <dougkwan@google.com>
13077
13078 * layout.cc (Layout::make_output_section): Call target hook to make
13079 ordinary output section.
13080 (Layout::finalize): Adjust parameter list of call the
13081 Target::may_relax().
13082 * layout.h (class Layout::section_list): New method.
13083 * merge.h (Output_merge_base::entsize): Change visibility to public.
13084 (Output_merge_base::is_string, Output_merge_base::do_is_string):
13085 New methods.
13086 (Output_merge_string::do_is_string): New method.
13087 * object.cc (Sized_relobj::do_setup): renamed from
13088 Sized_relobj::set_up.
13089 * object.h (Sized_relobj::adjust_shndx,
13090 Sized_relobj::initializ_input_to_output_maps,
13091 Sized_relobj::free_input_to_output_maps): Change visibilities to
13092 protected.
13093 (Sized_relobj::setup): Virtualize.
13094 (Sized_relobj::do_setup): New method declaration.
13095 (Sized_relobj::invalidate_section_offset,
13096 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
13097 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
13098 * options.cc (parse_int): New function.
13099 * options.h (parse_int): New declaration.
13100 (DEFINE_int): New macro.
13101 (stub_group_size): New option.
13102 * output.cc (Output_section::Output_section): Initialize memebers
13103 merge_section_map_, merge_section_by_properties_map_,
13104 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
13105 (Output_section::add_input_section): Handled deferred code-fill
13106 generation and remove an old comment.
13107 (Output_section::add_relaxed_input_section): New method definition.
13108 (Output_section::add_merge_input_section): Use merge section by
13109 properties map to speed to search. Update merge section maps
13110 as appropriate.
13111 (Output_section::build_relaxation_map): New method definition.
13112 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
13113 Same.
13114 (Output_section::relax_input_section): Renamed to
13115 Output_section::convert_input_sections_to_relaxed_sections and change
13116 interface to take a vector of pointers to relaxed sections.
13117 (Output_section::find_merge_section,
13118 Output_section::find_relaxed_input_section): New method definitions.
13119 (Output_section::is_input_address_mapped,
13120 Output_section::output_offset, Output_section::output_address):
13121 Use output section data maps to speed up searching.
13122 (Output_section::find_starting_output_address): Add comments.
13123 (Output_section::do_write,
13124 Output_section::write_to_postprocessing_buffer): Do code-fill
13125 generation as appropriate.
13126 (Output_section::get_input_sections): Invalidate relaxed input section
13127 map.
13128 (Output_section::restore_states): Adjust type of checkpoint .
13129 Invalidate relaxed input section map.
13130 * output.h (Output_merge_base): New class declaration.
13131 (Input_section_specifier): New class defintion.
13132 (class Output_relaxed_input_section) Change base class to
13133 Output_section_data_build.
13134 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
13135 base class initializer.
13136 (Output_section::add_relaxed_input_section): New method declaration.
13137 (Output_section::Input_section): Change visibility to protected.
2e702c99 13138 (Output_section::Input_section::relobj,
c0a62865
DK
13139 Output_section::Input_section::shndx): Handle relaxed input sections.
13140 Output_section::input_sections) Change visibility to protected. Also
13141 define overload to return a non-const pointer.
13142 (Output_section::Merge_section_properties): New class defintion.
13143 (Output_section::Merge_section_by_properties_map,
13144 Output_section::Output_section_data_by_input_section_map,
13145 Output_section::Relaxation_map): New types.
13146 (Output_section::relax_input_section): Rename method to
13147 Output_section::convert_input_sections_to_relaxed_sections and change
13148 interface to take a vector of relaxed section pointers.
13149 (Output_section::find_merge_section,
13150 Output_section::find_relaxed_input_section,
13151 Output_section::build_relaxation_map,
13152 Output_section::convert_input_sections_in_list_to_relaxed_sections):
13153 New method declarations.
13154 (Output_section::merge_section_map_
13155 Output_section::merge_section_by_properties_map_,
13156 Output_section::relaxed_input_section_map_,
13157 Output_section::is_relaxed_input_section_map_valid_,
13158 Output_section::generate_code_fills_at_write_): New data members.
13159 * script-sections.cc
13160 (Output_section_element_input::set_section_addresses): Call
13161 current_data_size and addralign methods of relaxed input sections.
13162 (Orphan_output_section::set_section_addresses): Call current_data_size
13163 and addralign methods of relaxed input sections.
13164 * symtab.cc (Symbol_table::compute_final_value): Extract template
13165 from the body of Symbol_table::sized_finalize_symbol.
13166 (Symbol_table::sized_finalized_symbol): Call
13167 Symbol_table::compute_final_value.
13168 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
13169 (Symbol_table::compute_final_value): New templated method declaration.
13170 * target.cc (Target::do_make_output_section): New method defintion.
13171 * target.h (Target::make_output_section): New method declaration.
13172 (Target::relax): Add more parameters for input objects, symbol table
13173 and layout. Adjust call to do_relax.
13174 (Target::do_make_output_section): New method declaration.
13175 (Target::do_relax): Add parameters for input objects, symbol table
13176 and layout.
13177
d446d6c4
ILT
131782009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
13179
13180 * pread.c: Include stdio.h.
13181
bc06c745
ILT
131822009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
13183
13184 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
13185 defined.
13186
75aea3d0
ILT
131872009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
13188
13189 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
13190 Change read_shndx type to unsigned int.
13191 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
13192 int.
13193 (Sized_dwarf_line_info::read_line_mappings): Likewise.
13194 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
13195 Change read_shndx type to unsigned int.
13196 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
13197 int.
13198 (Sized_dwarf_line_info::read_line_mappings): Likewise.
13199 * layout.cc (Layout::create_symtab_sections): Cast the result of
13200 local_symcount * symsize to off_t in the gold_assert.
13201
be8fcb75
ILT
132022009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
13203
13204 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
13205 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
13206 R_ARM_BASE_ABS.
13207 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
13208 (Arm_relocate_functions::thm_abs5): New function.
13209 (Arm_relocate_functions::abs12): New function.
13210 (Arm_relocate_functions::abs16): New function.
13211 (Arm_relocate_functions::base_abs): New function.
13212 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
13213 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
13214 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
13215 R_ARM_BASE_ABS.
13216 (Scan::global): Likewise.
13217 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
13218 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
13219 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
13220 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
13221 R_ARM_BASE_ABS.
13222
c2a122b6
ILT
132232009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
13224
13225 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
13226 (Arm_relocate_functions::movt_prel): New function.
13227 (Arm_relocate_functions::thm_movw_prel_nc): New function.
13228 (Arm_relocate_functions::thm_movt_prel): New function.
13229 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
13230 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
13231 (Scan::global, Relocate::relocate): Likewise.
13232 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
13233
c4aa1e2d
ILT
132342009-10-09 Mikolaj Zalewski <mikolajz@google.com>
13235
13236 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
13237 Incremental_checker.
13238 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
13239 unsigned int.
13240 (class Incremental_inputs_header): New class.
13241 (Incremental_inputs_header_writer): Edit comment.
13242 (Incremental_inputs_entry): New class.
13243 (Incremental_inputs_entry_writer): Edit comment.
13244 (Sized_incremental_binary::do_find_incremental_inputs_section):
13245 Add *strtab_shndx parameter, fill it.
13246 (Sized_incremental_binary::do_check_inputs): New method.
13247 (Incremental_checker::can_incrementally_link_output_file): Use
13248 Sized_incremental_binary::check_inputs.
13249 (Incremental_inputs::report_command_line): Save command line in
13250 command_line_.
13251 * incremental.h:
13252 (Incremental_binary::find_incremental_inputs_section): New
13253 method.
13254 (Incremental_binary::do_find_incremental_inputs_section): Add
13255 strtab_shndx parameter.
13256 (Incremental_binary::do_check_inputs): New pure virtual method.
13257 (Sized_incremental_binary::do_check_inputs): Declare.
13258 (Incremental_checker::Incremental_checker): Add incremental_inputs
13259 parameter, use it to initialize incremental_inputs_.
13260 (Incremental_checker::incremental_inputs_): New field.
13261 (Incremental_checker::command_line): New method.
13262 (Incremental_checker::inputs): New method.
13263 (Incremental_checker::command_line_): New field.
13264
c549a694
ILT
132652009-10-09 Mikolaj Zalewski <mikolajz@google.com>
13266
13267 * incremental.cc: Include <cstdarg> and "target-select.h".
13268 (vexplain_no_incremental): New function.
13269 (explain_no_incremental): New function.
13270 (Incremental_binary::error): New method.
13271 (Sized_incremental_binary::do_find_incremental_inputs_section): New
13272 method.
13273 (make_sized_incremental_binary): New function.
13274 (open_incremental_binary): New function.
13275 (can_incrementally_link_file): Add checks if output is ELF and has
13276 inputs section.
13277 * incremental.h: Include "elfcpp_file.h" and "output.h".
13278 (Incremental_binary): New class.
13279 (Sized_incremental_binary): New class.
13280 (open_incremental_binary): Declare.
13281 * object.cc (is_elf_object): Use
13282 elfcpp::Elf_recognizer::is_elf_file.
13283 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
13284 * output.h (Output_file::filesize): New method.
13285
fd3c5f0b
ILT
132862009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
13287
13288 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
13289 New function.
13290 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
13291 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
13292 function.
13293 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
13294 function.
13295 (Arm_relocate_functions::movw_abs_nc): New function.
13296 (Arm_relocate_functions::movt_abs): New function.
13297 (Arm_relocate_functions::thm_movw_abs_nc): New function.
13298 (Arm_relocate_functions::thm_movt_abs): New function.
13299 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
13300 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
13301 (Scan::global): Likewise.
13302 (Relocate::relocate): Likewise.
13303 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
13304
7f5309a5
ILT
133052009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
13306
13307 * arm.cc (Arm_relocate_functions::got_prel) New function.
13308 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
13309 (Relocate::relocate): Likewise.
13310 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
13311
364c7fa5
ILT
133122009-10-06 Ian Lance Taylor <iant@google.com>
13313
13314 * options.h (class General_options): Define
13315 split_stack_adjust_size parameter.
13316 * object.h (class Object): Add uses_split_stack_ and
13317 has_no_split_stack_ fields. Add uses_split_stack and
13318 has_no_split_stack accessor functions. Declare
13319 handle_split_stack_section.
13320 (class Reloc_symbol_changes): Define.
13321 (class Sized_relobj): Define Function_offsets. Declare
13322 split_stack_adjust, split_stack_adjust_reltype, and
13323 find_functions.
13324 * object.cc (Object::handle_split_stack_section): New function.
13325 (Sized_relobj::do_layout): Call handle_split_stack_section.
13326 * dynobj.cc (Sized_dynobj::do_layout): Call
13327 handle_split_stack_section.
13328 * reloc.cc (Sized_relobj::relocate_sections): Call
13329 split_stack_adjust for executable sections in split_stack
13330 objects. Pass reloc_map to relocate_section.
13331 (Sized_relobj::split_stack_adjust): New function.
13332 (Sized_relobj::split_stack_adjust_reltype): New function.
13333 (Sized_relobj::find_functions): New function.
13334 * target-reloc.h: Include "object.h".
13335 (relocate_section): Add reloc_symbol_changes parameter. Change
13336 all callers.
13337 * target.h (class Target): Add calls_non_split method. Declare
13338 do_calls_non_split virtual method. Declare match_view and
13339 set_view_to_nop.
13340 * target.cc: Include "elfcpp.h".
13341 (Target::do_calls_non_split): New function.
13342 (Target::match_view): New function.
13343 (Target::set_view_to_nop): New function.
13344 * gold.cc (queue_middle_tasks): Give an error if mixing
13345 split-stack and non-split-stack objects with -r.
13346 * i386.cc (Target_i386::relocate_section): Add
13347 reloc_symbol_changes parameter.
13348 (Target_i386::do_calls_non_split): New function.
13349 * x86_64.cc (Target_x86_64::relocate_section): Add
13350 reloc_symbol_changes parameter.
13351 (Target_x86_64::do_calls_non_split): New function.
13352 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
13353 parameter.
13354 * powerpc.cc (Target_powerpc::relocate_section): Add
13355 reloc_symbol_changes parameter.
13356 * sparc.cc (Target_sparc::relocate_section): Add
13357 reloc_symbol_changes parameter.
13358 * configure.ac: Call AM_CONDITIONAL for the default target.
13359 * configure: Rebuild.
13360 * testsuite/Makefile.am (TEST_AS): New variable.
13361 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
13362 (check_DATA): Add split_i386 and split_x86_64 files.
13363 (SPLIT_DEFSYMS): Define.
13364 (split_i386_[1234n].o): New targets.
13365 (split_i386_[124]): New targets.
13366 (split_i386_[1234r].stdout): New targets.
13367 (split_x86_64_[1234n].o): New targets.
13368 (split_x86_64_[124]): New targets.
13369 (split_x86_64_[1234r].stdout): New targets.
13370 (MOSTLYCLEANFILES): Add new executables.
13371 * testsuite/split_i386.sh: New file.
13372 * testsuite/split_x86_64.sh: New file.
13373 * testsuite/split_i386_1.s: New file.
13374 * testsuite/split_i386_2.s: New file.
13375 * testsuite/split_i386_3.s: New file.
13376 * testsuite/split_i386_4.s: New file.
13377 * testsuite/split_i386_n.s: New file.
13378 * testsuite/split_x86_64_1.s: New file.
13379 * testsuite/split_x86_64_2.s: New file.
13380 * testsuite/split_x86_64_3.s: New file.
13381 * testsuite/split_x86_64_4.s: New file.
13382 * testsuite/split_x86_64_n.s: New file.
13383 * testsuite/testfile.cc (Target_test): Update relocation_section
13384 function.
13385 * testsuite/Makefile.in: Rebuild.
13386
e8a9fcda
ILT
133872009-10-06 Ian Lance Taylor <iant@google.com>
13388
13389 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
13390 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
13391 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
13392 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
13393 the address on ldo_addrs_.
13394 (Target_i386::Relocate::fix_up_ldo): New function.
13395
e99daf92
ILT
133962009-10-06 Rafael Espindola <espindola@google.com>
13397
13398 * plugin.cc (add_input_library): New.
13399 (Plugin::load): Add add_input_library to tv.
13400 (Plugin_manager::add_input_file): Add the is_lib argument.
13401 (add_input_file): Update call to Plugin_manager::add_input_file.
13402 (add_input_library): New.
13403 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
13404
966d4097
DK
134052009-09-30 Doug Kwan <dougkwan@google.com>
13406
13407 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
13408 symbol and call Symbol::may_need_copy_reloc to determine if
13409 a copy reloc is needed.
13410 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
13411 nocopyreloc is given in command line.
13412 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
13413 given in command line.
13414 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
13415 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
13416 of the removed Target_i386::may_need_copy_reloc.
13417 * options.h (copyreloc): New option with default value false.
13418 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
13419 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
13420 instead of the removed Target_powerpc::may_need_copy_reloc.
13421 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
13422 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
13423 instead of the removed Target_sparc::may_need_copy_reloc.
13424 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
13425 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
13426 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
13427 instead of the removed Target_x86_64::may_need_copy_reloc.
13428
029ba973
ILT
134292009-09-30 Ian Lance Taylor <iant@google.com>
13430
13431 * object.h (class Object): Remove target_ field, and target,
13432 sized_target, and set_target methods.
13433 (Object::sized_target): Remove.
13434 (class Sized_relobj): Update declarations. Remove sized_target.
13435 * object.cc (Sized_relobj::setup): Remove target parameter.
13436 Change all callers.
13437 (Input_objects::add_object): Don't do anything with the target.
13438 (make_elf_sized_object): Add punconfigured parameter. Change all
13439 callers. Set or test parameter target.
13440 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
13441 Change all callers.
13442 * parameters.cc (Parameters::set_target): Change parameter type to
13443 be non-const.
13444 (Parameters::default_target): Remove.
13445 (set_parameters_target): Change parameter type to be non-const.
13446 (parameters_force_valid_target): New function.
13447 (parameters_clear_target): New function.
13448 * parameters.h (class Parameters): Update declarations. Remove
13449 default_target method. Add sized_target and clear_target
13450 methods. Change target_ to be non-const.
13451 (set_parameters_target): Update declaration.
13452 (parameters_force_valid_target): Declare.
13453 (parameters_clear_target): Declare.
13454 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
13455 as NULL if we aren't searching.
13456 (Add_symbols::run): Don't check for compatible target.
13457 * fileread.cc (Input_file::open_binary): Call
13458 parameters_force_valid_target.
13459 * gold.cc (queue_middle_tasks): Likewise.
13460 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
13461 set_target on object.
13462 * dynobj.h (class Sized_dynobj): Update declarations.
13463 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
13464 make_elf_object returns NULL.
13465 (Archive::include_member): Don't check whether object target is
13466 compatible.
13467 * output.cc (Output_section::add_input_section): Get target from
13468 parameters.
13469 (Output_section::relax_input_section): Likewise.
13470 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
13471 parameters.
13472 (Sized_relobj::do_scan_relocs): Likewise.
13473 (Sized_relobj::relocate_sections): Likewise.
13474 * resolve.cc (Symbol_table::resolve): Likewise.
13475 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
13476 parameter. Change all callers.
13477 (Symbol_table::add_from_object): Get target from parameters.
13478 (Symbol_table::add_from_relobj): Don't check object target.
13479 (Symbol_table::add_from_dynobj): Likewise.
13480 (Symbol_table::define_special_symbol): Get target from
13481 parameters.
13482 * symtab.h (class Symbol_table): Update declaration.
13483 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
13484 parameter. Change all callers. Clear parameter target.
13485 (Binary_test): Test target here.
13486 * testsuite/object_unittest.cc (gold_testsuite): Remove
13487 target_test_pointer parameter. Change all callers.
13488 (Object_test): Test target here.
13489
a6a22b83
ILT
134902009-09-26 Ian Lance Taylor <iant@google.com>
13491
13492 * testsuite/initpri1.c: Don't try to use constructor priorities if
13493 compiling with gcc before 4.3.
13494
6a8f49fe
ILT
134952009-09-22 Mikolaj Zalewski <mikolajz@google.com>
13496
13497 * testsuite/retain_symbols_file_test.sh (check_present): Change
13498 output file name to retain_symbols_file_test.stdout.
13499 (check_absent): Likewise.
13500
8c604651
CS
135012009-09-18 Craig Silverstein <csilvers@google.com>
13502
13503 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
13504 * options.cc: Include <cerrno> and <fstream>.
13505 (General_options::finalize): Parse -retain-symbols-file tag.
13506 * options.h: New flag.
13507 (General_options): New method should_retain_symbol, new
13508 variable symbols_to_retain.
13509 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
13510 should_retain_symbol map.
13511 * testsuite/Makefile.am (retain_symbols_file_test): New test.
13512 * testsuite/Makefile.in: Regenerate.
13513 * testsuite/retain_symbols_file_test.sh: New file.
13514
ca58b19f
NC
135152009-09-18 Nick Clifton <nickc@redhat.com>
13516
13517 * po/es.po: Updated Spanish translation.
13518
20e6d0d6
DK
135192009-09-17 Doug Kwan <dougkwan@google.com>
13520
13521 * debug.h (DEBUG_RELAXATION): New constant.
13522 (DEBUG_ALL): Add DEBUG_RELAXATION.
13523 (debug_string_to_enum): Add relaxation debug option.
13524 * layout.cc
13525 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
13526 Layout::Relaxation_debug_check::read_sections,
13527 Layout::Relaxation_debug_check::read_sections): New method definitions.
13528 (Layout::Layout): Initialize data members
13529 record_output_section_data_from_scrips_,
13530 script_output_section_data_list_ and relaxation_debug_check_.
13531 (Layout::save_segments, Layout::restore_segments,
13532 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
13533 Layout::relaxation_loop_body): New method definitions.
13534 (Layout::finalize): Support relaxation. Move section layout code to
13535 Layout::relaxation_loop_body.
13536 (Layout::set_asection_address_from_script): Move code for orphan
13537 section placement out.
13538 (Layout::place_orphan_sections_in_script): New method definition.
13539 * layout.h (Output_segment_headers, Output_file_header):
13540 New forward class declarations.
13541 (Layout::~Layout): Define.
13542 (Layout::new_output_section_data_from_script): New method definition.
13543 (Layout::place_orphan_sections_in_script): New method declaration.
13544 (Layout::Segment_states): New type declaration.
13545 (Layout::save_segments, Layout::restore_segments,
13546 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
13547 Layout::relaxation_loop_body): New method declarations.
13548 (Layout::Output_section_data_list): New type declaration.
13549 (Layout::Relaxation_debug_check): New class definition.
13550 (Layout::record_output_section_data_from_script_,
13551 Layout::script_output_section_data_list_, Layout::segment_states_,
13552 Layout::relaxation_debug_check_): New data members.
13553 * output.cc: (Output_section_headers::do_size): New method definition.
13554 (Output_section_headers::Output_section_headers): Move size
13555 computation to Output_section_headers::do_size.
13556 (Output_segment_headers::do_size): New method definition.
e1df38aa 13557 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
13558 Output_file_header::do_size and call it.
13559 (Output_file_header::do_size): New method definition.
13560 (Output_data_group::Output_data_group): Adjust call to
13561 Output_section_data.
13562 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
13563 (Output_symtab_xindex::do_write): Add array bound check.
2e702c99 13564 (Output_section::Input_section::print_to_mapfile): Handle
20e6d0d6
DK
13565 RELAXED_INPUT_SECTION_CODE.
13566 (Output_section::Output_section): Initialize data member checkpoint_.
13567 (Output_section::~Output_section): Delete checkpoint object pointed
13568 by checkpoint_.
13569 (Output_section::add_input_section): Always add an Input_section if
13570 relaxing.
13571 (Output_section::add_merge_input_section): Add assert.
13572 (Output_section::relax_input_section): New method definition.
13573 (Output_section::set_final_data_size): Set load address to zero for
13574 an unallocated section.
13575 (Output_section::do_address_and_file_offset_have_reset_values):
13576 New method definition.
13577 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
13578 Handle relaxed input section.
13579 (Output_section::sort_attached_input_sections): Checkpoint input
13580 section list lazily.
13581 (Output_section::get_input_sections): Change type of input_sections to
13582 list of Simple_input_section pointers. Checkpoint input section list
13583 lazily. Also handle relaxed input sections.
13584 (Output_section::add_input_section_for_script): Take a reference to
13585 a Simple_input_section object instead of Relobj pointer and section
13586 index as parameter. Handle relaxed input sections.
13587 (Output_section::save_states, Output_section::restore_states): New
13588 method definitions.
13589 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
13590 (Output_data::is_data_size_fixed): New method definition.
13591 (Output_data::reset_addresss_and_file_offset): Do not reset data size
13592 if it is fixed.
13593 (Output_data::address_and_file_offset_have_reset_values): New method
13594 definition.
13595 (Output_data::do_address_and_file_offset_have_reset_values): New method
13596 definition.
13597 (Output_data::set_data_size): Check that data size is not fixed.
13598 (Output_data::fix_data_size): New method definition.
13599 (Output_data::is_data_size_fixed_): New data member.
13600 (Output_section_headers::set_final_data_size): New method definition.
13601 (Output_section_headers::do_size): New method declaration.
13602 (Output_segment_headers::set_final_data_size): New method definition.
13603 (Output_segment_headers::do_size): New method declaration.
13604 (Output_file_header::set_final_data_size)::New method definition.
13605 (Output_file_header::do_size)::New method declaration.
13606 (Output_section_data::Output_section_data): Add new parameter
13607 is_data_size_fixed and use it to fix data size.
13608 (Output_data_const::Output_data_const): Adjust call to base class
13609 constructor and fix data size.
13610 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
13611 base class constructor and fix data size.
13612 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
13613 base class constructor and fix data size.
13614 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
13615 class constructor and fix data size.
13616 (Output_data_group::set_final_data_size): New method definition.
13617 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
13618 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
13619 class constructor and fix data size.
13620 (Output_relaxed_input_section): New class definition.
13621 (Output_section::Simple_input_section): New class definition.
13622 (Output_section::get_input_sections): Adjust parameter list.
13623 (Output_section::add_input_section_for_script): Same.
13624 (Output_section::save_states, Output_section::restore_states,
13625 Output_section::do_address_and_file_offset_have_reset_values,
13626 (Output_section::Input_section::Input_section): Handle
13627 RELAXED_INPUT_SECTION_CODE. Add new overload for
13628 Output_relaxed_input_section.
13629 (Output_section::Input_section::is_input_section,
13630 Output_section::Input_section::set_output_section): Handle relaxed
13631 input section.
13632 (Output_section::Input_section::is_relaxed_input_section,
13633 Output_section::Input_section::output_section_data,
13634 Output_section::Input_section::relaxed_input_section): New method
13635 definitions.
13636 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
13637 value.
13638 (Output_section::Input_section::u1_): Update comments.
13639 (Output_section::Input_section::u2_): Add new union member poris.
13640 (Output_section::Checkpoint_output_section): New classs definition.
13641 (Output_section::relax_input_section): New method declaration.
13642 (Output_section::checkpoint_): New data member.
13643 (Output_segment): Update comments.
13644 (Output_segment::Output_segment): Un-privatize copy constructor.
13645 (Output_segment::operator=): Un-privatize.
13646 * script-sections.cc (Output_section_element::Input_section_list):
13647 Change element type to Output_section::Simple_input_section.
13648 (Output_section_element_dot_assignment::set_section_addresses):
13649 Register output section data for relaxation clean up.
13650 (Output_data_exression::Output_data_expression): Adjust call to base
13651 constructor to fix data size.
13652 (Output_section_element_data::set_section_addresses): Register
13653 Output_data_expression object for relaxation clean up.
13654 (struct Input_section_info): Replace Relobj pointer and section index
13655 pair with Output_section::Simple_input_section and Convert struct to a
13656 class.
13657 (Input_section_sorter::operator()): Adjust access to
e1df38aa 13658 Input_section_info data member to use accessors.
20e6d0d6
DK
13659 (Output_section_element_input::set_section_addresses): Use layout
13660 parameter. Adjust code to use Output_section::Simple_input_section
13661 and Input_secction_info classes. Register filler for relaxation
13662 clean up.
13663 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
13664 and section index pair with Output_section::Simple_input_section
13665 class. Adjust code accordingly.
13666 (Phdrs_element::release_segment): New method definition.
13667 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
13668 segment list.
13669 (Script_sections::release_segments): New method definition.
13670 * gold/script-sections.h (Script_sections::release_segments): New
13671 method declaration.
13672 * gold/target.h (Target::may_relax, Target::relax,
13673 Target::do_may_relax, Target::do_relax): New method definitions.
13674
5e445df6
ILT
136752009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
13676
13677 * arm.cc (has_signed_unsigned_overflow): New function.
13678 (Arm_relocate_functions::abs8): New function.
13679 (Target_arm::Scan::local): Handle R_ARM_ABS8.
13680 (Target_arm::Scan::global): Likewise.
13681 (Target_arm::relocate::relocate): Likewise.
13682 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
13683 Likewise.
13684
8c604651 136852009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
13686
13687 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
13688 * testsuite/Makefile.in: Regenerate.
13689
1e9cc1c2
NC
136902009-09-11 Nick Clifton <nickc@redhat.com>
13691
13692 * po/gold.pot: Updated by the Translation project.
13693
6a89f575
CC
136942009-09-08 Cary Coutant <ccoutant@google.com>
13695
13696 * output.cc (Output_file::open): Add execute permission to empty file.
13697 * testsuite/Makefile.am (permission_test): New test.
13698 * testsuite/Makefile.in: Regenerate.
13699
fdcac5af
ILT
137002009-09-02 Ian Lance Taylor <iant@google.com>
13701
13702 * output.cc (Output_file::resize): Call map_no_anonymous rather
13703 than map.
13704
44453f85
ILT
137052009-09-01 Mikolaj Zalewski <mikolajz@google.com>
13706
13707 * gold.cc: Include "incremental.h".
13708 (queue_initial_tasks): Call Incremental_checker methods.
13709 * incremental.cc: Include "output.h".
13710 (Incremental_checker::can_incrementally_link_output_file): New
13711 method.
13712 * incremental.h (Incremental_checker): New class.
13713
13714 * output.cc (Output_file::open_for_modification): New method.
13715 (Output_file::map_anonymous): Changed return type to bool. Record
13716 map in base_ field.
13717 (Output_file::map_no_anonymous): New method, broken out of map.
13718 (Output_file::map): Use map_no_anonymous and map_anonymous.
13719 * output.h (class Output_file): Update declarations.
13720
293c1386
CC
137212009-08-24 Cary Coutant <ccoutant@google.com>
13722
13723 * options.h (Command_line::Pre_options): New class.
13724 (Command_line::pre_options): New member.
13725 * options.cc (gold::options::ready_to_register): New variable.
13726 (One_option::register_option): Do nothing if not registering options.
13727 Assert if same short option registered twice.
13728 (General_options::General_options): Turn off option registration when
13729 done constructing.
13730 (Command_line::Pre_options::Pre_options): New constructor.
13731
f773f3d2
CC
137322009-08-24 Cary Coutant <ccoutant@google.com>
13733
06a73cfe
CC
13734 * options.h (General_options::no_keep_memory): Remove incorrect
13735 short option.
f773f3d2 13736
a15af8e2
RW
137372009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
13738
13739 * Makefile.am (am__skiplex, am__skipyacc): New.
13740 * Makefile.in: Regenerate.
13741
c462b41b
RW
137422009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
13743
14ec8efd
RW
13744 * Makefile.am (AM_CPPFLAGS): Renamed from ...
13745 (INCLUDES): ... this.
13746 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
13747 (AM_CPPFLAGS): Renamed from ...
13748 (INCLUDE): ... this.
13749 * Makefile.in, testsuite/Makefile.in: Regenerate.
13750
81ecdfbb
RW
13751 * Makefile.in: Regenerate.
13752 * aclocal.m4: Likewise.
13753 * config.in: Likewise.
13754 * configure: Likewise.
13755 * testsuite/Makefile.in: Likewise.
13756
c462b41b
RW
13757 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
13758 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
13759 * Makefile.in: Regenerate.
13760 * testsuite/Makefile.in: Regenerate.
13761
2da73f13
CC
137622009-08-19 Cary Coutant <ccoutant@google.com>
13763
13764 * resolve.cc (Symbol_table::resolve): Don't complain about defined
13765 symbols in shared libraries overridden by hidden or internal symbols
13766 in the main program.
13767
2db70501
CD
137682009-08-19 Chris Demetriou <cgd@google.com>
13769
13770 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
13771 checking source file names in error messages.
13772
f733487b
DK
137732009-08-18 Doug Kwan <dougkwan@google.com>
13774
13775 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
13776 an elcpp::Ehdr as parameter. Adjust call to set_target.
13777 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
13778 an elfcpp::Ehdr as parameter.
13779 * object.cc (Object::set_target): Remove the version that looks up
13780 a target and sets it.
13781 (Sized_relobj::setup): Take a Target object instead of
13782 an elfcpp::Ehdr as parameter. Adjust call to set_target.
13783 (make_elf_sized_object): Find target and ask target to
13784 make an ELF object.
13785 * object.h: (Object::set_target): Remove the version that looks up
13786 a target and sets it.
13787 (Sized_relobj::setup): Take a Target object instead of
13788 an elfcpp:Ehdr as parameter.
13789 * target.cc: Include dynobj.h.
13790 (Target::do_make_elf_object_implementation): New.
2e702c99 13791 (Target::do_make_elf_object): New.
f733487b
DK
13792 * target.h (Target::make_elf_object): New template declaration.
13793 (Target::do_make_elf_object): New method declarations.
13794 (Target::do_make_elf_object_implementation): New template declaration.
13795
cc70f101
ILT
137962009-08-14 Ian Lance Taylor <iant@google.com>
13797
13798 * gold.h (FUNCTION_NAME): Define.
13799 (gold_unreachable): Use FUNCTION_NAME.
13800
ef5e0cb1
ST
138012009-08-12 Sriraman Tallam <tmsriram@google.com>
13802
13803 * icf.cc (Icf::find_identical_sections): Issue a warning when a
13804 symbol in the --keep-unique list is not found.
13805
48c187ce
ST
138062009-08-12 Sriraman Tallam <tmsriram@google.com>
13807
13808 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
13809 been maked as --keep-unique.
13810 (Icf::unfold_section): New function.
13811 * icf.h (Icf::unfold_section): New function.
13812 * options.h (General_options::keep_unique): New option.
13813 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
13814 * testsuite/Makefile.in: Regenerate.
13815 * testsuite/icf_keep_unique_test.sh: New file.
13816 * testsuite/icf_keep_unique_test.cc: New file.
13817
645afe0c
CC
138182009-08-12 Cary Coutant <ccoutant@google.com>
13819
13820 PR 10471
13821 * resolve.cc (Symbol_table::resolve): Check for references from
13822 dynamic objects to hidden and internal symbols.
13823 * testsuite/Makefile.am (hidden_test.sh): New test.
13824 * testsuite/Makefile.in: Regenerate.
13825 * testsuite/hidden_test.sh: New script.
13826 * testsuite/hidden_test_1.c: New test source.
13827 * testsuite/hidden_test_main.c: New test source.
13828
11af873f
DK
138292009-08-11 Doug Kwan <dougkwan@google.com>
13830
13831 * arm.cc: Update comments.
13832 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
13833 segment to locate the .ARM.exidx section if present.
13834
b9f7d72d
DK
138352009-08-09 Doug Kwan <dougkwan@google.com>
13836
13837 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
13838 patch.
13839
ddd3c53c
ST
138402009-08-07 Sriraman Tallam <tmsriram@google.com>
13841 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
13842 compiler warnings.
13843
27721062
ST
138442009-08-06 Sriraman Tallam <tmsriram@google.com>
13845
13846 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
13847 valid tls_segment only for non-debug-section relocations.
13848 * testsuite/Makefile.am: Add gc_tls_test.
13849 * testsuite/Makefile.in: Regenerate.
13850 * testsuite/gc_tls_test.cc: New file.
13851 * testsuite/gc_tls_test.sh: New file.
13852
ef15dade 138532009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 13854
ef15dade
ST
13855 * icf.cc: New file.
13856 * icf.h: New file.
13857 * Makefile.am (CCFILES): Add icf.cc.
13858 (HFILES): Add icf.h
13859 * Makefile.in: Regenerate.
13860 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
13861 * gc.h (gc_process_relocs): Populate lists used by icf to contain
13862 section, symbol and addend information for the relocs.
13863 * gold.cc (queue_middle_tasks): Call identical code folding.
13864 * gold.h: Add defines for multimap.
13865 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
13866 to the call of finalize_local_symbols.
13867 * main.cc (main): Create object of class Icf.
13868 * object.cc (Sized_relobj::do_layout): Allow this function to be
13869 called twice during icf.
13870 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
13871 to sections marked as identical by icf.
13872 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
13873 when available.
13874 (Sized_relobj::do_section_entsize): New function.
13875 * object.h (Object::section_entsize): New function.
13876 (Object::do_section_entsize): New pure virtual function.
13877 (Relobj::finalize_local_symbols): Add new parameter.
13878 (Relobj::do_section_entsize): New function.
13879 * options.h (General_options::icf): New option.
13880 (General_options::icf_iterations): New option.
13881 (General_options::print_icf_sections): New option.
13882 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
13883 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
13884 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
13885 icf.
13886 * symtab.cc (Symbol_table::is_section_folded): New function.
13887 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
13888 to sections marked as identical by icf.
13889 * symtab.h (Symbol_table::set_icf): New function.
13890 (Symbol_table::icf): New function.
13891 (Symbol_table::is_section_folded): New function.
13892 (Symbol_table::icf_): New data member.
13893 * target-reloc.h (relocate_section): Ignore sections folded by icf.
13894 * testsuite/Makefile.am: Add commands to build icf_test.
13895 * testsuite/Makefile.in: Regenerate.
13896 * testsuite/icf_test.sh: New file.
13897 * testsuite/icf_test.cc: New file.
13898
c3b65ac4
CD
138992009-07-24 Chris Demetriou <cgd@google.com>
13900
13901 * layout.cc (is_compressible_debug_section): Fix incorrect
13902 comment about compressed section names.
13903
1caf2c51
ILT
139042009-07-20 Ian Lance Taylor <ian@airs.com>
13905
13906 PR 10419
13907 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
13908
1ef4d87f
ILT
139092009-07-16 Ian Lance Taylor <iant@google.com>
13910
13911 PR 10400
13912 * layout.h: #include <map>.
13913 (class Kept_section): Change from struct to class. Add accessors
13914 and setters. Add section size to Comdat_group mapping. Change
13915 Comdat_group to std::map. Add is_comdat_ field. Add
13916 linkonce_size field in union.
13917 (class Layout): Update declaration of find_or_add_kept_section.
13918 Don't declare find_kept_object.
13919 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
13920 parameter. Add object, shndx, is_comdat, and is_group_name
13921 parameters. Change all callers. Adjust for new Kept_section.
13922 (Layout::find_kept_object): Remove.
13923 * object.cc (Sized_relobj::include_section_group): Update use of
13924 Kept_section. Rename secnum to shndx. Only record
13925 Kept_comdat_section if sections are the same size.
13926 (Sized_relobj::include_linkonce_section): Update use of
13927 Kept_section. Only record Kept_comdat_section if sections are the
13928 same size. Set size of linkonce section.
13929 (Sized_relobj::map_to_kept_section): Update call to
13930 get_kept_comdat_section.
13931 * object.h (class Sized_relobj): Rename fields in
13932 Kept_comdat_section to drop trailing underscores; change object
13933 field to Relobj*. Change Kept_comdat_section_table to store
13934 struct rather than pointer.
13935 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
13936 Add kept_object and kept_shndx parameters. Change all callers.
13937 (Sized_relobj::get_kept_comdat_section): Change return type to
13938 bool. Add kept_object and kept_shndx parameters. Change all
13939 callers.
13940 * plugin.cc (Pluginobj::include_comdat_group): Update call to
13941 Layout::find_or_add_kept_section.
13942
37c3b7b0
ILT
139432009-07-09 Ian Lance Taylor <iant@google.com>
13944
13945 * merge.cc (Object_merge_map::initialize_input_to_output_map):
13946 Reserve space in the hash table.
13947
98fa85cb
ILT
139482009-07-06 Mikolaj Zalewski <mikolajz@google.com>
13949
13950 * fileread.cc (File_read::get_mtime): New method.
13951 * fileread.h (Timespec): New structure.
13952 (File_read::get_mtime): New method.
13953 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
13954 Renamed from timestamp_nsec.
13955 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
13956 Elf_Xword.
e1df38aa 13957 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 13958 timestamp_nsec.
e1df38aa 13959 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
13960 (Incremental_inputs::report_obejct): Save mtime; style fix.
13961 (Incremental_inputs::report_script): Save mtime; style fix.
13962 (Incremental_inputs::finalize_inputs): Style fix.
13963 (Incremental_inputs::finalize): Style fix.
13964 (Incremental_inputs::create_input_section_data): Store inputs
13965 mtime.
13966 * incremental.h (Incremental_inputs::report_script): Add mtime
13967 argument.
13968 (Incremental_inputs::Input_info::Input_info): Intialize only one
13969 union member.
13970 (Incremental_inputs::Input_info::archive): Move to nameless
13971 union.
13972 (Incremental_inputs::Input_info::obejct): Move to nameless union.
13973 (Incremental_inputs::Input_info::script): Move to nameless union.
13974 (Incremental_inputs::mtime): New field.
13975 * script.cc (read_input_script): Pass file mtime to
13976 Incremental_input.
13977 * script.h (Script_info::inputs): Style fix.
13978
c9d70757
ILT
139792009-07-01 Ian Lance Taylor <ian@airs.com>
13980
13981 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
13982 instead of 32.
13983
9c547ec3
ILT
139842009-06-24 Ian Lance Taylor <iant@google.com>
13985
13986 PR 10156
13987 * layout.cc (Layout::choose_output_section): If we find an
13988 existing section, update the flags.
13989 (Layout::create_notes): New function, broken out of
13990 Layout::finalize.
13991 (Layout::finalize): Don't create note sections.
13992 (Layout::create_note): Don't crash if linker script discards
13993 section.
13994 (Layout::create_gold_note): Likewise.
13995 (Layout::create_build_id): Likewise. Don't set
13996 after_input_sections on the section.
13997 (Layout::create_executable_stack_info): Remove target parameter.
13998 Change caller.
13999 * layout.h (class Layout): Declare create_notes. Update
14000 declaration of create_executable_stack_info.
14001 * gold.cc (queue_middle_tasks): Call create_notes.
14002 * output.cc (Output_section::update_flags_for_input_section): Move
14003 here from output.h. If SHF_ALLOC flag is newly set, mark address
14004 invalid.
14005 * output.h (Output_data::mark_address_invalid): New function.
14006 (class Output_section): Only declare, not define,
14007 update_flags_for_input_section. Remove set_flags.
14008
55458500
ILT
140092009-06-24 Ian Lance Taylor <iant@google.com>
14010
14011 * script-sections.cc (Output_section_definition::
14012 set_section_addresses): Rename shadowing local load_address to
14013 laddr.
14014
1307d6cd
ILT
140152009-06-24 Ian Lance Taylor <iant@google.com>
14016
14017 PR 10244
14018 * reloc.cc (relocate_sections): Skip empty relocation sections.
14019
ec3f783e
ILT
140202009-06-23 Ian Lance Taylor <iant@google.com>
14021
14022 PR 10156
14023 * layout.cc (Layout::create_note): Use choose_output_section
14024 rather than make_output_section.
14025
459c9f1c
ILT
140262009-06-23 Ian Lance Taylor <iant@google.com>
14027
14028 PR 10237
14029 * options.cc (General_options::parse_V): Set printed_version_.
14030 (General_options::General_options): Initialize printed_version_.
14031 * options.h (class General_options): Add printed_version_ field.
14032 * gold.cc (queue_initial_tasks): If there are no input files,
14033 don't give a fatal error if we printed the version information.
14034 (queue_middle_tasks): If using -r with a shared object, give a
14035 fatal error rather than an ordinary error.
14036
1518dc8f
ILT
140372009-06-23 Ian Lance Taylor <iant@google.com>
14038
14039 PR 10219
14040 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
14041 (Layout::make_output_section): Set have_stabstr_section_ if we see
14042 a .stab*str section.
14043 (Layout::finalize): Call link_stabs_sections.
14044 (Layout::link_stabs_sections): New file.
14045 * layout.h (class Layout): Add have_stabstr_section_ field.
14046 Declare link_stabs_sections.
14047
3d857b98
DK
140482009-06-23 Doug Kwan <dougkwan@google.com>
14049
14050 * Makefile.am (libgold_a_LIBADD): New.
14051 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
2e702c99 14052 * Makefile.in: Regenerate.
3d857b98
DK
14053 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
14054 * configure: Regenerate.
14055 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
14056 * fileread.cc: Include sys/state.h
14057 * gold.h: Declare memmem and strndup if found missing.
14058 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
14059
0639a6f6
ILT
140602009-06-23 Ian Lance Taylor <iant@google.com>
14061
14062 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
14063 * configure: Rebuild.
14064
8d63875c
ILT
140652009-06-23 Ian Lance Taylor <iant@google.com>
14066
14067 PR 10147
14068 * object.cc (Object::section_contents): Don't try to get a view if
14069 the section has length zero.
14070 (Object::handle_gnu_warning_section): If the section is empty, use
14071 the name of the section as the warning.
14072
f7c8a183
ILT
140732009-06-23 Ian Lance Taylor <iant@google.com>
14074
14075 PR 10133
14076 * stringpool.h (class Stringpool_template): Add optimize_ field.
14077 (Stringpool_template::set_optimize): New function.
14078 * stringpool.cc (Stringpool_template::Stringpool_template):
14079 Initialize optimize_ field.
14080 (Stringpool_template::set_string_offsets): Test local optimize
14081 fild rather than parameter.
14082 * layout.cc (Layout::Layout): Call set_optimize on the section
14083 name stringpool.
14084
e6a307ba
ILT
140852009-06-22 Ian Lance Taylor <iant@google.com>
14086
14087 PR 10030
14088 * yyscript.y: Parse TARGET.
14089 * script.cc (script_set_target): New function.
14090 * script-c.h (script_set_target): Declare.
14091 * options.cc (General_options::string_to_object_format): Rename
14092 from string_to_object_format in anonymous namespace. Change
14093 callers.
14094 * options.h (class General_options): Declare
14095 string_to_object_format.
14096
3ee173de
ILT
140972009-06-22 Ian Lance Taylor <iant@google.com>
14098
14099 * script-sections.cc (Script_sections::create_segments): Don't put
14100 program headers in a PT_LOAD segment if -n or -N.
14101
141022009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
14103
14104 PR 10141
14105 * options.h (class General_options): Add -z lazy and -z now. Sort
14106 -z options into alphabetical order.
14107 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
14108
cd6739a1 141092009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
14110
14111 * layout.cc (Layout::make_output_section): Call
14112 Target::new_output_section.
14113 (Layout::attach_allocated_section_to_segment): Put large section
14114 sections in a separate load segment with the large segment flag
14115 set.
14116 (Layout::segment_precedes): Sort large data segments after other
14117 load segments.
14118 (align_file_offset): New static function.
14119 (Layout::set_segment_offsets): Use align_file_offset.
14120 * output.h (class Output_section): Add is_small_section_ and
14121 is_large_section_ fields.
14122 (Output_section::is_small_section): New function.
14123 (Output_section::set_is_small_section): New function.
14124 (Output_section::is_large_section): New function.
14125 (Output_section::set_is_large_section): New function.
14126 (Output_section::is_large_data_section): New function.
14127 (class Output_segment): Add is_large_data_segment_ field.
14128 (Output_segment::is_large_data_segment): New function.
14129 (Output_segment::set_is_large_data_segment): New function.
14130 * output.cc (Output_section::Output_section): Initialize new
14131 fields.
14132 (Output_segment::Output_segment): Likewise.
14133 (Output_segment::add_output_section): Add assertion that large
14134 data sections always go in large data segments. Force small data
14135 sections to the end of the list of data sections. Force small BSS
14136 sections to the start of the list of BSS sections. For large BSS
14137 sections to the end of the list of BSS sections.
14138 * symtab.h (class Symbol): Declare is_common_shndx.
14139 (Symbol::is_defined): Check Symbol::is_common_shndx.
14140 (Symbol::is_common): Likewise.
14141 (class Symbol_table): Define enum Commons_section_type. Update
14142 declarations. Add small_commons_ and large_commons_ fields.
14143 * symtab.cc (Symbol::is_common_shndx): New function.
14144 (Symbol_table::Symbol_table): Initialize new fields.
14145 (Symbol_table::add_from_object): Put small and large common
14146 symbols in the right list.
14147 (Symbol_table::sized_finalized_symbol): Check
14148 Symbol::is_common_shndx.
14149 (Symbol_table::sized_write_globals): Likewise.
14150 * common.cc (Symbol_table::do_allocate_commons): Allocate new
14151 common symbol lists. Don't call do_allocate_commons_list if the
14152 list is empty.
14153 (Symbol_table::do_allocate_commons_list): Remove is_tls
14154 parameter. Add comons_section_type parameter. Change all
14155 callers. Handle small and large common symbols.
14156 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
14157 Symbol::is_common_shndx.
14158 * resolve.cc (symbol_to_bits): Likewise.
14159 * target.h (Target::small_common_shndx): New function.
14160 (Target::small_common_section_flags): New function.
14161 (Target::large_common_shndx): New function.
14162 (Target::large_common_section_flags): New function.
14163 (Target::new_output_section): New function.
14164 (Target::Target_info): Add small_common_shndx, large_common_shndx,
14165 small_common_section_flags, and large_common_section_flags
14166 fields.
14167 (Target::do_new_output_section): New virtual function.
14168 * arm.cc (Target_arm::arm_info): Initialize new fields.
14169 * i386.cc (Target_i386::i386_info): Likewise.
14170 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
14171 Likewise.
14172 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
14173 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
14174 (Target_x86_64::do_new_output_section): New function.
14175 * configure.ac: Define conditional MCMODEL_MEDIUM.
14176 * testsuite/Makefile.am (check_PROGRAMS): Add large.
14177 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
14178 (large_LDFLAGS): Define.
14179 * testsuite/large.c: New file.
14180 * testsuite/testfile.cc (Target_test::test_target_info):
14181 Initialize new fields.
14182 * configure, testsuite/Makefile.in: Rebuild.
14183
bb04269c
DK
141842009-06-05 Doug Kwan <dougkwan@google.com>
14185
14186 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 14187 * Makefile.in: Regenerate.
bb04269c
DK
14188 * i386.cc (class Target_i386): Define new virtual method to
14189 override do_is_local_label_name in parent.
14190 * object.cc (Sized_relobj::do_count_local_symbols): Discard
14191 local symbols if --discard-locals or -X is given.
14192 * options.h (class General_options): Declare new options
14193 '--discard-locals' and '-X' for discarding locals.
14194 * target.h (class Target): Define new methods is_local_label_name.
14195 Declare new virtual method do_is_local_label_name.
14196 * target.cc: New file.
14197 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
14198 (check_SCRIPTS): Add discard_locals_test.sh.
14199 (check_DATA): Add discard_local_tests.syms.
14200 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
14201 (discard_local_tests.syms, discard_locals_test.o): New make rules.
14202 * testsuite/Makefile.in: Regenerate.
14203 * testsuite/discard_locals_test.c: New file.
14204 * testsuite/discard_locals_test.sh: Same.
14205
805bb01c
DK
142062009-06-05 Doug Kwan <dougkwan@google.com>
14207
14208 * object.cc (Sized_relobj::Sized_relobj): Initialize
14209 discarded_eh_frame_shndx_ to -1U.
14210 (Sized_relobj::do_layout): Record index of a discard .eh_frame
14211 section.
14212 (Sized_relobj::do_count_local_symbols): Skip local symbols in
14213 a discarded .eh_frame section.
14214 (Sized_relobj::do_finalize_local_symbols): Ditto.
14215 * object.h (class Sized_relobj): Declare new member
14216 discarded_eh_frame_shndx_.
14217 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
14218 (local_labels_test.o, local_labels_test): New rules.
14219 * testsuite/Makefile.in: Regenerate.
14220
1dcd334d
DK
142212009-06-04 Doug Kwan <dougkwan@google.com>
14222
14223 * layout.cc (Layout::section_name_mapping): Add mapping for
14224 special ARM sections.
14225
96d49306
DK
142262009-06-03 Doug Kwan <dougkwan@google.com>
14227
14228 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
14229 (utils::has_overflow): Same.
14230
dff16297
ILT
142312009-06-03 Ian Lance Taylor <iant@google.com>
14232
14233 * layout.cc (Layout::section_name_mapping): New array, replacing
14234 Layout::linkonce_mapping.
14235 (Layout::section_name_mapping_count): New variable, replacing
14236 Layout::linkonce_mapping_count.
14237 (Layout::linkonce_output_name): Remove.
14238 (Layout::output_section_name): Rewrite.
14239 * layout.h (class Layout): Rename Linkonce_mapping to
14240 Section_name_mapping, linkonce_mapping to section_name_mapping,
14241 linkonce_mapping_count to section_name_mapping_count. Don't
14242 declare linkonce_output_name.
14243
c121c671
DK
142442009-06-03 Doug Kwan <dougkwan@google.com>
14245
14246 * gold/arm.cc (namespace utils): New.
14247 (Target_arm::reloc_is_non_pic): Define new method.
14248 (class Arm_relocate_functions): New.
14249 (Target_arm::Relocate::relocate): Handle relocation types used by
14250 Android.
14251
07800fab
ILT
142522009-06-03 Ian Lance Taylor <iant@google.com>
14253
14254 * arm.cc (Target_arm::scan::global): Use || instead of |.
14255
c121c671
DK
142562009-06-02 Doug Kwan <dougkwan@google.com>
14257
14258 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
14259 issued_non_pic_error_.
14260 (class Target_arm::Scan): Declare new method check_non_pic.
14261 Define new method symbol_needs_plt_entry.
14262 Declare new data member issued_non_pic_error_.
14263 (class Target_arm::Relocate): Declare new method
14264 should_apply_static_reloc.
14265 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
14266 (Target_arm::Scan::check_non_pic): Define new method.
14267 (Target_arm::Scan::local): Handle a small subset of reloc types used
14268 by Android.
14269 (Target_arm::Scan::local): Same.
14270 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
14271
b19b0c6d
ILT
142722009-05-31 Mikolaj Zalewski <mikolajz@google.com>
14273
14274 * incremental.cc (Incremental_inputs::report_command_line): Filter
14275 out --incremental-* options.
14276
94cdfcff
DK
142772009-05-29 Doug Kwan <dougkwan@google.com>
14278
14279 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
14280 template class.
14281 (class Target_arm): Update comment.
14282 (Target_arm::Target_arm): Initialize new data members GOT_,
14283 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
14284 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
14285 and Target_arm::rel_dyn_section.
14286 Declare new_enum Target_arm::Got_type.
14287 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
14288 and DYNBSS_.
14289 Update commments for member do_dynsym_value.
14290 (Target_arm::got_size, Target_arm::plt_section,
14291 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
14292 new methods inside class defintion.
14293 (Target_arm::got_section): Define new method.
14294 (Target_arm::rel_dyn_section): Same.
14295 (Output_data_plt_arm): New template class.
14296 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
14297 (Output_data_plt_arm:do_adjust_output_section): Define new method.
14298 (Output_data_plt_arm::add_entry): Same.
14299 (Output_data_plt_arm::first_plt_entry): Define new
14300 static data member for PLT instruction template.
14301 (Output_data_plt_arm::plt_entry): Same.
14302 (Output_data_plt_arm::do_write): Define new method.
14303 (Target_arm::make_plt_entry): Same.
14304 (Target_arm::do_finalize_sections): Same.
14305 (Target_arm::do_dynsym_value): Same.
14306
4a657b0d
DK
143072009-05-28 Doug Kwan <dougkwan@google.com>
14308
14309 * Makefile.am (TARGETSOURCES): Add arm.cc.
14310 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
14311 * Makefile.in: Regenerate.
14312 * arm.cc: New file.
14313 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
14314
e7ae8c36
DK
143152009-05-26 Doug Kwan <dougkwan@google.com>
14316
14317 * options.cc (General_options::parse_exclude_libs). Fix a comment.
14318 (General_options::check_excluded_libs): Strip off directories in
14319 archive name before matching like GNU ld does.
14320 * testsuite/Makefile.am (MOSTLYCLEANFILES,
14321 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
14322 (exclude_libs_test_LDFLAGS): Add linker option
14323 -Wl,--exclude-libs,libexclude_libs_test_3
14324 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
14325 an explicit archive without using -l.
14326 (alt/libexclude_libs_test_3.a): New make rule.
14327 * testsuite/Makefile.in: Regenerate.
14328 * testsuite/exclude_libs_test.c : Declare lib3_default().
14329 (main): Call it.
14330 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
14331 * exclude_libs_test_3.c: New file.
14332
f12e7348
NC
143332009-05-26 Nick Clifton <nickc@redhat.com>
14334
14335 * po/id.po: New Indonesian translation.
14336 * po/gold.pot: Updated template file.
14337
4daadc0d
ST
143382009-05-22 Sriraman Tallam <tmsriram@google.com>
14339
e1df38aa 14340 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
14341 gc_comdat_test files. Add -Wl,--gc-sections to build
14342 gc_comdat_test.
14343 * testsuite/Makefile.in: Regenerate.
14344 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
14345
531813ad
ST
143462009-05-21 Sriraman Tallam <tmsriram@google.com>
14347
14348 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
14349 kept comdat section was garbage collected.
14350 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
14351 * testsuite/Makefile.in: Regenerate.
14352 * testsuite/gc_comdat_test.sh: New file.
14353 * testsuite/gc_comdat_test_1.cc: New file.
14354 * testsuite/gc_comdat_test_2.cc: New file.
14355
65514900
CC
143562009-05-19 Doug Kwan <dougkwan@google.com>
14357
14358 * archive.cc (Archive::Archive): Move constructor from archive.h
14359 to here. Initialize no_export_.
14360 (Archive::get_elf_object_for_member): Set no_export flag of object.
14361 * archive.h (Archive::Archive): Move constructor body to
14362 archive.cc.
14363 (Archive::no_export): New method.
14364 (Archive::no_export_): New field.
14365 * object.h (Object::Object): Initialize no_export_ to false.
14366 (Object::no_export, Object::set_no_export): New methods.
14367 (Object::no_export_): New field.
14368 * options.cc (General_options::parse_exclude_libs): New method.
14369 (General_options::check_excluded_libs) Same.
14370 * options.h (exclude_libs): New option.
14371 (General_options::check_excluded_libs): New method declaration.
14372 (General_options::excluded_libs_): New field.
14373 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
14374 default or protected visibility if an object has no-export flag set.
14375 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
14376 (check_SCRIPTS): Add exclude_libs_test.sh.
14377 (check_DATA): Add exclude_libs_test.syms.
14378 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
14379 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
14380 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
14381 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
14382 (exclude_libs_test.syms, libexclude_libs_test_1.a,
14383 libexclude_libs_test_2.a): New rules.
14384 * testsuite/Makefile.in: Regenerate.
14385 * testsuite/exclude_libs_test.c: New file.
14386 * testsuite/exclude_libs_test.sh: Ditto.
14387 * testsuite/exclude_libs_test_1.c: Ditto.
14388 * testsuite/exclude_libs_test_2.c: Ditto.
14389
1b77ea50
ILT
143902009-05-15 Ian Lance Taylor <iant@google.com>
14391
14392 * configure.ac: Check for declarations for cases where libiberty.h
14393 checks HAVE_DECL_xxx.
14394 * configure, config.in: Rebuild.
14395
072fe7ce
ILT
143962009-05-15 Mikolaj Zalewski <mikolajz@google.com>
14397
14398 * gold.h (Incremental_argument_list): Remove (invalid) forward
14399 declaration.
14400 * incremental.cc (Incremental_inputs::report_achive): New method.
14401 (Incremental_inputs::report_object): New method.
14402 (Incremental_inputs::report_script): New method.
14403 (Incremental_inputs::finalize_inputs): New method.
14404 (Incremental_inputs::finalize): Call finalize_inputs().
14405 (Incremental_inputs::sized_create_incremental_inputs_section_data):
14406 Create inputs entries.
14407 * incremental.h (Incremental_input_type): New enum.
14408 (Incremental_inputs::Incremental_input): Initialize new fields.
14409 (Incremental_inputs::report_inputs): New method.
14410 (Incremental_inputs::report_achive): New method.
14411 (Incremental_inputs::report_object): New method.
14412 (Incremental_inputs::report_script): New method.
14413 (Incremental_inputs::finalize_inputs): New method.
14414 (Incremental_inputs::Input_info): New struct.
14415 (Incremental_inputs::Input_info_map): New typedef.
14416 (Incremental_inputs::lock_): New field.
14417 (Incremental_inputs::Inputs_): New field.
14418 (Incremental_inputs::Inputs_map): New field.
14419 * main.cc (main): Call Incremental_input::report_inputs.
14420 * options.h (Input_argument_list): Typedef moved from
14421 Input_arguments.
14422 (Input_file_group::Files): Remove, use ::Input_argument_list.
14423 (Input_file_group::Input_argument_list): Remove, use
14424 ::Input_argument_list.
14425 * plugin.cc (Plugin_manager::add_input_file): Add error in
14426 incremental build.
14427 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
14428 functions.
14429 * script.cc (read_input_script): Call
14430 Incremental_input::report_script.
14431 * script.h (Script_info): New class.
14432
b0481b0b
ILT
144332009-04-27 Ian Lance Taylor <iant@google.com>
14434
14435 * x86_64.cc (do_adjust_output_section): Set entsize to
14436 plt_entry_size.
14437
b22a5a41 144382009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
14439
14440 * output.cc (Output_file::close): After short writes, continue
14441 writing from the correct offset in the buffer being written.
14442
40fde488
CD
144432009-04-23 Chris Demetriou <cgd@google.com>
14444
14445 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
14446 * configure: Regenerate.
14447 * config.in: Regenerate.
14448 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
14449 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
14450
3ce2c28e
ILT
144512009-04-21 Mikolaj Zalewski <mikolajz@google.com>
14452
14453 * incremental.cc (Incremental_inputs_header_data): Renamed from
14454 Incremental_input_header_data.
14455 (Incremental_inputs_header_data::data_size): New field.
14456 (Incremental_inputs_header_data::put_input_file_count): Renamed
14457 from input_file_count.
14458 (Incremental_inputs_header_data::put_command_line_offset): Renamed
14459 from command_line_offset.
14460 (Incremental_inputs_header_data::put_reserved): Renamed from
14461 put_reserved.
14462 (Incremental_inputs_entry_data): Renamed from
14463 Incremental_input_entry_data.
14464 (Incremental_inputs_entry_data::data_size): New field.
14465 (Incremental_inputs::report_command_line): New method.
14466 (Incremental_inputs::finalize): New method.
14467 (Incremental_inputs::create_incremental_inputs_data): New method.
14468 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
14469 * incremental.h: New file.
14470 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
703d02da 14471 (Layout::finalize): Create incremental inputs section in
3ce2c28e 14472 incremental builds.
703d02da 14473 (Layout::create_incremental_info_sections): New method.
3ce2c28e 14474 * layout.h (Layout::incremental_inputs): New method.
703d02da
AM
14475 (Layout::create_incremental_info_sections): New method.
14476 (Layout::incremental_inputs_): New field.
3ce2c28e
ILT
14477 * main.cc (main): Notify Incremental_input of the command line.
14478
e55bde5e
ILT
144792009-04-01 Ian Lance Taylor <iant@google.com>
14480 Mikolaj Zalewski <mikolajz@google.com>
14481
14482 * gold.h (reserve_unordered_map): Define, three versions, one for
14483 each version of Unordered_map.
14484 * layout.cc (Layout::Layout): Remove options parameter. Add
14485 number_of_input_files parameter. Don't initialize options_.
14486 Initialize number_of_input_files_ and resized_signatures_. Move
14487 sections_are_attached_.
14488 (Layout::layout_group): Reserve space for group_signatures_.
14489 (Layout::find_or_add_kept_section): Change name parameter to be a
14490 reference. Resize signatures_ map when it gets large enough.
14491 (Layout::layout_eh_frame): Use parameters->options() instead of
14492 this->options_.
14493 (Layout::make_output_section): Likewise.
14494 (Layout::attach_allocated_section_to_segment): Likewise.
14495 (Layout::finalize, Layout::create_executable_stack): Likewise.
14496 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
14497 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
14498 * layout.h (class Layout): Update declarations. Remove options_
14499 field. Add number_of_input_files_ and resized_signatures_
14500 fields. Move sections_are_attached_ field.
14501 * main.cc (main): Pass number of input files to Layout
14502 constructor. Don't pass options.
14503
154b857c
ILT
145042009-03-30 Ian Lance Taylor <iant@google.com>
14505
14506 * ffsll.c (ffsll): Correct implementation.
14507
2f35ab9b
ILT
145082009-03-27 Ian Lance Taylor <iant@google.com>
14509
fd03461a
ILT
14510 * ffsll.c: New file.
14511 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
14512 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
14513 * ftruncate.c (ftruncate): Declare before definition.
14514 * mremap.c (mremap): Likewise.
14515 * pread.c (pread): Likewise.
14516 * configure, Makefile.in, config.in: Rebuild.
14517
2f35ab9b
ILT
14518 * mremap.c: New file.
14519 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
14520 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
14521 (mremap): Declare if HAVE_MREMAP is not defined.
14522 * configure, Makefile.in, config.in: Rebuild.
14523
33aea2fd
CC
145242009-03-27 Cary Coutant <ccoutant@google.com>
14525
14526 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
14527 position independent.
14528 * sparc.cc (Target_sparc::check_non_pic): Likewise.
14529 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
14530
6d479619
CC
145312009-03-24 Cary Coutant <ccoutant@google.com>
14532
14533 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
14534 an executable.
14535 (needs_dynamic_reloc): Likewise.
14536
afc06bb8
ILT
145372009-03-24 Ian Lance Taylor <iant@google.com>
14538
14539 * yyscript.y (file_cmd): Recognize EXTERN.
14540 (extern_name_list, extern_name_list_body): New nonterminals.
14541 * script.cc (script_add_extern): Define.
14542 * script-c.h (script_add_extern): Declare.
14543
f6060a4d
ILT
145442009-03-24 Rafael Avila de Espindola <espindola@google.com>
14545
14546 * object.cc (is_elf_object): Define.
14547 * object.h (is_elf_object): Declare.
14548 * archive.cc (Archive::get_elf_object_for_member): Call
14549 is_elf_object.
33aea2fd 14550 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 14551
26736d8e
ILT
145522009-03-24 Elliott Hughes <enh@google.com>
14553
14554 * output.cc (Output_file::map_anonymous): Define.
14555 (Output_file::map): Use map_anonymous. If the regular mmap fails,
14556 try an anonymous one. Report the size if the mmap fails.
14557 * output.h (class Output_file): Declare map_anonymous.
14558
22fd9730
ILT
145592009-03-24 Ian Lance Taylor <iant@google.com>
14560
14561 * target-select.cc (instantiate_target): Don't acquire the lock if
14562 the instantiated_target_ field has already been set.
14563
cb010894
ILT
145642009-03-23 Ian Lance Taylor <iant@google.com>
14565
7f055c20
ILT
14566 * gold-threads.h (class Initialize_lock): Define.
14567 * gold-threads.cc (class Initialize_lock_once): Define.
14568 (initialize_lock_control): New static variable.
14569 (initialize_lock_pointer): New static variable.
14570 (initialize_lock_once): New static function.
14571 (Initialize_lock::Initialize_lock): Define.
14572 (Initialize_lock::initialize): Define.
14573 * target-select.h: Include "gold-threads.h".
14574 (class Target_selector): Add lock_ and initialize_lock_ fields.
14575 Don't define instantiate_target, just declare it.
14576 * target-select.cc (Target_selector::Target_selector): Initialize
14577 new fields.
14578 (Target_selector::instantiate_target): Define.
14579 * descriptors.h: Include "gold-threads.h".
14580 (class Descriptors): Add initialize_lock_ field.
14581 * descriptors.cc (Descriptors::Descriptors): Initialize new
14582 field.
14583 (Descriptors::open): Use initialize_lock_ field
14584 * errors.h (class Errors): Add initialize_lock_ field.
14585 * errors.cc (Errors::Errors): Initialize new field.
14586 (Errors::initialize_lock): Use initialize_lock_ field.
14587 * powerpc.cc (class Target_selector_powerpc): Remove
14588 instantiated_target_ field. In do_recognize call
14589 instantiate_target rather than do_instantiate_target. In
14590 do_instantiate_target just allocate a new target.
14591 * sparc.cc (class Target_selector_sparc): Likewise.
14592
36959681
ILT
14593 * freebsd.h: New file.
14594 * i386.cc: Include "freebsd.h".
14595 (Target_i386): Derive from Target_freebsd rather than
14596 Sized_target.
14597 (Target_selector_i386): Derive from Target_selector_freebsd rather
14598 than Target_selector.
14599 * x86_64.cc: Include "freebsd.h".
14600 (Target_x86_64): Derive from Target_freebsd rather than
14601 Sized_target.
14602 (Target_selector_x86_64): Derive from Target_selector_freebsd
14603 rather than Target_selector.
14604 * target.h (class Target): Add adjust_elf_header and
14605 do_adjust_elf_header.
14606 * output.cc (Output_file_header:: do_sized_write): Call target
14607 adjust_elf_header routine.
14608 * configure.tgt: Set targ_osabi.
14609 * configure.ac: Define GOLD_DEFAULT_OSABI.
14610 * parameters.cc (Parameters::default_target): Pass
14611 GOLD_DEFAULT_OSABI to select_target.
14612 * target-select.h (class Target_selector): Make instantiate_target
14613 protected rather than private.
14614 * Makefile.am (HFILES): Add freebsd.h.
14615 * configure, Makefile.in, config.in: Rebuild.
14616
cb010894
ILT
14617 * merge.cc (do_add_input_section): Correct pend value. Change
14618 message about last entry not being null terminated from error to
14619 warning.
14620
0e879927
ILT
146212009-03-20 Mikolaj Zalewski <mikolajz@google.com>
14622
14623 * incremental.cc: New file.
14624 * Makefile.am (CCFILES): Add incremental.cc.
14625 * Makefile.in: Rebuild.
14626
41105937
PP
146272009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
14628
14629 * layout.cc (Layout::output_section_name): Preserve names
14630 of '.note.' sections.
e1df38aa 14631
60439920
ILT
146322009-03-19 Ian Lance Taylor <iant@google.com>
14633
14634 * descriptors.cc (Descriptors::open): Check that the options are
14635 valid before using them.
14636
0d371ad3
ILT
146372009-03-18 Ian Lance Taylor <iant@google.com>
14638
14639 * script-sections.h: Include <list>.
14640 (class Script_sections): Change Sections_elements from std::vector
14641 to std::list. Typedef public Elements_iterator. Add
14642 orphan_section_placement_, data_segment_align_start_, and
14643 saw_data_segment_align_ fields. Remove data_segment_align_index_
14644 field.
14645 * script-sections.cc (class Orphan_section_placement): New class.
14646 (class Sections_element): Add virtual functions is_relro and
14647 orphan_section_init. Remove virtual function place_orphan_here.
14648 (class Output_section_definition): Add is_relro and
14649 orphan_section_init. Remove place_orphan_here.
14650 (class Orphan_output_section): Likewise.
14651 (Script_sections::Script_sections): Update for field changes.
14652 (Script_sections::data_segment_align): Set saw_data_segment_align_
14653 and data_segment_align_start_, not data_segment_align_index.
14654 (Script_sections::data_segment_relro_end): Check
14655 saw_data_segment_align_. Use data_segment_align_start_ rather
14656 than data_segment_align_index_.
14657 (Script_sections::place_orphan): Rewrite to use
14658 Orphan_section_placement.
14659
9201d894
ILT
146602009-03-17 Ian Lance Taylor <iant@google.com>
14661
9c5b8369
ILT
14662 * archive.cc (Archive::add_symbols): Check for a version attached
14663 to the symbol name in the archive map.
14664 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
14665 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
14666 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
14667 (ver_test_11.a): New target.
14668 * testsuite/Makefile.in: Rebuild.
14669
9201d894
ILT
14670 * configure.ac: Check for chsize and posix_fallocate. Replace
14671 ftruncate.
14672 * ftruncate.c: New file, from gnulib.
14673 * output.cc (posix_fallocate): Define dummy version if not
14674 HAVE_POSIX_FALLOCATE.
14675 (Output_file::map): Call posix_fallocate rather than lseek and
14676 write.
14677 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
14678 * configure, Makefile.in, config.in: Rebuild.
14679
ef4ab7a8 146802009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 14681
ef4ab7a8
PP
14682 * layout.h (Layout::create_note): Add section_name parameter.
14683 * layout.cc (Layout::create_note): Likewise.
14684 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 14685
8c500701
ILT
146862009-03-17 Ian Lance Taylor <iant@google.com>
14687
e85b18e1
ILT
14688 * descriptors.cc: Include "options.h".
14689 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
14690 (Descriptors::open): Always use O_CLOEXEC when opening a new
14691 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
14692 then set FD_CLOEXEC.
14693
9efe6174
ILT
14694 * sparc.cc (class Target_sparc): Add has_got_section.
14695 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
14696 make sure we have a GOT section.
14697
14698 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
14699 (Target_sparc::Scan::local): Likewise.
14700 (Target_sparc::Scan::global): Likewise.
14701 (Target_sparc::Relocate::relocate): Likewise.
14702 (Target_sparc::Relocate::relocate_tls): Likewise.
14703
8c500701
ILT
14704 * symtab.cc (Symbol_table::define_default_version): New function,
14705 broken out of add_from_object.
14706 (Symbol_table::add_from_object): Call define_default_version.
14707 (Symbol_table::define_special_symbol): Add resolve_oldsym
14708 parameter. Change all callers. If the version for a symbol comes
14709 from a version script, resolve it with the symbol with the same
14710 name with no version. Also add the symbol without a version if
14711 appropriate.
14712 (do_define_in_output_data): If resolving with oldsym, don't delete
14713 sym.
14714 (do_define_in_output_segment): Likewise.
14715 (do_define_as_constant): Likewise.
14716 * symtab.h (class Symbol_table): Update declarations.
14717
f1ed28fb
ILT
147182009-03-13 Ian Lance Taylor <iant@google.com>
14719
15f8229b
ILT
14720 * readsyms.cc (Read_symbols::incompatible_warning): New function.
14721 (Read_symbols::requeue): New function.
14722 (Read_symbols::do_read_symbols): If make_elf_object fails because
14723 the target type is not configured, and the file was searched for,
14724 issue a warning and retry with the next directory.
14725 (Add_symbols::run): If the file has an incompatible format, and
14726 it was searched for, requeue the Read_symbols task. On error,
14727 release the object.
14728 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
14729 dirindex parameter to constructor. Change all callers. Declare
14730 incompatible_warning and requeue.
14731 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
14732 input_argument_ and input_group_ fields. Add them to
14733 constructor. Change all callers.
14734 (class Read_script): Add dirindex_ field. Add it to constructor.
14735 Change all callers.
14736 * archive.cc (Archive::setup): Remove input_objects parameter.
14737 Change all callers.
14738 (Archive::get_file_and_offset): Likewise.
14739 (Archive::read_all_symbols): Likewise.
14740 (Archive::read_symbols): Likewise.
14741 (Archive::get_elf_object_for_member): Remove input_objects
14742 parameter. Add punconfigured parameter. Change all callers.
14743 (Archive::add_symbols): Change return type to bool. Check return
14744 value of include_member.
14745 (Archive::include_all_members): Likewise.
14746 (Archive::include_member): Change return type to bool. Return
14747 false if first included object has incompatible target. Set
14748 included_member_ field.
14749 (Add_archive_symbols::run): If add_symbols returns false, requeue
14750 Read_symbols task.
14751 * archive.h (class Archive): Add included_member_ field.
14752 Initialize it in constructor. Add input_file and searched_for
14753 methods. Update declarations.
14754 (class Add_archive_symbols): Add dirpath_, dirindex_, and
14755 input_argument_ fields. Add them to constructor. Change all
14756 callers.
14757 * script.cc: Include "target-select.h".
14758 (class Parser_closure): Add skip_on_incompatible_target_ and
14759 found_incompatible_target_ fields. Add
14760 skip_on_incompatible_target parameter to constructor. Change all
14761 callers. Add methods skip_on_incompatible_target,
14762 clear_skip_on_incompatible_target, found_incompatible_target, and
14763 set_found_incompatible_target.
14764 (read_input_script): Add dirindex parameter. Change all callers.
14765 If parser finds an incompatible target, requeue Read_symbols
14766 task.
14767 (script_set_symbol): Clear skip_on_incompatible_target in
14768 closure.
14769 (script_add_assertion, script_parse_option): Likewise.
14770 (script_start_sections, script_add_phdr): Likewise.
14771 (script_check_output_format): New function.
14772 * script.h (read_input_script): Update declaration.
14773 * script-c.h (script_check_output_format): Declare.
14774 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
14775 (ignore_cmd): Remove OUTPUT_FORMAT.
14776 * fileread.cc (Input_file::Input_file): Add explicit this.
14777 (Input_file::will_search_for): New function.
14778 (Input_file::open): Add pindex parameter. Change all callers.
14779 * fileread.h (class Input_file): Add input_file_argument method.
14780 Declare will_search_for. Update declarations.
14781 * object.cc (make_elf_object): Add punconfigured parameter.
14782 Change all callers.
14783 * object.h (class Object): Make input_file public. Add
14784 searched_for method.
14785 (make_elf_object): Update declaration.
14786 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
14787 restart search.
14788 * dirsearch.h (class Dirsearch): Update declaration.
14789 * options.h (class General_options): Add --warn-search-mismatch.
14790 * parameters.cc (Parameters::is_compatible_target): New function.
14791 * parameters.h (class Parameters): Declare is_compatible_target.
14792 * workqueue.cc (Workqueue::add_blocker): New function.
14793 * workqueue.h (class Workqueue): Declare add_blocker.
14794
f1ed28fb
ILT
14795 * fileread.cc (Input_file::open): Remove options parameter.
14796 Change all callers.
14797 (Input_file::open_binary): Likewise.
14798 * script.cc (read_input_script): Likewise.
14799 * readsyms.h (class Read_symbols): Remove options_ field. Remove
14800 options parameter from constructor. Change all callers.
14801 (class Read_script): Likewise.
14802 * fileread.h (class Input_file): Update declarations.
14803 * script.h (read_input_script): Update declaration.
14804
34dd024a
NC
148052009-03-10 Nick Clifton <nickc@redhat.com>
14806
14807 * po/es.po: New Spanish translation.
14808
6d71b17c
CC
148092009-03-06 Cary Coutant <ccoutant@google.com>
14810
14811 * options.cc (parse_short_option): Keep dash_z from registering itself.
14812
031cdbed
ILT
148132009-03-03 Ian Lance Taylor <iant@google.com>
14814
14815 PR 9918
14816 * target-reloc.h (relocate_section): Pass output_section to
14817 relocate.
14818 * i386.cc (Target_i386::should_apply_static_reloc): Add
14819 output_section parameter. Change all callers.
14820 (Target_i386::Relocate::relocate): Add output_section parameter.
14821 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
14822 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
14823 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
14824 * testsuite/two_file_shared.sh: New script.
14825 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
14826 (check_DATA): Add two_file_shared.dbg.
14827 (two_file_shared.dbg): New target.
14828 * testsuite/Makefile.in: Rebuild.
14829
15d5fa16
ILT
148302009-03-01 Ian Lance Taylor <iant@google.com>
14831
14832 * configure.ac: Check for byteswap.h.
14833 * configure: Rebuild.
14834 * config.in: Rebuild.
14835
8a4c0b0d
ILT
148362009-03-01 Mikolaj Zalewski <mikolajz@google.com>
14837
14838 * layout.cc (Layout::find_or_add_kept_section): New function.
14839 (Layout::add_comdat): Removed.
14840 * layout.h (struct Kept_section): Move out of class Layout.
14841 Remove trailing underscores from field names. Add group_sections
14842 field. Rename group_ field to is_group. Change all uses.
14843 (class Layout): Declare find_or_add_kept_section, not add_comdat.
14844 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
14845 comdat_groups_ field.
14846 (Sized_relobj::include_section_group): Use
14847 find_or_add_kept_section and Kept_section::group_sections.
14848 (Sized_relobj::include_linkonce_section): Likewise.
14849 * object.cc (class Sized_relobj): Don't define Comdat_group or
14850 Comdat_group_table. Remove find_comdat_group and
14851 add_comdat_group. Remove comdat_groups_ field.
14852 * plugin.cc (include_comdat_group): Use
14853 Layout::find_or_add_kept_section.
14854
b4ecf66b
ILT
148552009-02-28 Ian Lance Taylor <iant@google.com>
14856
14359ca0
ILT
14857 * README: --gc-sections and map files are now supported. Document
14858 some build requirements.
14859
b4ecf66b
ILT
14860 PR 6992
14861 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
14862 relocatable link set the value of the section symbol to zero.
14863 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
14864 relocatable link don't include the section address in the local
14865 symbol value.
14866
0602e05a
ILT
148672009-02-27 Ian Lance Taylor <iant@google.com>
14868
fd9d194f
ILT
14869 PR 6811
14870 * options.h (class Search_directory): Add is_system_directory.
14871 (class General_options): Declare is_in_system_directory.
14872 * options.cc (get_relative_sysroot): Make static.
14873 (get_default_sysroot): Make static.
14874 (General_optoins::is_in_system_directory): New function.
14875 * fileread.cc (Input_file::is_in_system_directory): New function.
14876 * fileread.h (class Input_file): Declare is_in_system_directory.
14877 * object.h (class Object): Add is_in_system_directory.
14878 (class Input_objects): Remove system_library_directory_ field.
14879 * object.cc (Input_objects::add_object): Don't set
14880 system_library_directory_.
14881 (input_objects::found_in_system_library_directory): Remove.
14882 * symtab.cc (Symbol_table::write_globals): Remove input_objects
14883 parameter. Change all callers.
14884 (Symbol_table::sized_write_globals): Likewise.
14885 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
14886 Call Object::is_in_system_directory.
14887 * symtab.h (class Symbol_table): Update declarations.
14888
61edd21f
ILT
14889 PR 5990
14890 * descriptors.h (Open_descriptor): Add is_on_stack field.
14891 * descriptors.cc (Descriptors::open): If the descriptor is on the
14892 top of the stack, remove it. Initialize is_on_stack field.
14893 (Descriptors::release): Only add pod to stack if it is not on the
14894 stack already.
14895 (Descriptors::close_some_descriptor): Clear stack_next and
14896 is_on_stack fields.
14897
e29e076a
ILT
14898 PR 7091
14899 * output.cc (Output_section::find_starting_output_address): Rename
14900 from starting_output_address; add PADDR parameter; change return
14901 type.
14902 * output.h (class Output_section): Declare
14903 find_starting_output_address instead of starting_output_address.
14904 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
14905 section symbol for which we can't find a merge section.
14906
0602e05a
ILT
14907 PR 9836
14908 * symtab.cc (Symbol_table::add_from_object): If the visibility is
14909 hidden or internal, force the symbol to be local.
14910 * resolve.cc (Symbol::override_visibility): Define.
14911 (Symbol::override_base): Use override_visibility.
14912 (Symbol_table::resolve): Likewise.
14913 (Symbol::override_base_with_special): Likewise.
14914 (Symbol_table::override_with_special): If the visibility is hidden
14915 or internal, force the symbol to be local.
14916 * symtab.h (class Symbol): Add set_visibility and
14917 override_visibility.
14918 * testsuite/ver_test_1.sh: New file.
14919 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
14920 (check_DATA): Add ver_test_1.syms.
14921 (ver_test_1.syms): New target.
14922 * testsuite/Makefile.in: Rebuild.
14923
401a9a73
CC
149242009-02-25 Cary Coutant <ccoutant@google.com>
14925
14926 * layout.cc (Layout::choose_output_section): Don't rename sections
14927 when using a linker script that has a SECTIONS clause.
14928 * Makefile.in: Regenerate.
14929
14930 * testsuite/Makefile.am (script_test_5.sh): New test case.
14931 * testsuite/Makefile.in: Regenerate.
14932 * testsuite/script_test_5.cc: New file.
14933 * testsuite/script_test_5.sh: New file.
14934 * testsuite/script_test_5.t: New file.
14935
f488e4b0
CC
149362009-02-13 Rafael Avila de Espindola <espindola@google.com>
14937
14938 * archive.cc (Archive::include_member): Update calls to add_symbols.
14939 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
14940 the Layout argument.
14941 * dynobj.h (do_add_symbols): Add the Layout argument.
14942 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
14943 Layout argument.
14944 * object.h (Object::add_symbols): Add the Layout argument.
14945 (Object::do_add_symbols): Add the Layout argument.
14946 (Sized_relobj::do_add_symbols): Add the Layout argument.
14947 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
14948 Unify the two versions.
14949 (Add_plugin_symbols): Remove.
14950 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
14951 (Sized_pluginobj::do_add_symbols): Unify the two versions.
14952 (Add_plugin_symbols): Remove.
14953 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
14954 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
14955 (Add_symbols::run): Make it work with Pulginobj.
14956
89dd1680
ILT
149572009-02-06 Ian Lance Taylor <iant@google.com>
14958
14959 * object.cc (Sized_relobj::do_layout): Make info message start
14960 with lower case letter.
14961
266d0a74
ILT
149622009-02-06 Mikolaj Zalewski <mikolajz@google.com>
14963
602b464e
ILT
14964 * binary.cc: Fix file comment.
14965
266d0a74
ILT
14966 * options.h (enum Incremental_disposition): Define.
14967 (class General_options): Add new options: --incremental,
14968 --incremental_changed, --incremental_unchanged,
14969 --incremental_unknown. Add incremental_disposition_ and
14970 implicit_incremental_ fields.
14971 (General_options::incremental_disposition): New function.
14972 (class Position_dependent_options): Add incremental_disposition
14973 option.
14974 (Position_dependent_options::copy_from_options): Set incremental
14975 dispositions.
14976 * options.cc (General_options::parse_incremental_changed): New
14977 function.
2e702c99
RM
14978 (General_options::parse_incremental_unchanged): New function.
14979 (General_options::parse_incremental_unknown): New function.
14980 (General_options::General_options): Initialize new fields
266d0a74 14981 incremental_disposition_ and implicit_incremental_.
2e702c99 14982 (General_options::finalize): Check for uasge of --incremental-*
266d0a74
ILT
14983 without --incremental.
14984
f073bbf7
CD
149852009-02-06 Chris Demetriou <cgd@google.com>
14986
14987 * gold.h (gold_undefined_symbol): Change to take only a Symbol
14988 pointer and to report location as the file name associated with
14989 the symbol.
14990 (gold_undefined_symbol_at_location): New function to replace the
14991 old gold_undefined_symbol functionality.
14992 * target-reloc.h (relocate_section): Update to use
14993 gold_undefined_symbol_at_location.
14994 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
14995 Call gold_undefined_symbol function rather than gold_error.
14996 * errors.h (Errors::undefined_symbol): Take location as a
14997 string, rather than calculating it from a relocation.
14998 * errors.cc (Errors::fatal): Print "fatal error:" before the
14999 formatted message.
15000 (Errors::error, Errors::error_at_location): Print "error: "
15001 before the formatted message.
15002 (Errors::undefined_symbol): Take location as a string, rather
15003 than calculating it from a relocation.
15004 (gold_undefined_symbol_at_location): New function akin to
15005 old gold_undefined_symbol, calculates location from relocation.
15006 (gold_undefined_symbol): Change to take only a Symbol pointer
15007 and to report location as the file name associated with the symbol.
15008 * testsuite/debug_msg.sh: Update for changed error messages.
15009 * testsuite/undef_symbol.sh: Likewise.
15010
8e94a90c
ILT
150112009-02-04 Duncan Sands <baldrick@free.fr>
15012
15013 PR 9812
15014 * reduced_debug_output.h
15015 (Output_reduced_debug_abbrev_section::failed): Use format for
15016 gold_warning.
15017 (Output_reduced_debug_info_section::faild): Likewise.
15018
88a0e15b
ILT
150192009-01-31 Mikolaj Zalewski <mikolajz@google.com>
15020
15021 * script.cc (Lazy_demangler): New class.
2e702c99 15022 (Version_script_info::get_symbol_version_helper): Demangle a
88a0e15b
ILT
15023 symbol only once.
15024
5efc7cd2
CC
150252009-01-29 Cary Coutant <ccoutant@google.com>
15026
15027 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
15028 to __tls_get_addr.
15029 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
15030
e0ebcf42
ILT
150312009-01-28 Ian Lance Taylor <iant@google.com>
15032
5efc7cd2 15033 * version.cc (version_string): Bump to 1.9.
75fe7426 15034
e0ebcf42
ILT
15035 * gold.h: Include <cstring> and <stdint.h>.
15036 * version.cc: Include <cstdio>.
15037 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
15038 warning.
15039 * reduced_debug_output.cc (insert_into_vector): Rename from
15040 Insert_into_vector; change all callers. Use Swap_unaligned to
15041 avoid aliasing issue; remove union since it is unnecessary.
15042
8e2813be 150432009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
15044
15045 * Makefile.am (CCFILES): Add gc.cc.
15046 (HFILES): Add gc.h.
15047 * Makefile.in: Regenerate.
15048 * gold.cc (Gc_runner): New class.
15049 (queue_initial_tasks): Call garbage collection related tasks
15050 when corresponding options are invoked.
15051 (queue_middle_gc_tasks): New function.
15052 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
15053 processed early before laying out sections during garbage collection.
15054 * gold.h (queue_middle_gc_tasks): New function.
15055 (is_prefix_of): Move from "layout.cc".
15056 * i386.cc (Target_i386::gc_process_relocs): New function.
15057 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
15058 * main.cc (main): Create object of class "Garbage_collection".
15059 * object.cc (Relobj::copy_symbols_data): New function.
15060 (Relobj::is_section_name_included): New function.
e1df38aa
NC
15061 (Sized_relobj::do_layout): Allow this function to be called twice
15062 during garbage collection and defer layout of section during the
6d03d481
ST
15063 first call.
15064 * object.h (Relobj::get_symbols_data): New function.
15065 (Relobj::is_section_name_included): New function.
15066 (Relobj::copy_symbols_data): New function.
15067 (Relobj::set_symbols_data): New function.
15068 (Relobj::get_relocs_data): New function.
15069 (Relobj::set_relocs_data): New function.
15070 (Relobj::is_output_section_offset_invalid): New pure virtual function.
15071 (Relobj::gc_process_relocs): New function.
15072 (Relobj::do_gc_process_relocs): New pure virtual function.
15073 (Relobj::sd_): New data member.
15074 (Sized_relobj::is_output_section_offset_invalid): New function.
15075 (Sized_relobj::do_gc_process_relocs): New function.
15076 * options.h (General_options::gc_sections): Modify to not be a no-op.
15077 (General_options::print_gc_sections): New option.
15078 * plugin.cc (Plugin_finish::run): Remove function call to
15079 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
15080 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
15081 * reloc.cc (Read_relocs::run): Add task to process relocs and
15082 determine unreferenced sections when doing garbage collection.
15083 (Gc_process_relocs): New class.
15084 (Sized_relobj::do_gc_process_relocs): New function.
15085 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
15086 sections that are garbage collected.
15087 * reloc.h (Gc_process_relocs): New class.
15088 * sparc.cc (Target_sparc::gc_process_relocs): New function.
15089 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
15090 symbols whose corresponding sections are garbage collected.
15091 (Symbol_table::Symbol_table): Add new parameter for the garbage
15092 collection object.
15093 (Symbol_table::gc_mark_undef_symbols): New function.
15094 (Symbol_table::gc_mark_symbol_for_shlib): New function.
15095 (Symbol_table::gc_mark_dyn_syms): New function.
15096 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
15097 as garbage.
15098 (Symbol_table::add_from_object): Likewise.
15099 (Symbol_table::add_from_relobj): When building shared objects, do not
15100 treat externally visible symbols as garbage.
15101 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
15102 table information for static and relocatable links.
15103 * symtab.h (Symbol_table::set_gc): New function.
15104 (Symbol_table::gc): New function.
15105 (Symbol_table::gc_mark_undef_symbols): New function.
15106 (Symbol_table::gc_mark_symbol_for_shlib): New function.
15107 (Symbol_table::gc_mark_dyn_syms): New function.
15108 (Symbol_table::gc_): New data member.
e1df38aa 15109 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
15110 function.
15111 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
15112 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
15113
3b293544
CF
151142009-01-20 Chris Faylor <me.sourceware@sourceware.org>
15115
15116 * options.h (General_options::gc_sections): Define as a no-op for now.
15117 (General_options::no_keep_memory): Ditto.
15118 (General_options::Bshareable): Define.
15119 * options.cc (General_options::finalize): Honor -Bshareable.
15120
83d22aa8
AS
151212009-01-20 Andreas Schwab <schwab@suse.de>
15122
15123 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
15124 read the value in the contents, since we don't use it. Use the
15125 template endianness when writing.
15126 (Relocate::relocate): Use it for R_PPC_REL16_HA.
15127
cd536b21
AS
151282009-01-19 Andreas Schwab <schwab@suse.de>
15129
15130 * configure.tgt (powerpc64-*): Fix targ_obj.
15131
99e9a495
ILT
151322009-01-15 Ian Lance Taylor <iant@google.com>
15133
15134 * object.cc (Sized_relobj::write_local_symbols): Don't write out
15135 local symbols when stripping all symbols.
15136
bbbfea06
CC
151372009-01-14 Cary Coutant <ccoutant@google.com>
15138
99e9a495 15139 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 15140
0f7c0701
CC
151412009-01-14 Cary Coutant <ccoutant@google.com>
15142
15143 * archive.cc (Archive::get_elf_object_for_member): Remove call
15144 to File_read::claim_for_plugin.
15145 * descriptors.cc (Descriptors::open): Remove reference to
15146 is_claimed.
15147 (Descriptors::claim_for_plugin): Remove.
15148 * descriptors.h (Descriptors::claim_for_plugin): Remove.
15149 (Descriptors::is_claimed): Remove.
15150 (claim_descriptor_for_plugin): Remove.
15151 * fileread.cc (File_read::claim_for_plugin): Remove.
15152 * fileread.h (File_read::claim_for_plugin): Remove.
15153 (File_read::descriptor): Reopen descriptor if necessary.
15154 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
15155 (Plugin_manager::all_symbols_read): Add task parameter. Change
15156 all callers.
15157 (Plugin_manager::get_input_file): New function.
15158 (Plugin_manager::release_input_file): New function.
15159 (Pluginobj::Pluginobj): Add filesize parameter and initialize
15160 corresponding data member.
15161 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
15162 and pass to base constructor. Change all callers.
15163 (get_input_file, release_input_file): New functions.
15164 (make_sized_plugin_object): Add filesize parameter. Change all callers.
15165 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
15166 (Plugin_manager::all_symbols_read): Add task parameter.
15167 (Plugin_manager::get_input_file): New function.
15168 (Plugin_manager::release_input_file): New function.
15169 (Plugin_manager::task_): New data member.
15170 (Pluginobj::Pluginobj): Add filesize parameter.
15171 (Pluginobj::filename): New function.
15172 (Pluginobj::descriptor): New function.
15173 (Pluginobj::filesize): New function.
15174 (Pluginobj::filesize_): New data member.
15175 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
15176 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
15177 File_read::claim_for_plugin; use Object::unlock to unlock the file.
15178
15179 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
15180 with archive libraries.
15181 * testsuite/Makefile.in: Regenerate.
15182 * testsuite/plugin_test.c (struct sym_info): New type.
15183 (get_input_file, release_input_file): New static variables.
15184 (onload): Capture new transfer vector entries.
15185 (claim_file_hook): Stop reading at end of file according to filesize.
15186 Factor out parsing of readelf output into separate function.
15187 (all_symbols_read_hook): Exercise get_input_file and release_input_file
15188 APIs and get the source file name from the symbol table. Convert
15189 source file name to corresponding object file name. Print info
15190 message when adding new input files.
15191 (parse_readelf_line): New function.
15192 * testsuite/plugin_test_1.sh: Add checks for new info messages.
15193 * testsuite/plugin_test_2.sh: Likewise.
15194 * testsuite/plugin_test_3.sh: Likewise.
15195 * testsuite/plugin_test_4.sh: New test case.
15196
62a6d109
ILT
151972009-01-07 Ian Lance Taylor <iant@google.com>
15198
15199 * version.cc (version_string): Bump to 1.8.
15200
483620e8
CC
152012008-12-23 Cary Coutant <ccoutant@google.com>
15202
15203 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
15204 * plugin.cc (Plugin_manager::finish): Rename as
15205 layout_deferred_objects. Move cleanup to separate function.
15206 (Plugin_manager::cleanup): New function.
15207 (Plugin_finish::run): Call layout_deferred_objects and cleanup
15208 separately.
15209 * plugin.h (Plugin_manager::finish): Rename as
15210 layout_deferred_objects.
15211 (Plugin_manager::cleanup): New function.
15212 (Plugin_manager::cleanup_done): New field.
15213
d66a9eb3
CC
152142008-12-23 Cary Coutant <ccoutant@google.com>
15215
15216 * plugin.cc (is_visible_from_outside): New function.
15217 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
15218 so we don't return "IR only" status for exported symbols or -r links.
15219
15220 * testsuite/Makefile.am (plugin_test_3): New test case.
15221 * testsuite/Makefile.in: Regenerate.
15222 * testsuite/plugin_test_3.sh: New file.
15223
5995b570
CC
152242008-12-22 Cary Coutant <ccoutant@google.com>
15225
15226 * object.cc (Sized_relobj::layout_section): New function.
15227 (Sized_relobj::do_layout): Defer layout of input sections until after
15228 plugin has provided replacement files.
15229 (Sized_relobj::do_layout_deferred_sections): New function.
15230 * object.h (Relobj::set_section_offset): Remove virtual keyword.
15231 (Relobj::layout_deferred_sections): New function.
15232 (Relobj::do_layout_deferred_sections): New function.
15233 (Sized_relobj::do_layout_deferred_sections): New function.
15234 (Sized_relobj::layout_section): New function.
15235 (Sized_relobj::Deferred_layout): New structure.
15236 (Sized_relobj::deferred_layout_): New field.
15237 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
15238 Change all callers. Layout deferred sections.
15239 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
15240 references.
15241 (Plugin_hook::run): Move code from do_plugin_hook inline.
15242 (Plugin_hook::do_plugin_hook): Remove.
15243 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
15244 (Plugin_manager::finish): Renamed, was cleanup.
15245 (Plugin_manager::should_defer_layout): New function.
15246 (Plugin_manager::add_deferred_layout_object): New function.
15247 (Plugin_manager::Deferred_layout_list): New type.
15248 (Plugin_manager::deferred_layout_objects_): New field.
15249 (Plugin_hook::do_plugin_hook): Remove.
15250
ee769c88
ILT
152512008-12-17 Ian Lance Taylor <iant@google.com>
15252
15253 * options.h (class General_options): Add --no case for
15254 --export-dynamic.
15255
abc8dcba
CC
152562008-12-16 Cary Coutant <ccoutant@google.com>
15257
15258 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
15259 vector.
15260 (Plugin_manager::claim_file): Create plugin object even if
15261 plugin did not call the add_symbols callback.
15262 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
15263 asking for more symbols than were added.
15264 * testsuite/Makefile.am (plugin_test_1): Add test case with
15265 no global symbols.
15266 (empty.syms): New target.
15267 * testsuite/Makefile.in: Regenerate.
15268 * testsuite/plugin_test.c (claim_file_hook): Add new debug
15269 message. Don't call add_symbols if no globals.
15270 (all_symbols_read_hook): Don't provide replacement for empty
15271 claimed file.
15272
b0074644
ILT
152732008-12-12 Ian Lance Taylor <iant@google.com>
15274
68943102
ILT
15275 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
15276 r_type == 0 for a local symbol with r_sym == 0.
15277 (scan_relocatable_relocs): Pass r_sym to
15278 local_non_section_strategy.
15279 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
15280 r_sym parameter.
15281
b0074644
ILT
15282 * configure.ac: Update test for TLS descriptors: they are
15283 supported as of glibc 2.9.
15284 * configure: Rebuild.
15285
c2508178
ILT
152862008-12-11 Ian Lance Taylor <iant@google.com>
15287
15288 PR 7091
15289 * target-reloc.h (Default_scan_relocatable_relocs): For each
15290 function, map r_type == 0 to RELOC_DISCARD.
15291
2756a258
CC
152922008-12-10 Cary Coutant <ccoutant@google.com>
15293
15294 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
15295 object to override a kept COMDAT group from a plugin object.
15296
bb6f53d3
ILT
152972008-12-09 Ian Lance Taylor <iant@google.com>
15298
fbc558e1
ILT
15299 PR 7088
15300 * yyscript.y (file_cmd): Handle INPUT.
15301
bb6f53d3
ILT
15302 * testsuite/initpri1.c: Change all declarations to be full
15303 prototypes by adding void, to avoid compiler warnings.
15304
4674ecfc
CC
153052008-12-05 Rafael Avila de Espindola <espindola@google.com>
15306
15307 * options.cc (General_options::parse_plugin_opt): New.
15308 (General_options::add_plugin): The argument now is just the filename.
15309 (General_options::add_plugin_option): New.
15310 * options.h (plugin_opt): New.
15311 (add_plugin): Change argument name.
15312 (add_plugin_option): New.
15313 * plugin.cc (Plugin::load): Don't parse the plugin option.
15314 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
15315 (Plugin::add_option): New.
15316 (Plugin::args_): Change type.
15317 (Plugin::filename_): New.
15318 (Plugin_manager::add_plugin_option): New.
15319 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
15320 * testsuite/Makefile.in: Regenerate.
15321
fd06b4aa
CC
153222008-12-05 Cary Coutant <ccoutant@google.com>
15323
15324 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
15325 Handle --strip-lto-sections option.
15326 * options.h (strip_lto_sections): New option.
15327
6c52134c
CC
153282008-12-01 Cary Coutant <ccoutant@google.com>
15329
15330 * plugin.cc (ld_plugin_message): Change format parameter to const.
15331 Fix mismatch between new[] and delete.
15332
a45248e0
CC
153332008-11-14 Cary Coutant <ccoutant@google.com>
15334
15335 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
15336 instead of -1U.
15337
c82fbeee
CS
153382008-11-05 Craig Silverstein <csilvers@google.com>
15339
15340 * options.cc (General_options::parse_dynamic_list): New function.
15341 * options.h (General_options): New flags dynamic_list,
15342 dynamic_list_data, dynamic_list_cpp_new, and
15343 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
15344 (General_options::in_dynamic_list): New function.
15345 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
15346 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
15347 (Lex::can_continue_name): Likewise.
15348 (yylex): Likewise.
15349 (read_script_file): New parameter script_options.
15350 (read_dynamic_list): New function.
15351 (Script_options::define_dynamic_list): New function.
15352 (dynamic_list_keyword_parsecodes): New variable.
15353 (dynamic_list_keywords): New variable.
15354 * script.h (Script_options::define_dynamic_list): New function
15355 prototype.
15356 (read_dynamic_list): New function prototype.
15357 * symtab.cc (strprefix): New macro.
15358 (Symbol::should_add_dynsym_entry): Support dynamic_list,
15359 dynamic_list_data, dynamic_list_cpp_new, and
15360 dynamic_list_cpp_typeinfo.
15361 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
15362 (dynamic_list_expr): New rule.
15363 (dynamic_list_nodes): Likewise.
15364 (dynamic_list_node): Likewise.
15365 * testsuite/Makefile.am (dynamic_list): New test.
15366 * testsuite/Makefile.in: Regenerated.
15367 * testsuite/dynamic_list.t: New file.
15368 * testsuite/dynamic_list.sh: New file.
15369
e0bb29a5
CS
153702008-11-05 Craig Silverstein <csilvers@google.com>
15371
15372 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
15373 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
15374 (t11_last): Likewise.
15375 * testsuite/ver_test_6.c (main): Likewise.
15376
4e1e25e0
CC
153772008-10-07 Cary Coutant <ccoutant@google.com>
15378
15379 * options.c (General_options::finalize): Add check for -static and
15380 -shared.
15381 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
15382 is not empty.
15383
92f03fcb
CC
153842008-10-02 Cary Coutant <ccoutant@google.com>
15385
15386 * plugin.cc (make_sized_plugin_object): Fix conditional
15387 compilation to work when not all targets are enabled.
15388
fbd8a257
CC
153892008-09-29 Cary Coutant <ccoutant@google.com>
15390
15391 * archive.cc (Archive::get_file_and_offset): Use filename instead
15392 of name to get library path.
15393 (Archive::include_member): Unlock external member of a thin archive.
15394
15395 * testsuite/Makefile.am (TEST_AR): New variable.
15396 (thin_archive_test_1): New test.
15397 (thin_archive_test_2): New test.
81636b3f
CC
15398 * testsuite/Makefile.in: Regenerate.
15399 * testsuite/thin_archive_main.cc: New file.
15400 * testsuite/thin_archive_test_1.cc: New file.
15401 * testsuite/thin_archive_test_2.cc: New file.
15402 * testsuite/thin_archive_test_3.cc: New file.
15403 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 15404
eff45813
CC
154052008-09-29 Cary Coutant <ccoutant@google.com>
15406
15407 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
15408 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
15409 instead of -1U.
15410 (Sized_relobj::do_finalize_local_symbols): Likewise.
15411 (Sized_relobj::map_to_kept_section): Likewise.
15412 * object.h (Sized_relobj::invalid_address): New constant.
15413 (Sized_relobj::do_output_section_offset): Check for invalid_address
15414 and return -1ULL.
15415 * output.cc (Output_reloc::local_section_offset): Use constant
15416 invalid_address instead of -1U.
15417 (Output_reloc::get_address): Likewise.
15418 (Output_section::output_address): Change -1U to -1ULL.
15419 * output.h (Output_reloc::invalid_address): New constant.
15420 * reloc.cc (Sized_relobj::write_sections): Use constant
15421 invalid_address instead of -1U.
15422 (Sized_relobj::relocate_sections): Likewise.
15423 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
15424 values for merge sections.
15425 * target-reloc.h (relocate_for_relocatable): Use constant
15426 invalid_address instead of -1U.
15427
89fc3421
CC
154282008-09-19 Cary Coutant <ccoutant@google.com>
15429
15430 Add plugin functionality for link-time optimization (LTO).
15431 * configure.ac (plugins): Add --enable-plugins option.
15432 * configure: Regenerate.
15433 * config.in: Regenerate.
15434 * Makefile.am (LIBDL): New variable.
15435 (CCFILES): Add plugin.cc.
15436 (HFILES): Add plugin.h.
15437 (ldadd_var): Add LIBDL.
15438 * Makefile.in: Regenerate.
15439
15440 * archive.cc: Include "plugin.h".
15441 (Archive::setup): Don't preread archive symbols when using a plugin.
15442 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
15443 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
15444 files.
15445 (Archive::include_member): Add symbols from plugin objects.
15446 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
15447 * descriptors.cc (Descriptors::open): Check for file descriptors
15448 abandoned by plugins.
15449 (Descriptors::claim_for_plugin): New function.
15450 * descriptors.h (Descriptors::claim_for_plugin): New function.
15451 (Open_descriptor::is_claimed): New field.
15452 (claim_descriptor_for_plugin): New function.
15453 * fileread.cc (File_read::claim_for_plugin): New function.
15454 * fileread.h (File_read::claim_for_plugin): New function.
15455 (File_read::descriptor): New function.
15456 * gold.cc: Include "plugin.h".
15457 (queue_initial_tasks): Add task to call plugin hooks for generating
15458 new object files.
15459 * main.cc: Include "plugin.h".
15460 (main): Load plugin libraries.
15461 * object.h (Pluginobj): Declare.
15462 (Object::pluginobj): New function.
15463 (Object::do_pluginobj): New function.
15464 (Object::set_target): New function.
15465 * options.cc: Include "plugin.h".
15466 (General_options::parse_plugin): New function.
15467 (General_options::General_options): Initialize plugins_ field.
15468 (General_options::add_plugin): New function.
15469 * options.h (Plugin_manager): Declare.
15470 (General_options): Add --plugin option.
15471 (General_options::has_plugins): New function.
15472 (General_options::plugins): New function.
15473 (General_options::add_plugin): New function.
15474 (General_options::plugins_): New field.
15475 * plugin.cc: New file.
15476 * plugin.h: New file.
15477 * readsyms.cc: Include "plugin.h".
15478 (Read_symbols::do_read_symbols): Check for archive before checking
15479 for ELF file. Call plugin hooks to claim files.
15480 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
15481 from a real object file; force override when processing replacement
15482 files.
15483 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
15484 (Symbol::init_base_object): Likewise.
15485 (Symbol::init_base_output_data): Likewise.
15486 (Symbol::init_base_output_segment): Likewise.
15487 (Symbol::init_base_constant): Likewise.
15488 (Symbol::init_base_undefined): Likewise.
15489 (Symbol::output_section): Assert that object is not a plugin.
15490 (Symbol_table::add_from_pluginobj): New function.
15491 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
15492 undefined.
15493 (Symbol_table::sized_write_globals): Likewise.
15494 (Symbol_table::add_from_pluginobj): Instantiate template.
15495 * symtab.h (Sized_pluginobj): Declare.
15496 (Symbol::in_real_elf): New function.
15497 (Symbol::set_in_real_elf): New function.
15498 (Symbol::in_real_elf_): New field.
15499 (Symbol_table::add_from_pluginobj): New function.
15500
15501 * testsuite/Makefile.am (AM_CFLAGS): New variable.
15502 (LIBDL): New variable.
15503 (LDADD): Add LIBDL.
15504 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
15505 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
15506 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
15507 (MOSTLYCLEANFILES): Likewise.
15508 * testsuite/Makefile.in: Regenerate.
15509 * testsuite/plugin_test.c: New file.
15510 * testsuite/plugin_test_1.sh: New file.
15511 * testsuite/plugin_test_2.sh: New file.
15512
de31bda5
ILT
155132008-09-16 Ian Lance Taylor <iant@google.com>
15514
9c2d0ef9
ILT
15515 * target-reloc.h (relocate_section): Check whether a symbol is
15516 defined by the ABI before reporting an undefined symbol error.
15517 * target.h (Target::is_defined_by_abi): Make parameter const.
15518 (Target::do_is_defined_by_abi): Likewise.
15519 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
15520 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
15521 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
15522 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
15523 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
15524 * testsuite/Makefile.in: Rebuild.
15525
de31bda5
ILT
15526 * fileread.cc (make_view): Add casts to avoid warning.
15527
9fa33bee
AO
155282008-09-16 Alexandre Oliva <aoliva@redhat.com>
15529
15530 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
15531 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
15532
183fd0e3
AO
155332008-09-16 Alexandre Oliva <aoliva@redhat.com>
15534
15535 * options.h (General_options::output_is_executable): New.
15536 (General_options::output_is_pie): New.
15537 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
15538 for shared libraries.
15539 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
15540
7be8330a
CD
155412008-09-11 Chris Demetriou <cgd@google.com>
15542
15543 * options.h (origin): New -z option.
15544 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
15545 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
15546 in DT_FLAGS_1.
15547
a9caad02
CC
155482008-09-05 Cary Coutant <ccoutant@google.com>
15549
15550 * fileread.cc (File_read::make_view): Add check for attempt to map
15551 beyond end of file.
15552
ae6dce4d
CC
155532008-09-05 Cary Coutant <ccoutant@google.com>
15554
15555 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
15556 explicit instantiations.
15557
d7ab2a47
KVH
155582008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
15559
15560 PR gold/6858
15561 * options.cc (General_options::finalize): Allow undefined symbols
15562 in shlibs if linking -shared.
15563
15564 PR gold/6859
15565 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
15566 symbols as not needing a dynsym entry.
15567
1e52a9c1
CS
155682008-08-20 Craig Silverstein <csilvers@google.com>
15569
15570 * fileread.cc (File_read::open): Do not lock the file unless it
15571 was successfully opened.
15572
d85c80a3
CC
155732008-08-14 Cary Coutant <ccoutant@google.com>
15574
15575 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
15576 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
15577 * testsuite/tls_test.cc (struct int128): 128-bit struct
15578 for testing TLS relocs with non-zero addend.
15579 (v12): New TLS variable.
15580 (t12): New test.
15581 (t_last): Add check for v12.
15582 * testsuite/tls_test.h (t12): New function.
15583 * testsuite/tls_test_main.cc (thread_routine): Call new test.
15584
2d924fd9
ILT
155852008-08-13 Ian Lance Taylor <iant@google.com>
15586
15587 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
15588 set tls_segment_ or relro_segment_.
15589 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
15590 when appropriate.
15591 * output.h (Output_section::clear_is_relro): New function.
15592 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
15593 sections specially even when output_data_ is empty.
15594 (Output_segment::maximum_alignment): When first section is relro,
15595 only force alignment for PT_LOAD segments.
15596 * script.cc (script_data_segment_align): New function.
15597 (script_data_segment_relro_end): New function.
15598 * script-c.h (script_data_segment_align): Declare.
15599 (script_data_segment_relro_end): Declare.
15600 * script-sections.h (class Script_sections): Declare
15601 data_segment_align and data_segment_relro_end. Add fields
15602 segment_align_index_ and saw_relro_end_.
15603 * script-sections.cc (class Sections_element): Add set_is_relro
15604 virtual function. Add new bool* parameter to place_orphan_here.
15605 Add get_output_section virtual function.
15606 (class Output_section_definition): Add set_is_relro. Add new
15607 bool* parameter to place_orphan_here. Add get_output_section.
15608 Add is_relro_ field.
15609 (Output_section_definition::Output_section_definition): Initialize
15610 evaluated_address_, evaluated_load_address, evaluated_addralign_,
15611 and is_relro_ fields.
15612 (Output_section_definition::place_orphan_here): Add is_relro
15613 parameter.
15614 (Output_section_definition::set_section_addresses): Set relro for
15615 output section.
15616 (Output_section_definition::alternate_constraint): Likewise.
15617 (class Orphan_output_section): Add new bool* parameter to
15618 place_orphan_here. Add get_output_section.
15619 (Orphan_output_section::place_orphan_here): Add is_relro
15620 parameter.
15621 (Script_sections::Script_sections): Initialize
15622 data_segment_align_index_ and saw_relro_end_.
15623 (Script_sections::data_segment_align): New function.
15624 (Script_sections::data_segment_relro_end): New function.
15625 (Script_sections::place_orphan): Set or clear is_relro.
15626 (Script_sections::set_section_addresses): Force alignment of first
15627 TLS section.
15628 * yyscript.y (exp): Call script_data_segment_align and
15629 script_data_segment_relro_end.
15630 * testsuite/relro_script_test.t: New file.
15631 * testsuite/relro_test.cc (using_script): Declare.
15632 (t1, t2): Test using_script.
15633 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
15634 (relro_script_test_SOURCES): Define.
15635 (relro_script_test_DEPENDENCIES): Define.
15636 (relro_script_test_LDFLAGS): Define.
15637 (relro_script_test_LDADD): Define.
15638 (relro_script_test.so): New target.
15639 * testsuite/Makefile.in: Rebuild.
15640
f827c9a9
CC
156412008-08-06 Cary Coutant <ccoutant@google.com>
15642
15643 * archive.cc (Archive::total_archives, Archive::total_members)
15644 (Archive::total_members_loaded): New variables.
15645 (Archive::setup): Add parameter. Add option to preread
15646 archive symbols.
15647 (Archive::read_armap): Add counter.
15648 (Archive::get_file_and_offset): New function.
15649 (Archive::get_elf_object_for_member): New function.
15650 (Archive::read_all_symbols): New function.
15651 (Archive::read_symbols): New function.
15652 (Archive::add_symbols): Add counters.
15653 (Archive::include_all_members): Use armap to find members if it's
15654 already built.
15655 (Archive::include_member): Skip reading symbols if already read.
15656 Factored code into Archive::get_file_and_offset and
15657 Archive::get_elf_object_for_member. Changed call to
15658 Mapfile::report_include_archive_member.
15659 (Archive::print_stats): New function.
15660 * archive.h: Declare Object and Read_symbols_data classes.
15661 (Archive::Archive): Add initializers for new members.
15662 (Archive::setup): Add parameter.
15663 (Archive::print_stats): New function.
15664 (Archive::total_archives, Archive::total_members)
15665 (Archive::total_members_loaded): New variables.
15666 (Archive::get_file_and_offset): New function.
15667 (Archive::get_elf_object_for_member): New function.
15668 (Archive::read_all_symbols): New function.
15669 (Archive::read_symbols): New function.
15670 (Archive::Archive_member): New class.
15671 (Archive::members_): New member.
15672 (Archive::num_members_): New member.
15673 * main.cc: Include archive.h.
15674 (main): Call Archive::print_stats.
15675 * mapfile.cc (Mapfile::report_include_archive_member): Delete
15676 archive parameter; member_name is now the fully-decorated name.
15677 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
15678 * options.h: (General_options): Add --preread-archive-symbols option.
15679 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
15680 Archive::setup.
15681
de4c45bd
ILT
156822008-08-04 Ian Lance Taylor <iant@google.com>
15683
15684 * symtab.h (Symbol::use_plt_offset): New function.
15685 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
15686 * powerpc.cc (Relocate::relocate): Likewise.
15687 * sparc.cc (Relocate::relocate): Likewise.
15688 * x86_64.cc (Relocate::relocate): Likewise.
15689 * testsuite/weak_plt.sh: New test.
15690 * testsuite/weak_plt_main.cc: New test.
15691 * testsuite/weak_plt_shared.cc: New test.
15692 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
15693 (check_PROGRAMS): Add weak_plt.
15694 (check_DATA): Add weak_plt_shared.so.
15695 (weak_plt_main_pic.o, weak_plt): New targets.
15696 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
15697 * testsuite/Makefile.in: Rebuild.
15698
15699 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
15700 gcctestdir/ld.
15701 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
15702 * testsuite/Makefile.in: Rebuild.
15703
323ee3f4
AM
157042008-08-04 Alan Modra <amodra@bigpond.net.au>
15705
15706 * Makefile.am (POTFILES.in): Set LC_ALL=C.
15707 * Makefile.in: Regenerate.
15708 * po/POTFILES.in: Regenerate.
15709
7c07ecec
ILT
157102008-07-29 Ian Lance Taylor <iant@google.com>
15711
15712 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
15713 symbols before other symbols.
15714 * testsuite/script_test_2.cc (test_addr): Declare.
15715 (test_addr_alias): Declare.
15716 (main): Check that test_addr and test_addr_alias have the right
cd536b21 15717 values.
7c07ecec
ILT
15718 * testsuite/script_test_2.t: Define test_addr_alias and
15719 test_addr.
15720
5778530e
ILT
157212008-07-24 Ian Lance Taylor <iant@google.com>
15722
2a00e4fb
ILT
15723 PR 5990
15724 * descriptors.cc: New file.
15725 * descriptors.h: New file.
15726 * gold-threads.h (class Hold_optional_lock): New class.
15727 * fileread.cc: Include "descriptors.h".
15728 (File_read::~File_read): Release descriptor rather than closing
15729 it.
15730 (File_read::open) [file]: Call open_descriptor rather than open.
15731 Set is_descriptor_opened_.
15732 (File_read::open) [memory]: Assert that descriptor is not open.
15733 (File_read::reopen_descriptor): New function.
15734 (File_read::release): Release descriptor.
15735 (File_read::do_read): Make non-const. Reopen descriptor.
15736 (File_read::read): Make non-const.
15737 (File_read::make_view): Reopen descriptor.
15738 (File_read::do_readv): Likewise.
15739 * fileread.h (class File_read): Add is_descriptor_opened_ field.
15740 Update declarations.
15741 * layout.cc: Include "descriptors.h".
15742 (Layout::create_build_id): Use open_descriptor rather than open.
15743 * output.cc: Include "descriptors.h".
15744 (Output_file::open): Use open_descriptor rather than open.
15745 * archive.cc (Archive::const_iterator): Change Archive to be
15746 non-const.
15747 (Archive::begin, Archive::end): Make non-const.
15748 (Archive::count_members): Likewise.
15749 * archive.h (class Archive): Update declarations.
15750 * object.h (Object::read): Make non-const.
15751 * Makefile.am (CCFILES): Add descriptors.cc.
15752 (HFILES): Add descriptors.h.
15753 * Makefile.in: Rebuild.
15754
801647d1
ILT
15755 PR 6716
15756 * gold.h: Always include <clocale>. Add Solaris workarounds
15757 following code in binutils/sysdep.h.
15758
5edd166e
ILT
15759 PR 6048
15760 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
15761 this->eh_frame_hdr_ is NULL before using it.
15762
c89ad728
ILT
15763 * dynobj.cc (Versions::Versions): Update comment.
15764
aa86f06b
ILT
15765 * dynobj.cc (Versions::Versions): If there is an soname, use it as
15766 the base version name.
15767
5778530e
ILT
15768 * stringpool.cc (Stringpool_template::add_with_length): Set key to
15769 array size plus one.
15770 (Stringpool_template::set_string_offsets): Subtract one from key
15771 before using it as an array index.
15772 (Stringpool_template::get_offset_with_length): Likewise.
15773 (Stringpool_template::write_to_buffer): Likewise.
15774 * stringpool.h (Stringpool_template::get_offset_from_key):
15775 Likewise.
15776
057ead22
ILT
157772008-07-23 Ian Lance Taylor <iant@google.com>
15778
7f649c59
ILT
15779 PR 6658
15780 * object.h (Merged_symbol_value::value): Do our best to handle a
15781 negative addend.
15782
057ead22
ILT
15783 PR 6647
15784 * script.cc (Version_script_info::get_versions): Don't add empty
15785 version tag to return value.
15786 (Version_script_info::get_symbol_version_helper): Change return
15787 type to bool. Add pversion parameter. Change all callers.
15788 (script_register_vers_node): Don't require a non-NULL tag.
15789 * script.h (class Version_script_info): Update declarations.
15790 (Version_script_info::get_symbol_version): Change return type to
15791 bool. Add version parameter. Change all callers.
15792 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
15793 handling. Handle an empty version from a version script.
15794 (Symbol_table::define_special_symbol): Likewise.
15795 * testsuite/ver_test_10.script: New file.
15796 * testsuite/ver_test_10.sh: New file.
15797 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
15798 (check_DATA): Add ver_test_10.syms.
15799 (ver_test_10.syms, ver_test_10.so): New target.
15800 * testsuite/Makefile.in: Rebuild.
15801
58e54ac2
CD
158022008-07-23 Simon Baldwin <simonb@google.com>
15803
15804 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
15805 to zero for undefined symbols from dynamic libraries.
15806
95d14cd3
ILT
158072008-07-23 Ian Lance Taylor <iant@google.com>
15808
15809 * symtab.cc (Symbol_table::resolve): Remove version parameter.
15810 Change all callers.
15811 * symtab.h (class Symbol_table): Update declaration.
15812 * testsuite/ver_test_9.cc: New file.
15813 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
15814 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
15815 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
15816 (ver_test_9.so, ver_test_9.o): New targets.
15817 * testsuite/Makefile.in: Rebuild.
15818
92de84a6
ILT
158192008-07-22 Ian Lance Taylor <iant@google.com>
15820
34810851
ILT
15821 * options.h (class General_options): Define --check-sections.
15822 * layout.cc (Layout::set_segment_offsets): Handle
15823 --check-sections.
15824
af6156ef
ILT
15825 * options.h (class General_options): Define -n/--nmagic and
15826 -N/--omagic.
15827 * options.cc (General_options::finalize): For -n/--nmagic or
15828 -N/--omagic, set -static.
15829 * layout.cc (Layout::attach_allocated_section_to_segment): If
15830 -N/--omagic, don't put read-only and read-write sections in
15831 different segments.
15832 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
15833 finding a read-only segment.
15834 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
15835 don't set the minimum segment alignment to the common page size,
15836 and don't set the file offset to the address modulo the page size.
15837 * script-sections.cc (Script_sections::create_segments): If
15838 -n/--omagic, don't put read-only and read-write sections in
15839 different segments.
15840
92de84a6
ILT
15841 * cref.cc: New file.
15842 * cref.h: New file.
15843 * options.h (class General_options): Add --print-symbol-counts.
15844 * main.cc (main): Issue defined symbol report if requested.
15845 * archive.cc (Archive::interpret_header): Make into a const member
15846 function.
15847 (Archive::add_symbols): Call Input_objects::archive_start and
15848 archive_stop.
15849 (Archive::const_iterator): Define new class.
15850 (Archive::begin, Archive::end): New functions.
15851 (Archive::include_all_members): Rewrite to use iterator.
15852 (Archive::count_members): New function.
15853 * archive.h (class Archive): Update declarations.
15854 (Archive::filename): New function.
15855 * object.cc: Include "cref.h".
15856 (Sized_relobj::Sized_relobj): Initialize defined_count_.
15857 (Sized_relobj::do_get_global_symbol_counts): New function.
15858 (Input_objects::add_object): Add object to cross-referencer.
15859 (Input_objects::archive_start): New function.
15860 (Input_objects::archive_stop): New function.
15861 (Input_objects::print_symbol_counts): New function.
15862 * object.h: Declare Cref and Archive.
15863 (Object::get_global_symbol_counts): New function.
15864 (Object::do_get_global_symbol_counts): New pure virtual function.
15865 (class Sized_relobj): Add defined_count_ field. Update
15866 declarations.
15867 (class Input_objects): Add cref_ field. Update constructor.
15868 Update declarations.
15869 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
15870 defined_count_.
15871 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
15872 symbol counts.
15873 (Sized_dynobj::do_get_global_symbol_counts): New function.
15874 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
15875 defined_count_. Update declarations. Define Symbols typedef.
15876 * symtab.cc (Symbol_table::add_from_relobj): Add defined
15877 parameter. Change all callers.
15878 (Symbol_table::add_from_dynobj): Add sympointers and defined
15879 parameters. Change all callers.
15880 * symtab.h (class Symbol_table): Update declarations.
15881 * Makefile.am (CCFILES): Add cref.cc.
15882 (HFILES): Add cref.h.
15883 * Makefile.in: Rebuild.
15884
3f7c5e1d
CD
158852008-07-22 Simon Baldwin <simonb@google.com>
15886
15887 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
15888 to zero when writing undefined symbols.
15889
e0b64032
ILT
158902008-07-22 Ian Lance Taylor <iant@google.com>
15891
15892 * output.cc (Output_section::add_input_section): Don't try to
15893 merge empty merge sections.
15894
096b02cf
CS
158952008-07-21 Craig Silverstein <csilvers@google.com>
15896
15897 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
15898 Include symbol version in error message.
cd536b21 15899
1d1f116d
CD
159002008-07-20 Chris Demetriou <cgd@google.com>
15901
cd536b21 15902 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
15903 (RANDOM_SEED_CFLAGS): New substituted variable.
15904 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
15905 * configure: Rebuild.
15906 * Makefile.in: Likewise.
15907 * testsuite/Makefile.in: Likewise.
15908
a18f591e
ILT
159092008-07-18 Ian Lance Taylor <iant@google.com>
15910
15911 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
15912 where we see NAME/NULL and NAME/VERSION as separate symbols.
15913 * testsuite/ver_test_main.cc (main): Call t4.
15914 (t4, t4_2a): Define.
15915 * testsuite/ver_test_2.cc (t4_2): Define.
15916 * testsuite/ver_test_2.script: Put t4_2a in VER2.
15917 * testsuite/ver_test_4.cc (t4_2a): Define.
15918 * testsuite/ver_test_4.script: Put t4_2a in VER2.
15919 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
15920
c6e3f6ed
ILT
159212008-07-17 Ian Lance Taylor <iant@google.com>
15922
15923 * dynobj.cc (Versions::add_def): If we give an error about a
15924 missing version, go ahead and create the version anyhow.
15925
ef9beddf
ILT
159262008-07-10 Ian Lance Taylor <iant@google.com>
15927
15928 Handle output sections with more than 0x7fffffff bytes.
15929 * object.h (class Relobj): Change map_to_output_ to
15930 output_sections_, and just keep a section pointer. Change all
15931 uses. Move comdat group support to Sized_relobj.
15932 (Relobj::is_section_specially_mapped): Remove.
15933 (Relobj::output_section): Remove poff parameter. Change all
15934 callers.
15935 (Relobj::output_section_offset): New function.
15936 (Relobj::set_section_offset): Rewrite.
15937 (Relobj::map_to_output): Remove.
15938 (Relobj::output_sections): New function.
15939 (Relobj::do_output_section_offset): New pure virtual function.
15940 (Relobj::do_set_section_offset): Likewise.
15941 (class Sized_relobj): Add section_offsets_ field. Add comdat
15942 group support from Relobj. Update declarations.
15943 (Sized_relobj::get_output_section_offset): New function.
15944 (Sized_relobj::do_output_section_offset): New function.
15945 (Sized_relobj::do_set_section_offset): New function.
15946 * object.cc (Relobj::output_section_address): Remove.
15947 (Sized_relobj::Sized_relobj): Initialize new fields.
15948 (Sized_relobj::include_section_group): Cast find_kept_object to
15949 Sized_relobj.
15950 (Sized_relobj::include_linkonce_section): Likewise.
15951 (Sized_relobj::do_layout): Use separate arrays for output section
15952 and output offset.
15953 (Sized_relobj::do_count_local_symbols): Change map_to_output to
15954 output_sections.
15955 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
15956 output_sections and section_offsets.
15957 (Sized_relobj::write_local_symbols): Likewise.
15958 (map_to_kept_section): Compute output address directly.
15959 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
15960 output_sections and section_offsets.
15961 (Sized_relobj::write_sections): Likewise.
15962 (Sized_relobj::relocate_sections): Likewise.
15963 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
15964 * output.h (class Output_reloc): Update declarations. Change
15965 u2_.relobj to Sized_relobj*.
15966 (class Output_data_reloc): Change add functions to use
15967 Sized_relobj*.
15968 * output.cc (Output_reloc::Output_reloc): Change relobj to
15969 Sized_relobj*.
15970 (Output_reloc::local_section_offset): Change return type to
15971 Elf_Addr. Use get_output_section_offset.
15972 (Output_reloc::get_address): Likewise.
15973 (Output_section::is_input_address_mapped): Don't call
15974 is_section_specially_mapped.
15975 (Output_section::output_offset): Likewise.
15976 (Output_section::output_address): Likewise.
15977 (Output_section::starting_output_address): Likewise.
15978 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
15979 parameter to Sized_relobj*.
15980 (Copy_relocs::need_copy_reloc): Likewise.
15981 (Copy_relocs::save): Likewise.
15982 * copy-relocs.h (class Copy_relocs): Update declarations.
15983 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
15984 Sized_relobj*. Change relobj_ field to Sized_relobj*.
15985 * target-reloc.h (relocate_for_relocatable): Change
15986 offset_in_output_section type to Elf_Addr. Change code that uses
15987 it as well.
15988 * layout.cc (Layout::layout): Always set *off.
15989 * mapfile.cc (Mapfile::print_input_section): Use
15990 output_section_offset.
15991 * i386.cc (Target_i386::copy_reloc): Change object parameter to
15992 Sized_relobj*.
15993 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
15994 * sparc.cc (Target_sparc::copy_reloc): Likewise.
15995 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
15996
5cb66f97
ILT
159972008-07-03 Ian Lance Taylor <iant@google.com>
15998
15999 * layout.cc (Layout::include_section): Do not discard unrecognized
16000 SHT_STRTAB sections.
16001
afe47622
CS
160022008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
16003
16004 * script.cc (Lex::can_continue_name): Make '?' allowable in
16005 version-script names.
16006 * testsuite/version_script.map: Change glob pattern to use '?'
16007
5adf9721
ILT
160082008-06-30 Manish Singh <yosh@gimp.org>
16009
16010 PR 6585
16011 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
16012 Correct typo.
16013
e6fde208
ILT
160142008-06-30 Ian Lance Taylor <iant@google.com>
16015
16016 PR 6660
16017 PR 6682
16018 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
16019 versions]: Don't try to read the value in the contents, since we
16020 don't use it. Use the template endianness when writing.
16021
3f2e6a2d
CC
160222008-06-25 Cary Coutant <ccoutant@google.com>
16023
16024 * fileread.cc (File_read::make_view): Assert on zero-length view.
16025 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
16026 symbol table when there are no symbols to read.
16027
c43d3a48
CS
160282008-06-23 Craig Silverstein <csilvers@google.com>
16029
16030 * version.cc (version_string): Bump to 1.7
16031
5f494ea0
CS
160322008-06-18 Craig Silverstein <csilvers@google.com>
16033
16034 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
16035 constant 0xFFFF to type Valtype.
16036 (Powerpc_relocate_functions::rel16_ha): Likewise.
16037
c42e122e
ILT
160382008-06-17 Ian Lance Taylor <iant@google.com>
16039
f34787f8
ILT
16040 * output.h (Output_section::Input_section): Initialize p2align_ to
16041 zero for Output_section_data constructors.
16042 (Output_section::Input_section::addralign): If not an input
16043 section, return the alignment of the Output_section_data.
16044 * testsuite/copy_test.cc: New file.
16045 * testsuite/copy_test_1.cc: New file.
16046 * testsuite/copy_test_2.cc: New file.
16047 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
16048 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
16049 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
16050 (copy_test_1_pic.o, copy_test_1.so): New targets.
16051 (copy_test_2_pic.o, copy_test_2.so): New targets.
16052 * testsuite/Makefile.in: Rebuild.
16053
c42e122e
ILT
16054 * script-sections.cc (Script_sections::place_orphan): Initialize
16055 local variable exact.
16056
ce3ac18a
DE
160572008-06-13 David Edelsohn <edelsohn@gnu.org>
16058
16059 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
16060
42cacb20
DE
160612008-06-12 David Edelsohn <edelsohn@gnu.org>
16062 David S. Miller <davem@davemloft.net>
16063
16064 * powerpc.cc: New file.
16065 * Makefile.am (TARGETSOURCES): Add powerpc.cc
16066 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
16067 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
16068 * Makefile.in: Rebuild.
16069
7b308235
ILT
160702008-06-09 Ian Lance Taylor <iant@google.com>
16071
16072 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
16073 <exception>.
16074 (throwing, orig_terminate): New static variables.
16075 (terminate_handler): New static function.
16076 (t2): Set terminate handler.
16077
f0b886e3
ILT
160782008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
16079
16080 PR 6584
cd536b21 16081 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
16082 alignment.
16083
3e90f135
CC
160842008-05-30 Cary Coutant <ccoutant@google.com>
16085
16086 * archive.cc (Archive::include_all_members) Correct to step
16087 over symbol table and extended name table in thin archives.
16088
e09ad04a
ILT
160892008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
16090
16091 PR 6407
16092 * target-reloc.h (relocate_for_relocatable): Fix new_offset
16093 calculation.
16094
62b01cb5
ILT
160952008-05-28 Caleb Howe <cshowe@google.com>
16096
16097 * reduced_debug_output.cc: New file.
16098 * reduced_debug_output.h: New file.
92de84a6 16099 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
16100 * options.cc (General_options::finalize): Add strip_debug_non_line
16101 to the strip heirarchy.
16102 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
16103 fields.
16104 * layout.cc: Include "reduced_debug_output.h".
16105 (Layout::Layout): Initialize new fields.
16106 (line_only_debug_sections): New static array.
16107 (is_lines_only_debug_sections): New static inline function.
16108 (Layout::include_section): Handle --strip-debug-non-line.
16109 (Layout::make_output_section): If --strip-debug-non-line, build
16110 new output sections for .debug_abbrev and .debug_info.
16111 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
16112 gold. Warn about possible overflow.
16113 (read_signed_LEB_128): Likewise.
16114 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
16115 (read_signed_LEB_128): Declare.
16116 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
16117 (HFILES): Add reduced_debug_output.h.
16118 * Makefile.in: Rebuild.
16119
7d9e3d98
ILT
161202008-05-21 Ian Lance Taylor <iant@google.com>
16121
16122 * mapfile.cc: New file.
16123 * mapfile.h: New file.
16124 * options.h (class General_options): Add -M/--print-map and -Map.
16125 * options.cc (General_options::finalize): Make -M equivalent to
16126 -Map -.
16127 * main.cc: Include <cstdio> and "mapfile.h".
16128 (main): Open mapfile if requested.
16129 * gold.cc (class Middle_runner): Add mapfile_ field. Update
16130 constructor. Change caller.
16131 (queue_initial_tasks): Add mapfile parameter. Change caller.
16132 (queue_middle_tasks): Likewise.
16133 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
16134 declarations.
16135 * archive.cc: Include "mapfile.h".
16136 (Archive::add_symbols): Add mapfile parameter. Change all
16137 callers. Pass mapfile, symbol, and reason to include_member.
16138 (Archive::include_all_members): Add mapfile parameter. Change all
16139 callers.
16140 (Archive::include_member): Add mapfile, sym, and why parameters.
16141 Change all callers. Report inclusion to map file.
16142 * archive.h: Include "fileread.h".
16143 (class Archive): Update declarations.
16144 (Archive::file): New const method.
16145 (class Add_archive_symbols): Add mapfile_ field. Update
16146 constructor. Change all callers.
16147 * readsyms.h (class Read_symbols): Likewise.
16148 (class Finish_group): Likewise.
16149 (class Read_script): Likewise.
16150 * common.cc: Include "mapfile.h".
16151 (Symbol_table::allocate_commons): Add mapfile parameter. Change
16152 all callers.
16153 (Symbol_table::do_allocate_commons): Likewise.
16154 (Symbol_table::do_allocate_commons_list): Likewise. Report common
16155 symbol allocation to mapfile.
16156 * common.h (class Allocate_commons_task): Add mapfile_ field.
16157 Update constructor. Change all callers.
16158 * symtab.h (class Symbol_table): Update declarations.
16159 * layout.cc: Include "mapfile.h".
16160 (Layout_task_runner::run): Print information to mapfile.
16161 (Layout::create_gold_note): Change Output_data_fixed_space to
16162 Output_data_zero_fill.
16163 (Layout::create_build_id): Likewise.
16164 (Layout::print_to_mapfile): New function.
16165 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
16166 constructor. Change caller.
16167 (class Layout): Declare print_to_mapfile.
16168 * output.cc (Output_section::Input_section::print_to_mapfile): New
16169 function.
16170 (Output_section::add_input_section): If producing a map, always
16171 add to input_sections_ list.
16172 (Output_section::do_print_to_mapfile): New function.
16173 (Output_segment::print_sections_to_mapfile): New function.
16174 (Output_segment::print_section_list_to_mapfile): New function.
16175 * output.h: Include "mapfile.h".
16176 (Output_data::print_to_mapfile): New function.
16177 (Output_data::do_print_to_mapfile): New virtual function.
16178 (Output_segment_headers::do_print_to_mapfile): New function.
16179 (Output_file_header::do_print_to_mapfile): New function.
16180 (Output_data_const::do_print_to_mapfile): New function.
16181 (class Output_data_const_buffer): Add map_name_ field. Update
16182 constructor. Change all callers. Add do_print_to_mapfile
16183 function.
16184 (class Output_data_fixed_space): Likewise.
16185 (class Output_data_space): Likewise.
16186 (class Output_data_zero_fill): New class.
16187 (Output_data_strtab::do_print_to_mapfile): New function.
16188 (Output_data_reloc_base::do_print_to_mapfile): New function.
16189 (Output_relocatable_relocs::do_print_to_mapfile): New function.
16190 (Output_data_group::do_print_to_mapfile): New function.
16191 (Output_data_got::do_print_to_mapfile): New function.
16192 (Output_data_dynamic::do_print_to_mapfile): New function.
16193 (Output_symtab_xindex::do_print_to_mapfile): New function.
16194 (class Output_section): Declare do_print_to_mapflie. Declare
16195 print_to_mapfile in Input_section.
16196 (class Output_segment): Declare new functions.
16197 * object.h (Sized_relobj::symbol_count): New function.
16198 * script-sections.cc
16199 (Output_section_element_dot_assignment::set_section_addresses):
16200 Change Output_data_fixed_space to Output_data_zero_fill.
16201 (Output_data_expression::do_print_to_mapfile): New function.
16202 * script.cc (read_input_script): Add mapfile parameter. Change
16203 all callers.
16204 * script.h (read_input_script): Update declaration.
16205 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
16206 (Eh_frame::do_print_to_mapfile): New function.
16207 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
16208 (Output_merge_string::do_print_to_mapfile): New function.
16209 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
16210 function.
16211 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
16212 function.
16213 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
16214 function.
16215 * Makefile.am (CCFILES): Add mapfile.cc.
16216 (HFILES): Add mapfile.h.
16217 * Makefile.in: Rebuild.
16218
9f1d377b
ILT
162192008-05-19 Ian Lance Taylor <iant@google.com>
16220
16221 * options.h (class General_options): Add -z relro.
16222 * layout.cc (Layout::Layout): Initialize relro_segment_.
16223 (Layout::add_output_section_data): Return the output section.
16224 (Layout::make_output_section): Rcognize relro sections and mark
16225 them appropriately.
16226 (Layout::attach_allocated_section_to_segment): Put relro sections
16227 in a PT_GNU_RELRO segment.
16228 (Layout::create_initial_dynamic_sections): Mark the .dynamic
16229 section as relro.
16230 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
16231 PT_TLS segments.
16232 (Layout::linkonce_mapping): Map d.rel.ro.local to
16233 .data.rel.ro.local.
16234 (Layout::output_section_name): Us .data.rel.ro.local for any
16235 section which begins with that.
16236 * layout.h (class Layout): Update add_output_section_data
16237 declaration. Add relro_segment_ field.
16238 * output.cc (Output_section::Output_section): Initialize is_relro_
16239 and is_relro_local_ fields.
16240 (Output_segment::add_output_section): Group relro sections.
16241 (Output_segment::is_first_section_relro): New function.
16242 (Output_segment::maximum_alignment): If there is a relro section,
16243 align the segment to the common page size.
16244 (Output_segment::set_section_addresses): Track whether we are
16245 looking at relro sections. If the last section is a relro
16246 section, align to the common page size.
16247 (Output_segment::set_section_list_addresses): Add in_relro
16248 parameter. Change all callers. Align to the page size when
16249 moving from relro to non-relro section.
16250 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
16251 segment.
16252 * output.h (class Output_section): Add is_relro_ and
16253 is_relro_local_ fields.
16254 (Output_section::is_relro): New function.
16255 (Output_section::set_is_relro): New function.
16256 (Output_section::is_relro_local): New function.
16257 (Output_section::set_is_relro_local): New function.
16258 (class Output_segment): Update declarations.
16259 * i386.cc (Target_i386::got_section): Mark .got section as relro.
16260 * sparc.cc (Target_sparc::got_section): Likewise.
16261 * x86_64.cc (Target_x86_64::got_section): Likewise.
16262 * testsuite/relro_test_main.cc: New file.
16263 * testsuite/relro_test.cc: New file.
16264 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
16265 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
16266 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
16267 (relro_test.so, relro_test_pic.o): New targets.
16268 * testsuite/Makefile.in: Rebuild.
16269
a984ee1d
ILT
162702008-05-16 Ian Lance Taylor <iant@google.com>
16271
01676dcd
ILT
16272 * output.cc (Output_segment::add_output_section): Remove front
16273 parameter.
16274 * output.h (class Output_segment): Remove
16275 add_initial_output_section and overloaded add_output_section.
16276 Update declaration of remaining add_output_section.
16277 * layout.cc (Layout::create_interp): Call add_output_section
16278 rather than add_initial_output_section.
16279 (Layout::finish_dynamic_section): Likewise.
16280
497897f9
ILT
16281 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
16282 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
16283 know the dynamic type.
16284 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
16285 field. Initialize it in constructor.
16286 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
16287 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
16288 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
16289 reloc.
16290
a984ee1d
ILT
16291 * output.cc (Output_reloc::get_address): Change return type to
16292 Elf_Addr.
16293 * output.h (class Output_reloc): Update get_address declaration.
16294 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
16295 for section addresses.
16296
55ba0940
ILT
162972008-05-09 Ian Lance Taylor <iant@google.com>
16298
16299 PR 6493
16300 * gold.cc (gold_nomem): Use return value of write.
16301
75517b77
ILT
163022008-05-08 Ian Lance Taylor <iant@google.com>
16303
16304 * symtab.c (Symbol::init_base_output_data): Add version
16305 parameter. Change all callers.
16306 (Symbol::init_base_output_segment): Likewise.
16307 (Symbol::init_base_constant): Likewise.
16308 (Symbol::init_base_undefined): Likewise.
16309 (Sized_symbol::init_output_data): Likewise.
16310 (Sized_symbol::init_output_segment): Likewise.
16311 (Sized_symbol::init_constant): Likewise.
16312 (Sized_symbol::init_undefined): Likewise.
16313 (Symbol_table::do_define_in_output_data): If the new symbol has a
16314 version, mark it as the default.
16315 (Symbol_table::do_define_in_output_segment): Likewise.
16316 (Symbol_table::do_define_as_constant): Likewise.
16317 * symtab.h (class Symbol): Update declarations.
16318 (class Sized_symbol): Likewise.
16319 * resolve.cc (Symbol::override_version): New function.
c42e122e 16320 (Symbol::override_base): Call override_version.
75517b77
ILT
16321 (Symbol::override_base_with_special): Likewise.
16322 * testsuite/ver_script_8.script: New file.
16323 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
16324 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
16325 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
16326 (ver_test_8_1.so, ver_test_8_2.so): New targets.
16327
f1f70eae
ILT
163282008-05-06 Ian Lance Taylor <iant@google.com>
16329
f3e9c5c5
ILT
16330 PR 6049
16331 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
16332 functions.
16333 (class General_options): Remove existing --undefined, and add
16334 --no-undefined instead. Add new --undefined as synonym for -u.
16335 * archive.cc (Archive::add_symbols): Check whether symbol was
16336 named with -u.
16337 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
16338 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
16339 all uses. Add IS_UNDEFINED. Update declarations to split
16340 different versions of init_base. Declare init_base_undefined.
16341 (Symbol::is_defined): Handle IS_UNDEFINED.
16342 (Symbol::is_undefined): Likewise.
16343 (Symbol::is_weak_undefined): Call is_undefined.
16344 (Symbol::is_absolute): Handle IS_CONSTANT.
16345 (class Sized_symbol): Update declarations to split different
16346 versions of init. Declare init_undefined.
16347 (class Symbol_table): Declare new functions.
16348 * symtab.cc (Symbol::init_base_object): Rename from init_base.
16349 Change all callers.
16350 (Symbol::init_base_output_data): Likewise.
16351 (Symbol::init_base_output_segment): Likewise.
16352 (Symbol::init_base_constant): Likewise.
16353 (Symbol::init_base_undefined): New function.
16354 (Sized_symbol::init_object): Rename from init. Change all
16355 callers.
16356 (Sized_symbol::init_output_data): Likewise.
16357 (Sized_symbol::init_output_segment): Likewise.
16358 (Sized_symbol::init_constant): Likewise.
16359 (Sized_symbol::init_undefined): New function.
16360 (Symbol_table::add_undefined_symbols_from_command_line): New
16361 function.
16362 (Symbol_table::do_add_undefined_symbols_from_command_line): New
16363 function.
16364 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
16365 (Symbol::output_section): Likewise.
16366 (Symbol::set_output_section): Likewise.
16367 (Symbol_table::sized_finalize_symbol): Likewise.
16368 (Symbol_table::sized_write_globals): Likewise.
16369 * resolve.cc (Symbol_table::should_override): Likewise.
16370 (Symbol::override_base_with_special): Likewise.
16371
8bdcdf2c
ILT
16372 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
16373 symbol, change it to have default visibility.
16374 * testsuite/protected_1.cc: New file.
16375 * testsuite/protected_2.cc: New file.
16376 * testsuite/protected_3.cc: New file.
16377 * testsuite/protected_main_1.cc: New file.
16378 * testsuite/protected_main_2.cc: New file.
16379 * testsuite/protected_main_3.cc: New file.
16380 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
16381 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
16382 (protected_1_LDFLAGS, protected_1_LDADD): Define.
16383 (protected_1.so): New target.
16384 (protected_1_pic.o, protected_2_pic.o): New targets.
16385 (protected_3_pic.o): New target.
16386 (check_PROGRAMS): Add protected_2.
16387 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
16388 (protected_2_LDFLAGS, protected_2_LDADD): Define.
16389 * testsuite/Makefile.in: Rebuild.
16390
2b706932
ILT
16391 * options.h (DEFINE_var): Add set_user_set_##varname__.
16392 (DEFINE_bool_alias): New macro.
16393 (class General_options): Define -Bstatic using DEFINE_bool_alias
16394 rather than DEFINE_special. Add --undefined as an alias for -z
16395 defs.
16396 * options.cc (General_options::parse_Bstatic): Remove.
16397
d82a5bcc
ILT
16398 * options.h (class General_options): Add --fatal-warnings.
16399 * main.cc (main): Implement --fatal-warnings.
16400 * errors.h (Errors::warning_count): New function.
16401
f1f70eae
ILT
16402 * options.h (class General_options): Add -Bsymbolic-functions.
16403 * symtab.h (Symbol::is_preemptible): Check for
16404 -Bsymbolic-functions.
16405
8825ac63
ILT
164062008-05-05 Ian Lance Taylor <iant@google.com>
16407
d98bc257
ILT
16408 * options.h (DEFINE_bool): For DASH_Z, create the negative option
16409 as noVARNAME rather than no-VARNAME.
16410 (class General_options): Add option -z combreloc.
16411 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
16412 get_address.
16413 (Output_reloc::sort_before) [SHT_REL]: New function.
16414 (Output_reloc::sort_before) [SHT_RELA]: New function.
16415 (class Output_data_reloc_base): Add sort_relocs_ field. Define
16416 Sort_relocs_comparison.
16417 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
16418 parameter. Change all callers.
16419 (Output_data_reloc::Output_data_reloc) [both versions]: Add
16420 sort_relocs parameter. Change all callers.
16421 * output.cc (Output_reloc::get_address): New function, broken out
16422 of write_rel.
16423 (Output_reloc::write_rel): Call it.
16424 (Output_reloc::compare): New function.
16425 (Output_data_reloc_base::do_write): Optionally sort relocs.
16426
60b2b4e7
ILT
16427 * configure.ac: If targ_extra_obj is set, link it in.
16428 * configure.tgt: Initialize all variables.
16429 (x86_64*): Set targ_extra_obj and targ_extra_size.
16430 * configure: Rebuild.
16431
8825ac63
ILT
16432 * object.cc (Sized_relobj::include_section_group): Adjust section
16433 indexes read from group data. Build vector to pass to
16434 layout_group.
16435 * layout.cc (Layout::layout_group): Add flags and shndxes
16436 parameters. Remove contents parameter. Change caller. Update
16437 explicit instantiations.
16438 * layout.h (class Layout): Update layout_group declaration.
16439 * output.cc (Output_data_group::Output_data_group): Add flags and
16440 input_shndxes parameters. Remove contents parameter. Change
16441 caller.
16442 (Output_data_group::do_write): Change input_sections_ to
16443 input_shndxes_.
16444 * output.h (class Output_data_group): Update constructor
16445 declaration. Rename input_sections_ to input_shndxes_.
16446 * testsuite/many_sections_test.cc: Add template.
16447
e94cf127
CC
164482008-04-30 Cary Coutant <ccoutant@google.com>
16449
4418b2d5
CC
16450 * target-reloc.h (relocate_section): Fix dead-pointer bug.
16451
e94cf127
CC
16452 * layout.cc (Layout::include_section): Refactored check for debug
16453 info section.
16454 (Layout::add_comdat): Add new parameters. Change type
16455 of signature parameter. Add object and shndx to signatures table.
16456 (Layout::find_kept_object): New function.
16457 * layout.h: Include <cstring>.
16458 (Layout::is_debug_info_section): New function.
16459 (Layout::add_comdat): Add new parameters.
16460 (Layout::find_kept_object): New function.
16461 (Layout::Kept_section): New struct.
16462 (Layout::Signatures): Change type of map range.
16463 * object.cc (Relobj::output_section_address): New function.
16464 (Sized_relobj::include_section_group): Add new parameters. Change
16465 calls to Layout::add_comdat. Change to build table of kept comdat
16466 groups and table mapping discarded sections to kept sections.
16467 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
16468 (Sized_relobj::do_layout): Change calls to include_section_group and
16469 include_linkonce_section.
16470 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
16471 value to zero when section is discarded.
16472 (Sized_relobj::map_to_kept_section): New function.
16473 * object.h (Relobj::output_section_address): New function.
16474 (Relobj::Comdat_group): New type.
16475 (Relobj::find_comdat_group): New function.
16476 (Relobj::Comdat_group_table): New type.
16477 (Relobj::Kept_comdat_section): New type.
16478 (Relobj::Kept_comdat_section_table): New type.
16479 (Relobj::add_comdat_group): New function.
16480 (Relobj::set_kept_comdat_section): New function.
16481 (Relobj::get_kept_comdat_section): New function.
16482 (Relobj::comdat_groups_): New field.
16483 (Relobj::kept_comdat_sections_): New field.
16484 (Symbol_value::input_value): Update comment.
16485 (Sized_relobj::map_to_kept_section) New function.
16486 (Sized_relobj::include_linkonce_section): Add new parameter.
16487 * target-reloc.h (Comdat_behavior): New type.
16488 (get_comdat_behavior): New function.
16489 (relocate_section): Add code to map a discarded section to the
16490 corresponding kept section when applying a relocation.
16491
e4e5049b
CS
164922008-04-30 Craig Silverstein <csilvers@google.com>
16493
16494 * dwarf_reader.cc (next_generation_count): New static var.
16495 (Addr2line_cache_entry): New struct.
16496 (addr2line_cache): New static var.
16497 (Dwarf_line_info::one_addr2line): Added caching.
16498 (Dwarf_line_info::clear_addr2line_cache): New function.
16499 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
16500 cache-size parameter.
16501 (Dwarf_line_info::one_addr2line_cache): New function.
16502 * symtab.cc (Symbol_table::detect_odr_violations): Pass
16503 new cache-size argument to one_addr2line(), and clear cache.
16504
d09e9154
CC
165052008-04-28 Cary Coutant <ccoutant@google.com>
16506
16507 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
16508 R_386_PC8 relocations.
16509
7ef73768
ILT
165102008-04-23 Ian Lance Taylor <iant@google.com>
16511
55438702
ILT
16512 * object.cc (Sized_relobj::include_section_group): Check for
16513 invalid section group.
16514
c165fb93
ILT
16515 * object.cc (make_elf_object): Correct test for 64-bit ELF file
16516 header size.
16517
7ef73768
ILT
16518 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
16519 than read for file header.
16520 * archive.cc (Archive::include_member): Likewise.
16521
6194aaab
L
165222008-04-23 Paolo Bonzini <bonzini@gnu.org>
16523
16524 * aclocal.m4: Regenerate.
16525 * configure: Regenerate.
16526
d491d34e
ILT
165272008-04-19 Ian Lance Taylor <iant@google.com>
16528
5ea2bac6
ILT
16529 * version.cc (version_string): Bump to 1.6.
16530
7bc3e21a
ILT
16531 * testsuite/Makefile.am (many_sections_r_test): New target.
16532 (many_sections_r_test_SOURCES): Remove.
16533 (many_sections_r_test_DEPENDENCIES): Remove.
16534 (many_sections_r_test_LDFLAGS): Remove.
16535 (many_sections_r_test_LDADD): Remove.
16536
7fcd3aa9
ILT
16537 * object.cc (Sized_relobj::do_add_symbols): Always pass
16538 local_symbol_count_ to add_from_relobj.
16539
4c94d6ae
ILT
16540 * testsuite/Makefile.am (many_sections_check.h): Only check one in
16541 every thousand variables.
16542 * testsuite/Makefile.in: Rebuild.
16543
d491d34e
ILT
16544 * object.cc (Xindex::initialize_symtab_xindex): New function.
16545 (Xindex::read_symtab_xindex): New function.
16546 (Xindex::sym_xindex_to_shndx): New function.
16547 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
16548 available.
16549 (Sized_relobj::do_initialize_xindex): New function.
16550 (Sized_relobj::do_read_symbols): Adjust section links.
16551 (Sized_relobj::symbol_section_and_value): Add is_ordinary
16552 parameter. Change all callers.
16553 (Sized_relobj::include_section_group): Adjust section links and
16554 symbol section indexes.
16555 (Sized_relobj::do_layout): Adjust section links.
16556 (Sized_relobj::do_count_local_symbols): Adjust section links and
16557 symbol section indexes.
16558 (Sized_relobj::do_finalize_local_symbols): Distinguish between
16559 ordinary and special symbols.
16560 (Sized_relobj::write_local_symbols): Add symtab_xindex and
16561 dynsym_xindex parameters. Change all callers. Adjust section
16562 links. Use SHN_XINDEX when needed.
16563 (Sized_relobj::get_symbol_location_info): Adjust section links.
16564 Don't get fooled by special symbols.
16565 * object.h (class Xindex): Define.
16566 (class Object): Add xindex_ parameter. Declare virtual functoin
16567 do_initialize_xindex.
16568 (Object::adjust_sym_shndx): New function.
16569 (Object::set_xindex): New protected function.
16570 (class Symbol_value): Add is_ordinary_shndx_ field.
16571 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
16572 (Symbol_value::value): Assert ordinary section.
16573 (Symbol_value::initialize_input_to_output_map): Likewise.
16574 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
16575 Change all callers.
16576 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
16577 all callers.
16578 (class Sized_relobj): Update declarations.
16579 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
16580 parameter. Change all callers.
16581 (Sized_relobj::adjust_shndx): New function.
16582 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
16583 field.
16584 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
16585 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
16586 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
16587 (Sized_dynobj::read_dynsym_section): Adjust section links.
16588 (Sized_dynobj::read_dynamic): Likewise.
16589 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
16590 section links.
16591 (Sized_dynobj::do_initialize_xindex): New function.
16592 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
16593 do_initialize_xindex.
16594 (Sized_dynobj::adjust_shndx): New function.
16595 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
16596 dynsym_xindex_ fields.
16597 (Layout::finalize): Add a call to set_section_indexes before
16598 creating the symtab sections.
16599 (Layout::set_section_indexes): Don't do anything if the section
16600 already has a section index.
16601 (Layout::create_symtab_sections): Add shnum parameter. Change
16602 caller. Create .symtab_shndx section if needed.
16603 (Layout::create_shdrs): Add shstrtab_section parameter. Change
16604 caller.
16605 (Layout::allocated_output_section_count): New function.
16606 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
16607 needed.
16608 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
16609 fields. Update declarations.
16610 (Layout::symtab_xindex): New function.
16611 (Layout::dynsym_xindex): New function.
16612 (class Write_symbols_task): Add layout_ field.
16613 (Write_symbols_task::Write_symbols_task): Add layout parameter.
16614 Change caller.
16615 * output.cc (Output_section_headers::Output_section_headers): Add
16616 shstrtab_section parameter. Change all callers.
16617 (Output_section_headers::do_sized_write): Store overflow values
16618 for section count and section string table section index in
16619 section header zero.
16620 (Output_file_header::do_sized_write): Check for overflow of
16621 section count and section string table section index.
16622 (Output_symtab_xindex::do_write): New function.
16623 (Output_symtab_xindex::endian_do_write): New function.
16624 * output.h (class Output_section_headers): Add shstrtab_section_.
16625 Update declarations.
16626 (class Output_symtab_xindex): Define.
16627 (Output_section::has_out_shndx): New function.
16628 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
16629 field.
16630 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
16631 Change all callers.
16632 (Sized_symbol::init): Likewise.
16633 (Symbol::output_section): Check for ordinary symbol.
16634 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
16635 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
16636 callers.
16637 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
16638 Change all callers. Simplify handling of symbols from sections
16639 not included in the link.
16640 (Symbol_table::add_from_dynobj): Handle ordinary symbol
16641 distinction.
16642 (Weak_alias_sorter::operator()): Assert that symbols are
16643 ordinary.
16644 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
16645 distinction.
16646 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
16647 parameters. Change all callers.
16648 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
16649 symbol distinction. Use SHN_XINDEX when needed.
16650 (Symbol_table::write_section_symbol): Add symtab_xindex
16651 parameter. Change all callers.
16652 (Symbol_table::sized_write_section_symbol): Likewise. Use
16653 SHN_XINDEX when needed.
16654 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
16655 declarations.
16656 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
16657 (Symbol::is_defined): Check is_ordinary.
16658 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
16659 (Symbol::is_absolute, Symbol::is_common): Likewise.
16660 (class Sized_symbol): Update declarations.
16661 (class Symbol_table): Update declarations.
16662 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
16663 parameters. Change all callers.
16664 (Sized_symbol::override): Likewise.
16665 (Symbol_table::override): Likewise.
16666 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
16667 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
16668 is_ordinary, and orig_st_shndx parameters. Change all callers.
16669 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
16670 to be in an ordinary section.
16671 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
16672 object and is_ordinary parameters. Change all callers.
16673 (Sized_dwarf_line_info::read_relocs): Add object parameter.
16674 Change all callers. Don't add undefined or non-ordinary symbols
16675 to reloc_map_.
16676 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
16677 Change all callers.
16678 * dwarf_reader.h (class Sized_dwarf_line_info): Update
16679 declarations.
16680 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
16681 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
16682 (Sized_relobj::relocate_sections): Likewise.
16683 * target-reloc.h (scan_relocs): Adjust section symbol index.
16684 (scan_relocatable_relocs): Likewise.
16685 * i386.cc (Scan::local): Check for ordinary symbols.
16686 * sparc.cc (Scan::local): Likewise.
16687 * x86_64.cc (Scan::local): Likewise.
16688 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
16689 to symbol_section_and_value.
16690 * testsuite/many_sections_test.cc: New file.
16691 * testsuite/Makefile.am (BUILT_SOURCES): Define.
16692 (check_PROGRAMS): Add many_sections_test.
16693 (many_sections_test_SOURCES): Define.
16694 (many_sections_test_DEPENDENCIES): Define.
16695 (many_sections_test_LDFLAGS): Define.
16696 (BUILT_SOURCES): Add many_sections_define.h.
16697 (many_sections_define.h): New target.
16698 (BUILT_SOURCES): Add many_sections_check.h.
16699 (many_sections_check.h): New target.
16700 (check_PROGRAMS): Add many_sections_r_test.
16701 (many_sections_r_test_SOURCES): Define.
16702 (many_sections_r_test_DEPENDENCIES): Define.
16703 (many_sections_r_test_LDFLAGS): Define.
16704 (many_sections_r_test_LDADD): Define.
16705 (many_sections_r_test.o): New target.
16706 * testsuite/Makefile.in: Rebuild.
16707
c5818ff1
CC
167082008-04-17 Cary Coutant <ccoutant@google.com>
16709
16710 * errors.cc (Errors::info): New function.
16711 (gold_info): New function.
16712 * errors.h (Errors::info): New function.
16713 * gold.h (gold_info): New function.
16714 * object.cc (Input_objects::add_object): Print trace output.
16715 * options.cc (options::parse_set): New function.
16716 (General_options::parse_wrap): Deleted.
16717 (General_options::General_options): Deleted initializer.
16718 * options.h (options::String_set): New typedef.
16719 (options::parse_set): New function.
16720 (DEFINE_set): New macro.
16721 (General_options::wrap): Changed to use DEFINE_set. Changed
16722 callers of any_wrap_symbols and is_wrap_symbol.
16723 (General_options::trace, General_options::trace_symbol):
16724 New options.
16725 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
16726 (General_options::wrap_symbols_): Deleted.
16727 * symtab.cc (Symbol_table::add_from_object): Print trace output.
16728
b5be4a7c
DM
167292008-04-17 David S. Miller <davem@davemloft.net>
16730
16731 * options.cc (General_options::parse_V): New function.
16732 * options.h: Add entries for -V and -Qy.
16733
155a0dd7
ILT
167342008-04-17 Ian Lance Taylor <iant@google.com>
16735
16736 * common.cc (Symbol_table::allocate_commons): Remove options
16737 parameter. Change caller.
16738 (Symbol_table::do_allocate_commons): Remove options parameter.
16739 Change caller. Just call do_allocate_commons_list twice.
16740 (Symbol_table::do_allocate_commons_list): New function, broken out
16741 of do_allocate_commons.
16742 * common.h (class Allocate_commons_task): Remove options_ field.
16743 Update constructor.
16744 * symtab.cc (Symbol_table::Symbol_table): Initialize
16745 tls_commons_.
16746 (Symbol_table::add_from_object): Put TLS common symbols on
16747 tls_commons_ list.
16748 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
16749 which are IN_OUTPUT_DATA.
16750 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
16751 allocate_commons and do_allocate_commons declarations. Declare
16752 do_allocate_commons_list.
16753 * gold.cc (queue_middle_tasks): Update creation of
16754 Allocate_commons_task to not pass options.
16755 * testsuite/Makefile.am (INCLUDES): Add -I.. .
16756 (TLS_TEST_C_FLAGS): New variable.
16757 (tls_test_c_pic.o): New target.
16758 (tls_test_shared.so): Link in tls_test_c_pic.o.
16759 (tls_test_c_pic_ie.o): New target.
16760 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
16761 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
16762 (tls_test_c.o): New target.
16763 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
16764 (tls_pic_test_LDADD): Likewise.
16765 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
16766 (tls_shared_gd_to_ie_test_LDADD): Likewise.
16767 (tls_test_c_gnu2.o): New target.
16768 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
16769 tls_test_c_gnu2.o.
16770 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
16771 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
16772 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
16773 * testsuite/tls_test.cc: Include "config.h".
16774 (t_last): Call t11_last.
16775 * testsuite/tls_test.h (t11, t11_last): Declare.
16776 * testsuite/tls_test_c.c: New file.
16777 * testsuite/tls_test_main.cc (thread_routine): Call t11.
16778 * configure.ac: Check for OpenMP support.
16779 * configure, config.in, Makefile.in: Rebuild.
16780 * testsuite/Makefile.in: Rebuild.
16781
edfbb029
CC
167822008-04-16 Cary Coutant <ccoutant@google.com>
16783
16784 * i386.cc (Target_i386::define_tls_base_symbol): New function.
16785 (Target_i386::tls_base_symbol_defined_): New field.
16786 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
16787 (Target_i386::Scan::global): Likewise.
16788 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
16789 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
16790 (Target_x86_64::tls_base_symbol_defined_): New field.
16791 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
16792 (Target_x86_64::Scan::global): Likewise.
16793
f3c69fca
CC
167942008-04-16 Cary Coutant <ccoutant@google.com>
16795
16796 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
16797 (Symbol::needs_plt_entry): Allow weak undefined symbols.
16798 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
16799 building shared libraries.
16800 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
16801 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
16802 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
16803 * testsuite/Makefile.in: Rebuild.
16804 * testsuite/weak_undef.h: New file.
16805 * testsuite/weak_undef_file1.cc: Add extra test cases.
16806 * testsuite/weak_undef_file2.cc: Likewise.
16807 * testsuite/weak_undef_test.cc: Likewise.
16808
7c414435
DM
168092008-04-16 David S. Miller <davem@davemloft.net>
16810
32b769e1
DM
16811 * sparc.cc (Target_sparc::Scan): Change from struct to class.
16812 Add issued_non_pic_error_ field. Declare check_non_pic.
16813 (Target_sparc::Scan::check_non_pic): New function.
16814 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
16815 (Target_sparc::Scan::global): Likewise.
16816
11936fb1
DM
16817 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
16818 * configure: Rebuild.
16819
7c414435
DM
16820 * options.h (DEFINE_enable): New macro.
16821 (new_dtags): New enable option.
16822 (initfirst, interpose, loadfltr, nodefaultlib,
16823 nodelete, nodlopen, nodump): New -z options.
16824 * layout.cc (Layout:finish_dynamic_section): If new
16825 dtags enabled, emit DT_RUNPATH. Also, emit a
16826 DT_FLAGS_1 containing any specified -z flags.
16827
85c7bf8b
ILT
168282008-04-16 Ian Lance Taylor <iant@google.com>
16829
12c0daef
ILT
16830 * copy-relocs.cc: New file.
16831 * copy-relocs.h: New file.
16832 * reloc.cc: Remove Copy_relocs code.
16833 * reloc.h: Likewise.
16834 * reloc-types.h (struct Reloc_types) [both versions]: Add
16835 get_reloc_addend_noerror.
16836 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
16837 variants of add_global which take an addend which must be zero.
16838 * i386.cc: Include "copy-relocs.h".
16839 (class Target_i386): Change type of copy_relocs_ to variable,
16840 update initializer.
16841 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
16842 Change all callers.
16843 (Target_i386::do_finalize_sections): Change handling of
16844 copy_relocs_.
16845 * sparc.cc: Include "copy-relocs.h".
16846 (class Target_sparc): Change type of copy_relocs_ to variable,
16847 update initializer.
16848 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
16849 Change all callers.
16850 (Target_sparc::do_finalize_sections): Change handling of
16851 copy_relocs_.
16852 * x86_64.cc: Include "copy-relocs.h".
16853 (class Target_x86_64): Change type of copy_relocs_ to variable,
16854 update initializer.
16855 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
16856 class. Change all callers.
16857 (Target_x86_64::do_finalize_sections): Change handling of
16858 copy_relocs_.
16859 * Makefile.am (CCFILES): Add copy-relocs.cc.
16860 (HFILES): Add copy-relocs.h.
16861
4f4995b6
ILT
16862 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
16863
85c7bf8b
ILT
16864 * testsuite/script_test_4.sh: Permit leading zeroes.
16865
4f2a9edd
ILT
168662008-04-15 Ian Lance Taylor <iant@google.com>
16867
e6188289
ILT
16868 * script-sections.cc (Script_sections::create_segments): Use
16869 header_size_adjustment even when there is enough room for the
16870 headers.
16871 * testsuite/script_test_4.sh: New file.
16872 * testsuite/script_test_4.t: New file.
16873 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
16874 (check_DATA): Add script_test_4.stdout.
16875 (MOSTLYCLEANFILES): Likewise.
16876 (script_test_4): New target.
16877 (script_test_4.stdout): New target.
16878 * testsuite/Makefile.in: Rebuild.
16879
4f2a9edd
ILT
16880 * sparc.cc: Add definitions for Output_data_plt_sparc class
16881 constants.
16882
f5314dd5
DM
168832008-04-14 David S. Miller <davem@davemloft.net>
16884
16885 * sparc.cc: New file.
16886 * Makefile.am (TARGETSOURCES): Add sparc.cc
16887 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
16888 * configure.tgt: Document targ_extra_size and
16889 targ_extra_big_endian. Add entries for sparc-* and
16890 sparc64-*.
16891 * configure.ac: Handle targ_extra_size and
16892 targ_extra_big_endian.
16893 * Makefile.in: Rebuild.
16894 * configure: Likewise.
16895 * po/POTFILES.in: Likewise.
16896 * po/gold.pot: Likewise.
16897
154e0e9a
ILT
168982008-04-14 Ian Lance Taylor <iant@google.com>
16899
16900 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
16901 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
16902 in the name/type/flags to section mapping. Don't call
16903 allocate_output_section.
16904 (Layout::choose_output_section): Change parameter from adjust_name
16905 to is_input_section. Don't permit input sections after sections
16906 are attached to segments. Don't call allocate_output_section.
16907 (Layout::layout_eh_frame): Call update_flags_for_input_section,
16908 not write_enable_output_section.
16909 (Layout::make_output_section): Don't push to
16910 unattached_section_list_ nor call attach_to_segment. Call
16911 attach_section_to_segment if sections are attached.
16912 (Layout::attach_sections_to_segments): New function.
16913 (Layout::attach_section_to_segment): New function.
16914 (Layout::attach_allocated_section_to_segment): Rename from
16915 attach_to_segment. Remove flags parameter.
16916 (Layout::allocate_output_section): Remove function.
16917 (Layout::write_enable_output_section): Remove function.
16918 * layout.h (class Layout): Update for above changes. Add new
16919 field sections_are_attached_.
16920 * output.h (Output_section::update_flags_for_input_section): New
16921 function.
16922 * output.cc (Output_section::add_input_section): Call
16923 update_flags_for_input_section.
16924 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
16925
009a67a2
CC
169262008-04-11 Cary Coutant <ccoutant@google.com>
16927
16928 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
16929 thought unnecessary.
16930 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
16931
759b1a24
ILT
169322008-04-11 Ian Lance Taylor <iant@google.com>
16933
16934 * output.h (class Output_section_data): Remove inline definition
16935 of set_addralign.
16936 * output.cc (Output_section_data::set_addralign): New function.
16937
c2b45e22
CC
169382008-04-11 Cary Coutant <ccoutant@google.com>
16939
16940 Add support for TLS descriptors for i386 and x86_64.
16941 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
16942 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
16943 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
16944 GOT_TYPE_TLS_DESC.
16945 (Target_i386::got_mod_index_entry): Remove unnecessary code.
16946 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
16947 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
16948 relocations.
16949 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
16950 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
16951 Fix problem with initial-exec relocations.
16952 (Target_i386::Relocate::relocate_tls): Likewise.
16953 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
16954 relaxation.
16955 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
16956 support for section-plus-offset dynamic table entries.
16957 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
16958 (Output_data_dynamic::Dynamic_entry): Add support for
16959 section-plus-offset dynamic table entries.
16960 (Output_data_dynamic::Classification): Likewise.
16961 (Output_data_dynamic::classification_): Renamed offset_.
16962 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
16963 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
16964 (Target_x86_64::make_plt_section): New function.
16965 (Target_x86_64::reserve_tlsdesc_entries): New function.
16966 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
16967 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
16968 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
16969 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
16970 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
16971 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
16972 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
16973 add extra PLT entry for TLS descriptors.
16974 (Output_data_plt_x86_64::got_): New field.
16975 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
16976 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
16977 fields.
16978 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
16979 descriptors.
16980 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
16981 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
16982 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
16983 R_386_TLS_DESC_CALL relocations.
16984 (Target_x86_64::Scan::global): Likewise.
16985 (Target_x86_64::do_finalize_sections): Add dynamic table entries
16986 for TLS descriptors.
16987 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
16988 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
16989 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
16990 GD-to-IE relaxation.
16991 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
16992 and TLS_DESCRIPTORS.
16993 * Makefile.in: Rebuild.
16994 * configure: Rebuild.
16995 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
16996 (tls_test_shared2.so): New target.
16997 (tls_shared_gd_to_ie_test_SOURCES): New variable.
16998 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
16999 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
17000 (tls_shared_gd_to_ie_test_LDADD): New variable.
17001 (tls_shared_gnu2_gd_to_ie_test): New target.
17002 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
17003 New targets.
17004 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
17005 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
17006 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
17007 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
17008 (tls_shared_gnu2_test): New target.
17009 (tls_test_gnu2_shared.so): New target.
17010 (tls_shared_gnu2_test_SOURCES): New variable.
17011 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
17012 (tls_shared_gnu2_test_LDFLAGS): New variable.
17013 (tls_shared_gnu2_test_LDADD): New variable.
17014 * testsuite/Makefile.in: Rebuild.
17015 * testsuite/Makefile.
17016
83bfb6b7
ILT
170172008-04-11 Ian Lance Taylor <iant@google.com>
17018
17019 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
17020 justsyms.t.
17021 * testsuite/Makefile.in: Rebuild.
17022
17023 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
17024 long.
17025 * testsuite/script_test_2.cc (main): Adjust test.
17026
706e1f5e
ILT
170272008-04-11 David S. Miller <davem@davemloft.net>
17028 Ian Lance Taylor <iant@google.com>
17029
17030 * options.h (General_options): Add entries for '-Y' and
17031 '-relax'.
17032 * options.cc (General_options:finalize): If -Y was used, add those
17033 entries to the library path instead of the default "/lib" and
17034 "/usr/lib".
17035
7c98e6bb
DM
170362008-04-11 David S. Miller <davem@davemloft.net>
17037
17038 * testsuite/justsyms.t: Start at 0x100.
17039 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
17040 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
17041 long.
17042 * testsuite/script_test_2.cc: Adjust string and section length
17043 checks.
7c98e6bb 17044
99a37bfd
ILT
170452008-04-09 Ian Lance Taylor <iant@google.com>
17046
2cefc357
ILT
17047 PR gold/5996
17048 * script-sections.cc (Sections_element::allocate_to_segment): Add
17049 orphan parameter.
17050 (Output_section_definition::allocate_to_segment): Likewise.
17051 (Orphan_output_section::allocate_to_segment): Likewise.
17052 (Script_sections::attach_sections_using_phdrs_clause): Don't
17053 propagate non-PT_LOAD segments to orphan sections.
17054 * testsuite/Makefile.am (script_test_3.stdout): Generate using
17055 readelf rather than objdump.
17056 * testsuite/script_test_3.sh: Adjust accordingly. Test that
17057 .interp section and PT_INTERP segment are the same size.
17058 * testsuite/Makefile.in: Rebuild.
17059
99a37bfd
ILT
17060 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
17061 aliases for symbols defined in the same object.
17062 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
17063 (weak_alias_test_SOURCES): New variable.
17064 (weak_alias_test_DEPENDENCIES): New variable.
17065 (weak_alias_test_LDFLAGS): New variable.
17066 (weak_alias_test_LDADD): New variable.
17067 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
17068 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
17069 (weak_alias_test_3.o): New target.
17070 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
17071 * testsuite/weak_alias_test_main.cc: New file.
17072 * testsuite/weak_alias_test_1.cc: New file.
17073 * testsuite/weak_alias_test_2.cc: New file.
17074 * testsuite/weak_alias_test_3.cc: New file.
17075
780e49c5
ILT
170762008-04-08 Ian Lance Taylor <iant@google.com>
17077
cdb0b8f5
ILT
17078 * options.h (class General_options): Add --noinhibit-exec option.
17079 * main.cc (main): Check --noinhibit-exec.
17080
0864d551
ILT
17081 * options.h (class General_options): Define --wrap as a special
17082 option. Add wrap_symbols_ field.
17083 (General_options::any_wrap_symbols): New function.
17084 (General_options::is_wrap_symbol): New function.
17085 * options.cc (General_options::parse_wrap): New function.
17086 (General_options::General_options): Initialize wrap_symbols_.
17087 * symtab.cc (Symbol_table::wrap_symbol): New function.
17088 (Symbol_table::add_from_object): Handle --wrap.
17089 * symtab.h (class Symbol_table): Declare wrap_symbol.
17090 * target.h (Target::wrap_char): New function.
17091 (Target::Target_info): Add wrap_char field.
17092 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
17093 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
17094 * testsuite/testfile.cc (Target_test::test_target_info):
17095 Likewise.
17096
789aa6de
ILT
17097 * errors.cc (Errors::undefined_symbol): Mention symbol version if
17098 there is one.
17099
2c38906f
ILT
17100 * layout.h (class Layout): Add added_eh_frame_data_ field.
17101 * layout.cc (Layout::Layout): Initialize new field.
17102 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
17103 output section until we find a section we merged successfully.
17104 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
17105 that the size be non-zero.
17106
780e49c5
ILT
17107 * merge.cc (Object_merge_map::get_output_offset): Remove inline
17108 qualifier.
17109
7fcd0256
ILT
171102008-04-08 Craig Silverstein <csilvers@google.com>
17111
17112 * configure.ac: Export new conditional variable HAVE_ZLIB.
17113 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
17114 on HAVE_ZLIB.
17115 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
17116 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
17117
6835af53
ILT
171182008-04-07 Ian Lance Taylor <iant@google.com>
17119
e24f324c
ILT
17120 * version.cc (version_string): Set to "1.5".
17121
a036edd8
ILT
17122 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
17123 Add issued_non_pic_error_ field. Declare check_non_pic.
17124 (Target_x86_64::Scan::check_non_pic): New function.
17125 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
17126 (Target_x86_64::Scan::global): Likewise.
17127
624f8810
ILT
17128 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
17129 addend parameter. Change caller. Handle merge sections.
17130 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
17131 Address to Addend. Don't add in the result of
17132 local_section_offset, pass down the addend and use the returned
17133 value.
17134 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
17135 Update declarations of local_section_offset and symbol_value.
17136 * testsuite/two_file_test_1.cc (t18): New function.
17137 * testsuite/two_file_test_2.cc (f18): New function.
17138 * testsuite/two_file_test_main.cc (main): Call t18.
17139 * testsuite/two_file_test.h (t18, f18): Declare.
17140
6835af53
ILT
17141 * configure.ac: Don't test for objdump, c++filt, or readelf.
17142 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
17143 conditionals.
17144 (TEST_READELF): New variable.
17145 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
17146 (check_PROGRAMS): Add two_file_strip_test.
17147 (two_file_strip_test): New target.
17148 (check_PROGRAMS): Add two_file_same_shared_strip_test.
17149 (two_file_same_shared_strip_test_SOURCES): New variable.
17150 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
17151 (two_file_same_shared_strip_test_LDFLAGS): New variable.
17152 (two_file_same_shared_strip_test_LDADD): New variable.
17153 (two_file_shared_strip.so): New target.
17154 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
17155 (ver_test_5.syms, ver_test_7.syms): Likewise.
17156 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
17157 (strip_test_3.stdout): Use TEST_OBJDUMP.
17158 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
17159
86925eef
CC
171602008-04-04 Cary Coutant <ccoutant@google.com>
17161
17162 * symtab.h (Symbol::is_weak_undefined): New function.
17163 (Symbol::is_strong_undefined): New function.
17164 (Symbol::is_absolute): New function.
17165 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
17166 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
17167 absolute symbols.
17168 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
17169 (weak_undef_test): New target.
17170 * testsuite/Makefile.in: Rebuild.
17171 * testsuite/weak_undef_file1.cc: New file.
17172 * testsuite/weak_undef_file2.cc: New file.
17173 * testsuite/weak_undef_test.cc: New file.
17174
126f3ece
ILT
171752008-04-03 Craig Silverstein <csilvers@google.com>
17176
17177 * compressed_output.h (class Output_compressed_section): Use
17178 unsigned buffer.
17179 * compressed_output.cc (zlib_compress): Use unsigned buffers,
17180 add zlib header.
17181 (zlib_compressed_suffix): Removed.
17182 (Output_compressed_section::set_final_data_size): Use unsigned
17183 buffers.
17184 * testsuite/Makefile.am (flagstest_compress_debug_sections):
17185 Fix linker invocation.
17186 (flagstest_o_specialfile_and_compress_debug_sections):
17187 Likewise.
17188 * testsuite/Makefile.in: Regenerated.
17189
deae2a14
DM
171902008-04-02 David S. Miller <davem@davemloft.net>
17191
17192 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
17193 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
17194
70752818
ILT
171952008-04-02 Craig Silverstein <csilvers@google.com>
17196
17197 * TODO: New file.
17198
39d0cb0e
ILT
171992008-04-02 Ian Lance Taylor <iant@google.com>
17200
17201 * fileread.cc (File_read::find_view): Add byteshift and vshifted
17202 parameters. Update for new key type to views_. Change all
17203 callers.
17204 (File_read::read): Adjust for byteshift in returned view.
17205 (File_read::add_view): New function, broken out of
17206 find_and_make_view.
17207 (File_read::make_view): New function, broken out of
17208 find_and_make_view.
17209 (File_read::find_or_make_view): Add offset and aligned
17210 parameters. Rewrite accordingly. Change all callers.
17211 (File_read::get_view): Add offset and aligned parameters. Adjust
17212 for byteshift in return value.
17213 (File_read::get_lasting_view): Likewise.
17214 * fileread.h (class File_read): Update declarations.
17215 (class File_read::View): Add byteshift_ field. Add byteshift to
17216 constructor. Add byteshift method.
17217 * archive.h (Archive::clear_uncached_views): New function.
17218 (Archive::get_view): Add aligned parameter. Change all callers.
17219 * object.h (Object::get_view): Add aligned parameter. Change all
17220 callers.
17221 (Object::get_lasting_view): Likewise.
17222
17223 * fileread.cc (File_read::release): Don't call clear_views if
17224 there are multiple objects.
17225 * fileread.h (File_read::clear_uncached_views): New function.
17226 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
17227 on the archive.
17228
a1207466
CC
172292008-03-31 Cary Coutant <ccoutant@google.com>
17230
17231 Add thin archive support.
17232 * archive.cc (Archive::armagt): New const.
17233 (Archive::setup): Remove task parameter and calls to unlock.
17234 (Archive::unlock_nested_archives): New function.
17235 (Archive::read_header): Add nested_off parameter. Change
17236 all callers.
17237 (Archive::interpret_header): Likewise.
17238 (Archive::include_all_members): Change to handle thin
17239 archives.
17240 (Archive::include_member): Likewise.
17241 * archive.h (Archive::Archive): Add new parameters and
17242 initializers.
17243 (Archive::armagt): New const.
17244 (Archive::setup): Remove task parameter.
17245 (Archive::unlock_nested_archives): New function.
17246 (Archive::read_header): Add nested_off parameter.
17247 (Archive::interpret_header): Likewise.
17248 (Archive::Nested_archive_table): New typedef.
17249 (Archive::is_thin_archive_): New field.
17250 (Archive::nested_archives_): New field.
17251 (Archive::options_): New field.
17252 (Archive::dirpath_): New field.
17253 (Archive::task_): New field.
17254 * readsyms.cc (Read_symbols::do_read_symbols): Add check
17255 for thin archives. Pass additional parameters to
17256 Archive::Archive. Unlock the archive file after calling
17257 Archive::setup.
cd536b21 17258
479f6503
ILT
172592008-03-29 Ian Lance Taylor <iant@google.com>
17260
686c8caf
ILT
17261 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
17262 version symbol to be local.
17263 * testsuite/ver_test_4.sh: New file.
17264 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
17265 (check_DATA): Add ver_test_4.syms.
17266 (ver_test_4.syms): New target.
17267 * testsuite/Makefile.in: Rebuild.
17268
ab794b6b
ILT
17269 * output.cc
17270 (Output_section::Input_section_sort_entry::has_priority): New
17271 function.
17272 (Output_section::Input_section_sort_entry::match_file_name): New
17273 function.
17274 (Output_section::Input_section_sort_entry::match_section_name):
17275 Remove.
17276 (Output_section::Input_section_sort_entry::match_section_name_prefix):
17277 Remove.
17278 (Output_section::Input_section_sort_entry::match_section_file):
17279 Remove.
17280 (Output_section::Input_section_sort_compare::operator()): Rewrite
17281 using new Input_section_sort_entry functions. Sort crtbegin and
17282 crtend first. Sort sections with no priority before sections with
17283 a priority.
17284 * testsuite/initpri1.c (d3): Check j != 4.
17285 (cd5): New constructor/destructor function.
17286 (main): Check j != 2.
17287
479f6503
ILT
17288 * symtab.cc (Symbol_table::add_from_object): If we don't use the
17289 new symbol when resolving, don't call set_is_default.
17290 * testsuite/ver_test_7.cc: New file.
17291 * testsuite/ver_test_7.sh: New file.
17292 * testsuite/Makefile.am (ver_test_7.so): New target.
17293 (ver_test_7.o): New target.
17294 (check_SCRIPTS): Add ver_test_7.sh.
17295 (check_DATA): Add ver_test_7.syms.
17296 (ver_test_7.syms): New target.
17297
2fd32231
ILT
172982008-03-28 Ian Lance Taylor <iant@google.com>
17299
17300 * layout.cc (Layout::layout): If we see an input section with a
17301 name that needs sorting, set the must_sort flag for the output
17302 section.
17303 (Layout::make_output_section): If the name of the output section
17304 indicates that it might require sorting, set the may_sort flag.
17305 * output.h (Output_section::may_sort_attached_input_sections): New
17306 function.
17307 (Output_section::set_may_sort_attached_input_sections): New
17308 function.
17309 (Output_section::must_sort_attached_input_sections): New
17310 function.
17311 (Output_section::set_must_sort_attached_input_sections): New
17312 function.
17313 (class Output_section): Declare Input_section_sort_entry. Define
17314 Input_section_sort_compare. Declare
17315 sort_attached_input_sections. Add new fields:
17316 may_sort_attached_input_sections_,
17317 must_sort_attached_input_sections_,
17318 attached_input_sections_are_sorted_.
17319 * output.cc (Output_section::Output_section): Initialize new
17320 fields.
17321 (Output_section::add_input_section): Add an entry to
17322 input_sections_ if may_sort or must_sort are true.
17323 (Output_section::set_final_data_size): Call
17324 sort_attached_input_sections if necessary.
17325 (Output_section::Input_section_sort_entry): Define new class.
17326 (Output_section::Input_section_sort_compare::operator()): New
17327 function.
17328 (Output_section::sort_attached_input_sections): New function.
17329 * configure.ac: Check whether the compiler supports constructor
17330 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
17331 * testsuite/initpri1.c: New file.
17332 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
17333 CONSTRUCTOR_PRIORITY.
17334 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
17335 (initpri1_LDFLAGS): New variable.
17336 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
17337
18e6b24e
ILT
173382008-03-27 Ian Lance Taylor <iant@google.com>
17339
49bdd526
ILT
17340 * common.cc (Sort_commons::operator): Correct sorting algorithm.
17341 * testsuite/common_test_1.c: New file.
17342 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
17343 (common_test_1_SOURCES): New variable.
17344 (common_test_1_DEPENDENCIES): New variable.
17345 (common_test_1_LDFLAGS): New variable.
17346
18e6b24e
ILT
17347 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
17348 and commons_ correctly when NAME/VERSION does not override
17349 NAME/NULL.
17350 * testsuite/ver_test_6.c: New file.
17351 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
17352 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
17353 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
17354
04bf7072
ILT
173552008-03-26 Ian Lance Taylor <iant@google.com>
17356
5871526f
ILT
17357 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
17358 of an undefined symbol from a version script.
17359 * testsuite/Makefile.am (ver_test_5.so): New target.
17360 (ver_test_5.o): New target.
17361 (check_SCRIPTS): Add ver_test_5.sh.
17362 (check_DATA): Add ver_test_5.syms.
17363 (ver_test_5.syms): New target.
17364 * testsuite/ver_test_5.cc: New file.
17365 * testsuite/ver_test_5.script: New file.
17366 * testsuite/ver_test_5.sh: New file.
17367 * Makefile.in, testsuite/Makefile.in: Rebuild.
17368
04bf7072
ILT
17369 PR gold/5986
17370 Fix problems building gold with gcc 4.3.0.
17371 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
17372 (gold_error_at_location, gold_warning_at_location): Use it.
17373 * configure.ac: Check whether we can compile and use a template
17374 function with a printf attribute.
17375 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
17376 when jumping over bytes.
17377 * object.cc: Instantiate Object::read_section_data.
17378 * debug.h: Include <cstring>
17379 * dwarf_reader.cc: Include <algorithm>
17380 * main.cc: Include <cstring>.
17381 * options.cc: Include <cstring>.
17382 * output.cc: Include <cstring>.
17383 * script.cc: Include <cstring>.
17384 * script.h: Include <string>.
17385 * symtab.cc: Include <cstring> and <algorithm>.
17386 * target-select.cc: Include <cstring>.
17387 * version.cc: Include <string>.
17388 * testsuite/testmain.cc: Include <cstdlib>.
17389 * configure, config.in: Rebuild.
17390
874c5b28
ILT
173912008-03-25 Ian Lance Taylor <iant@google.com>
17392
819d6c3a
ILT
17393 * options.cc: Include "../bfd/bfdver.h".
17394 (options::help): Print bug reporting address.
17395
f4b2c6f5
ILT
17396 * version.cc (print_version): Adjust output for current value of
17397 BFD_VERSION_STRING.
17398
17399 * NEWS: New file.
17400
e96caa79
ILT
17401 * options.cc (options::help): Print list of supported targets.
17402 * target-select.h: Include <vector>.
17403 (class Target_selector): Make machine_, size_, and is_big_endian_
17404 fields const. Add bfd_name_ and instantiated_target_ fields.
17405 (Target_selector::Target_selector): Add bfd_name parameter.
17406 (Target_selector::recognize): Make non-virtual, call
17407 do_recognize.
17408 (Target_selector::recognize_by_name): Make non-virtual, call
17409 do_recognize_by_name.
17410 (Target_selector::supported_names): New function.
17411 (Target_selector::bfd_name): New function.
17412 (Target_selector::do_instantiate_target): New pure virtual
17413 function.
17414 (Target_selector::do_recognize): New virtual function.
17415 (Target_selector::do_recognize_by_name): New virtual function.
17416 (Target_selector::instantiate_target): New private function.
17417 (supported_target_names): Declare.
17418 * target-select.cc (Target_selector::Target_selector): Update for
17419 new parameter and fields.
17420 (select_target_by_name): Check that the name matches before
17421 calling recognize_by_name.
17422 (supported_target_names): New function.
17423 * i386.cc (class Target_selector_i386): Update Target_selector
17424 constructor call. Remove recognize and recognize_by_name. Add
17425 do_instantiate_target.
17426 * x86_64.cc (class Target_selector_x86_64): Likewise.
17427 * testsuite/testfile.cc (class Target_selector_test): Update for
17428 changes to Target_selector.
17429
874c5b28
ILT
17430 * README: Rewrite, with some notes on unsupported features.
17431
0a65a3a7
CC
174322008-03-24 Cary Coutant <ccoutant@google.com>
17433
17434 * i386.cc (Target_i386::Got_type): New enum declaration.
17435 (Target_i386::Scan::local): Updated callers of Output_data_got
17436 member functions.
17437 (Target_i386::Scan::global): Likewise.
17438 (Target_i386::Relocate::relocate): Likewise.
17439 (Target_i386::Relocate::relocate_tls): Likewise.
17440 * object.h (Got_offset_list): New class.
17441 (Sized_relobj::local_has_got_offset): Added got_type parameter.
17442 (Sized_relobj::local_got_offset): Likewise.
17443 (Sized_relobj::set_local_got_offset): Likewise.
17444 (Sized_relobj::local_has_tls_got_offset): Removed.
17445 (Sized_relobj::local_tls_got_offset): Removed.
17446 (Sized_relobj::set_local_tls_got_offset): Removed.
17447 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
17448 * output.cc (Output_data_got::add_global): Added got_type parameter.
17449 (Output_data_got::add_global_with_rel): Likewise.
17450 (Output_data_got::add_global_with_rela): Likewise.
17451 (Output_data_got::add_global_pair_with_rel): New function.
17452 (Output_data_got::add_global_pair_with_rela): New function.
17453 (Output_data_got::add_local): Added got_type parameter.
17454 (Output_data_got::add_local_with_rel): Likewise.
17455 (Output_data_got::add_local_with_rela): Likewise.
17456 (Output_data_got::add_local_pair_with_rel): New function.
17457 (Output_data_got::add_local_pair_with_rela): New function.
17458 (Output_data_got::add_global_tls): Removed.
17459 (Output_data_got::add_global_tls_with_rel): Removed.
17460 (Output_data_got::add_global_tls_with_rela): Removed.
17461 (Output_data_got::add_local_tls): Removed.
17462 (Output_data_got::add_local_tls_with_rel): Removed.
17463 (Output_data_got::add_local_tls_with_rela): Removed.
17464 * output.h (Output_data_got::add_global): Added got_type parameter.
17465 (Output_data_got::add_global_with_rel): Likewise.
17466 (Output_data_got::add_global_with_rela): Likewise.
17467 (Output_data_got::add_global_pair_with_rel): New function.
17468 (Output_data_got::add_global_pair_with_rela): New function.
17469 (Output_data_got::add_local): Added got_type parameter.
17470 (Output_data_got::add_local_with_rel): Likewise.
17471 (Output_data_got::add_local_with_rela): Likewise.
17472 (Output_data_got::add_local_pair_with_rel): New function.
17473 (Output_data_got::add_local_pair_with_rela): New function.
17474 (Output_data_got::add_global_tls): Removed.
17475 (Output_data_got::add_global_tls_with_rel): Removed.
17476 (Output_data_got::add_global_tls_with_rela): Removed.
17477 (Output_data_got::add_local_tls): Removed.
17478 (Output_data_got::add_local_tls_with_rel): Removed.
17479 (Output_data_got::add_local_tls_with_rela): Removed.
17480 * resolve.cc (Symbol::override_base_with_special): Removed
17481 reference to has_got_offset_ field.
17482 * symtab.cc (Symbol::init_fields): Replaced initialization
17483 of got_offset_ with got_offsets_. Removed initialization
17484 of has_got_offset_
53fcba31 17485 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
17486 (Symbol::got_offset): Likewise.
17487 (Symbol::set_got_offset): Likewise.
17488 (Symbol::has_tls_got_offset): Removed.
17489 (Symbol::tls_got_offset): Removed.
17490 (Symbol::set_tls_got_offset): Removed.
17491 (Symbol::got_offset_): Removed.
17492 (Symbol::tls_mod_got_offset_): Removed.
17493 (Symbol::tls_pair_got_offset_): Removed.
17494 (Symbol::got_offsets_): New field.
17495 (Symbol::has_got_offset): Removed.
17496 (Symbol::has_tls_mod_got_offset): Removed.
17497 (Symbol::has_tls_pair_got_offset): Removed.
17498 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
17499 (Target_x86_64::Scan::local): Updated callers of Output_data_got
17500 member functions.
17501 (Target_x86_64::Scan::global): Likewise.
17502 (Target_x86_64::Relocate::relocate): Likewise.
17503 (Target_x86_64::Relocate::relocate_tls): Likewise.
17504
bd52eafb
BE
175052008-03-25 Ben Elliston <bje@au.ibm.com>
17506
17507 * yyscript.y: Fix spelling error in comment.
17508
8b105e34
ILT
175092008-03-24 Ian Lance Taylor <iant@google.com>
17510
8ed814a9
ILT
17511 * options.h (class General_options): Define build_id option.
17512 * layout.h (class Layout): Declare write_build_id, create_note,
17513 create_build_id. Add build_id_note_ member.
17514 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
17515 "libiberty.h", "md5.h", "sha1.h".
17516 (Layout::Layout): Initialize eh_frame_data_,
17517 eh_frame_hdr_section_, and build_id_note_.
17518 (Layout::finalize): Call create_build_id.
17519 (Layout::create_note): New function, broken out of
17520 Layout::create_gold_note.
17521 (Layout::create_gold_note): Call create_note.
17522 (Layout::create_build_id): New function.
17523 (Layout::write_build_id): New function.
17524 (Close_task_runner::run): Call write_build_id.
17525
8b105e34
ILT
17526 * x86_64.cc: Correct license to GPLv3.
17527
086a1841
ILT
175282008-03-23 Ian Lance Taylor <iant@google.com>
17529
17530 * options.cc: Include "demangle.h".
17531 (parse_optional_string): New function.
17532 (parse_long_option): Handle takes_optional_argument.
17533 (parse_short_option): Update dash_z initializer. Handle
17534 takes_optional_argument.
17535 (General_options::General_options): Initialize do_demangle_.
17536 (General_options::finalize): Set do_demangle_. Handle demangling
17537 style.
17538 * options.h (parse_optional_string): Declare.
17539 (struct One_option): Add optional_arg field. Update constructor.
17540 Update call constructor calls. Add takes_optional_argument
17541 function.
17542 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
17543 (DEFINE_optional_string): Define.
17544 (General_options::demangle): Change from DEFINE_bool to
17545 DEFINE_optional_string.
17546 (General_options::no_demangle): New function.
17547 (General_options::do_demangle): New function.
17548 (General_options::set_do_demangle): New function.
17549 (General_options::execstack_status_): Move definition to end of
17550 class definition.
17551 (General_options::static_): Likewise.
17552 (General_options::do_demangle_): New field.
17553 * object.cc (big_endian>::get_symbol_location_info): Call
17554 Options::do_demangle, not Options::demangle.
17555 * symtab.cc (demangle): Likewise.
17556
cbb93e63
ILT
175572008-03-22 Ian Lance Taylor <iant@google.com>
17558
17559 * gold.h: Include <cstddef> and <sys/types.h>
17560 * options.h: Include <cstring>.
17561
ec531623
ILT
175622008-03-21 Ian Lance Taylor <iant@google.com>
17563
17564 * Added source code to GNU binutils.
752937aa 17565\f
b90efa5b 17566Copyright (C) 2008-2015 Free Software Foundation, Inc.
752937aa
NC
17567
17568Copying and distribution of this file, with or without modification,
17569are permitted in any medium without royalty provided the copyright
17570notice and this notice are preserved.
17571
17572Local Variables:
17573mode: change-log
17574left-margin: 8
17575fill-column: 74
17576version-control: never
17577End:
This page took 1.217028 seconds and 4 git commands to generate.