[GOLD] Add PowerPC64 -fsplit-stack support
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
bbec1a5d
AM
12015-05-16 Alan Modra <amodra@gmail.com>
2
3 * reloc.cc (Sized_relobj_file::find_functions): Use function_location.
4 * powerpc.cc (Target_powerpc::do_calls_non_split): New function.
5 (addi_12_1, addis_2_12, addis_12_1, cmpld_7_12_0): New constants.
6 (lis_0): Rename from lis_0_0.
7
efc6fa12
CC
82015-04-29 Cary Coutant <cary@google.com>
9 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
10
11 * gc.h (Garbage_collection::is_section_garbage): Change Object*
12 to Relobj*.
13 (Garbage_collection::add_reference): Likewise.
14 (Garbage_collection::gc_process_relocs): Likewise. Don't push
15 object/shndx pair onto *secvec for dynamic objects. Don't follow
16 relocations pointing to dynamic objects for GC.
17 * icf.cc (Icf::find_identical_sections): Change Object* to Relobj*.
18 (Icf::unfold_section): Likewise.
19 (Icf::is_section_folded): Likewise.
20 (Icf::get_folded_section): Likewise.
21 * icf.h: (Icf::get_folded_section): Likewise.
22 (Icf::unfold_section): Likewise.
23 (Icf::is_section_folded): Likewise.
24 (Icf::section_has_function_pointers): Likewise.
25 (Icf::set_section_has_function_pointers): Likewise.
26 * object.h (Section_id): Likewise.
27 (Const_section_id): Likewise.
28 * output.cc (Output_section::update_section_layout): Likewise.
29 * output.h: (Output_section_lookup_maps::find_relaxed_input_section):
30 Likewise.
31 * plugin.cc (update_section_order): Likewise.
32 (unique_segment_for_sections): Likewise.
33 * powerpc.cc (Powerpc_relobj::add_reference): Likewise.
34 (Target_powerpc::do_gc_add_reference): Likewise.
35 (Target_powerpc::gc_process_relocs): Likewise.
36 (Target_powerpc::do_gc_add_reference): Likewise.
37 * symtab.cc (Symbol_table::is_section_folded): Likewise.
38 (Symbol_table::gc_mark_symbol): Likewise.
39 * symtab.h: (Symbol_table::is_section_folded): Likewise.
40 * target.h: (Sized_target::gc_add_reference): Likewise.
41 (Sized_target::do_gc_add_reference): Likewise.
42
f9d3ecaa
NC
432015-04-29 Nick Clifton <nickc@redhat.com>
44
45 * po/fi.po: Updated Finnish translation.
46
faa2211d
AM
472015-04-28 Alan Modra <amodra@gmail.com>
48
49 * powerpc.cc (Target_powerpc::do_dynsym_value): Use Address rather
50 than unsigned int for find_global_entry result temp. Compare
51 against invalid_address.
52 (Target_powerpc::do_plt_address_for_global): Likewise.
53 (Target_powerpc::Relocate::relocate): Likewise. Don't assert
54 on plt call stub existence for debug info. Do assert for plt
55 and global entry stub existence if an alloc section.
56
6ec65f28
AM
572015-04-28 Alan Modra <amodra@gmail.com>
58
59 * powerpc.cc (Target_powerpc::Relocate::relocate): Don't assert
60 on missing global entry stub due to bogus debug info.
61
7a2a1c79
HS
622015-04-27 Han Shen <shenhan@google.com>
63
64 * options.h (--fix-cortex-a53-843419): Rename option.
65 * aarch64.cc (AArch64_relobj::do_count_local_symbols): Use renamed
66 option.
67 (AArch64_relobj::scan_sections_for_stubs): Use renamed option.
68
cfbf0e3c
RÁE
692015-04-27 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
70
71 PR gold/18327
72 * output.cc (Output_section::is_input_address_mapped): Assume a missing
73 entry is mapped.
74 * testsuite/Makefile.am: Add the eh_test test.
75 * testsuite/Makefile.in: Regenerate.
76 * testsuite/eh_test_a.cc: New test.
77 * testsuite/eh_test_b.cc: New test.
78
6ec65f28
AM
792015-04-23 Sriraman Tallam <tmsriram@google.com>
80
a100d66f
ST
81 * options.h (--weak-unresolved-symbols): New option.
82 * symtab.cc (Symbol_table::sized_write_globals): Change symbol
83 binding to weak with new option.
84 * symtab.h (is_weak_undefined): Check for new option.
85 (is_strong_undefined): Check for new option.
86 * testsuite/Makefile.am (weak_unresolved_symbols_test): New test.
87 * testsuite/Makefile.in: Regenerate.
88 * testsuite/weak_unresolved_symbols_test.cc: New file.
89
4b889c30
IC
902015-04-20 Ian Coolidge <icoolidge@google.com>
91
92 * symtab.cc (Symbol::should_add_dynsym_entry): Return true for
93 GNU_UNIQUE.
94
4277535c
RÁE
952015-04-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
96
97 * gc.cc (Garbage_collection::do_transitive_closure): Use back and
98 push_back.
99 * gc.h (Garbage_collection): Use a std::vector instead of a std::queue.
100 * object.cc (Sized_relobj_file::do_layout): Use push_back.
101 * powerpc.cc (process_gc_mark): Use push_back.
102 (Target_powerpc::do_gc_mark_symbol): Use push_back.
103 * symtab.cc (Symbol_table::gc_mark_symbol): Use push_back.
104
7a2a1c79 1052015-04-16 Han Shen <shenhan@google.com>
5019d64a 106
6ec65f28
AM
107 * aarch64.cc (AArch64_insn_utilities): New utility class.
108 (AArch64_relobj::Mapping_symbol_position): New struct.
109 (AArch64_relobj::Mapping_symbol_info): New typedef.
110 (AArch64_relobj::do_count_local_symbols): New function overriding
111 parent's implementation.
112 (AArch64_relobj::mapping_symbol_info_): New member
113 (AArch64_relobj::scan_erratum_843419): New method.
114 (Target_aarch64::scan_erratum_843419_span): New method.
115 (Target_aarch64::is_erratum_843419_sequence): New method.
116 * options.h (fix_cortex_a53): New option.
5019d64a 117
a6a17750
CC
1182015-04-09 Cary Coutant <ccoutant@google.com>
119
120 * symtab.cc (Symbol::final_value_is_known): Check for TLS symbol
121 in a PIE link.
122 * testsuite/Makefile.am (tls_pie_test.sh): New test.
123 * testsuite/Makefile.in: Regenerate.
124 * testsuite/tls_pie_test.sh: New.
125
437ddf0c
CC
1262015-04-09 Cary Coutant <ccoutant@google.com>
127
128 * debug.h (DEBUG_LOCATION): New.
129 (DEBUG_ALL): Include DEBUG_LOCATION.
130 (debug_string_to_enum): Add DEBUG_LOCATION.
131 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Fix debug
132 output to print correct context.
133 (Sized_dwarf_line_info::do_addr2line): Add debug output. Return
134 up to 4 more locations at the beginning of the function.
135 * symtab.cc (Symbol_table::detect_odr_violations): Get canonical
136 result before sorting list of line numbers.
137 * testsuite/debug_msg.sh: Allow range of line numbers for
138 canonical results on optimized code.
139
24491327
HS
1402015-04-07 HC Yen <hc.yen@mediatek.com>
141
142 Add AArch32 support for gold linker.
143 gold/
144 * arm.cc: Add V8 arch combine table.
145
7fa5525f
RÁE
1462015-04-06 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
147
148 * aarch64.cc (do_reloc_addend): Fix signature to match the parent one.
149
5368dcf2
RÁE
1502015-04-06 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
151
152 * gc.cc (Garbage_collection::do_transitive_closure): Avoid a call
153 to find by using the return value of insert.
154
9dbb4b02
RÁE
1552015-04-06 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
156
157 * gc.cc (Garbage_collection::do_transitive_closure): Avoid a copy
158 constructor call.
159
1fa29f10
IT
1602015-04-06 Ilya Tocar <ilya.tocar@intel.com>
161
162 PR gold/17641
163 * x86_64.cc (Target_x86_64::can_convert_mov_to_lea): New.
164 (Target_x86_64::Scan::local): Don't create GOT entry, when we
165 can convert mov to lea.
166 (Target_x86_64::Scan::global): Ditto.
167 (Target_x86_64::Relocate::relocate): Convert mov foo@GOTPCREL(%rip),
168 %reg to lea foo(%rip), %reg if possible.
169 * testsuite/Makefile.am (x86_64_mov_to_lea): New test.
170 * testsuite/x86_64_mov_to_lea1.s: New.
171 * testsuite/x86_64_mov_to_lea2.s: Ditto.
172 * testsuite/x86_64_mov_to_lea3.s: Ditto.
173 * testsuite/x86_64_mov_to_lea4.s: Ditto.
174 * testsuite/x86_64_mov_to_lea.sh: Ditto.
175
39f3de7c
L
1762015-04-02 H.J. Lu <hongjiu.lu@intel.com>
177
178 * configure: Regenerated.
179
c4fc4724
IT
1802015-04-01 Ilya Tocar <ilya.tocar@intel.com>
181
182 PR gold/17640
183 * i386.cc (Target_i386::can_convert_mov_to_lea): New.
184 (Target_i386::Scan::local): Don't create GOT entry, when we
185 can convert GOT to GOTOFF.
186 (Target_i386::Scan::global): Ditto.
187 (Target_i386::Relocate::relocate): Convert mov foo@GOT(%reg), %reg to
188 lea foo@GOTOFF(%reg), %reg if possible.
189 * testsuite/Makefile.am (i386_mov_to_lea): New test.
190 * testsuite/i386_mov_to_lea1.s: New.
191 * testsuite/i386_mov_to_lea2.s: Ditto.
192 * testsuite/i386_mov_to_lea3.s: Ditto.
193 * testsuite/i386_mov_to_lea4.s: Ditto.
194 * testsuite/i386_mov_to_lea5.s: Ditto.
195 * testsuite/i386_mov_to_lea.sh: Ditto.
196
918357b9
L
1972015-04-01 H.J. Lu <hongjiu.lu@intel.com>
198
199 * Makefile.am (ZLIB): New.
200 (ZLIBINC): Likewise.
201 (AM_CFLAGS): Add $(ZLIBINC).
202 (AM_CXXFLAGS): Likewise.
203 (ldadd_varldadd_var): Add $(ZLIB).
204 (incremental_dump_LDADD): Likewise.
205 (dwp_LDADD): Likewise.
206 * compressed_output.cc: Don't check HAVE_ZLIB_H to include
207 <zlib.h>.
208 (zlib_compress): Don't check HAVE_ZLIB_H.
209 (zlib_decompress): Likewise.
210 * options.h (compress_debug_sections): Likewise.
211 * configure.ac (AM_CONDITIONAL): Removed.
212 * testsuite/Makefile.am (ZLIB): New.
213 (LDADD): Add $(ZLIB).
214 Don't check HAVE_ZLIB.
215 * Makefile.in: Regenerated.
216 * config.in: Likewise.
217 * configure: Likewise.
218 * testsuite/Makefile.in: Likewise.
219
6b0ad2eb
JY
2202015-03-30 Jing Yu <jingyu@google.com>
221
222 * aarch64-reloc.def: New TLSLD_ADD_DTPREL_HI12,
223 TLSLD_ADD_DTPREL_LO12_NC.
224 * aarch64.cc (Target_aarch64::define_tls_base_symbol): Always let
225 _TLS_MODULE_BASE_ point to the start of tls segment.
226 (Target_aarch64::optimize_tls_reloc): Add cases for
227 R_AARCH64_TLSLD_ADD_DTPREL_HI12 and
228 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC.
229 (Target_aarch64::Scan::local): Likewise.
230 (Target_aarch64::Scan::global): Likewise.
231 (Target_aarch64::Relocate::relocate): Likewise.
232 (Target_aarch64::Relocate::relocate_tls): Likewise. And remove
233 subtracting tls segment size from symbol value for TLSLD_*_DTPREL
234 relocations.
235
0916f9e7
RÁE
2362015-03-27 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
237
238 * merge.cc (Object_merge_map::add_mapping): call
239 Object_merge_map::Input_merge_map::add_mapping.
240 (Object_merge_map::Input_merge_map::add_mapping): New.
241 (Output_merge_data::do_add_input_section): Call
242 get_or_make_input_merge_map before a loop.
243 (Output_merge_string<Char_type>::finalize_merged_data): Call
244 get_or_make_input_merge_map before a loop.
245 * merge.h (Object_merge_map): Make Input_merge_map public.
246 * object.cc (Relobj::add_merge_mapping): Use get_or_create_merge_map.
247 (Relobj::get_or_create_merge_map): New.
248 * object.h (Relobj::get_or_create_merge_map): New.
249
282c9750
AM
2502015-03-24 Alan Modra <amodra@gmail.com>
251
252 PR 18147
253 * powerpc.cc (Target_powerpc::Relocate::relocate): Don't report
254 relocation errors for branches to strong undefined symbols.
255
67f95b96
RÁE
2562015-03-23 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
257
258 * merge.cc (Object_merge_map::get_input_merge_map): Make it const.
259 (Object_merge_map::is_merge_section_for): Remove.
260 (Object_merge_map::find_merge_section): New.
261 * merge.h (Object_merge_map::is_merge_section_for): Remove.
262 (Object_merge_map::find_merge_section): New.
263 (Object_merge_map::get_input_merge_map): Add a const version.
264 * object.cc (Relobj::is_merge_section_for): Remove.
265 (Relobj::find_merge_section): New.
266 * object.h (Relobj::is_merge_section_for): Remove.
267 (Relobj::find_merge_section): New.
268 * output.cc
269 (Output_section::Input_section::is_merge_section_for): Remove.
270 (Output_section::add_merge_input_section): Don't call
271 add_merge_input_section.
272 (Output_section::find_merge_section): Return const. Use
273 object->find_merge_section.
274 (Output_section::build_lookup_maps): Don't build a map for
275 merge sections.
276 (Output_section::is_input_address_mapped): Return false if
277 section is not found.
278 (Output_section::find_starting_output_address): Use
279 find_merge_section instead of is_merge_section_for.
280 (Output_section::add_script_input_section): Don't build a map for
281 merge sections.
282 * output.h (Output_section_lookup_maps::merge_sections_by_id_): Remove.
283 (Output_section_lookup_maps::find_merge_section): Remove.
284 (Output_section_lookup_maps::add_merge_input_section) Remove.
285 (Output_section::find_merge_section): Return const.
286
152f7024
CC
2872015-03-22 Cary Coutant <cary@google.com>
288
289 PR gold/18106
290 * i386.cc (Target_i386::Relocate::tls_gd_to_ie): Fix support for
291 non-SIB form of lea, with nop after the call.
292
bccffdfd
CC
2932015-03-21 Cary Coutant <cary@google.com>
294
295 PR gold/14217
296 * output.cc (Output_segment::is_first_section_relro): Don't ignore
297 .tdata section.
298 (Output_segment::set_section_addresses): Don't align size of relro
299 segment for .tbss.
300
1c582fe7
CC
3012015-03-21 Cary Coutant <cary@google.com>
302
303 PR gold/18010
304 * stringpool.cc (Stringpool_template): Don't optimize if section
305 alignment is greater than sizeof(char).
306
410da591
CC
3072015-03-21 Cary Coutant <cary@google.com>
308
309 PR gold/18048
310 * script-c.h (script_include_directive): Add first_token parameter.
311 * script.cc (script_include_directive): Add first_token parameter, and
312 pass it to read_script_file.
313 * yyscript.y (PARSING_SECTIONS_BLOCK, PARSING_SECTION_CMDS)
314 (PARSING_MEMORY_DEF): New tokens.
315 (top): Add new productions for INCLUDE files.
316 (file_cmd): Replace file_or_sections_cmd with copy of its productions.
317 Pass PARSING_LINKER_SCRIPT to script_include_directive.
318 (section_block_cmd): Likewise; pass PARSING_SECTIONS_BLOCK.
319 (section_cmd): Pass PARSING_SECTION_CMDS.
320 (file_or_sections_cmd): Remove.
321 (memory_def): Pass PARSING_MEMORY_DEF.
322 * testsuite/Makefile.am (memory_test_2): New test.
323 * testsuite/Makefile.in: Regenerate.
324 * testsuite/memory_test_inc.t: New script file.
325 * testsuite/memory_test_inc_1.t.src: New script file.
326 * testsuite/memory_test_inc_2.t.src: New script file.
327 * testsuite/memory_test_inc_3.t.src: New script file.
328
0d5bbdb0
CC
3292015-03-21 Cary Coutant <cary@google.com>
330
331 * dwp.cc (Sized_relobj_dwo::do_section_contents): Delete.
332 (Sized_relobj_dwo::setup): Build compressed section map.
333 (Sized_relobj_dwo::do_decompressed_section_contents): Delete.
334 * dynobj.cc (Sized_dynobj::base_read_symbols): Build compressed
335 section map.
336 * object.cc (Sized_relobj_file::Sized_relobj_file): Remove
337 compressed_sections_ field.
338 (build_compressed_section_map): Take Object instead of
339 Sized_relobj_file parameter; add decompress_if_needed parameter.
340 (Sized_relobj_file::do_find_special_sections): Store compressed
341 section map in parent Object.
342 (Sized_relobj_file::do_decompressed_section_contents): Move
343 implementation to Object::decompressed_section_contents.
344 (Sized_relobj_file::do_discard_decompressed_sections): Move
345 implementation to Object::discard_decompressed_sections.
346 * object.h (build_compressed_section_map): Declare.
347 (Object::Object): Add compressed_sections_ field.
348 (Object::section_is_compressed): Move implementation here.
349 (Object::decompressed_section_contents): De-virtualize.
350 (Object::discard_decompressed_sections): De-virtualize.
351 (Object::do_section_is_compressed): Delete.
352 (Object::do_decompressed_section_contents): Delete.
353 (Object::set_compressed_sections): New method.
354 (Object::compressed_sections): New method.
355 (Object::compressed_sections_): New data member.
356 (Compressed_section_info, Compressed_section_map): Move to top of file.
357 (Sized_relobj_file::do_section_is_compressed): Delete.
358 (Sized_relobj_file::do_decompressed_section_contents): Delete.
359 (Sized_relobj_file::do_discard_decompressed_sections): Delete.
360 (Sized_relobj_file::compressed_sections_): Move to Object class.
361
bd9e0d46
CC
3622015-03-21 Cary Coutant <ccoutant@google.com>
363
364 PR gold/18152
365 * gold.cc (queue_middle_tasks): Finalize .eh_frame after laying out
366 deferred objects.
367
943c8b43
CC
3682015-03-11 Cary Coutant <ccoutant@google.com>
369
370 * options.cc (General_options::finalize): Don't allow -z relro
371 with incremental linking.
372 * testsuite/Makefile.am (incremental_test): Add -z norelro.
373 (incremental_test_2): Likewise.
374 (incremental_test_3): Likewise.
375 (incremental_test_4): Likewise.
376 (incremental_test_5): Likewise.
377 (incremental_test_6): Likewise.
378 (incremental_copy_test): Likewise.
379 (incremental_common_test_1): Likewise.
380 (incremental_comdat_test_1): Likewise.
381 * testsuite/Makefile.in: Regenerate.
382
e1663197
CC
3832015-03-09 Cary Coutant <ccoutant@google.com>
384
385 PR gold/14675
386 * ehframe.cc (Eh_frame::add_ehframe_input_section): Change return type;
387 return enum indicating whether .eh_frame section is empty, optimizable,
388 unrecognized, or an end marker. Adjust explicit instantiations.
389 * ehframe.h (Eh_frame::Eh_frame_section_disposition): New enum type.
390 (Eh_frame::add_ehframe_input_section): Change return type.
391 * gold.cc (queue_middle_tasks): Call Layout::finalize_eh_frame_section.
392 * layout.cc (Layout::layout_eh_frame): Don't add optimized sections
393 to the .eh_frame output section until we see the end marker.
394 (Layout::finalize_eh_frame_section): New.
395 * layout.h: (Layout::finalize_eh_frame_section): New.
396
beb8418f
L
3972015-03-05 H.J. Lu <hongjiu.lu@intel.com>
398
399 * output.cc (Relobj::initialize_input_to_output_map<size>):
400 Remove typename on elfcpp::Elf_types<size>::Elf_Addr.
401
48c73428
CC
4022015-03-04 Cary Coutant <ccoutant@google.com>
403
404 * parameters.cc (Parameters::set_target_once): Call
405 Target::select_as_default_target just once from here...
406 (set_parameters_target): ...instead of from here.
407
4082015-03-04 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
dbe40a88
RÁE
409
410 * ehframe.cc (Cie::set_output_offset): Pass in and use a
411 Output_section_data instead of a Merge_map.
412 (Eh_frame::Eh_frame): Don't initialize merge_map_.
413 (Eh_frame::read_cie): Use add_merge_mapping instead of
414 Merge_map::add_mapping.
415 (Eh_frame::read_fde): Ditto.
416 (Eh_frame::set_final_data_size): Use this instead of this->merge_map_.
417 (Eh_frame::do_output_offset): Use merge_output_offset istead of
418 merge_map_->get_output_offset.
419 (Eh_frame::do_is_merge_section_for): Delete.
420 * ehframe.h (Fde::add_mapping): Pass in and use a Output_section_data
421 instead of a Merge_map.
422 (Cie::set_output_offset): Pass in a Output_section_data instead of a
423 Merge_map.
424 (Eh_frame::do_is_merge_section_for): Delete.
425 (Eh_frame::merge_map_): Delete.
426 * merge.cc (Object_merge_map::get_or_make_input_merge_map): Pass in
427 and use a Output_section_data instead of a Merge_map.
428 (Object_merge_map::add_mapping): Ditto.
429 (Object_merge_map::get_output_offset): Remove the merge_map argument.
430 (Object_merge_map::is_merge_section_for): Pass in and use a
431 Output_section_data instead of a Merge_map.
432 (Merge_map): Delete.
433 (Output_merge_base::do_output_offset): Use merge_output_offset instead
434 of merge_map_.get_output_offset.
435 (Output_merge_base::do_is_merge_section_for): Delete.
436 (Output_merge_data::do_add_input_section): Use
437 object->add_merge_mapping instead of add_mapping.
438 (Output_merge_string<Char_type>::finalize_merged_data): Ditto.
439 * merge.h (Merge_map): Delete forward declaration.
440 (Object_merge_map::add_mapping): Pass in and use a Output_section_data
441 instead of a Merge_map.
442 (Object_merge_map::get_output_offset): Remove the merge_map argument.
443 (Object_merge_map::is_merge_section_for): Pass in and use a
444 Output_section_data instead of a Merge_map.
445 (Input_merge_map::Object_merge_map::merge_map): Replace with
446 output_data.
447 (Object_merge_map::get_or_make_input_merge_map): Pass in and use a
448 Output_section_data instead of a Merge_map.
449 (Merge_map): Delete.
450 (Output_merge_base::Output_merge_base): Don't initialize merge_map_.
451 (Output_merge_base::do_is_merge_section_for): Delete.
452 (Output_merge_base::add_mapping): Delete.
453 (Output_merge_base::merge_map_): Delete.
454 * object.cc (Relobj::initialize_input_to_output_map): New.
455 (Relobj::initialize_input_to_output_map): New.
456 (Relobj::merge_output_offset): New.
457 (Relobj::is_merge_section_for): New.
458 (Relobj::initialize_input_to_output_map): Instantiate for 32 and 64
459 bits.
460 * object.h (Relobj::merge_map): Delete.
461 (initialize_input_to_output_map): New.
462 (set_merge_map): Delete.
463 (add_merge_mapping): New.
464 (merge_output_offset): New.
465 (is_merge_section_for): New.
466 * output.cc (Output_section::Input_section::is_merge_section_for):
467 Use object->is_merge_section_for.
468 * output.h (Output_section_data::is_merge_section_for): Delete.
469 (Output_section_data::do_is_merge_section_for): Delete.
470 * reloc.cc (Merged_symbol_value<size>::initialize_input_to_output_map):
471 Use object->initialize_input_to_output_map.
472 (Merged_symbol_value<size>::value_from_output_section): Use
473 object->merge_output_offset.
474
48c73428 4752015-03-02 Peter Collingbourne <pcc@google.com>
2c7b626c
CC
476 Cary Coutant <ccoutant@google.com>
477
478 * output.cc (Output_section::add_merge_input_section): Do not
479 attempt to merge sections with an entsize of 0.
480
48c73428 4812015-03-02 Khem Raj <raj.khem@gmail.com>
5b07cd84
CC
482
483 * attributes.h (class Output_attributes_section_data ): Add
484 do_print_to_mapfile function.
485
ec86f434
AM
4862015-02-24 Alan Modra <amodra@gmail.com>
487
488 PR 18010
489 * powerpc.cc (Powerpc_relocate_functions::addr16_ds): Always
490 complain if value is not a multiple of four.
491 (Target_powerpc::Relocate::relocate): Correct handling of
492 R_POWERPC_GOT_TPREL16 and R_POWERPC_GOT_TPREL16_LO for ppc64.
493
be66981e
L
4942015-02-21 H.J. Lu <hongjiu.lu@intel.com>
495
496 * configure.ac (default_size): Set to 32 for x32.
497 * configure: Regenerated.
498
e3ee8ed4
AM
4992015-02-18 Alan Modra <amodra@gmail.com>
500
501 PR 17954
502 * powerpc.cc (Global_symbol_visitor_opd::operator()): Set default
503 visibility.
504
3a935c6c
RÁE
5052015-02-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
506
507 * gc.h (Garbage_collection::add_reference): Don't use find.
508
e0a1e121
RÁE
5092015-02-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
510
511 * object.cc (write_local_symbols): avoid std::vector copy.
512
45a4fb1a
RÁE
5132015-02-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
514
515 * merge.cc (get_output_offset): Use upper_bound instead of lower_bound.
516
2d9afefe
MW
5172015-02-09 Mark Wielaard <mjw@redhat.com>
518
519 * gdb-index.cc (Gdb_index_info_reader::visit_top_die): Recognize
520 DW_LANG_Fortran03 and DW_LANG_Fortran08.
521
e9c1bdad
CC
5222015-02-16 Cary Coutant <ccoutant@google.com>
523
524 PR gold/13577
525 PR gold/16992
526 * layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or
527 DF_SYMBOLIC if --dynamic-list option is used.
528 * options.cc (General_options::finalize): --dynamic-list is not
529 mutually exclusive with -Bsymbolic.
530 * symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not
531 listed in --dynamic-list.
532 * testsuite/Makefile.am (dynamic_list_lib2.so): Add
533 -Bsymbolic-functions.
534 * testsuite/Makefile.in: Regenerate.
535
0ed4b0bf
CC
5362015-02-16 Cary Coutant <ccoutant@google.com>
537
538 PR gold/17971
539 * incremental.cc: Remove redundant include of "output.h".
540
1a920511
JY
5412015-02-12 Jing Yu <jingyu@google.com>
542
543 * aarch64-reloc.def (TLSLE_MOVW_TPREL_G2, TLSLE_MOVW_TPREL_G1,
544 TLSLE_MOVW_TPREL_G1_NC, TLSLE_MOVW_TPREL_G0, TLSLE_MOVW_TPREL_G0_NC,):
545 New relocation.
546 * aarch64.cc (Target_aarch64::Scan::local): Add cases for new
547 TLSLE_MOVW_* relocations.
548 (Target_aarch64::Scan::global): Likewise.
549 (Target_aarch64::Relocate::relocate): Likewise.
550 (Target_aarch64::Relocate::relocate_tls): Add cases and handlings
551 for new TLSLE_MOVW_* relocations.
552
07f107f3
WN
5532015-02-11 Will Newton <will.newton@linaro.org>
554
555 PR gold/13321
556 * arm.cc (Target_arm::make_plt_section): Create an ARM
557 state mapping symbol at the start of the PLT.
558
e051a5b5
L
5592015-02-09 H.J. Lu <hongjiu.lu@intel.com>
560
561 * testsuite/Makefile.am (two_file_shared_2_pic_1_test_DEPENDENCIES):
562 Replace two_file_shared_2.so with two_file_shared_1.so.
563 * testsuite/Makefile.in: Regenerated.
564
dddcc5b9
AM
5652015-02-09 Alan Modra <amodra@gmail.com>
566
567 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add libweak_undef_2.a,
568 plugin_test_thin.a and defsym_test.
569 * testsuite/Makefile.in: Regenerate.
570
b39b8b9d
RÁE
5712015-02-04 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
572
573 * merge.cc (do_add_input_section): Combine loop epilogue into main loop
574 body.
575
b66d1c52
CC
5762015-02-04 Peter Collingbourne <pcc@google.com>
577
578 * plugin.cc (Pluginobj::get_symbol_resolution_info): Resolve
579 forwarding symbols when computing symbol resolution info for plugins.
580 * plugin.h (Plugin_manager::symtab): New method.
581 (Pluginobj::get_symbol_resolution_info): Add symtab parameter.
582
23081de0
CC
5832015-02-03 Cary Coutant <ccoutant@google.com>
584 Peter Collingbourne <pcc@google.com>
585
586 PR gold/15660
587 * archive.cc (Thin_archive_object_unlocker): New class.
588 (Archive::include_member): Unlock external members of thin archives.
589 * testsuite/Makefile.am (plugin_test_1): Rename .syms files.
590 (plugin_test_2): Likewise.
591 (plugin_test_3): Likewise.
592 (plugin_test_4): Likewise.
593 (plugin_test_5): Likewise.
594 (plugin_test_6): Likewise.
595 (plugin_test_7): Likewise.
596 (plugin_test_8): Likewise.
597 (plugin_test_9): Likewise.
598 (plugin_test_10): Likewise.
599 (plugin_test_11): New test case.
600 * testsuite/Makefile.in: Regenerate.
601 * testsuite/plugin_test.c (claim_file_hook): Check for parallel .syms
602 file to decide whether to claim file.
603 (all_symbols_read_hook): Likewise.
604 * testsuite/plugin_test_1.sh: Adjust expected output.
605 * testsuite/plugin_test_2.sh: Likewise.
606 * testsuite/plugin_test_3.sh: Likewise.
607 * testsuite/plugin_test_6.sh: Likewise.
608 * testsuite/plugin_test_tls.sh: Likewise.
609 * testsuite/plugin_test_11.sh: New testcase.
610
6112015-02-03 Cary Coutant <ccoutant@google.com>
612
613 * descriptors.cc (Descriptors::open): Set artificially-low limit for
614 file descriptors when debugging enabled. Add debug output.
615 (Descriptors::release): Add debug output.
616 (Descriptors::close_some_descriptor): Likewise.
617 (Descriptors::close_all): Likewise.
618 * fileread.cc (File_read::lock): Likewise.
619 (File_read::unlock): Likewise.
620
24dd5808
CC
6212015-02-02 Cary Coutant <ccoutant@google.com>
622
623 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for
624 executable output file.
625
fa89cc82
HS
6262015-01-22 Han Shen <shenhan@google.com>
627
628 * arm.cc (Target_arm::Target_arm): Add initialization for new members.
629 (Target_arm::do_plt_address_for_global): New method.
630 (Target_arm::do_plt_address_for_local): New method.
631 (Target_arm::rel_irelative_section): New method.
632 (Target_arm::make_data_plt): Add more parameters for plt ctor.
633 (Target_arm::do_make_data_plt): Add more parameters for plt ctor.
634 (Target_arm::Scan::symbol_needs_plt_entry): Add ifunc support.
635 (Target_arm::Scan::reloc_needs_plt_for_ifunc): Add ifunc support.
636 (Target_arm::Scan::check_non_pic): Add ifunc support.
637 (Target_arm::Scan::local): Add ifunc support.
638 (Target_arm::Scan::global): Add ifunc support.
639 (Target_arm::make_plt_section): New method.
640 (Target_arm::make_plt_entry): Change to call to make_plt_section.
641 (Target_arm::make_local_ifunc_plt_entry): New method.
642 (Target_arm::got_irelative_): New member.
643 (Target_arm::rel_irelative_): New member.
644 (Target_arm::got_section): Add creation for got_irelative_.
645 (Target_arm::rel_dyn_section): Add creation for rel_irelative_.
646 (Target_arm::Relocate::relocate): Properly set local ifunc address.
647 (Target_arm::do_dynsym_value): Properly set global ifunc address.
648 (Target_arm::scan_reloc_for_stub): Properly set global ifunc address.
649 (Output_data_plt_arm::IRelative_data): New type.
650 (Output_data_plt_arm::Output_data_plt_arm): Add more parameters.
651 (Output_data_plt_arm::add_entry): Add more parameters.
652 (Output_data_plt_arm::add_relocation): New method.
653 (Output_data_plt_arm::add_local_ifunc_entry): New method.
654 (Output_data_plt_arm::rel_irelative): New method.
655 (Output_data_plt_arm::entry_count): Modified.
656 (Output_data_plt_arm::address_for_global): New method.
657 (Output_data_plt_arm::address_for_local): New method.
23081de0 658gold/
fa89cc82
HS
659 (Output_data_plt_arm::set_final_data_size): Add irelative_count_.
660 (Output_data_plt_arm::insert_irelative_data): New method.
661 (Output_data_plt_arm::irelative_rel_): New member.
662 (Output_data_plt_arm::got_): New member.
663 (Output_data_plt_arm::got_irelative_): New member.
664 (Output_data_plt_arm::irelative_count_): New member.
665 (Output_data_plt_arm::IRelative_data_vec): New typedef.
666 (Output_data_plt_arm::irelative_data_vec_): New member.
667 (Output_data_plt_arm::do_write): Write out irelative entries.
668 (Output_data_plt_arm_standard::Output_data_plt_arm_standard): Add
669 more parameters to ctor.
670 (Output_data_plt_arm_nacl::Output_data_plt_arm_nacl): Add
671 more parameters to ctor.
672 * output.h (Output_data_reloc::add_local_relative): New method.
673 * aarch64.cc (Output_data_plt_aarch64): Fixed typo in comment.
674
0f81d3f0
AM
6752015-01-29 Alan Modra <amodra@gmail.com>
676
677 * powerpc.cc (Target_powerpc::Relocate::relocate): Correct GOT_TLSLD
678 and GOT_TLSGD to LE optimization.
679
65d92137
CC
6802015-01-28 Cary Coutant <ccoutant@google.com>
681
682 * x86_64.cc (Target_x86_64::Scan::global): Allow IE-to-LE optimization
683 for undef TLS symbols.
684 (Target_x86_64::Relocate::relocate_tls): Likewise.
685 (Target_x86_64::Relocate::tls_ie_to_le): Likewise.
686
5485698a
CC
6872015-01-25 Cary Coutant <ccoutant@google.com>
688
689 * output.cc (Output_segment::set_section_addresses): Fix calculation
690 of size of relro segment.
691
b01a4b04
AM
6922015-01-22 Alan Modra <amodra@gmail.com>
693
694 * powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct
695 condition for need of ifunc plt entry.
696 (Target_powerpc::Scan::global <got relocs>): Likewise.
697
3d0064a9
CC
6982015-01-14 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
699
700 * mips.cc (reloc_high): Add r_sym.
701 (Mips_relocate_functions::relhi16): Add r_sym parameter. Pass r_sym to
702 reloc_high constructor.
703 (Mips_relocate_functions::relgot16_local): Likewise.
704 (Mips_relocate_functions::rello16): Add r_sym parameter. Use r_sym and
705 r_type to decide whether LO16 matches HI16.
706 (Target_mips::Relocate::relocate): Pass r_sym to calls to relhi16,
707 rello16 and relgot16_local.
708
a5cd8f05
CC
7092015-01-09 Cary Coutant <ccoutant@google.com>
710
711 * layout.cc (Layout::set_segment_offsets): Don't align start of segment
712 unless alignment is larger than page size.
713
4fc1b9d4
L
7142015-01-06 H.J. Lu <hongjiu.lu@intel.com>
715 Cary Coutant <ccoutant@google.com>
716
717 PR gold/17729
718 * configure.ac (DEFAULT_TARGET_X86_64): Don't set for x32.
719 (DEFAULT_TARGET_X32): Set for x32.
720 * x86_64.cc (cmp_insn_32): New.
721 (lea_r10_insn_32): Likewise.
722 (lea_r11_insn_32): Likewise.
723 (cmp_insn_64): Likewise.
724 (lea_r10_insn_64): Likewise.
725 (lea_r11_insn_64): Likewise.
726 (Target_x86_64<size>::do_calls_non_split): Handle x32.
727 * testsuite/Makefile.am (check_SCRIPTS): Add split_x32.sh.
728 (check_DATA): Add split_x32 files.
729 (split_x32_[1234n].o): New targets.
730 (split_x32_[124]): New targets.
731 (split_x32_[1234r].stdout): New targets.
732 * testsuite/split_x32.sh: New file.
733 * testsuite/split_x32_1.s: Likewise.
734 * testsuite/split_x32_2.s: Likewise.
735 * testsuite/split_x32_3.s: Likewise.
736 * testsuite/split_x32_4.s: Likewise.
737 * testsuite/split_x32_n.s: Likewise.
738 * configure: Regenerated.
739 * testsuite/Makefile.in: Likewise.
740
e749cab8
L
7412015-01-06 H.J. Lu <hongjiu.lu@intel.com>
742
743 PR gold/17809
744 * x86_64.cc (Target_x86_64<size>::Relocate::tls_ie_to_le): Handle
745 x32.
746
af759df0
AM
7472015-01-02 Alan Modra <amodra@gmail.com>
748
749 * version.cc (print_version): Just print current year.
750 * dwp.cc (print_version): Likewise.
751
b90efa5b
AM
7522015-01-01 Alan Modra <amodra@gmail.com>
753
754 Update year range in copyright notice of all files.
755
f12d1e8a
AM
7562014-12-25 Alan Modra <amodra@gmail.com>
757
758 * arm.cc (Target_arm::do_adjust_elf_header): Provide namespace on
759 new enums.
760 (Target_arm::merge_object_attributes, ): Likewise.
761
5c294fee
TG
7622014-12-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
763
764 * arm.cc (Target_arm::do_adjust_elf_header): Set e_flags in ELF header
765 as hard float only when Tag_ABI_VFP_args is 1, using new enum value
766 AEABI_VFP_args_vfp to check that.
767 (Target_arm::merge_object_attributes): Handle new Tag_ABI_VFP_args
768 value and replace hardcoded values by enum values.
769
e30880c2
CC
7702014-12-22 Cary Coutant <ccoutant@google.com>
771
772 * powerpc.cc (Target_powerpc::relocate): Fix overflow check.
773
bd040da1
L
7742014-12-20 H.J. Lu <hongjiu.lu@intel.com>
775
776 PR gold/14608
777 * testsuite/debug_msg.cc (SometimesInlineFunction): Changed
778 to "return i * i * 3;".
779
e02a4046
CC
7802014-12-16 Cary Coutant <ccoutant@google.com>
781
782 * mapfile.cc (Mapfile::print_input_section): Print uncompressed sizes.
783 (Mapfile::print_output_data): Use current_data_size() to avoid
784 assert for sections requiring postprocessing; if address is not valid,
785 print 0.
786 (Mapfile::print_output_section): Use current_data_size(); print note
787 that addresses and sizes are before compression.
788
add6016b
L
7892014-12-14 H.J. Lu <hongjiu.lu@intel.com>
790
791 * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub):
792 Cast current_group_size to unsigned long when reporting error.
793
0bf32ea9
JY
7942014-12-10 Jing Yu <jingyu@google.com>
795
796 * aarch64.cc (Target_aarch64): Add new variable stub_group_size_.
797 (AArch64_relocate_functions::maybe_apply_stub): Add new parameter.
798 Update error message.
799 (Target_aarch64::do_relax): Use absolute value of option
800 stub_group_size. Replace local variable with class member
801 stub_group_size_.
802
cbcb23fa
AM
8032014-12-04 Alan Modra <amodra@gmail.com>
804
805 * powerpc.cc (Target_powerpc::Branch_info::make_stub): Ignore
806 addend of PLTREL24 reloc when not generating a plt stub. Make
807 max_branch_offset an "Address".
fbad6518 808 (Stub_table::can_reach_stub): Make max_branch_offset an "Address".
cbcb23fa
AM
809 (Target_powerpc::Relocate::relocate): Likewise.
810
1611bc4a
AM
8112014-12-04 Alan Modra <amodra@gmail.com>
812
813 PR 17670
814 * symtab.cc (Symbol::set_undefined): Remove assertion.
815 * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
816 on symbols defined in discarded sections, instead return false.
817 Rearrange params, update all callers.
818 (Target_powerpc::Branch_info::make_stub): Don't make stubs for
819 branches to syms in discarded sections.
820 (Global_symbol_visitor_opd::operator()): Set discarded opd syms
821 undefined and flag as discarded.
822 (Target_powerpc::Relocate::relocate): Localize variable.
823
4759c34e
L
8242014-12-03 H.J. Lu <hongjiu.lu@intel.com>
825
826 PR gold/17675
827 * testsuite/Makefile.am (pie_copyrelocs_test_CXXFLAGS): New.
828 * testsuite/Makefile.in: Regenerated.
829
1f98a074
AM
8302014-12-03 Alan Modra <amodra@gmail.com>
831
832 PR 17566
833 * powerpc.cc (Target_powerpc::Scan::local): Use add_local_section
834 when adding dynamic relocations against section symbols.
835
fb257835
DI
8362014-12-01 Dimitry Ivanov <dimitry@google.com>
837
838 * layout.cc (Layout::finish_dynamic_section): When '-z global'
839 is specified set DF_1_GLOBAL in DT_FLAGS_1 flags.
840 * options.h (General_options): New -z option (global).
841
d8e60314
CC
8422014-12-01 Cary Coutant <ccoutant@google.com>
843
844 PR gold/17578
845 * layout.cc (Layout::layout_gnu_stack): Don't warn when -z execstack
846 is given.
847 (Layout::create_executable_stack_info): Warn when -z noexecstack is
848 given but some inputs require executable stack.
849
982bbd97
CC
8502014-11-26 Cary Coutant <ccoutant@google.com>
851
852 * layout.cc (gdb_sections): Keep .debug_gdb_scripts and
853 .debug_str_offsets; strip .debug_gnu_pubnames and
854 .debug_gnu_pubtypes.
855 (lines_only_debug_sections): Strip all four new sections.
856
bb779192
HS
8572014-11-26 Jing Yu <jingyu@google.com>
858
859 * aarch64.cc (Relocate::tls_desc_gd_to_ie): Set ldr target
860 register to be x0 when to relax TLSDESC_LD64_LO12.
861
a3e60ddb
AM
8622014-11-26 Alan Modra <amodra@gmail.com>
863
864 * powerpc.cc (struct Stub_table_owner): New.
865 (Powerpc_relobj): Rename stub_table_ to stub_table_index_, an
866 unsigned int vector. Update all references.
867 (powerpc_relobj::set_stub_table): Take an unsigned int param
868 rather than a Stub_table. Update callers.
869 (Powerpc_relobj::clear_stub_table): New function.
870 (Target_powerpc): Add relax_failed_, relax_fail_count_ and
871 stub_group_size_ vars.
872 (Target_powerpc::new_stub_table): Delete.
873 (max_branch_delta): New function, extracted from..
874 (Target_powerpc::Relocate::relocate): ..here..
875 (Target_powerpc::Branch_info::make_stub): ..and here. Return
876 status on whether stub created successfully.
877 (Stub_control::Stub_control): Add "no_size_errors" param. Move
878 default sizing to..
879 (Target_powerpc::do_relax): ..here. Init stub_group_size_ and
880 reduce on relax failure.
881 (Target_powerpc::group_sections): Add "no_size_errors" param.
882 Use stub_group_size_. Set up group info in a temp vector,
883 before building Stub_table vector. Account for input sections
884 possibly already converted to relaxed sections.
885 (Stub_table::init): Delete. Merge into..
886 (Stub_table::Stub_table): ..here.
887 (Stub_table::can_reach_stub): New function.
888 (Stub_table::add_plt_call_entry): Add "from" parameter and
889 return true iff stub could be reached.
890 (Stub_table::add_long_branch_entry): Similarly. Add "r_type"
891 param too.
892 (Stub_table::clear_stubs): Add "all" param.
893
a20605cf
AM
8942014-11-26 Alan Modra <amodra@gmail.com>
895
896 * powerpc.cc (Stub_control::set_output_and_owner): New function.
897 (Target_powerpc::group_sections): Use it.
898
43b64deb
CC
8992014-11-25 Cary Coutant <ccoutant@google.com>
900
901 * binary.cc (Binary_to_elf::sized_convert): Add size to _start symbol.
902 (Binary_to_elf::write_symbol): Add st_size parameter.
903 * binary.h (Binary_to_elf::write_symbol): Add st_size parameter.
904
c924eb67
CC
9052014-11-25 Cary Coutant <ccoutant@google.com>
906
907 PR gold/17639
908 * object.cc (Sized_relobj_file): Initialize is_deferred_layout_.
909 (Sized_relobj_file::do_layout): Handle deferred sections properly
910 during GC pass 1. Don't add reloc sections to deferred list twice.
911 * object.h (Sized_relobj_file::is_deferred_layout): New function.
912 (Sized_relobj_file::is_deferred_layout_): New data member.
913
9d585188
L
9142014-11-21 H.J. Lu <hongjiu.lu@intel.com>
915
916 PR gold/17619
917 * x86_64.cc (Output_data_plt_x86_64_standard<size>::do_fill_plt_entry):
918 Check PC-relative offset overflow in PLT entry.
919
3ffaac20
AM
9202014-11-21 Alan Modra <amodra@gmail.com>
921
922 * powerpc.cc (Target_powerpc::Relocate::relocate): Correct test
923 for undefined weaks.
924
0cfb0717
AM
9252014-11-20 Alan Modra <amodra@gmail.com>
926
927 * powerpc.cc (Stub_control::Stub_control): Init stub14_group_size_
928 from --stub-group-size parameter divided by 1024.
929 (Powerpc_relocate_functions::rela, rela_ua): Add fieldsize
930 template parameter. Update all uses.
931 (Target_powerpc::Relocate::relocate): Rename has_plt_value to
932 has_stub_value. Set for long branches. Don't report overflow for
933 branch to undefined weak symbols. Print info message on
934 overflowing branch to stub.
935
f9dffbf0
AM
9362014-11-20 Alan Modra <amodra@gmail.com>
937
938 * powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters.
939
e88ba8d5
L
9402014-11-13 H.J. Lu <hongjiu.lu@intel.com>
941
942 * x86_64.cc (Target_x86_64<size>::Scan::global): Don't make PLT
943 entry for R_X86_64_GOTPLT64.
944 (Target_x86_64<size>::Relocate::relocate): Update comments for
945 R_X86_64_GOTPLT64.
946
d37ffe25
ED
9472014-11-06 Evgeniy Dushistov <dushistov@mail.ru>
948
949 * plugin.cc: use lock to searialize calls of Plugin_manager::claim_file
950 * plugin.h: add lock definition
951
9726c3c1
HS
9522014-10-29 Han Shen <shenhan@google.com>
953 Jing Yu <jingyu@google.com>
954
955 * aarch64-reloc.def: Add LD_PREL_LO12, ADR_PREL_LO21,
956 TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
957 TLSLD_MOVW_DTPREL_G0_NC. Change property of TLS relocations to
958 Symbol::TLS_REF.
959 * aarch64.cc (Target_aarch64::do_can_check_for_function_pointers): New
960 method.
961 (Target_aarch64::reloc_needs_plt_for_ifunc): New method.
962 (Target_aarch64::tls_ld_to_le): New method.
963 (Target_aarch64::aarch64_info): Enable can_icf_inline_merge_sections
964 for 64bit targets.
965 (Output_data_plt_aarch64::irelative_rel_): New data member.
966 (Output_data_plt_aarch64::add_entry): Add irelative entries to plt.
967 (Output_data_plt_aarch64::add_local_ifunc_entry): New method.
968 (Output_data_plt_aarch64::add_relocation): New method.
969 (Output_data_plt_aarch64::do_write): Add gold_assert on got_irelative
970 offset. Add got_irelative size to got size.
971 (AArch64_relocate_functions): Typedef AArch64_valtype. Replace long
972 type string with the new typename.
973 (AArch64_relocate_functions::update_adr): Replace parameter x with
974 immed.
975 (AArch64_relocate_functions::update_movnz): Correct wrong val mask.
976 (AArch64_relocate_functions::reloc_common): New method.
977 (AArch64_relocate_funcsions::rela_general): Extract common part out
978 into reloc_common method.
979 (AArch64_relocate_functions::rela_general): Likewise.
980 (AArch64_relocate_functions::pcrela_general): Likewise.
981 (AArch64_relocate_functions::adr): New method.
982 (AArch64_relocate_functions::adrp): Calculate immed before calling
983 update_adr.
984 (AArch64_relocate_functions::adrp): Likewise.
985 (AArch64_relocate_functions::movnz): Cast x to SignedW type when
986 comparing x to 0. Calculate immed from ~x when x < 0.
987 (Target_aarch64::optimize_tls_reloc): Add new cases for
988 TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
989 TLSLD_MOVW_DTPREL_G0_NC.
990 (Target_aarch64::possible_function_pointer_reloc): Implement this
991 method.
992 (Target_aarch64::Scan::local_reloc_may_be_function_pointer): Update
993 comment.
994 (Target_aarch64::Scan::local): Add codes to handle STT_GNU_IFUNC
995 symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
996 TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
997 (Target_aarch64::Scan::global): Add codes to handle STT_GNU_IFUNC
998 symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
999 TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
1000 (Target_aarch64::make_plt_entry): Call add_entry with two more
1001 parameters.
1002 (Target_aarch64::make_local_ifunc_plt_entry): New method.
1003 (Target_aarch64::Relocate::relocate): Add cases for LD_PREL_LO19,
1004 ADR_PREL_LO21, TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
1005 TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
1006 (Target_aarch64::Relocate::relocate_tls): Add cases for
1007 TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
1008 TLSLD_MOVW_DTPREL_G0_NC.
1009 * testsuite/icf_safe_so_test.cc: Correct test comment.
1010 * testsuite/icf_safe_test.sh: Add AArch64 arch.
1011
80272b8c
AM
10122014-10-22 Alan Modra <amodra@gmail.com>
1013
1014 * powerpc.cc (do_relax): Add gcc-4.9 libgomp functions to
1015 thread_starter.
1016
998a69f4
AS
10172014-10-18 Andreas Schwab <schwab@linux-m68k.org>
1018
1019 * configure.tgt (targ_extra_obj) [aarch64*-*]: Define.
1020
aed56ec5
CC
10212014-10-17 Cary Coutant <ccoutant@google.com>
1022
1023 * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub):
1024 Add "typename" keyword.
1025
bb779192 10262014-10-15 Han Shen <shenhan@google.com>
83a01957
HS
1027 Jing Yu <jingyu@google.com>
1028
1029 Patch for gold aarch64 backend to support relaxation.
1030 * aarch64-reloc.def: Change format.
1031 * aarch64.cc (class Reloc_stub): New class.
1032 (class Stub_table): New class.
1033 (class AArch64_relobj): New class.
1034 (class AArch64_input_section): New class.
1035 (class AArch64_output_section): New class.
1036 (Target_aarch64::new_stub_table): New method.
1037 (Target_aarch64::new_aarch64_input_section): New method.
1038 (Target_aarch64::find_aarch64_input_section): New method.
1039 (Target_aarch64::scan_section_for_stubs): New method.
1040 (Target_aarch64::scan_reloc_section_for_stubs): New method.
1041 (Target_aarch64::relocate_stub): New method.
1042 (Target_aarch64::current_target): New method.
1043 (Target_aarch64::do_make_elf_object): New method.
1044 (Target_aarch64::do_may_relax): New method.
1045 (Target_aarch64::do_relax): New method.
1046 (Target_aarch64::group_sections): New method.
1047 (Target_aarch64::scan_reloc_for_stub): New method.
1048 (Target_aarch64::do_make_output_section): New method.
1049 (Target_aarch64::stub_tables_): New data member.
1050 (Target_aarch64::aarch64_input_section_map_): New data member.
1051 (AArch64_relocate_functions::maybe_apply_stub): New method.
1052
db4c9594
CC
10532014-09-30 Cary Coutant <ccoutant@google.com>
1054
1055 PR gold/17432
1056 * resolve.cc (Symbol_table::resolve): Fix local shadowing error.
1057
cd6da036
KC
10582014-09-30 Kito Cheng <kito@0xlab.org>
1059
1060 PR gold/13597
1061 * layout.cc (Layout::create_dynamic_symtab): Build gnu-style
1062 hash table before sysv-style hash table.
1063
5f772412
ST
10642014-09-29 Sriraman Tallam <tmsriram@google.com>
1065
1066 * options.h (--pic-executable): Add negative to alias to -no-pie.
1067
5efeedf6
CC
10682014-09-26 Cary Coutant <ccoutant@google.com>
1069
1070 PR gold/16773
1071 * object.cc (Sized_relobj_file): Compute value of section symbols
1072 for TLS sections the same as TLS symbols.
1073
1707f183
CC
10742014-09-25 Cary Coutant <ccoutant@google.com>
1075
1076 PR gold/17432
1077 * resolve.cc (Symbol_table::resolve): Override common placeholder
1078 symbols, but adjust sizes.
1079 * symtab.cc (Symbol_table::add_from_object): Don't add placeholder
1080 symbols to common lists.
1081
00cac886
AM
10822014-09-24 Alan Modra <amodra@gmail.com>
1083
1084 * po/POTFILES.in: Regenerate.
1085
635aa30e
CC
10862014-09-23 Taiju Tsuiki <tzik@google.com>
1087 Cary Coutant <ccoutant@google.com>
1088
71b9b91b 1089 PR gold/14860
635aa30e
CC
1090 * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker
1091 on input_sections_blocker.
1092 * layout.cc (Write_sections_task::locks): Unblock
1093 input_sections_blocker_.
1094 * layout.h (Write_sections_task::Write_sections_task): Add
1095 input_sections_blocker.
1096 * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld
1097 to DEPENDENCIES.
1098 * testsuite/Makefile.in: Regenerate.
1099
c0c71592
RÁE
11002014-09-18 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
1101
1102 * testsuite/Makefile.am (plugin_test_10): New test.
1103 * testsuite/Makefile.in: Regenerate
1104 * testsuite/plugin_common_test_2.c (c1): Align to 8.
1105 * testsuite/plugin_test_10.sh: New file.
1106
6168c2a1
RÁE
11072014-09-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
1108
1109 * plugin.cc (Sized_pluginobj::do_add_symbols): Ignore isym->size.
1110 * resolve.cc (Symbol_table::resolve): Don't override common symbols
1111 during the replacement phase.
1112
3a531937
JY
11132014-09-17 Han Shen <shenhan@google.com>
1114 Jing Yu <jingyu@google.com>
1115
1116 * aarch64-reloc.def: Add TLSGD_ADR_PAGE21, TLSGD_ADD_LO12_NC,
1117 TLSDESC_ADR_PAGE21, TLSDESC_LD64_LO12, TLSDESC_ADD_LO12, TLSDESC_CALL.
1118 * aarch64.cc (Target_aarch64): Add data members
1119 got_irelative_, got_tlsdesc_, rela_irelative_, got_mod_index_offset_,
1120 tlsdesc_reloc_info_, tls_base_symbol_defined_. Initialize them in
1121 constructor.
1122 (Target_aarch64::do_reloc_symbol_index): New method.
1123 (Target_aarch64::do_reloc_addend): New method.
1124 (Target_aarch64::add_tlsdesc_info): New method.
1125 (Target_aarch64::do_dynsym_value): New method.
1126 (Target_aarch64::do_make_data_plt): Add new parameters: got,
1127 got_irelative. Pass them to Output_data_plt_aarch64_standard.
1128 (Target_aarch64::make_data_plt): Add new parameters: got,
1129 got_irelative. Pass them to do_make_data_plt.
1130 (Target_aarch64::Relocate): Add skip_call_tls_get_addr_ variable.
1131 (Target_aarch64::Relocate:tls_gd_to_le): New method.
1132 (Target_aarch64::Relocate:tls_ie_to_le): New method.
1133 (Target_aarch64::Relocate:tls_desc_gd_to_le): New method.
1134 (Target_aarch64::Relocate:tls_desc_gd_to_ie): New method.
1135 (Target_aarch64::got_tlsdesc_section): New method.
1136 (Target_aarch64::make_local_ifunc_plt_entry): New method.
1137 (Target_aarch64::define_tls_base_symbol): New method.
1138 (Target_aarch64::reserve_tlsdesc_entries): New method.
1139 (Target_aarch64::got_mod_index_entry): New method.
1140 (Target_aarch64::rela_tlsdesc_section): New method.
1141 (Target_aarch64::rela_irelative_section): New method.
1142 (Target_aarch64::Tlsdesc_info): New struct.
1143 (Target_aarch64::got_section): Create .got.plt space for IRELATIVE
1144 relocations and tlsdesc relocations.
1145 (Target_aarch64::optimize_tls_reloc): Implement method.
1146 (Output_data_plt_aarch64): Add member variables: tlsdesc_rel_, got_,
1147 got_irelative_, irelative_count_, tlsdesc_got_offset_. Initialize them
1148 in constructor.
1149 (Output_data_plt_aarch64::reserve_tlsdesc_entry): New method.
1150 (Output_data_plt_aarch64::has_tlsdesc_entry): New method.
1151 (Output_data_plt_aarch64::get_tlsdesc_got_offset): New method.
1152 (Output_data_plt_aarch64::get_tlsdesc_plt_offset): New method.
1153 (Output_data_plt_aarch64::rela_tlsdesc): New method.
1154 (Output_data_plt_aarch64::rela_irelative): New method.
1155 (Output_data_plt_aarch64::entry_count): Count IRELATIVE relocations.
1156 (Output_data_plt_aarch64::first_plt_entry_offset): Add const attribute.
1157 (Output_data_plt_aarch64::get_plt_tlsdesc_entry_size): New method.
1158 (Output_data_plt_aarch64::fill_tlsdesc_entry): New method.
1159 (Output_data_plt_aarch64::do_get_plt_tlsdesc_entry_size): New method.
1160 (Output_data_plt_aarch64::do_fill_tlsdesc_entry): New method.
1161 (Output_data_plt_aarch64_standard): New member variables:
1162 plt_tlsdesc_entry_size, tlsdesc_plt_entry.
1163 (Output_data_plt_aarch64_standard::Output_data_plt_aarch64_standard):
1164 New parameter: got, got_irelative.
1165 (Output_data_plt_aarch64_standard::do_get_plt_entry_size): New method.
1166 (Output_data_plt_aarch64_standard::do_fill_tlsdesc_entry): New method.
1167 (Output_data_plt_aarch64::do_write): Replace got_address with
1168 gotplt_address. Add irelative_count_ to count. Write tlsdesc entry.
1169 (AArch64_relocate_functions::update_movnz): New method.
1170 (AArch64_relocate_functions): Correct format.
1171 (AArch64_relocate_functions::movnz): New method.
1172 (Target_aarch64::Scan::local): Correct format. Move r_sym, got to
1173 before the switch. Add new cases to switch.
00cac886 1174 Check ie_to_le relaxation on tlsie relocations. Add code handling
3a531937
JY
1175 tlsgd tlsdesc cases.
1176 (Target_aarch64::Scan::global): Move arp to front. Do copy_reloc when
1177 needed. Add new cases to switch. Insert dynamic RELATIVE relocation
1178 when needed. Add code handling tlsgd, tlsie, tlsdesc cases.
1179 Call reloc_name_in_error_message to print unsupported reloc.
1180 (Target_aarch64::make_plt_section): Pass got_ and got_irelative_ to
1181 make_data_plt.
1182 (Target_aarch64::do_finalize_sections): Emit relocs to save COPY
1183 relocs. Fill in some more dynamic tags.
1184 (Target_aarch64::Relocate::relocate): Handle tlsgd, tlsdesc relocs.
1185 Skip call tls_get_addr when tlsgd is relaxed.
1186 (Target_aarch64::Relocate::relocate_tls): Correct format. Add code
1187 handling tlsgd, tlsdesc relocs, and tls gd->le, ie->le, tlsdesc->le,
1188 tlsdesc->ie relaxation.
1189
62661c93
SS
11902014-09-03 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1191
1192 * mips.cc (Target_mips_nacl): New class.
1193 (Target_selector_mips_nacl): New class.
1194 (target_selector_mips32): Rename from target_selector_mips32be and use
1195 Target_selector_mips_nacl instead of Target_selector_mips.
1196 (target_selector_mips32el): Rename from target_selector_mips32 and use
1197 Target_selector_mips_nacl instead of Target_selector_mips.
1198 (target_selector_mips64): Rename from target_selector_mips64be and use
1199 Target_selector_mips_nacl instead of Target_selector_mips.
1200 (target_selector_mips64el): Rename from target_selector_mips64 and use
1201 Target_selector_mips_nacl instead of Target_selector_mips.
1202 (Target_mips::mips_info): Add const attribute.
1203
54674d38
CC
12042014-09-02 Cary Coutant <ccoutant@google.com>
1205
1206 * dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute.
1207 * dynobj.h (Sized_dynobj::do_section_name): Likewise.
1208 * incremental.cc (Sized_relobj_incr::do_section_name): Likewise.
1209 (Sized_incr_dynobj::do_section_name): Likewise.
1210 * incremental.h (Sized_relobj_incr::do_section_name): Likewise.
1211 (Sized_incr_dynobj::do_section_name): Likewise.
1212 * object.h (Object::section_name): Likewise.
1213 (Object::do_section_name): Likewise.
1214 (Sized_relobj_file::do_section_name): Likewise.
1215 * plugin.cc (Sized_pluginobj::do_section_name): Likewise.
1216 * plugin.h (Sized_pluginobj::do_section_name): Likewise.
1217
9860cbcf
CC
12182014-09-02 Cary Coutant <ccoutant@google.com>
1219
1220 PR gold/17005
1221 * ehframe.cc (Fde::write): Add output_offset parameter.
1222 (Cie::write): Likewise.
1223 (Eh_frame::set_final_data_size): Account for offset within output
1224 section.
1225 (Eh_frame::do_sized_write): Likewise.
1226 * ehframe.h (Fde::write): Add output_offset parameter.
1227 (Cie::write): Likewise.
1228 * output.cc (Output_section::Input_section_sort_entry): Remove
1229 section_has_name_; add output_section_name parameter. Use
1230 output section name for non-input sections.
1231 (Output_section::Input_section_sort_entry::section_has_name): Remove.
1232 (Output_section::Input_section_sort_entry::section_has_name_): Remove.
1233 (Output_section::Input_section_sort_compare): Remove logic for
1234 sections without names.
1235 (Output_section::Input_section_sort_init_fini_compare): Likewise.
1236 (Output_section::Input_section_sort_section_prefix_special_ordering_compare):
1237 Likewise.
1238 (Output_section::Input_section_sort_section_name_compare): Likewise.
1239
8e33481e
HS
12402014-08-29 Han Shen <shenhan@google.com>
1241 Jing Yu <jingyu@google.com>
1242
1243 * aarch64-reloc-property.cc
1244 (AArch64_reloc_property_table::reloc_name_in_error_message): Fix bug in
1245 reference reloc property in the table.
1246 * aarch64-reloc.def: Add TLSLE reloc types and fix some errors in
1247 3 other entries.
1248 * aarch64.cc: (Output_data_got_aarch64::add_static_reloc):
1249 2 new overloaded methods.
1250 (Output_data_got_aarch64::do_write): Add code to write out
1251 static relocs.
1252 (class Output_data_got_aarch64::Static_reloc): New class to wrap
1253 static relocs.
1254 (Output_data_got_aarch64::static_relocs): New vector to
1255 hold static relocs.
1256 (Target_aarch64::TCB_SIZE): New const static memeber.
1257 (Target_aarch64::tcb_size): New method.
1258 (Target_aarch64::Relocate::relocate): Add code handling new reloc types.
1259 (Target_aarch64::Relocate::relocate_tls): New method.
1260 (Target_aarch64::Scan::local): Add code handling new reloc types.
1261 (Target_aarch64::Scan::global): Add code handling new reloc types.
1262
81233653
ST
12632014-08-13 Sriraman Tallam <tmsriram@google.com>
1264
1265 * options.h (-no-pie): Add option.
1266
9363c7c3
JY
12672014-08-08 Jing Yu <jingyu@google.com>
1268 Han Shen <shenhan@google.com>
1269
1270 * Makefile.am (HFILES): Add aarch64-reloc-property.h.
1271 (DEFFILES): add aarch64-reloc.def.
1272 (TARGETSOURCES): Add aarch64-reloc-property.cc.
1273 (ALL_TARGETOBJS): Add aarch64-reloc-property.$(OBJEXT).
1274 * Makefile.in: Regenerate.
1275 * aarch64-reloc-property.cc: New file.
1276 * aarch64-reloc-property.h: New file.
1277 * aarch64-reloc.def: New file.
1278 * aarch64.cc: Include aarch64-reloc-property.h. Replace spaces
1279 with tab to make the format consistent.
1280 (Output_data_got_aarch64::symbol_table_): New method.
1281 (Target_aarch64::do_plt_address_for_global): New method.
1282 (Target_aarch64::do_plt_address_for_local): New method.
1283 (Target_aarch64::do_select_as_default_target): New method.
1284 (Target_aarch64::do_make_data_plt): New method.
1285 (Target_aarch64::make_data_plt): New method.
1286 (Output_data_plt_aarch64::has_irelative_section): New method.
1287 (Output_data_plt_aarch64::address_for_global): New method.
1288 (Output_data_plt_aarch64::address_for_local): New method.
1289 (Output_data_plt_aarch64::irelative_rel_): New parameter.
1290 (Output_data_plt_aarch64::add_entry): Implement contents.
1291 (Output_data_plt_aarch64::set_final_data_size): Fix typo.
1292 (Output_data_plt_aarch64::do_write): Remove useless got_base. Set
1293 the got_pov entry to plt0.
1294 (Output_data_plt_aarch64_standard::do_fill_first_plt_entry):
1295 Implement contents.
1296 (Output_data_plt_aarch64_standard::do_fill_plt_entry): Implement.
1297 (AArch64_howto): New struct.
1298 (aarch64_howto[]): New static const array.
1299 (AArch64_relocate_functions): New class.
1300 (Target_aarch64::Scan::get_reference_flags): Remove method.
1301 (Target_aarch64::Scan::local): Implement to support a few relocations.
1302 (Target_aarch64::Scan::global): Implement to support a few relocations.
1303 (Target_aarch64::make_plt_section): Implement contents.
1304 (Target_aarch64::make_plt_entry): Implement contents.
1305 (Target_aarch64::do_finalize_sections): Implement contents.
1306 (Target_aarch64::Relocate::relocate): Implement a few relocations.
1307 (Target_aarch64::relocate_section): Implement contents.
1308
ad9fe6c1
AM
13092014-08-06 Alan Modra <amodra@gmail.com>
1310
1311 * testsuite/defsym_test.sh: Allow ppc64le localentry annotation.
1312
7cd4e5b7
AM
13132014-08-06 Alan Modra <amodra@gmail.com>
1314
1315 PR 13227
1316 * symtab.cc (Symbol_table::add_from_relobj): Warn on __gnu_lto_slim.
1317
5ad9b0a7
ST
13182014-07-21 Sriraman Tallam <tmsriram@google.com>
1319
1320 * object.cc (Relobj::is_section_name_included): Add
7c16d96e 1321 ".rodata.nptl_version" to not garbage collect this section.
5ad9b0a7 1322
e051745c
CC
13232014-07-08 Cary Coutant <ccoutant@google.com>
1324
1325 * expression.cc (struct Expression::Expression_eval_info): Add
1326 new fields type_pointer, vis_pointer, and nonvis_pointer.
1327 (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and
1328 nonvis_pointer parameters. Adjust all calls.
1329 (Symbol_expression::value): Update type, visibility, and nonvis bits
1330 in caller.
1331 * script.cc (Symbol_assignment::sized_finalize): Update type,
1332 visibility, and remaining st_other bits for new symbol.
1333 * script.h: (Expression::eval_maybe_dot): Add type_pointer,
1334 vis_pointer, and nonvis_pointer parameters.
1335 * symtab.h (Symbol::set_type): New method.
1336
1337 * testsuite/Makefile.am (defsym_test): New test.
1338 * testsuite/Makefile.in: Regenerate.
1339 * testsuite/defsym_test.c: New file.
1340 * testsuite/defsym_test.sh: New file.
1341
f35c4853
CC
13422014-07-08 Cary Coutant <ccoutant@google.com>
1343
1344 PR gold/15639
1345 * dynobj.h (Sized_dynobj::base_read_symbols): New method.
1346 * dynobj.cc (Sized_dynobj::do_read_symbols): Move body to...
1347 (Sized_dynobj::base_read_symbols): ...new method.
1348 * object.h (Sized_relobj_file::base_read_symbols): New method.
1349 * object.cc (Sized_relobj_file::do_read_symbols): Move body to...
1350 (Sized_relobj_file::base_read_symbols): ...new method.
1351 * arm.cc (Arm_relobj::do_read_symbols): Call base_read_symbols.
1352 * mips.cc: (Mips_relobj::do_read_symbols): Likewise.
1353 * powerpc.cc (Powerpc_dynobj::do_read_symbols): Likewise.
1354
2900af2d
AM
13552014-07-04 Alan Modra <amodra@gmail.com>
1356
1357 * po/POTFILES.in: Regenerate.
1358
053a4d68
JY
13592014-07-02 Jing Yu <jingyu@google.com>
1360
1361 * aarch64.cc: New file
1362 * Makefile.am (TARGETSOURCES): Add aarch64.cc
1363 (ALL_TARGETOBJS): Add aarch64.$(OBJEXT)
1364 * Makefile.in: Regenerate.
1365 * configure.tgt: Add entries for aarch64*.
1366 * configure.ac: Likewise.
1367 * configure: Likewise.
1368
7b549045
AM
13692014-06-27 Alan Modra <amodra@gmail.com>
1370
1371 * symtab.cc (Symbol::should_add_dynsym_entry): Don't make inline.
1372
cb818dbf
CC
13732014-06-24 Cary Coutant <ccoutant@google.com>
1374
1375 * dwp.cc (Dwo_file::read): Allow files with no .debug_types
1376 sections.
1377 (Dwo_file::sized_read_unit_index): Likewise.
1378
9810d34d
SS
13792014-06-23 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1380
1381 * mips.cc: New file.
1382 * Makefile.am (TARGETSOURCES): Add mips.cc
1383 (ALL_TARGETOBJS): Add mips.$(OBJEXT)
1384 * configure.tgt: Add entries for mips*.
1385 * configure.ac: Likewise.
1386 * Makefile.in: Regenerate.
1387 * configure: Likewise.
1388
9baa787b
CC
13892014-06-09 Cary Coutant <ccoutant@google.com>
1390
1391 * dwarf_reader.cc (Dwarf_pubnames_table::read_header): Check that
1392 unit_length is within section bounds.
1393
8f89af0a
CC
13942014-06-09 Cary Coutant <ccoutant@google.com>
1395
1396 PR gold/16980
1397 * layout.cc (Layout::print_to_mapfile): Print unattached sections in
1398 map.
1399
a47622ac
AM
14002014-06-07 Alan Modra <amodra@gmail.com>
1401
1402 * powerpc.cc (relocate): Treat field of cmpli insn as a bitfield.
1403
4320c691
CC
14042014-06-06 Cary Coutant <ccoutant@google.com>
1405
1406 * dwarf_reader.h (Dwarf_pubnames_table): Remove output_section_offset_.
1407 * dwarf_reader.cc (Dwarf_pubnames_table::read_section): Likewise.
1408 (Dwarf_pubnames_table::read_header): Likewise.
1409 * layout.cc (gdb_fast_lookup_sections): Add .debug_gnu_pubnames and
1410 .debug_gnu_pubtypes.
1411
270c9937
JB
14122014-06-05 Joel Brobecker <brobecker@adacore.com>
1413
1414 * Makefile.am (CONFIG_STATUS_DEPENDENCIES): New.
1415 * Makefile.in, configure: Regenerate.
1416
397998fc
AM
14172014-06-03 Alan Modra <amodra@gmail.com>
1418
1419 * powerpc.cc (addis_12_2): Define.
1420 (Stub_table::do_write): Support fusion on ELFv2 stubs.
1421
61f5c66f
AM
14222014-06-03 Alan Modra <amodra@gmail.com>
1423
1424 * testsuite/plugin_test.c (parse_readelf_line): Skip non-visibility
1425 st_other output.
1426
f6971787
AM
14272014-06-02 Alan Modra <amodra@gmail.com>
1428
1429 * powerpc.cc (Target_powerpc::local_reloc_may_be_function_pointer):
1430 Only ignore relocs on ELFv1.
1431 (Target_powerpc::global_reloc_may_be_function_pointer): Likewise.
1432
f6fb8322
CC
14332014-05-30 Cary Coutant <ccoutant@google.com>
1434
1435 * testsuite/Makefile.am (ehdr_start_test_4): Fix typo in -B option.
1436 * testsuite/Makefile.in: Regenerate.
1437 * testsuite/ehdr_start_test_4.sh: Look for "U" instead of "w".
1438
c23dd342
L
14392014-05-27 H.J. Lu <hongjiu.lu@intel.com>
1440
1441 PR gold/16945
1442 * x86_64.cc (Target_x86_64::Relocate::relocate): Use signed int
1443 for got_offset. Properly get GOT address for R_X86_64_PLTOFF64.
1444
5fe7ffdc
AM
14452014-05-15 Alan Modra <amodra@gmail.com>
1446
1447 * powerpc.cc (do_plt_fde_location): Handle zero length .glink.
1448 Compare FDE contents with DW_CFA_nop rather than 0.
1449
a82bef93
ST
14502014-05-13 Sriraman Tallam <tmsriram@google.com>
1451
1452 * symtab.h (may_need_copy_reloc): Remove check for position independent
1453 code.
1454 * x86_64.cc (Target_x86_64<size>::Scan::global): Add check for no
1455 position independence before pc absolute may_need_copy_reloc call.
1456 Add check for executable output befor pc relative may_need_copy_reloc
1457 call.
1458 * i386.cc: Ditto.
1459 * arm.cc: Ditto.
1460 * sparc.cc: Ditto.
1461 * tilegx.cc: Ditto.
1462 * powerpc.cc: Add check for no position independence before
1463 may_need_copy_reloc calls.
1464 * testsuite/pie_copyrelocs_test.cc: New file.
1465 * testsuite/pie_copyrelocs_shared_test.cc: New file.
1466 * Makefile.am (pie_copyrelocs_test): New test.
5fe7ffdc 1467 * Makefile.in: Regenerate.
a82bef93 1468
53c66605
ML
14692014-05-08 Martin Liška <mliska@suse.cz>
1470
1471 * output.cc (Sized_relobj_file::do_layout): Fix typo in info message.
1472
57b2284c
CC
14732014-05-06 Cary Coutant <ccoutant@google.com>
1474
1475 PR gold/16900
1476 * i386.cc (Output_data_got_plt_i386): New class.
1477 (Output_data_plt_i386::Output_data_plt_i386): Change type of got_plt
1478 parameter. Change all callers.
1479 (Output_data_plt_i386::layout_): Remove.
1480 (Output_data_plt_i386::got_plt_): Change type.
1481 (Target_i386::got_plt_): Change type. Change all references.
1482 (Target_i386::got_section): Create instance of new class.
1483 (Output_data_got_plt_i386::do_write): New function.
1484 * x86_64.cc (Output_data_got_plt_x86_64): New class.
1485 (Output_data_plt_x86_64::Output_data_plt_x86_64): Change type of got_plt
1486 parameter. Change all callers.
1487 (Output_data_plt_x86_64::layout_): Remove.
1488 (Output_data_plt_x86_64::got_plt_): Change type.
1489 (Target_x86_64::got_plt_): Change type. Change all references.
1490 (Target_x86_64::got_section): Create instance of new class.
1491 (Output_data_got_plt_x86_64::do_write): New function.
1492 (Output_data_plt_x86_64::do_write): Don't write reserved words in GOT.
1493 (Target_x86_64<size>::init_got_plt_for_update): Create instance of new
1494 class.
1495
6b97515d 14962014-05-05 Cary Coutant <ccoutant@google.com>
5fe7ffdc 1497
6b97515d
CC
1498 * gdb-index.cc (Gdb_index_info_reader): Don't complain about language
1499 if we have pubnames/pubtypes.
1500
d1bddd3c
CC
15012014-05-02 Cary Coutant <ccoutant@google.com>
1502
5fe7ffdc
AM
1503 * defstd.cc (in_segment): Define __ehdr_start here...
1504 * layout.cc (Layout::finalize): ...Instead of here. Set the
1505 output segment when known.
1506 * resolve.cc (Symbol::override_base_with_special): Remember
1507 the original binding.
1508 * symtab.cc (Symbol::set_output_segment): New function.
1509 (Symbol::set_undefined): New function.
1510 * symtab.h (Symbol::is_weak_undefined): Check original undef
1511 binding.
1512 (Symbol::is_strong_undefined): New function.
1513 (Symbol::set_output_segment): New function.
1514 (Symbol::set_undefined): New function.
1515 * target-reloc.h (is_strong_undefined): Remove.
1516 (issue_undefined_symbol_error): Call Symbol::is_weak_undefined.
1517 Check for hidden undefs.
1518 (relocate_section): Call Symbol::is_strong_undefined.
1519
1520 * testsuite/Makefile.am (ehdr_start_test_1)
1521 (ehdr_start_test_2, ehdr_start_test_3)
1522 (ehdr_start_test_4, ehdr_start_test_5): New test cases.
1523 * testsuite/Makefile.in: Regenerate.
1524 * testsuite/ehdr_start_def.cc: New source file.
1525 * testsuite/ehdr_start_test.cc: New source file.
1526 * testsuite/ehdr_start_test.t: New linker script.
1527 * testsuite/ehdr_start_test_4.sh: New shell script.
d1bddd3c 1528
7849f6d8
CC
15292014-04-23 Cary Coutant <ccoutant@google.com>
1530
bf2cc635 1531 PR gold/16870
7849f6d8
CC
1532 * x86_64.cc (Target_x86_64::Relocate::relocate): Add missing break.
1533
99fd8cff
CC
15342014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1535
1536 * layout.cc (Layout::include_section): Allow a target to decide
1537 whether to include a section.
1538 * target.h (Target::should_include_section): New function.
1539 (Target::do_should_include_section): New function.
1540
91f43acd
CC
15412014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1542
1543 * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Remove and
1544 inline into ...
1545 (Copy_relocs::emit): ... here.
1546 * copy-relocs.h (Copy_reloc_entry): Change from class to struct.
1547 (Copy_reloc_entry::make_copy_reloc): Change from private to protected.
1548 (Copy_reloc_entry::entries_): Change from private to protected.
1549
c4eb27e1
ST
15502014-04-02 Sriraman Tallam <tmsriram@google.com>
1551
1552 * icf.cc (get_section_contents): Replace copies of reloc
1553 vectors with const references.
1554
ae447ddd
CC
15552014-04-02 Cary Coutant <ccoutant@google.com>
1556
1557 * configure.ac (HAVE_PUBNAMES): Use C instead of C++.
1558 (HAVE_NO_USE_LINKER_PLUGIN): Check for -fno-use-linker-plugin.
1559 * configure: Regenerate.
1560 * testsuite/Makefile.am (OPT_NO_PLUGINS): New macro for
1561 -fno-use-linker-plugin.
1562 (LINK1, CXXLINK1): Add it to the link command.
1563 * testsuite/Makefile.in: Regenerate.
1564
fa47fa92
AM
15652014-03-12 Alan Modra <amodra@gmail.com>
1566
1567 * Makefile.in: Regenerate.
1568
9b12c500
CC
15692014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1570
1571 * symtab.h (Symbol::set_nonvis): New function.
1572
beacaa96
CC
15732014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1574
1575 * symtab.cc (Sized_symbol<32>::init_output_data):
1576 Instantiate the template.
1577 (Sized_symbol<64>::init_output_data): Likewise.
1578
800d9823
CC
15792014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1580
1581 * symtab.cc (Symbol_table::sized_write_globals): Allow a target to
1582 adjust dynamic symbol value.
1583 * target.h (Target::adjust_dyn_symbol): New function.
1584 (Target::do_adjust_dyn_symbol): New function.
1585
918fc1f8 15862014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
5fe7ffdc 1587
918fc1f8
CC
1588 * output.cc (Output_data_dynamic::Dynamic_entry::write):
1589 Get the value of DYNAMIC_CUSTOM dynamic entry.
1590 * output.h (Output_data_dynamic::add_custom): New function.
1591 (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM
1592 dynamic entry.
1593 (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM.
1594 * target.h (Target::dynamic_tag_custom_value): New function.
1595 (Target::do_dynamic_tag_custom_value): New function.
1596
98ff9231
CC
15972014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
1598
1599 * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set
1600 dynsym indexes.
1601 * target.h (Target::has_custom_set_dynsym_indexes): New function.
1602 (Target::do_has_custom_set_dynsym_indexes): New function.
1603 (Target::set_dynsym_indexes): New function.
1604 (Target::do_set_dynsym_indexes): New function.
1605
b80eed39
AM
16062014-03-07 Alan Modra <amodra@gmail.com>
1607
1608 * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
1609 CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
1610 (Powerpc_relocate_functions::has_overflow_unsigned): New function.
1611 (Powerpc_relocate_functions::has_overflow_bitfield,
1612 overflowed): Use the above.
1613 (Target_powerpc::Relocate::relocate): Correct overflow checking
1614 for a number of relocations. Modify overflow test for 16-bit
1615 fields in instructions to signed/unsigned according to whether
1616 the field takes a signed or unsigned value.
1617
4b95cf5c
AM
16182014-03-05 Alan Modra <amodra@gmail.com>
1619
1620 Update copyright years.
1621
45965137
AM
16222014-03-05 Alan Modra <amodra@gmail.com>
1623
1624 * powerpc.cc (Target_powerpc::Scan::local, global): Support
1625 R_PPC64_ADDR64_LOCAL.
1626 (Target_powerpc::Relocate::relocate): Likewise.
1627
2c80b753
AM
16282014-03-03 Alan Modra <amodra@gmail.com>
1629
1630 * dwp.cc (print_version): Update copyright year to current.
1631
c1c69e83
AM
16322014-02-10 Alan Modra <amodra@gmail.com>
1633
1634 * po/gold.pot: Regenerate.
1635
dd0c4e70
CC
16362014-02-06 Cary Coutant <ccoutant@google.com>
1637
1638 Fix problem where -u is ignored when a weak undef is seen.
1639
1640 * archive.cc (Library_base::should_include_member): Reorder
1641 code to check for -u option if a weak undef has already been seen.
1642 * testsuite/Makefile.am (weak_undef_test_2): New test case.
1643 * testsuite/Makefile.in: Regenerate.
1644 * testsuite/weak_undef_file3.cc: New file.
1645 * testsuite/weak_undef_file4.cc: New file.
1646 * testsuite/weak_undef_test_2.cc: New file.
1647
1a221d3d
CC
16482014-02-05 Cary Coutant <ccoutant@google.com>
1649
1650 Fix issues with gold undefined symbol diagnostics.
1651
1652 PR binutils/15435
1653 * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
1654 check to here.
1655 * target-reloc.h (is_strong_undefined): New function.
1656 (relocate_section): Move undef vtable symbol check from here.
1657 Check for is_strong_undefined.
1658
e889f0a4 16592014-02-05 Cary Coutant <ccoutant@google.com>
5fe7ffdc 1660
e889f0a4
CC
1661 Fix problems with the --dynamic-list option.
1662
1663 PR gold/13577
1664 * options.cc (General_options::parse_dynamic_list):
1665 Set have_dynamic_list_.
1666 (General_options::General_options): Initialize have_dynamic_list_.
1667 (General_options::finalize): Turn off -Bsymbolic and
1668 -Bsymbolic-functions if --dynamic-list provided.
1669 * options.h (General_options::have_dynamic_list): New function.
1670 (General_options::have_dynamic_list_): New data member.
1671 * symtab.h (Symbol::is_preemptible): Handle --dynamic-list
1672 correctly.
5fe7ffdc 1673
e889f0a4
CC
1674 PR gold/16530
1675 * symtab.cc (Symbol_table::add_from_relobj): If symbol is named
1676 in --dynamic-list, mark it.
5fe7ffdc 1677
e889f0a4
CC
1678 * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case.
1679 (dynamic_list_2): New test case.
1680 * testsuite/Makefile.in: Regenerate.
1681 * testsuite/dynamic_list_2.cc: New file.
1682 * testsuite/dynamic_list_2.t: New file.
1683 * testsuite/dynamic_list_lib1.cc: New file.
1684 * testsuite/dynamic_list_lib2.cc: New file.
1685 * testsuite/gc_dynamic_list_test.c: New file.
1686 * testsuite/gc_dynamic_list_test.sh: New file.
1687 * testsuite/gc_dynamic_list_test.t: New file.
1688
ec673e64
CC
16892014-01-28 Cary Coutant <ccoutant@google.com>
1690
1691 Add .gdb_index version 7 support.
1692
1693 * gold/dwarf_reader.cc: include <utility> (for make_pair).
1694 (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed
1695 debug sections.
1696 (Dwarf_ranges_table::read_ranges_table): Likewise.
1697 (Dwarf_pubnames_table::read_section): Check for GNU-style
1698 sections, and for compressed debug sections.
1699 (Dwarf_pubnames_table::read_header): Compute end address of table.
1700 (Dwarf_pubnames_table::next_name): Return flag_byte. Check
1701 for end of list by offset, not by offset == 0.
1702 (Dwarf_info_reader::do_read_string_table): Check for compressed
1703 debug sections.
1704 * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
1705 Initialize new data members.
1706 (Dwarf_pubnames_table::next_name): return flag_byte.
1707 (Dwarf_pubnames_table::end_of_table_): New data member.
1708 (Dwarf_pubnames_table::is_gnu_style_): New data member.
1709 * gold/gdb-index.cc (gdb_index_version): Update to version 7.
1710 (Gdb_index_info_reader::read_pubtable): Read flag_byte.
1711 (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't
1712 read skeleton type unit DIEs.
1713 (Gdb_index::add_symbol): Add flag_byte; adjust all callers.
1714 (Gdb_index::do_write): Write flag_byte.
1715 * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter.
1716 (Gdb_index::Cu_vector): Store flags along with cu indexes.
1717 * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7.
1718 * gold/testsuite/gdb_index_test_comm.sh: Likewise.
1719
221fd5d5
L
17202014-01-08 H.J. Lu <hongjiu.lu@intel.com>
1721
1722 * version.cc (print_version): Update copyright year to 2014.
1723
6c09fb0b
ILT
17242013-12-19 Dimitry Andric <dimitry@andric.com>
1725
1726 * stringpool.cc (Stringpool_template::reserve): Add
1727 HAVE_UNORDERED_MAP case.
1728 * stringpool.cc (Stringpool_template::print_stats): Likewise.
1729
8356f2d0
CC
17302013-12-18 Cary Coutant <ccoutant@google.com>
1731
1732 * configure.ac: Check for <unordered_set> and <unordered_map>.
1733 * config.in: Regenerate.
1734 * configure: Regenerate.
1735 * system.h: Use <unordered_set> and <unordered_map> if available.
1736
f2c7d7ee
RM
17372013-12-10 Roland McGrath <mcgrathr@google.com>
1738
1739 * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
1740 with $(INSTALL_PROGRAM_ENV).
1741 * Makefile.in: Regenerate.
1742
6632e8cc
CC
17432013-11-22 Cary Coutant <ccoutant@google.com>
1744
1745 * configure.ac: Add check for which library is needed for
1746 dlopen.
1747 * configure: Regenerate.
1748
0c075858
CC
17492013-11-22 Cary Coutant <ccoutant@google.com>
1750
1751 * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
1752 assembler.
1753 * testsuite/Makefile.in: Regenerate.
1754
f49fe902
L
17552013-11-17 H.J. Lu <hongjiu.lu@intel.com>
1756
1757 * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):
1758 Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like
1759 R_X86_64_PC32 and R_X86_64_PLT32, respectively.
1760 (Target_x86_64<size>::Scan::local): Likewise.
1761 (Target_x86_64<size>::Scan::global): Likewise.
1762 (Target_x86_64<size>::Relocate::relocate): Likewise.
1763 (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc):
1764 Likewise.
1765 (Target_x86_64<size>::Scan::check_non_pic(): Handle
1766 R_X86_64_PC32_BND.
1767
1768 * testsuite/Makefile.am (check_PROGRAMS): Add
1769 exception_x86_64_bnd_test.
1770 (exception_x86_64_bnd_test_SOURCES): New macro.
1771 (exception_x86_64_bnd_test_DEPENDENCIES): Likewise.
1772 (exception_x86_64_bnd_test_LDFLAGS): Likewise.
1773 (exception_x86_64_bnd_test_LDADD): Likewise.
1774 (exception_x86_64_bnd_1.o): New rule.
1775 (exception_x86_64_bnd_2.o): Likewise.
1776 * testsuite/Makefile.in: Regenerated.
1777
9055360d
AM
17782013-11-15 Alan Modra <amodra@gmail.com>
1779
1780 * powerpc.cc (Target_powerpc::glink_section): Provide non-const
1781 accessor.
1782 (Target_powerpc::Branch_info::make_stub): Make global entry stubs.
1783 Only call ppc64_local_entry_offset for 64-bit. Restrict
1784 symval_for_branch lookup to ELFv1.
1785 (Stub_table::add_plt_call_entry): Use unsigned int off.
1786 (Output_data_glink::Address, invalid_address): New.
1787 (Output_data_glink::add_eh_frame): Move out of line. Add
1788 support for ELFv2.
1789 (Output_data_glink::add_global_entry, find_global_entry,
1790 global_entry_address): New functions.
1791 (Output_data_glink::global_entry_stubs_, end_branch_table_,
1792 ge_size): New variables.
1793 (Output_data_glink::set_final_data_size): Add global entry
1794 stub sizing.
1795 (Output_data_glink::do_write): Write global entry stubs.
1796 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target
1797 parameter. Return true for ELFv2. Adjust callers.
1798 (Target_powerpc::Scan::local, global): Restrict opd lookup to
1799 ELFv1. Similarly for ifunc and dynamic relocation processing
1800 specific to ELFv1. Recognize that symbols are defined on
1801 their plt entries for ELFv2.
1802 (Target_powerpc::symval_for_branch): Assert if called for
1803 ELFv2 or ppc32.
1804 (Target_powerpc::Relocate::relocate): Use global entry plt
1805 stub for symbol value if such exists on ELFv2.
1806 (Target_powerpc::Relocate::relocate): Don't call
1807 symval_for_branch when ELFv2. Do adjust for local entry
1808 offset when ELFv2.
1809 (Target_powerpc::do_dynsym_value): Set symbols to global entry
1810 plt stub for ELFv2.
1811 (Target_powerpc::do_plt_address_for_global): Similarly.
1812
cafdd569
CC
18132013-11-14 Cary Coutant <ccoutant@google.com>
1814
1815 Revert patch -- this did not fix the problem, and there is
1816 no race there.
1817
1818 2013-11-14 Cary Coutant <ccoutant@google.com>
1819
1820 PR gold/14860
1821 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
1822 (Ehframe_hdr::set_final_data_size): Allocate a Lock.
1823 * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
1824 updating fde_offsets_.
1825 (Eh_frame_hdr::lock_): New data member.
1826
94e49e16
CC
18272013-11-14 Cary Coutant <ccoutant@google.com>
1828
1829 * dwp.cc (Dwo_file_entry): New type.
1830 (File_list): Use Dwo_file_entry.
1831 (Dwo_file::verify): New function.
1832 (Dwo_file::verify_dwo_list): New function.
1833 (Dwo_file::sized_verify_dwo_list): New function.
1834 (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file
1835 list.
1836 (Dwp_options): New enum type.
1837 (dwp_options): Add --verify-only.
1838 (usage): Likewise.
1839 (main): Likewise.
1840 * dwp.h (gold_info): Add declaration.
1841
7cdd7d57
CC
18422013-11-14 Cary Coutant <ccoutant@google.com>
1843
1844 PR gold/14860
1845 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
1846 (Ehframe_hdr::set_final_data_size): Allocate a Lock.
1847 * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
1848 updating fde_offsets_.
1849 (Eh_frame_hdr::lock_): New data member.
1850
1d946cb3
CC
18512013-11-06 Cary Coutant <ccoutant@google.com>
1852
1853 PR gold/15758
1854 * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections
1855 before reloc sections.
1856
4f65b40e
AM
18572013-11-04 Alan Modra <amodra@gmail.com>
1858
1859 * symtab.h (Symbol::Reference_flags): Add FUNC_DESC_ABI.
1860 (Symbol::needs_dynamic_reloc): Test new flag.
1861 * powerpc.cc (needs_dynamic_reloc, use_plt_offset): Delete.
1862 (Target_powerpc::Scan::get_reference_flags): Add target param.
1863 Return FUNC_DESC_ABI for 64-bit ELFv1.
1864 (Target_powerpc::Branch_info::make_stub): Adjust get_reference_flags
1865 call.
1866 (Target_powerpc::Scan::global): Use Symbol::needs_dynamic_reloc.
1867 (Target_powerpc::Relocate::relocate): Use Symbol::use_plt_offset.
1868
908794a9
CC
18692013-10-31 Cary Coutant <ccoutant@google.com>
1870
1871 Restore support for dwp v2 DWARF package file format.
1872
1873 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
1874 tu_length parameter. Adjust all callers.
1875 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
1876 * dwp.cc: Include dwarf.h.
1877 (Section_bounds): New struct type.
1878 (Unit_set): New struct type.
1879 (Dwo_file::Dwo_file): Initialize new data member.
1880 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
1881 Combine and rename to...
1882 (Dwo_file::read_unit_index): ...this.
1883 (Dwo_file::sized_read_compunit_index)
1884 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
1885 (Dwo_file::sized_read_unit_index): ...this.
1886 (Dwo_file::copy_section): Remove section_name, is_str_offsets
1887 parameters; add section_id parameter.
1888 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
1889 (Dwo_file::add_unit_set): ...this.
1890 (Dwo_file::shndx_map_): Remove.
1891 (Dwo_file::sect_offsets_): New data member.
1892 (Dwp_output_file::Dwp_output_file): Initialize new data members.
1893 (Dwp_output_file::add_section): Rename to...
1894 (Dwp_output_file::add_contribution): ...this.
1895 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
1896 (Dwp_output_file::add_tu_set): Likewise.
1897 (Dwp_output_file::Contribution): New type.
1898 (Dwp_output_file::Section::contributions): New data member.
1899 (Dwp_output_file::Cu_or_tu_set): Remove.
1900 (Dwp_output_file::Section::Section): New ctor.
1901 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
1902 (Dwp_output_file::Dwp_index::Section_table): New type.
1903 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
1904 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
1905 parameter.
1906 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
1907 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
1908 (Dwp_output_file::Dwp_index::section_table): New member function.
1909 (Dwp_output_file::Dwp_index::section_table_end): New member function.
1910 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
1911 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
1912 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
1913 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
1914 (Dwp_output_file::Dwp_index::section_table_): New data member.
1915 (Dwp_output_file::Dwp_index::section_mask_): New data member.
1916 (Dwp_output_file::add_output_section): New member function.
1917 (Dwp_output_file::write_new_section): New member function.
1918 (Dwp_output_file::write_contributions): New member function.
1919 (Dwp_output_file::section_id_map_): New data member.
1920 (class Dwo_id_info_reader): Remove.
1921 (class Unit_reader): New class.
1922 (get_dwarf_section_name): New function.
1923 (Dwo_file::read_executable): Adjust initializations of class data.
1924 (Dwo_file::read): Add support for v2 package file format.
1925 (Dwo_file::read_unit_index): Likewise.
1926 (Dwo_file::sized_read_unit_index): Likewise.
1927 (Dwo_file::copy_section): Likewise.
1928 (Dwo_file::add_unit_set): Likewise.
1929 (Dwp_output_file::add_output_section): Likewise.
1930 (Dwp_output_file::add_contribution): Likewise.
1931 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
1932 for empty slot.
1933 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
1934 file format.
1935 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
1936 slot.
1937 (Dwp_output_file::initialize): Remove unused function.
1938 (Dwp_output_file::finalize): Add support for v2 package file format.
1939 (Dwp_output_file::write_index): Likewise.
1940 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
1941 function prototype.
1942
2500c017
CC
19432013-10-31 Cary Coutant <ccoutant@google.com>
1944
1945 * configure.ac: Fix check for -fmerge-constants.
1946 * configure.ac: Regenerate.
1947
dd0845d7
RM
19482013-10-30 Roland McGrath <mcgrathr@google.com>
1949
1950 * x86_64.cc (Output_data_plt_x86_64_nacl::first_plt_entry):
1951 Correct 9-byte nop sequence to match what the assembler generates.
1952
b4f7960d
AM
19532013-10-30 Alan Modra <amodra@gmail.com>
1954
1955 * powerpc.cc (Powerpc_relobj::abiversion, set_abiversion,
1956 ppc64_local_entry_offset, ppc64_local_entry_offset,
1957 do_read_symbols): New functions.
1958 (Powerpc_relobj::e_flags_, st_other_): New vars.
1959 (Powerpc_relobj::Powerpc_relobj): Call set_abiversion.
1960 (Powerpc_dynobj::abiversion, set_abiversion): New functions.
1961 (Powerpc_relobj::e_flags_): New var.
1962 (Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline
1963 and adjust for ELFv2.
1964 (Target_powerpc::abiversion, set_abiversion, stk_toc): New functions.
1965 (Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2.
1966 (Powerpc_dynobj::do_find_special_sections): Likewise.
1967 (Target_powerpc::do_define_standard_symbols): Define ".TOC.".
1968 (Target_powerpc::Branch_info::make_stub): Adjust stub destination
1969 to ELFv2 local entry.
1970 (Target_powerpc::do_relax): No thread safe barriers needed for
1971 ELFv2.
1972 (Output_data_plt_powerpc::initial_plt_entry_size_,
1973 plt_entry_size): Delete. Replace all uses with
1974 first_plt_entry_offset() and plt_entry_size().
1975 (Output_data_plt_powerpc::Output_data_plt_powerpc): Remove
1976 reserved_size parm. Update callers.
1977 (Output_data_plt_powerpc::entry_count): Update.
1978 (Output_data_plt_powerpc::first_plt_entry_offset): Make private
1979 and use Target_powerpc::first_plt_entry_offset().
1980 (Output_data_plt_powerpc::get_plt_entry_size): Similarly and
1981 rename to plt_entry_size.
1982 (Output_data_plt_powerpc::add_ifunc_entry,
1983 add_local_ifunc_entry): Adjust reloc for ELFv2.
1984 (glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1.
1985 (glink_eh_frame_fde_64v2): New.
1986 (Stub_table::plt_call_size): Support ELFv2 sizing.
1987 (Output_data_glink::add_eh_frame): Use the new FDE.
1988 (Output_data_glink::set_final_data_size): Adjust for ELFv2 glink.
1989 (Stub_table::do_write): Write ELFv2 stubs and glink.
1990 (Target_powerpc::Relocate::relocate): Replaces nop after call
1991 with ld 2,24(1) and adjust local offset destination for ELFv2.
1992
f9c6b907
AM
19932013-10-30 Alan Modra <amodra@gmail.com>
1994
1995 * powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
1996 (Target_powerpc::Scan::global, local): Likewise.
1997 (Target_powerpc::Relocate::relocate): Likewise. Check for overflow
1998 on all ppc64 @h and @ha relocs.
1999
e84fe78f
AM
20002013-10-14 Alan Modra <amodra@gmail.com>
2001
2002 * output.h (Output_data_got::add_constant): Tidy.
2003 (Output_data_got::add_constant_pair): New function.
2004 * powerpc.cc (Output_data_got_powerpc): Override all Output_data_got
2005 methods used so as to first call reserve_ent().
2006
679e4abf
RM
20072013-10-11 Roland McGrath <mcgrathr@google.com>
2008
44dcb735
RM
2009 * powerpc.cc (Output_data_got_powerpc): Remove unused methods
2010 add_got_entry and add_got_entry_pair.
2011
13323c49
RM
2012 * configure.ac (TLS_GNU2_DIALECT): Use -Werror in test.
2013 (HAVE_PUBNAMES): Likewise.
2014 * configure: Regenerate.
2015
1496b446
RM
2016 * testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout.
2017 * testsuite/Makefile.in: Regenerate.
2018
cc84c10b
RM
2019 * target.h (Target::adjust_elf_header, Target::do_adjust_elf_header):
2020 Remove const from declaration.
2021 * target.cc (Sized_target::do_adjust_elf_header): Update definition.
2022 * sparc.cc (Target_sparc::do_adjust_elf_header): Likewise.
2023 * output.h (Output_file_header): Remove const from member target_
2024 and corresponding constructor argument.
2025 * output.cc (Output_file_header::Output_file_header): Update prototype.
2026 (Output_file_header::do_sized_write): Use this->target_ in place
2027 of parameters()->target().
2028
52f66a2c
RM
2029 * testsuite/undef_symbol.cc (Foo::get_a): New method.
2030
2b64b551
RM
2031 * configure.ac (MERGE_CONSTANTS_FLAG): New check.
2032 * configure: Regenerate.
2033 * Makefile.in: Regenerate.
2034 * testsuite/merge_string_literals_1.c: Renamed to have .cc suffix.
2035 * testsuite/merge_string_literals_2.c: Likewise.
2036 * testsuite/Makefile.am
2037 (merge_string_literals_1.o, merge_string_literals_2.o): Update deps.
2038 (AM_CFLAGS, AM_CXXFLAGS): Use $(MERGE_CONSTANTS_FLAG) in place of
2039 literal -fmerge-constants.
2040 * testsuite/Makefile.in: Regenerate.
2041
43819297
RM
2042 * i386.cc (Target_i386): Remove unused member dynbss_.
2043 * arm.cc (Target_arm): Likewise.
2044 * powerpc.cc (Target_powerpc): Likewise.
2045 * sparc.cc (Target_sparc): Likewise.
2046 * tilegx.cc (Target_tilegx): Likewise.
2047 * x86_64.cc (Target_x86_64): Likewise.
2048 * dwarf_reader.h (Dwarf_info_reader): Remove unused members
2049 type_signature_, type_offset_.
2050 * plugin.h (Plugin_hook): Remove unused member layout_.
2051 * readsyms.h (Add_symbols): Remove unused members dirpath_, dirindex_,
2052 mapfile_.
2053 (Read_member): Remove unused members input_objects_, symtab_,
2054 mapfile_, layout_.
2055 (Check_library): Remove unused member symtab_.
2056 * archive.h (Lib_group): Remove unused member lib_.
2057 * archive.cc (Lib_group::Lib_group): Update initializer.
2058 * incremental.h (Incremental_binary): Remove unused member target_.
2059 (Incremental_script_entry): Removed unused member script_.
2060 * layout.h (Write_symbols_task): Remove unused member input_objects_.
2061 * icf.h (Icf): Remove unused member num_tracked_relocs.
2062
39d9ead7
RM
2063 * gold-threads.h (Once): Conditionalize member was_run_lock_ on
2064 [ENABLE_THREADS && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4], matching
2065 its only use.
2066 * gold-threads.cc (Once::Once): Likewise conditionalize initializer.
2067
679e4abf
RM
2068 * archive.h: Use struct rather than class for forward declaration
2069 of Read_symbols_data.
2070
54de2ea6
CC
20712013-10-07 Cary Coutant <ccoutant@google.com>
2072
2073 PR gold/16010
2074 * testsuite/Makefile.am (icf_test): Fix dependencies.
2075 (icf_safe_test): Likewise.
2076 (icf_safe_so_test): Likewise.
2077 (large_symbol_alignment): Add empty _LDADD rule.
2078 * testsuite/Makefile.in: Regenerate.
2079
b14016f0
L
20802013-09-03 Pavel Chupin <pavel.v.chupin@intel.com>
2081
2082 PR gold/15927
2083 * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative
2084 relocation for R_X86_64_32 on x32.
2085
eb426534
RM
20862013-08-27 Roland McGrath <mcgrathr@google.com>
2087
2088 * output.cc (Output_segment::set_section_addresses): Take new
2089 Target* argument. If target->isolate_execinstr() and the segment
2090 is executable and starts at a target->abi_pagesize() boundary,
2091 pad its end out to a target->abi_pagesize() boundary with code fill.
2092 * output.h (Output_segment::set_section_addresses): Update decl.
2093 * layout.h (Layout::check_output_data_for_reset_values): Take new
2094 argument RELAX_OUTPUTS.
2095 (Layout): New member relax_output_list_.
2096 (Layout::add_relax_output): New method.
2097 * layout.cc (Layout::Layout): Update constructor.
2098 (Layout::reset_relax_output): New method.
2099 (Layout::clean_up_after_relaxation): Call it.
2100 (Layout::prepare_for_relaxation): Update caller.
2101 (Layout::set_segment_offsets): Update callers of set_section_addresses.
2102 Call reset_relax_output before re-processing segments for
2103 isolate_execinstr case.
2104 (Layout::write_data): Handle relax_output_list_.
2105 (Layout::Relaxation_debug_check::check_output_data_for_reset_values):
2106 Take new argument RELAX_OUTPUTS. Assert it's an empty collection.
2107
9aff4b7a
NC
21082013-08-23 Yuri Chornoivan <yurchor@ukr.net>
2109
2110 PR binutils/15834
2111 * object.h: Fix typos.
2112
93f8221c
RM
21132013-08-16 Roland McGrath <mcgrathr@google.com>
2114
2115 * i386.cc (Target_i386_nacl::do_code_fill): New virtual function.
2116 * x86_64.cc (Target_x86_64_nacl::do_code_fill): New virtual function.
2117
e44c3715
CC
21182013-08-07 Cary Coutant <ccoutant@google.com>
2119
2120 Revert support for v2 DWP files:
2121
2122 2013-03-01 Cary Coutant <ccoutant@google.com>
2123
2124 Add dwp support for v2 DWARF package file format.
2125 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
2126 tu_length parameter. Adjust all callers.
2127 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
2128 * dwp.cc: Include dwarf.h.
2129 (Section_bounds): New struct type.
2130 (Unit_set): New struct type.
2131 (Dwo_file::Dwo_file): Initialize new data member.
2132 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
2133 Combine and rename to...
2134 (Dwo_file::read_unit_index): ...this.
2135 (Dwo_file::sized_read_compunit_index)
2136 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
2137 (Dwo_file::sized_read_unit_index): ...this.
2138 (Dwo_file::copy_section): Remove section_name, is_str_offsets
2139 parameters; add section_id parameter.
2140 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
2141 (Dwo_file::add_unit_set): ...this.
2142 (Dwo_file::shndx_map_): Remove.
2143 (Dwo_file::sect_offsets_): New data member.
2144 (Dwp_output_file::Dwp_output_file): Initialize new data members.
2145 (Dwp_output_file::add_section): Rename to...
2146 (Dwp_output_file::add_contribution): ...this.
2147 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
2148 (Dwp_output_file::add_tu_set): Likewise.
2149 (Dwp_output_file::Contribution): New type.
2150 (Dwp_output_file::Section::contributions): New data member.
2151 (Dwp_output_file::Cu_or_tu_set): Remove.
2152 (Dwp_output_file::Section::Section): New ctor.
2153 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
2154 (Dwp_output_file::Dwp_index::Section_table): New type.
2155 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
2156 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
2157 parameter.
2158 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
2159 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
2160 (Dwp_output_file::Dwp_index::section_table): New member function.
2161 (Dwp_output_file::Dwp_index::section_table_end): New member function.
2162 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
2163 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
2164 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
2165 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
2166 (Dwp_output_file::Dwp_index::section_table_): New data member.
2167 (Dwp_output_file::Dwp_index::section_mask_): New data member.
2168 (Dwp_output_file::add_output_section): New member function.
2169 (Dwp_output_file::write_new_section): New member function.
2170 (Dwp_output_file::write_contributions): New member function.
2171 (Dwp_output_file::section_id_map_): New data member.
2172 (class Dwo_id_info_reader): Remove.
2173 (class Unit_reader): New class.
2174 (get_dwarf_section_name): New function.
2175 (Dwo_file::read_executable): Adjust initializations of class data.
2176 (Dwo_file::read): Add support for v2 package file format.
2177 (Dwo_file::read_unit_index): Likewise.
2178 (Dwo_file::sized_read_unit_index): Likewise.
2179 (Dwo_file::copy_section): Likewise.
2180 (Dwo_file::add_unit_set): Likewise.
2181 (Dwp_output_file::add_output_section): Likewise.
2182 (Dwp_output_file::add_contribution): Likewise.
2183 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
2184 for empty slot.
2185 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
2186 file format.
2187 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
2188 slot.
2189 (Dwp_output_file::initialize): Remove unused function.
2190 (Dwp_output_file::finalize): Add support for v2 package file format.
2191 (Dwp_output_file::write_index): Likewise.
2192 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
2193 function prototype.
2194
c6905c28
CC
21952013-07-31 Cary Coutant <ccoutant@google.com>
2196
2197 * object.cc (Sized_relobj::do_output_section_address): New function.
2198 (Sized_relobj): Instantiate explicitly.
2199 * object.h (Object::output_section_address): New function.
2200 (Object::do_output_section_address): New function.
2201 (Sized_relobj::do_output_section_address): New function.
2202 * powerpc.cc (Target_powerpc::symval_for_branch): Use it.
2203
22042013-07-30 Cary Coutant <ccoutant@google.com>
5cdb4d98 2205 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
a67858e0
CC
2206
2207 * parameters.cc (Parameters::entry): Return target-specific entry
2208 symbol name.
2209 * target.h (Target::entry_symbol_name): New function.
2210 (Target_info::entry_symbol_name): New data member.
2211
2212 * arm.cc (Target_arm::arm_info): Add entry_symbol_name.
2213 * i386.cc (Target_i386::i386_info): Likewise.
2214 (Target_i386_nacl::i386_nacl_info): Likewise.
2215 * sparc.cc (Target_sparc::sparc_info): Likewise.
2216 * tilegx.cc (Target_tilegx::tilegx_info): Likewise.
2217 * x86_64.cc: (Target_x86_64::x86_64_info) Likewise.
2218 (Target_x86_64_nacl::x86_64_nacl_info) Likewise.
2219 * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
2220
234d4ab8
SA
22212013-07-22 Sterling Augustine <saugustine@google.com>
2222
2223 * dwarf_reader.cc (Dwarf_pubnames_table::read_section):
2224 Convert parameter shndx to local variable. Add parameters symtab
2225 and symtab_size. Scan over section names. Find relocation
2226 section corresponding to current section. Create and initialize
2227 reloc_mapper_ and reloc_type_.
2228 (Dwarf_pubnames_table::read_header): Add assertion. Change
2229 unit_length to off_t. Initialize member unit_length_. Fill in field
2230 cu_offset_.
2231 * dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
2232 Initialize new fields unit_length_ and cu_offset_.
2233 (Dwarf_pubnames_table::read_section): Update prototype.
2234 (Dwarf_pubnames_table::cu_offset): New member function.
2235 (Dwarf_pubnames_table::subsection_size): Likewise.
2236 (Dwarf_pubnames_table::cu_offset_, Dwarf_pubnames_table::unit_length):
2237 New fields.
2238 (Dwarf_info_reader::symtab, Dwarf_info_reader::symtab_size): Make
2239 member functions public.
2240 * gdb_index.cc (Gdb_index_info_reader::read_pubnames_and_pubtypes):
2241 Update comment. Rework logic. Move repeated parts to...
2242 (Gdb_index_info_reader::read_pubtable): ...here. New function.
2243 (Gdb_index::Gdb_index): Initialize new fields, pubnames_table_,
2244 pubtypes_table_, and stmt_list_offset.
2245 (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
2246 Gdb_index::find_pubtype_offset,
2247 Gdb_index::map_pubnames_and_types_to_dies): Define new functions.
2248 (Gdb_index::pubnames_read): Update prototype and rework logic.
2249 * gdb_index.h (Gdb_index_info_reader, Dwarf_pubnames_table):
2250 Forward declare.
2251 (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
2252 Gdb_index::find_pubtype_offset, Gdb_index::pubnames_table)
2253 Gdb_index::pubtypes_table, Gdb_index::map_pubnames_and_types_to_dies,
2254 Gdb_index::map_pubtable_to_dies):
2255 Declare functions.
2256 (Gdb_index::pubnames_read): Update declaration.
2257 (Gdb_index::Pubname_offset_map): New type.
2258 (Gdb_index::cu_pubname_map_, Gdb_index::cu_pubtype_map_,
2259 Gdb_index::pubnames_table_, Gdb_index::pubtypes_table_,
2260 Gdb_index::stmt_list_offset): Declare.
2261 (Gdb_index::pubnames_shndx_, Gdb_index::pubnames_offet_,
2262 Gdb_index::pubtypes_object_, Gdb_index::pubtypes_shndx_)
2263 Gdb_index::pubtypes_offset_): Remove.
2264
a3ed37d8
RM
22652013-07-19 Roland McGrath <mcgrathr@google.com>
2266
2267 * options.h (General_options): Add -Trodata-segment option.
2268 * parameters.cc (Parameters::check_rodata_segment): New function.
2269 (Parameters::set_target_once): Call it.
2270 * parameters.h (Parameters): Declare it (private member function).
2271 * layout.cc (load_seg_unusable_for_headers): New function, broken
2272 out of Layout::relaxation_loop_body. If TARGET->isolate_execinstr()
2273 then validate rodata segment rather than text segment.
2274 (relaxation_loop_body): Call that.
2275 (is_text_segment): New function. Don't admit a non-executable
2276 segment if TARGET->isolate_execinstr().
2277 (set_segment_offsets): Call it. Honor -Trodata-segment option.
2278
eb5b4ded
CC
22792013-07-15 Shawn Landden <shawnlandden@gmail.com>
2280
2281 PR gold/15070
2282 * fileread.h (File_read::get_view): Clarify comment about ALIGNED.
2283 * nacl.h (Sniff_file::View::View): Request aligned view.
2284
4d5effb9
CC
22852013-07-11 Cary Coutant <ccoutant@google.com>
2286
2287 * powerpc.cc (Target_powerpc::write_branch_lookup_table): Use
2288 correct BRLT entry size.
2289
ba8ca3e7
AM
22902013-07-03 Alan Modra <amodra@gmail.com>
2291
2292 * powerpc.cc (Target_powerpc::Relocate::relocate): Update self-call
2293 comment.
2294
267257d2
CC
22952013-07-01 Cary Coutant <ccoutant@google.com>
2296
2297 * dwarf_reader.cc (Dwarf_ranges_table::read_ranges_table): Save
2298 reloc_type_.
2299 (Dwarf_ranges_table::read_range_list): Call lookup_reloc.
2300 (Dwarf_ranges_table::lookup_reloc): New function.
2301 * dwarf_reader.h (Dwarf_ranges_table::Dwarf_ranges_table): Initialize
2302 reloc_type_.
2303 (Dwarf_ranges_table::lookup_reloc): New function.
2304 (Dwarf_ranges_table::reloc_type_): New data member.
2305
06f30c9d
CC
23062013-06-27 Jing Yu <jingyu@google.com>
2307
2308 PR gold/15662
2309 * powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
2310 function.
2311 (Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
2312 (Target_powerpc::do_relax): Call the above.
2313
a2d7bf59
AM
23142013-06-27 Cary Coutant <ccoutant@google.com>
2315
2316 * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
2317 on garbage collected .opd section.
2318
23192013-06-27 Alan Modra <amodra@gmail.com>
2320
2321 * powerpc.cc (Target_powerpc::do_gc_add_reference): Test dst_shndx
2322 is non-zero.
2323 (Target_powerpc::do_gc_mark_symbols): Likewise for sym->shndx().
2324 (Target_powerpc::do_function_location): Likewise for loc->shndx.
2325
32364e50
CC
23262013-06-14 Cary Coutant <ccoutant@google.com>
2327
2328 * resolve.cc (Symbol::override_base): Don't override st_type
2329 from plugin placeholder symbols.
2330 (Symbol_table::resolve): Likewise.
2331 (Symbol_table::should_override): Don't complain about TLS mismatch
2332 if the TO symbol is a plugin placeholder.
2333 * testsuite/Makefile.am (plugin_test_tls): New test.
2334 * testsuite/Makefile.in: Regenerate.
2335 * testsuite/plugin_test_tls.sh: New test script.
2336 * testsuite/two_file_test_2_tls.cc: New test source.
2337 * testsuite/two_file_test_tls.cc: New test source.
2338
7fb47cc9
CC
23392013-06-05 Alexander Ivchenko <alexander.ivchenko@intel.com>
2340
2341 * layout.cc (Layout::set_segment_offsets): Taking care of the case when
2342 the maximum segment alignment is larger than the page size.
2343 * testsuite/Makefile.am (large_symbol_alignment): Test that Gold
2344 correctly aligns the symbols with large alignemnt.
2345 * testsuite/Makefile.in: Regenerate.
2346 * testsuite/large_symbol_alignment.cc: New file.
2347
6934001a
CC
23482013-05-30 Alexander Ivchenko <alexander.ivchenko@intel.com>
2349 Sriraman Tallam <tmsriram@google.com>
2350
2351 * options.h (sort_section): New option.
2352 * output.h (Input_section_sort_section_prefix_special_ordering_compare):
2353 Rename from Input_section_sort_section_name_special_ordering_compare.
2354 (Input_section_sort_section_name_compare): New struct.
2355 * output.cc (Output_section::Input_section_sort_section_name_compare::
2356 operator()): New function.
2357 (Output_section::sort_attached_input_sections): Use new sort function
2358 for .text if --sort-section=name is specified.
2359 * layout.cc (Layout::make_output_section):
2360 Add sorting by name when --sort-section=name is specified.
2361 * testsuite/Makefile.am (text_section_grouping): Test option
2362 --sort-section=name.
2363 * testsuite/Makefile.in: Regenerate.
2364 * testsuite/section_sorting_name.cc: New file.
2365 * testsuite/section_sorting_name.sh: New file.
2366
93acabad
CC
23672013-05-21 Cary Coutant <ccoutant@google.com>
2368
2369 * symtab.h (Symbol::is_cxx_vtable): New function.
2370 * target-reloc.h (relocate_section): Check for vtable symbol.
2371 * testsuite/Makefile.am (missing_key_func.sh): New test case.
2372 * testsuite/Makefile.in: Regenerate.
2373 * testsuite/missing_key_func.cc: New test source.
2374 * testsuite/missing_key_func.sh: New test script.
2375
60e8b3fc
CC
23762013-05-21 Cary Coutant <ccoutant@google.com>
2377
2b64b551
RM
2378 * object.cc (Sized_relobj_file::get_symbol_location_info): Set
2379 type of enclosing symbol.
2380 (Relocate_info::location): Check symbol type when describing symbol.
2381 * object.h (Symbol_location_info): Remove unused line_number;
2382 add enclosing_symbol_type.
2383 * testsuite/debug_msg.sh: Adjust expected output.
60e8b3fc 2384
9df9de2c
CC
23852013-05-13 Cary Coutant <ccoutant@google.com>
2386
2b64b551
RM
2387 * configure.ac: Export DEFAULT_TARGET.
2388 * configure: Regenerate.
2389 * Makefile.in: Regenerate.
2390 * testsuite/Makefile.am: Add .EXPORT_ALL_VARIABLES.
2391 * testsuite/Makefile.in: Regenerate.
2392 * testsuite/debug_msg.sh: Delete duplicate tests.
2393 Don't check undef_int error message match for powerpc where the
2394 source file and line number aren't available.
9df9de2c 2395
bbc5ae17
RM
23962013-05-10 Roland McGrath <mcgrathr@google.com>
2397
2398 * options.h (General_options): Add --rosegment-gap option.
2399 * options.cc (finalize): --rosegment-gap implies --rosegment.
2400 * layout.cc (set_segment_offsets): Let user option override
2401 target->rosegment_gap().
2402
0c6e6c39
RM
24032013-05-10 Roland McGrath <mcgrathr@google.com>
2404
2405 * options.h (General_options): Remove leading space from help
2406 messages for -nostdlib and --rosegment.
2407
cde7cb01
MR
24082013-05-03 Maciej W. Rozycki <macro@codesourcery.com>
2409
2410 PR ld/15365
2411 * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
2412
f31ae5b8
AM
24132013-05-03 Alan Modra <amodra@gmail.com>
2414
2415 * merge.cc (Output_merge_string::do_add_input_section): Correct
2416 scan for number of strings. Rename vars to avoid shadowing.
2417 Include missing terminator in input_size_.
2418
d3a7cd45
L
24192013-05-01 H.J. Lu <hongjiu.lu@intel.com>
2420
2421 * merge.cc (Output_merge_string<Char_type>::do_add_input_section):
2422 Restore empty string handling.
2423
6ad3daba
CC
24242013-05-01 Cary Coutant <ccoutant@google.com>
2425
2426 * stringpool.cc (Stringpool_template::new_key_offset): Fix
2427 uninitialized warning.
2428
e31908b6
CC
24292013-04-29 Alexander Ivchenko <alexander.ivchenko@intel.com>
2430
2431 * output.cc (Output_section::add_merge_input_section): Allow
2432 to merge sections if the alignment is more than character size.
2433 * merge.h (Output_merge_string::Output_merge_string): Remove
2434 assert.
2435 * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count
2436 only not-null strings. Check the alignment of strings.
2437 * stringpool.h
2438 (Stringpool_template<Stringpool_char>::Stringpool_template): Add
2439 alignment as the argument.
2440 (Stringpool_template<Stringpool_char>::addralign_): New class member.
2441 * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset):
2442 Align non-zero length strings according to the addralign_.
2443 (Stringpool_template<Stringpool_char>::set_string_offsets):
2444 Updating offsets according to the given alignment.
2445 * testsuite/Makefile.am (text_section_grouping): Test if string
2446 literals are getting merged.
2447 * testsuite/Makefile.in: Regenerate.
2448 * testsuite/merge_string_literals_1.c: New file.
2449 * testsuite/merge_string_literals_2.c: Ditto.
2450 * testsuite/merge_string_literals.sh: Ditto.
2451
0e804863
ILT
24522013-04-26 Ian Lance Taylor <iant@google.com>
2453
2454 * target-reloc.h (relocate_section): If the reloc offset is out of
2455 range, pass VIEW as NULL to relocate.relocate.
2456 * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view.
2457 * i386.cc (Target_i386::Relocate::relocate): Likewise.
2458 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
2459 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
2460 * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise.
2461 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
2462
e7c5ea40
CC
24632013-04-26 Geoff Pike <gpike@chromium.org>
2464
2465 * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks().
2466 * layout.cc (Hash_task): New class.
2467 (Layout::queue_build_id_tasks): New function.
2468 (Layout::write_build_id): Handle single-thread portion of build ID
2469 computation. (In some cases, all of it is single-threaded.) Replace
2470 {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same
2471 functionality in fewer lines of code.
2472 * layout.h (Layout::queue_build_id_tasks): New function declaration.
2473 * options.h (General_options): make "--build-id" default to tree
2474 rather than sha1. Add two new options related to --build-id=tree:
2475 --build-id-chunk-size-for-treehash and
2476 --build-id-min-file-size-for-treehash.
2477 * Makefile.am: add testing of --build-id=tree and related new options
2478 (these tests will be invoked by "make check").
2479 * Makefile.in: Regenerate.
2480
49926cd0
AM
24812013-04-25 Alan Modra <amodra@gmail.com>
2482
2483 * configure.tgt: Add powerpcle and powerpc64le.
2484
a4034750
AM
24852013-04-22 Alan Modra <amodra@gmail.com>
2486
2487 PR gold/15355
2488 * layout.cc (Layout::segment_precedes): Allow more than one
2489 segment with the same type and flags.
2490
e79c84aa
CC
24912013-04-15 Cary Coutant <ccoutant@google.com>
2492
2493 * layout.cc (Layout::set_relocatable_section_offsets): Don't
2494 allocate space in file for BSS sections.
2495
2199fbe7
CC
24962013-04-15 Cary Coutant <ccoutant@google.com>
2497
2498 * script-sections.cc (Orphan_output_section): Reset address
2499 to zero after each orphaned section for relocatable links.
2500
502e8a84
CC
25012013-04-15 Cary Coutant <ccoutant@google.com>
2502
a4034750
AM
2503 * symtab.cc (Symbol_table::sized_write_globals): Subtract
2504 section starting address for relocatable link.
2505 * testsuite/Makefile.am (script_test_11): New test.
2506 * testsuite/Makefile.in: Regenerate.
2507 * testsuite/script_test_11.c: New source file.
2508 * testsuite/script_test_11.t: New linker script.
502e8a84 2509
0cfdc767
AM
25102013-04-13 Alan Modra <amodra@gmail.com>
2511
2512 * powerpc.cc (Stub_control::can_add_to_stub_group): Don't set
2513 owner when sections are not adjacent and exceed group size.
2514 (Target_powerpc::group_sections): Handle corner case.
2515 (Target_powerpc::Branch_info::make_stub): Handle case where
2516 stub table doesn't exist due to branches in non-exec sections.
2517 (Target_powerpc::Relocate::relocate): Likewise.
2518
6830ee24
AM
25192013-04-11 Alan Modra <amodra@gmail.com>
2520
2521 PR gold/15354
2522 * powerpc.cc (Target_powerpc::make_brlt_section): Name section
2523 .branch_lt to match bfd ld. Adjust comments throughout file.
2524
54a3d865
ILT
25252013-04-04 Ian Lance Taylor <iant@google.com>
2526
2527 GCC PR c++/56840
2528 * object.cc (do_layout_deferred_sections): Handle .eh_frame
2529 sections before checking whether they are included in the link.
2530
9993ba11
ST
25312013-03-29 Sriraman Tallam <tmsriram@google.com>
2532
2533 * archive.cc (Archive::get_elf_object_for_member): Create the elf
2534 object before calling the plugin claim_file handler. Pass the elf
2535 object of the archive to the plugin. Delete the elf object if the
2536 plugin claims the file.
2537
ebacd51e
AM
25382013-03-21 Alan Modra <amodra@gmail.com>
2539
2540 * layout.cc (Layout::set_segment_offsets): Accept writable .text
2541 segment when omagic.
2542
117be58f
AM
25432013-03-21 Alan Modra <amodra@gmail.com>
2544
2545 * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsigned
2546 comparison warning.
2547 * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used
2548 uninitialized" warning.
2549
32e2b61d
AM
25502013-03-20 Alan Modra <amodra@gmail.com>
2551
2552 * symtab.h (Symbol::clear_version): New function.
2553 * symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object
2554 is_needed by weak references. Clear version for symbols defined
2555 in as-needed objects that are not needed.
2556
b3ccdeb5
AM
25572013-03-15 Alan Modra <amodra@gmail.com>
2558
2559 * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Make
2560 static and public. Add report_err param. Return false for data refs.
2561 (Target_powerpc::rela_dyn_section): New overloaded function.
2562 (Target_powerpc::plt_, iplt_): Elucidate.
2563 (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0.
2564 (Output_data_plt_powerpc::do_write): Don't write .iplt.
2565 (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries.
2566 (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc
2567 calls. Put ifunc dynamic relocs in irela_dyn_section. Only
2568 push_branch and make_plt_entry for ifunc syms when
2569 reloc_needs_plt_for_ifunc.
2570 (Target_powerpc::Relocate::relocate): Don't use plt entry value
2571 for ifunc unless reloc_needs_plt_for_ifunc.
2572
ad3d8a2f
AM
25732013-03-15 Alan Modra <amodra@gmail.com>
2574
2575 * gc.h (gc_process_relocs): Don't look through function descriptors.
2576 * icf.cc (get_section_contents): Do so here instead.
2577
4d9aa155
AM
25782013-03-13 Alan Modra <amodra@gmail.com>
2579
2580 * powerpc.cc (is_branch_reloc): Forward declare.
2581 (Target_powerpc::do_can_check_for_function_pointers): New predicate.
2582 (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return
2583 false for 64-bit, true for 32-bit non-branch relocs.
2584 (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise.
2585 * testsuite/Makefile.am (icf_test): Use linker map file instead of
2586 nm output.
2587 (icf_safe_test): Generate linker map file as well as nm output.
2588 (icf_safe_so_test): Likewise.
2589 * testsuite/Makefile.in: Regenerate.
2590 * testsuite/icf_test.sh: Parse linker map file to determine
2591 section folding.
2592 * testsuite/icf_safe_test.sh: Likewise. Expect folding for PowerPC.
2593 * testsuite/icf_safe_so_test.sh: Likewise.
2594 (X86_32_or_ARM_specific_safe_fold): Merge into..
2595 (arch_specific_safe_fold): ..this.
2596 (X86_64_specific_safe_fold): Delete unused function.
2597
57420c20
AM
25982013-03-12 Alan Modra <amodra@gmail.com>
2599
2600 * gc.h (gc_process_relocs): Look through function descriptors
2601 to determine shndx, symvalue and addend used by ICF. Tidy
2602 variable duplication.
2603
dc3714f3
AM
26042013-03-11 Alan Modra <amodra@gmail.com>
2605
2606 * gold.cc (queue_middle_tasks): Move detect_odr_violations..
2607 * layout.cc (Layout_task_runner::run): ..to here.
2608 * symtab.h (struct Symbol_location): Extract from..
2609 (class Symbol_table): ..here.
2610 * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
2611 * target.h (class Target): Add function_location and
2612 do_function_location functions.
2613 (class Sized_target): Add do_function_location.
2614 * object.h (class Sized_relobj_file): Move find_shdr..
2615 (class Object): ..to here.
2616 * object.cc: Likewise. Update to suit. Instantiate.
2617 (Sized_relobj_file::find_eh_frame): Update find_shdr call.
2618 * powerpc.cc (class Powerpc_dynobj): New.
2619 (Target_powerpc::do_function_location): New function.
2620 (Powerpc_relobj::do_find_special_sections): Update find_shdr call.
2621 (Powerpc_dynobj::do_read_symbols): New function.
2622 (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
2623
956b03bb
ILT
26242013-03-08 Ian Lance Taylor <iant@google.com>
2625
2626 * options.cc (General_options::string_to_object_format): Accept
2627 "default".
2628
4bead2d5
AM
26292013-03-08 Alan Modra <amodra@gmail.com>
2630
2631 * ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
2632 pointer to Post_fde.
2633 (struct Post_fde): Move definition to here..
2634 * ehframe.cc (struct Post_fde): ..from here.
2635 (Cie::write): Don't alloc Post_fde.
2636 (Eh_frame::do_sized_write): Update. Don't free Post_fde.
2637
02e60bf7
AM
26382013-03-07 Alan Modra <amodra@gmail.com>
2639
2640 * testsuite/discard_locals_relocatable_test.c: Add a powerpc
2641 relocation referencing .LC0.
2642 * testsuite/discard_locals_test.sh: Remove FIXMEs.
2643
8343f03a
AM
26442013-03-07 Alan Modra <amodra@gmail.com>
2645
2646 * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
2647 always_inline. Add assembly for powerpc to avoid GOT.
2648
3366d57c
AM
26492013-03-07 Alan Modra <amodra@gmail.com>
2650
2651 * testsuite/script_test_10.sh: Don't test .bss section
2652 header number.
2653
6c77229c
AM
26542013-03-06 Alan Modra <amodra@gmail.com>
2655
2656 * powerpc.cc (class Powerpc_relobj): Move some member functions.
2657 (Target_powerpc::symval_for_branch): Add symtab param. Update
2658 all callers. Handle folded sections.
2659 (Target_powerpc::do_gc_add_reference): Don't cast dynamic object
2660 to Powerpc_relobj.
2661 (Global_symbol_visitor_opd::operator()): Likewise.
2662
a39e4af6
AM
26632013-03-04 Alan Modra <amodra@gmail.com>
2664
2665 * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.
2666 * testsuite/Makefile.in: Regenerate.
2667
d5834edb
CC
26682013-03-01 Cary Coutant <ccoutant@google.com>
2669
2670 Add dwp support for v2 DWARF package file format.
2671 * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
2672 tu_length parameter. Adjust all callers.
2673 * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
2674 * dwp.cc: Include dwarf.h.
2675 (Section_bounds): New struct type.
2676 (Unit_set): New struct type.
2677 (Dwo_file::Dwo_file): Initialize new data member.
2678 (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
2679 Combine and rename to...
2680 (Dwo_file::read_unit_index): ...this.
2681 (Dwo_file::sized_read_compunit_index)
2682 (Dwo_file::sized_read_typeunit_index): Combine and rename to...
2683 (Dwo_file::sized_read_unit_index): ...this.
2684 (Dwo_file::copy_section): Remove section_name, is_str_offsets
2685 parameters; add section_id parameter.
2686 (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
2687 (Dwo_file::add_unit_set): ...this.
2688 (Dwo_file::shndx_map_): Remove.
2689 (Dwo_file::sect_offsets_): New data member.
2690 (Dwp_output_file::Dwp_output_file): Initialize new data members.
2691 (Dwp_output_file::add_section): Rename to...
2692 (Dwp_output_file::add_contribution): ...this.
2693 (Dwp_output_file::add_cu_set): Combine parameters into a struct.
2694 (Dwp_output_file::add_tu_set): Likewise.
2695 (Dwp_output_file::Contribution): New type.
2696 (Dwp_output_file::Section::contributions): New data member.
2697 (Dwp_output_file::Cu_or_tu_set): Remove.
2698 (Dwp_output_file::Section::Section): New ctor.
2699 (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
2700 (Dwp_output_file::Dwp_index::Section_table): New type.
2701 (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
2702 (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
2703 parameter.
2704 (Dwp_output_file::Dwp_index::shndx_pool): Remove.
2705 (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
2706 (Dwp_output_file::Dwp_index::section_table): New member function.
2707 (Dwp_output_file::Dwp_index::section_table_end): New member function.
2708 (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
2709 (Dwp_output_file::Dwp_index::section_table_rows): New member function.
2710 (Dwp_output_file::Dwp_index::section_table_cols): New member function.
2711 (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
2712 (Dwp_output_file::Dwp_index::section_table_): New data member.
2713 (Dwp_output_file::Dwp_index::section_mask_): New data member.
2714 (Dwp_output_file::add_output_section): New member function.
2715 (Dwp_output_file::write_new_section): New member function.
2716 (Dwp_output_file::write_contributions): New member function.
2717 (Dwp_output_file::section_id_map_): New data member.
2718 (class Dwo_id_info_reader): Remove.
2719 (class Unit_reader): New class.
2720 (get_dwarf_section_name): New function.
2721 (Dwo_file::read_executable): Adjust initializations of class data.
2722 (Dwo_file::read): Add support for v2 package file format.
2723 (Dwo_file::read_unit_index): Likewise.
2724 (Dwo_file::sized_read_unit_index): Likewise.
2725 (Dwo_file::copy_section): Likewise.
2726 (Dwo_file::add_unit_set): Likewise.
2727 (Dwp_output_file::add_output_section): Likewise.
2728 (Dwp_output_file::add_contribution): Likewise.
2729 (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
2730 for empty slot.
2731 (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
2732 file format.
2733 (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
2734 slot.
2735 (Dwp_output_file::initialize): Remove unused function.
2736 (Dwp_output_file::finalize): Add support for v2 package file format.
2737 (Dwp_output_file::write_index): Likewise.
2738 * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
2739 function prototype.
2740
a68a081d
CC
27412013-03-01 Cary Coutant <ccoutant@google.com>
2742
2743 * dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move
2744 function into class definition in header file.
2745 (Dwarf_info_reader::warn_corrupt_debug_section): New function.
2746 * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section):
2747 New function.
2748 (Dwarf_info_reader::check_buffer): Move here from .cc file.
2749
9d5781f8
AM
27502013-02-28 Alan Modra <amodra@gmail.com>
2751
2752 * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.
2753 * target.cc (Target::do_plt_fde_location): New function.
2754 * ehframe.h (class FDE): Add post_map field to u_.from_linker,
2755 accessor function, and constructor param.
2756 (struct Post_fde, Post_fdes): Declare.
2757 (Cie::write): Add post_fdes param.
2758 * ehframe.cc (Fde::write): Use plt_fde_location.
2759 (struct Post_fde): Define.
2760 (Cie::write): Stash FDEs added post merge mapping.
2761 (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping.
2762 Adjust Fde constructor call. Bump final_data_size_ for post map FDEs.
2763 (Eh_frame::do_sized_write): Arrange to write post map FDES after
2764 other FDEs.
2765 * powerpc.cc (Target_powerpc::do_plt_fde_location): New function.
2766 (Target_powerpc::has_glink): New function.
2767 (Target_powerpc::do_relax): Add eh_frame info for stubs.
2768 (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64,
2769 glink_eh_frame_fde_32, default_fde): New data.
2770 (Stub_table::eh_frame_added_): New var.
2771 (Stub_table::find_long_branch_entry, stub_address, stub_offset):
2772 Make const.
2773 (Stub_table::add_eh_frame): New function.
2774 (Output_data_glink::add_eh_frame): New function.
2775 (Target_powerpc::make_glink_section): Call add_eh_frame.
2776
214383dd
ILT
27772013-02-15 Ian Lance Taylor <iant@google.com>
2778
2779 * options.h (DEFINE_uint64_alias): Define.
2780 (class General_options): Add -Ttext-segment as an alias for
2781 -Ttext.
2782
91c2b899
AM
27832013-02-15 Alan Modra <amodra@gmail.com>
2784
2785 * powerpc.cc (Stub_table::plt_off): New function, extracted from..
2786 (Stub_table::do_write): ..here, two places.
2787 (Stub_table::plt_call_size): Use it here too.
2788
20e2a8aa
ILT
27892013-02-11 Ian Lance Taylor <iant@google.com>
2790
2791 * descriptors.cc (Descriptors::close_all): New function.
2792 * descriptors.h (class Descriptors): Declare close_all.
2793 (close_all_descriptors): New inline function.
2794 * plugin.cc: Include "descriptors.h".
2795 (Plugin_manager::cleanup): Call close_all_descriptors.
2796
8952bc69
AM
27972013-02-06 Alan Modra <amodra@gmail.com>
2798
2799 * README: Update coding style link.
2800
29bd8b6b
CC
28012013-01-28 Cary Coutant <ccoutant@google.com>
2802
a4034750
AM
2803 * dwp.cc (File_list): New typedef.
2804 (Dwo_name_info_reader): New class.
2805 (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
2806 (Dwo_id_info_reader::visit_top_die): Remove unused member function.
2807 (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
2808 (Dwo_file::read_executable): New function.
2809 (Dwo_file::read): Move common setup code to ...
2810 (Dwo_file::make_object): ... here.
2811 (dwp_options): Add --exec/-e.
2812 (usage): Likewise.
2813 (main): Likewise.
29bd8b6b 2814
c6ac678d
ST
28152013-01-24 Sriraman Tallam <tmsriram@google.com>
2816
2817 * layout.cc (Layout::layout): Check for option text_reorder.
2818 (Layout::make_output_section): Ditto.
2819 * options.h (text_reorder): New option.
2820 * output.cc (Input_section_sort_compare): Remove special ordering
2821 of section names.
2822 (Output_section::
2823 Input_section_sort_section_name_special_ordering_compare::
2824 operator()): New function.
2825 (Output_section::sort_attached_input_sections): Use new sort function
2826 for .text.
2827 * output.h (Input_section_sort_section_name_special_ordering_compare):
2828 New struct.
2829 * testsuite/Makefile.am (text_section_grouping): Test option
2830 --no-text-reorder
2831 * testsuite/Makefile.in: Regenerate.
2832 * testsuite/text_section_grouping.sh: Check order of functions without
2833 default text reordering.
2834
50701cc1
MF
28352013-01-18 Mike Frysinger <vapier@gentoo.org>
2836
2837 * options.h (General_options): Change default to true for new_dtags.
2838
b1b00fcc
MF
28392013-01-18 Mike Frysinger <vapier@gentoo.org>
2840
2841 * layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
2842 when enable_new_dtags is false. Only add DT_RUNPATH when
2843 enable_new_dtags is true.
2844
ec5b8187
AM
28452013-01-17 Serge Pavlov <serge.v.pavlov@gmail.com>
2846
2847 * powerpc.cc (Stub_table::find_plt_call_entry): Make types
2848 used in declaration and definition consistent.
2849 (Target_powerpc::symval_for_branch): Ditto.
2850
a880d4c4
ST
28512013-01-16 Sriraman Tallam <tmsriram@google.com>
2852
2853 * testsuite/plugin_final_layout.cc: Fix comment.
2854
7c381248
ST
28552013-01-16 Sriraman Tallam <tmsriram@google.com>
2856
2857 * layout.cc (Layout::layout): Do not do default sorting for
2858 text sections when section ordering is specified.
2859 (make_output_section): Ditto.
2860 * testsuite/plugin_final_layout.cc: Name the function sections
2861 to catch reordering issues.
2862
e2458743
AM
28632013-01-15 Alan Modra <amodra@gmail.com>
2864
2865 * powerpc.cc (Target_powerpc::do_relax): Default shared libs to
2866 plt-thread-safe.
2867
431ed302
AM
28682013-01-15 Alan Modra <amodra@gmail.com>
2869
2870 * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
2871 * testsuite/Makefile.in: Regenerate.
2872
0ec6429b
AM
28732013-01-14 Alan Modra <amodra@gmail.com>
2874
2875 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
2876 * testsuite/Makefile.in: Regenerate.
2877
0bf402d5
ILT
28782013-01-11 Pavel Chupin <pavel.v.chupin@intel.com>
2879
36af3926 2880 PR bfd/14430
0bf402d5
ILT
2881 Fix mingw gold build with plugins enabled
2882 * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
2883 * configure.ac: Export DLOPEN_LIBS and add headers check.
2884 * plugin.cc: Handle non-dlfcn case.
2885 * Makefile.in: Regenerate.
2886 * config.in: Regenerate.
2887 * configure: Regenerate.
2888 * testsuite/Makefile.in: Regenerate.
2889
9e9143bc
ST
28902013-01-09 Sriraman Tallam <tmsriram@google.com>
2891
2892 * output.h (sort_attached_input_sections): Change to be public.
2893 * script-sections.cc
2894 (Output_section_definition::set_section_addresses): Sort
2895 attached input sections according to section order before linker
2896 script assigns section addresses.
2897 (Orphan_output_section::set_section_addresses): Sort
2898 attached input sections according to section order before linker
2899 script assigns section addresses.
2900 * Makefile.am (final_layout.sh): Use a simple linker script to
2901 check if section ordering still works.
2902 * Makefile.in: Regenerate.
2903
679af368
ILT
29042013-01-09 Ben Cheng <bccheng@google.com>
2905
2906 * arm.cc (Target_arm::attributes_accept_div): New function.
2907 (Target_arm::attributes_forbid_div): New function.
2908 (Target_arm::merge_object_attributes): Merge the Tag_DIV_use
2909 attribute using the same new functions as what bfd/elf32_arm.c
2910 does.
2911
3136a00e
CC
29122013-01-07 Cary Coutant <ccoutant@google.com>
2913
2914 PR gold/14993
2915 * output.cc (Output_section::add_input_section): For incremental
2916 updates, don't track input sections that are allocated from patch
2917 space.
2918
f2a6224b
L
29192013-01-07 H.J. Lu <hongjiu.lu@intel.com>
2920 Ian Lance Taylor <iant@google.com>
2921
2922 PR gold/14897
2923 * configure.ac (--enable-ld): Removed.
2924 (install_as_default): Set to yes only for --enable-gold=default
2925 or --disable-ld.
2926 * configure: Regenerated.
2927
4f46f626
L
29282013-01-07 H.J. Lu <hongjiu.lu@intel.com>
2929
2930 * options.h (General_options): Add -fuse-ld= for GCC linker
2931 option compatibility.
2932
26e4ef59
CC
29332013-01-04 Cary Coutant <ccoutant@google.com>
2934
2935 * configure.ac: Fix typo restoring CXXFLAGS.
2936 * configure: Regenerate.
2937
3d587466
CC
29382013-01-04 Cary Coutant <ccoutant@google.com>
2939
4f46f626
L
2940 * testsuite/Makefile.am (CXXLINK_S): New macro.
2941 (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
2942 * testsuite/Makefile.in: Regenerate.
3d587466 2943
44db6695
L
29442013-01-02 H.J. Lu <hongjiu.lu@intel.com>
2945
2946 * version.cc (print_version): Update copyright year to 2013.
2947
edcac0c1
ILT
29482012-12-20 Ian Lance Taylor <iant@google.com>
2949
2950 * layout.cc (Layout::special_ordering_of_input_section): New
2951 function.
2952 (Layout::layout): If input section requires special ordering, must
2953 sort input sections.
2954 (Layout::make_output_section): May sort .text input sections.
2955 (Layout::is_section_name_prefix_grouped): Remove.
2956 * layout.h (class Layout): Declare
2957 special_ordering_of_input_section. Don't declare
2958 is_section_name_prefix_grouped.
2959 * output.cc (Output_section::add_input_section): Revert last
2960 change.
2961 (Output_section::Input_section_sort::match_file_name): Don't crash
2962 if called on output section data.
2963 (Output_section::Input_section_sort_compare): Sort based on
2964 special ordering.
2965 (Output_section::Input_section_sort_section_order_index_compare):
2966 Revert last patch.
2967 (Output_section::sort_attached_input_sections): Likewise.
2968
28f2a4ac
ST
29692012-12-18 Sriraman Tallam <tmsriram@google.com>
2970
edcac0c1 2971 * layout.cc (Layout::is_section_name_prefix_grouped): New function.
28f2a4ac
ST
2972 * layout.h (Layout::is_section_name_prefix_grouped): New function.
2973 * output.cc (Output_section::add_input_section): Check if section
2974 name contains special prefix. Keep input sections to sort such
2975 sections.
2976 (Output_section::Input_section_sort_section_order_index_compare
2977 ::operator()): Group sections according to prefixes.
edcac0c1
ILT
2978 (Output_section::sort_attached_input_sections): Add condition to
2979 Input_section_entry constructor call.
28f2a4ac
ST
2980 * testsuite/Makefile.am (text_section_grouping): New test.
2981 * testsuite/Makefile.in: Regenerate.
2982 * testsuite/text_section_grouping.cc: New file.
2983 * testsuite/text_section_grouping.sh: New file.
2984
5bf135a7
NC
29852012-12-17 Nick Clifton <nickc@redhat.com>
2986
2987 * Makefile.am: Add copyright notice.
2988 * NEWS: Likewise.
2989 * README: Likewise.
2990 * configure.ac: Likewise.
2991 * ftruncate.c: Likewise.
2992 * Makefile.in: Regenerate.
2993
59965708
CC
29942012-12-14 Cary Coutant <ccoutant@google.com>
2995
a4034750
AM
2996 * testsuite/Makefile.am (exception_separate_shared_12_test): Add
2997 --no-as-needed flag.
2998 (exception_separate_shared_12_test): Likewise.
2999 (incremental_copy_test): Likewise.
3000 * testsuite/Makefile.in: Regenerate.
59965708 3001
2a77e2ab
CC
30022012-12-14 Cary Coutant <ccoutant@google.com>
3003
3004 * dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
3005 (Dwp_output_file::Dwp_index::enter_set): Add assert.
3006
e3deeb9c
AM
30072012-12-12 Alan Modra <amodra@gmail.com>
3008
3009 * powerpc.cc (class Track_tls): New.
3010 (class Relocate, class Scan): Inherit Track_tls.
3011 (Target_powerpc::Scan::local, global): Track tls optimization
3012 and avoid creating plt entry for __tls_get_addr if all uses
3013 are optimized away.
3014 (Target_powerpc::Relocate::relocate): Update to use Track_tls.
3015
d8f5a274
AM
30162012-12-12 Alan Modra <amodra@gmail.com>
3017
3018 * options.h (General_options): Add --toc-sort/--no-toc-sort.
3019 Replace no_toc_optimize with toc_optimize.
3020 * output.h (Output_section::input_sections): Provide non-const variant.
3021 * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
3022 set_has_small_toc_reloc, has_small_toc_reloc): New variable and
3023 accessors.
3024 (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
3025 (class Sort_toc_sections): New.
3026 (Target_powerpc::do_finalize_sections): Sort toc sections.
3027 (Target_powerpc::Relocate::relocate): Update toc_optimize test.
3028
4c8a1de1
RM
30292012-12-10 Roland McGrath <mcgrathr@google.com>
3030
3031 * testsuite/binary_unittest.cc (read_all): New function.
3032 (Sized_binary_test): Use it instead of ::read.
3033 * fileread.cc (do_read): Don't assume pread always reads the whole
3034 amount in a single call.
3035
edc27beb
AM
30362012-12-10 Alan Modra <amodra@gmail.com>
3037
3038 * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
3039 Set EM_PPC64 or EM_PPC here.
3040 (Target_selector_powerpc::do_recognize): Delete.
3041
906b9150
AM
30422012-12-10 Alan Modra <amodra@gmail.com>
3043
3044 * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
3045 stub_table_.
3046 (Target_powerpc::Branch_info::make_stub): Don't omit addend.
3047
418c15ae
RM
30482012-12-07 Roland McGrath <mcgrathr@google.com>
3049
3050 * testsuite/binary_unittest.cc (Sized_binary_test):
3051 Use open_descriptor rather than ::open.
3052
decdd3bc
AM
30532012-12-07 Alan Modra <amodra@gmail.com>
3054
3055 * powerpc.cc (Stub_table::do_write): Delete redundant Address
3056 typedef and invalid_address constant.
3057 (Output_data_glink, Stub_table, Target_powerpc): Explicitly
3058 instantiate constants.
3059
db399005
ILT
30602012-12-06 Roland McGrath <mcgrathr@google.com>
3061
3062 * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
3063 Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
3064 * aclocal.m4: Regenerate.
3065 * configure: Regenerate.
3066 * Makefile.in: Regenerate.
3067 * testsuite/Makefile.in: Regenerate.
3068
aba6bc71
AM
30692012-12-07 Alan Modra <amodra@gmail.com>
3070
3071 * options.h (General_options): Add no_toc_optimize.
3072 * powerpc.cc (ok_lo_toc_insn): New function.
3073 (Target_powerpc::Relocate::relocate): Optimize toc access sequences.
3074
9e69ed50
AM
30752012-12-06 Alan Modra <amodra@gmail.com>
3076
3077 * options.h (General_options): Add plt_align, plt_static_chain,
3078 plt_thread_safe. Update stub_group_size help text.
3079 * powerpc.cc (Target_powerpc::plt_thread_safe): New access function
3080 for new plt_thread_safe_ var.
3081 (use_plt_offset): Correct comments.
3082 (Target_powerpc::do_relax): Look for thread creation symbols to
3083 determine default plt_thread_safe value. Clear plt call stubs
3084 as well as branch stubs each iteration.
3085 (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
3086 insn constants.
3087 (l, hi, ha, write_insn): Move earlier.
3088 (Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
3089 (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
3090 plt stubs too.
3091 (Stub_table::update_size): Adjust.
3092 (Stub_table::prev_size, set_prev_size): Delete.
3093 (Stub_table::stub_align): Let --plt-align affect result.
3094 (Stub_table::plt_call_size): Calculate sizes for various stubs.
3095 (Stub_table::branch_stub_size): Use last_plt_size in address calc.
3096 (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
3097 (Stub_table::do_write): Support more stub variants.
3098
f43ba157
AM
30992012-12-04 Alan Modra <amodra@gmail.com>
3100
3101 * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
3102 (Target_powerpc::do_define_standard_symbols): New function.
3103
34171bc5
AM
31042012-12-03 Alan Modra <amodra@gmail.com>
3105
3106 * output.h: Formatting, whitespace.
3107
dc9589e9 31082012-12-03 Alan Modra <amodra@gmail.com>
ec661b9d
AM
3109
3110 * layout.h (Layout::get_executable_sections): Declare.
3111 * layout.cc (Layout::get_executable_sections): New function.
3112 * arm.cc (Target_arm::group_sections): Use it.
3113 (Arm_output_section::group_sections): Delete now redundant test.
3114 * output.cc (Output_reloc::Output_reloc): Add is_relative.
3115 param to handle relative relocs.
3116 * output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
3117 (Output_data_reloc::add_absolute): Adjust.
3118 (Output_data_reloc::add_relative): New function.
3119 (Output_data::reset_data_size): New function.
3120 (Output_relaxed_input_section::set_relobj, set_shndx): New functions.
3121 (Output_section::set_addralign): New function.
3122 (Output_section::checkpoint_set_addralign): New function.
3123 (Output_section::clear_section_offsets_need_adjustment): New function.
3124 (Output_section::input_sections): Make public.
3125 * powerpc.cc (class Output_data_brlt_powerpc): New.
3126 (class Stub_table, class Stub_control): New.
3127 (Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
3128 stub_table_, set_stub_table, stub_table): New vectors and accessor
3129 functions.
3130 (Target_powerpc::do_may_relax, do_relax, push_branch,
3131 new_stub_table, stub_tables, brlt_section, group_sections,
3132 add_branch_lookup_table, find_branch_lookup_table,
3133 write_branch_lookup_table, make_brlt_section): New functions.
3134 (Target_powerpc::struct Sort_sections, class Branch_info): New.
3135 (Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
3136 branch_info_): New vars.
3137 (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
3138 make call stubs here.
3139 (Output_data_glink): Remove all call stub handling from this class.
3140 (Target_powerpc::Scan::local, global): Save interesting branch
3141 relocs and relocs for ifunc. Adjust calls to plt entry functions.
3142 (Target_powerpc::do_finalize_sections): Only make reg save/restore
3143 functions on final link.
3144 (Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
3145 Handle long branch destinations too.
3146 (Target_powerpc::do_dynsym_value, do_plt_address_for_global,
3147 do_plt_address_for_local): Adjust lookup of plt call stubs.
3148
627b30b7
AM
31492012-11-30 Alan Modra <amodra@gmail.com>
3150
3151 * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
3152 relocs against protected symbols when building 32-bit shared libs.
3153
40b469d7
AM
31542012-11-30 Alan Modra <amodra@gmail.com>
3155
3156 * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
3157 param. Call got_section() to make .got. Update all callers
3158 and their callers and so on.
3159
bb66a627
AM
31602012-11-30 Alan Modra <amodra@gmail.com>
3161
3162 * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
3163 _GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
3164 (Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
3165 value if it already exists.
3166
d2cf1c6c
L
31672012-11-19 H.J. Lu <hongjiu.lu@intel.com>
3168
3169 PR gold/14858
3170 * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
3171
edccdf7c
RM
31722012-11-14 Roland McGrath <mcgrathr@google.com>
3173
3174 * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
3175 than bfc instruction for data sandboxing.
3176
6febeb74
AM
31772012-11-08 Alan Modra <amodra@gmail.com>
3178
3179 * po/POTFILES.in: Regenerate.
3180
0a6f1bf2
AM
31812012-11-05 Alan Modra <amodra@gmail.com>
3182
3183 * configure.ac: Apply 2012-09-10 change to config.in here.
3184 * configure: Regenerate.
3185
26a4e9cb
AM
31862012-11-05 Alan Modra <amodra@gmail.com>
3187
3188 * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
3189 (struct Opd_ent): Use "Address" rather than "Offset".
3190 (Output_data_got_powerpc::got_base_offset): Return Valtype.
3191 (Target_powerpc::got_section): Make public.
3192 (Target_powerpc::scan_relocs): Move code setting symbols..
3193 (Powerpc_relobj::do_scan_relocs): ..to here, new function.
3194 Create _SDA_BASE_ only when referenced.
3195
cc928013
RM
31962012-11-02 Roland McGrath <mcgrathr@google.com>
3197
3198 * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
3199 from last change.
3200
50ed5eb1
RM
32012012-11-01 Roland McGrath <mcgrathr@google.com>
3202
62fe925a
RM
3203 * target.h (Sized_target::relocate_relocs): Use Elf_Off
3204 for offset_in_output_section parameter.
3205 (Sized_target::relocate_special_relocatable): Likewise.
3206 * arm.cc (Target_arm::relocate_relocs): Likewise.
3207 (Target_arm::relocate_special_relocatable): Likewise.
3208 * i386.cc (Target_i386::relocate_relocs): Likewise.
3209 * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
3210 * sparc.cc (Target_sparc::relocate_relocs): Likewise.
3211 * target-reloc.h (relocate_relocs): Likewise.
3212 * testsuite/testfile.cc (Target_test): Likewise.
3213 * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
3214 * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
3215
3216 * system.h: Move inclusion of <clocale> to after <libintl.h> in
3217 [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
3218
3219 * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
3220 parameter, which is unused in the [!F_SETFD] case.
3221
50ed5eb1
RM
3222 * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
3223 SYMNDX to off_t before comparing it to this->data_size().
3224 * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
3225 * incremental.cc (Output_section_incremental_inputs::do_write):
3226 Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
3227
2cadc0bf
RM
3228 * nacl.cc: Include "libiberty.h" for vasprintf declaration.
3229
3bfcb652
NC
32302012-10-30 Steve McIntyre <steve.mcintyre@linaro.org>
3231
3232 * gold.cc (Target_arm::do_adjust_elf_header): Add the
3233 hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
3234 in EABI_VER5.
3235
c1a8d56e
CC
32362012-10-29 Cary Coutant <ccoutant@google.com>
3237
3238 * dwp.cc (usage): Add file and exit status parameters;
3239 add --help and --version options.
3240 (print_version): New function.
3241 (main): Add --help and --version options.
3242
b2490a7b
L
32432012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3244
3245 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
3246 final_layout_sequence.txt.
3247 * testsuite/Makefile.in: Regenerated.
3248
aa543512
L
32492012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3250
3251 * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
3252 COMPILE generated by automake.
3253 (LINK1): Likewise.
3254 (CXXCOMPILE1): Likewise.
3255 (CXXLINK1): Likewise.
3256 (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
3257 (LINK): Likewise.
3258 (CXXCOMPILE): Likewise.
3259 (CXXLINK): Likewise.
3260 * testsuite/Makefile.in: Regenerated.
3261
d361fafb
L
32622012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3263
3264 * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
3265 on bad fwrite return.
3266
598c7410
L
32672012-10-25 H.J. Lu <hongjiu.lu@intel.com>
3268
3269 * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
3270 on val.
3271
35c813e2
CC
32722012-10-23 Cary Coutant <ccoutant@google.com>
3273
3274 * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
3275 * testsuite/Makefile.in: Regenerate.
3276 * testsuite/dwp_test.h: New source file.
3277 * testsuite/dwp_test_1.cc: New source file.
3278 * testsuite/dwp_test_1.s: New source file.
3279 * testsuite/dwp_test_1.sh: New source file.
3280 * testsuite/dwp_test_1b.cc: New source file.
3281 * testsuite/dwp_test_1b.s: New source file.
3282 * testsuite/dwp_test_2.cc: New source file.
3283 * testsuite/dwp_test_2.s: New source file.
3284 * testsuite/dwp_test_2.sh: New source file.
3285 * testsuite/dwp_test_main.cc: New source file.
3286 * testsuite/dwp_test_main.s: New source file.
3287
77429909
CC
32882012-10-23 Cary Coutant <ccoutant@google.com>
3289
3290 * dwp.h: New header file.
3291 * dwp.cc: New source file.
3292 * gold.h: Move shared declarations to system.h.
3293 * system.h: New header file.
3294 * Makefile.am: Add dwp.
3295 * Makefile.in: Regenerate.
3296
ed5d6712
CC
32972012-10-23 Cary Coutant <ccoutant@google.com>
3298
3299 * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
3300 Dwarf_info_reader::read_from_pointer.
3301 (Dwarf_pubnames_table::read_header): Likewise.
3302 (Dwarf_pubnames_table::next_name): Likewise.
3303 (Dwarf_die::read_attributes): Likewise.
3304 (Dwarf_die::skip_attributes): Likewise.
3305 (Dwarf_info_reader::read_from_pointer): New function template.
3306 * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
3307 (Dwarf_pubnames_table): Likewise.
3308 (Dwarf_info_reader::read_from_pointer): New function template.
3309 * gdb-index.cc (Gdb_index_info_reader): Adjust call to
3310 Dwarf_pubnames_table ctor.
3311
8787852d
CC
33122012-10-23 Cary Coutant <ccoutant@google.com>
3313
3314 * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
3315 abbrev_shndx.
3316 * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
3317 abbrev_shndx_.
3318 (Dwarf_info_reader::set_abbrev_shndx): New method.
3319 (Dwarf_info_reader::abbrev_shndx_): New data member.
3320
9fc236f3
CC
33212012-10-23 Cary Coutant <ccoutant@google.com>
3322
3323 * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
3324 from object, not parameters.
3325 (Dwarf_info_reader::parse): Likewise.
3326 * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
3327 (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
3328 (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
3329 methods.
3330
effe8365
CC
33312012-10-23 Cary Coutant <ccoutant@google.com>
3332
3333 * fileread.cc (Input_file::Input_file): New constructor.
3334 * fileread.h (class Input_file): Add new constructor.
3335
1698990d
AM
33362012-10-18 Alan Modra <amodra@gmail.com>
3337
3338 PR gold/14727
3339 * object.cc (Relobj::is_section_name_included): Also match
3340 .sdata personality section.
3341
168a4726
AM
33422012-10-18 Alan Modra <amodra@gmail.com>
3343
3344 * target-reloc.h (class Default_comdat_behavior): New, package up..
3345 (get_comdat_behaviour): ..this.
3346 (relocate_section): Add Relocate_comdat_behavior template arg,
3347 adjust code to suit.
3348 * arm.cc (Target_arm::relocate_section): Adjust to suit.
3349 (Target_arm::scan_reloc_section): Likewise.
3350 * i386.cc (Target_i386::relocate_section): Likewise.
3351 * sparc.cc (Target_sparc::relocate_section): Likewise.
3352 * tilegx.cc (Target_tilegx::relocate_section): Likewise.
3353 * x86_64.cc (Target_x86_64::relocate_section): Likewise.
3354 * powerpc.cc (class Relocate_comdat_behavior): New.
3355 (Target_powerpc::relocate_section): Don't zap opd relocs. Supply
3356 gold::relocate_section with new template arg.
3357
acc276d8
AM
33582012-10-18 Alan Modra <amodra@gmail.com>
3359
3360 * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
3361 dynamic relocs for GOT_TPREL got entries, without symbol if
3362 resolving locally.
3363 (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
3364 (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
3365 (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
3366
e10f9870
AM
33672012-10-17 Alan Modra <amodra@gmail.com>
3368
3369 PR gold/14726
3370 * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
3371
ae034989
ST
33722012-10-16 Sriraman Tallam <tmsriram@google.com>
3373
3374 * layout.cc (Layout::include_section): Keep sections marked
3375 SHF_EXCLUDE when doing relocatable links.
3376
f3a0ed29
AM
33772012-10-16 Alan Modra <amodra@gmail.com>
3378
3379 * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
3380 (Target_powerpc::do_finalize_sections): Call it.
3381 (Output_data_save_res): New class and supporting functions.
3382 (Target_powerpc::symval_for_branch): Only look up .opd entry for
3383 normal symbols defined in object files.
3384
c6de8ed4
AM
33852012-10-12 Alan Modra <amodra@gmail.com>
3386
3387 * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
3388 (struct Opd_ent): Make "discard" a bit field. Add "gc_mark".
3389 (Target_powerpc::do_gc_mark_symbol): Delay marking function code
3390 section if scan_opd_relocs not yet called.
3391 (Target_powerpc::gc_process_relocs): Call process_gc_mark.
3392
03e25981
AM
33932012-10-12 Alan Modra <amodra@gmail.com>
3394
3395 * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
3396 add_local_ifunc_entry): Revert last change.
3397 (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
3398
c9824451
AM
33992012-10-05 Alan Modra <amodra@gmail.com>
3400
3401 * powerpc.cc (Target_powerpc::do_plt_address_for_local,
3402 do_plt_address_for_global): New functions.
3403 (Output_data_got_powerpc::do_write): Don't segfault when linking
3404 statically.
3405 (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
3406 add_local_ifunc_entry): Return true on adding entry..
3407 (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
3408 glink->add_entry call. Remove unused symtab param. Adjust calls.
3409 (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
3410 (Target_powerpc::make_iplt_section): Remove symtab param. Don't
3411 set up symbols here.
3412 (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
3413 syms here. Do so even when no .iplt. Don't segfault when linking
3414 statically.
3415 (Output_data_glink::add_entry, find_entry): Rearrange params. Add
3416 new variants without reloc param.
3417 (Glink_sym_ent::Glink_sym_ent): Likewise.
3418 (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
3419 reloc when refs will resolve to plt call stub.
3420 (Target_powerpc::Scan::local): Correct ifunc handling. Allow
3421 R_PPC_PLTREL24 to resolve locally.
3422 (Target_powerpc::Scan::global): Correct ifunc handling.
3423 (Target_powerpc::Relocate::relocate): Correct local sym glink
3424 lookup. Don't destroy "value" when we have a plt call stub,
3425 and when checking plt call validity.
3426 (Target_powerpc::do_dynsym_value): Simplify.
3427
19fec8c1
AM
34282012-10-05 Alan Modra <amodra@gmail.com>
3429
3430 * i386.cc (Output_data_plt_i386::address_for_global,
3431 address_for_local): Add plt offset to returned value. Adjust uses.
3432 * sparc.cc (Output_data_plt_sparc::address_for_global,
3433 address_for_local): Likewise.
3434 * tilegx.cc (Output_data_plt_tilegx::address_for_global,
3435 address_for_local): Likewise.
3436 * x86_64.cc (Output_data_plt_x86_64::address_for_global,
3437 address_for_local): Likewise.
3438 * target.h (Target::plt_address_for_global, plt_address_for_local):
3439 Update comment.
3440 * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
3441 (Output_data_got::Got_entry::write): Nor here.
3442 * output.h: Comment fix.
3443
e867b647
WL
34442012-10-02 Jiong Wang <jiwang@tilera.com>
3445
3446 * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
3447 global_offset_table_ value for larget got.
3448 (Target_tilegx::Relocate::relocate): Handle adjusted got value.
3449
e5d5f5ed
AM
34502012-09-29 Alan Modra <amodra@gmail.com>
3451
3452 * powerpc.cc (Target_powerpc::iplt_): New output section.
3453 (Target_powerpc::iplt_section, make_iplt_section,
3454 reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
3455 (Target_powerpc::make_plt_entry): Handle ifunc syms.
3456 Target_powerpc::plt_entry_count): Count iplt entries too.
3457 (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
3458 reloc section in constructor. New params.
3459 (Target_powerpc::make_plt_section): Create reloc section here instead.
3460 (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
3461 functions.
3462 (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
3463 (Output_data_glink::add_entry, find_entry): New functions to
3464 deal with local syms.
3465 (Glink_sym_ent): Add support for local syms.
3466 (Output_data_glink::do_write): Handle ifunc plt entries.
3467 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
3468 (Target_powerpc::Scan::local, global): Handle ifunc syms.
3469 (Target_powerpc::Relocate::relocate): Likewise.
3470 (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
3471
ec4dbad3
AM
34722012-09-25 Alan Modra <amodra@gmail.com>
3473
3474 * object.h (Sized_relobj_file::adjust_local_symbol,
3475 do_adjust_local_symbol): New functions.
3476 * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
3477 * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
3478 (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
3479 and irregular opd entry spacing.
3480 (Powerpc_relobj::do_read_relocs): Add opd size checks.
3481 (Global_symbol_visitor_opd): New functor.
3482 (Target_powerpc::do_finalize_sections): Omit global symbols defined
3483 on deleted opd entries.
3484
5c0b3823
WL
34852012-09-15 Jiong Wang <jiwang@tilera.com>
3486
3487 * tilegx.cc: New file.
3488 * Makefile.am (TARGETSOURCES): Add tilegx.cc
3489 (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
3490 * configure.tgt: Add entries for tilegx*.
3491 * configure.ac: Likewise.
3492 * Makefile.in: Rebuild.
3493 * configure: Likewise.
3494 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
3495 tilegx.
3496
bfdfa4cd
AM
34972012-09-13 Alan Modra <amodra@gmail.com>
3498
3499 * target-reloc.h (scan_relocs): Call scan.local for relocs
3500 against symbols in discarded sections. Pass is_discarded
3501 param.
3502 * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
3503 Add is_discarded param.
3504 * powerpc (Target_powerpc::Scan::local): Likewise. Use
3505 is_discarded to flag opd entry as discarded. Don't emit dyn
3506 relocs on such entries.
3507 (Target_powerpc::Scan::global): Similarly detect and handle
3508 such opd entries.
3509 (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
3510 opd_ent_. Update all uses.
3511 (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
3512 (Target_powerpc::relocate_section): Zero out discarded opd
3513 entry relocs.
3514
d77a0555
ILT
35152012-09-12 Ian Lance Taylor <iant@google.com>
3516
3517 PR gold/14570
3518 * output.cc: Rename Output_data_got template parameter from size
3519 to got_size for all functions. Compile all variants of
3520 Output_data_got.
3521 (Output_data_got::Got_entry::write): Correct use of size for
3522 symbol value. Use local_is_tls rather than casting to
3523 Sized_relobj_file.
3524 * object.h (class Object): Add local_is_tls and do_local_is_tls.
3525 (class Sized_relobj_file): Add do_local_is_tls.
3526 * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
3527
815a1205
AM
35282012-09-11 Alan Modra <amodra@gmail.com>
3529
3530 PR gold/14566
3531 * layout.cc (Layout::set_segment_offsets): When using
3532 common-page-size alignment, ensure we are on a new max-page-size
3533 page.
3534 * output.cc (Output_segment::set_section_addresses): Use
3535 abi_pagesize, not common_pagesize for relro boundary.
3536 (Output_segment::set_offset): Likewise.
3537
bd73a62d
AM
35382012-09-11 Alan Modra <amodra@gmail.com>
3539
3540 * output.h (Output_data_got::add_global_tls, add_local_tls,
3541 add_local_tls_pair): New functions.
3542 (Output_data_got::add_local_pair_with_rel): Remove second
3543 reloc param. Expand comment.
3544 (Output_data_got::Got_entry): Rename use_plt_offset_ to
3545 use_plt_or_tls_offset_, similarly for constructor param.
3546 (Output_data_got::Got_entry::write): Add got_index param.
3547 * output.cc (Output_data_got::add_global_tls, add_local_tls,
3548 add_local_tls_pair): New functions.
3549 (Output_data_got::Got_entry::write): Handle tls symbols
3550 with use_plt_or_tls_offset_ set specially.
3551 (Output_data_got::add_local_pair_with_rel): Only one reloc.
3552 (Output_data_got::do_write): Replace iterator with index, pass
3553 index to entry write function.
3554 * target.h (Target::tls_offset_for_local, tls_offset_for_global,
3555 do_tls_offset_for_local, do_tls_offset_for_global): New functions.
3556 * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
3557 call.
3558 * i386.cc (Target_i386::Scan::local): Likewise.
3559 * sparc.cc (Target_sparc::Scan::local): Likewise.
3560 * x86_64.cc (Target_x86_64::Scan::local): Likewise.
3561 * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
3562 do_tls_offset_for_global): New functions.
3563 (Target_powerpc::Scan::local): Correct TLS relocations and got
3564 entry values.
3565 (Target_powerpc::Scan::global): Don't emit unnecessary
3566 dynamic relocations on TLS GOT entries.
3567
00716ab1
AM
35682012-09-10 Matthias Klose <doko@ubuntu.com>
3569
3570 * config.in: Disable sanity check for kfreebsd.
3571
c891b3f9
SA
35722012-09-10 Sterling Augustine <saugustine@google.com>
3573
3574 * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
3575 (Gdb_index::pubtypes_read): New parameter.
3576 (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
3577 to calls.
3578 * gdb-index.h (Gdb_index): New fields pubnames_object_ and
3579 pubtypes_object_.
3580
e81fea4d
AM
35812012-09-09 Alan Modra <amodra@gmail.com>
3582
3583 * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
3584 (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
3585 * gc.h (gc_process_relocs): Call target gc_add_reference.
3586 * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
3587 * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
3588 (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
3589 unnecessary cast.
3590 * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
3591 to cater for when we don't need code offset. Update use.
3592 (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
3593 (Powerpc_relobj::access_from_map, add_reference, opd_valid,
3594 set_opd_valid): New functions.
3595 (Target_powerpc::do_gc_add_reference): New function.
3596 (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
3597 stashed refs.
3598 (Target_powerpc::do_gc_mark_symbol): New function.
3599
d2d60eef
CC
36002012-09-06 Cary Coutant <ccoutant@google.com>
3601
3602 * dwarf_reader.cc (Dwarf_die::read_attributes): Add
3603 DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
3604 (Dwarf_die::skip_attributes): Likewise.
3605 * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
3606 * testsuite/gdb_index_test.cc (inline_func_1): New function.
3607 (main): Call it.
3608 * testsuite/gdb_index_test_comm.sh: Check index for inline function.
3609
32ed4573
L
36102012-09-05 H.J. Lu <hongjiu.lu@intel.com>
3611
3612 * testsuite/script_test_3.t: Add .got.plt output section
3613 statement.
3614 * testsuite/script_test_4.t: Likewise.
3615
f4baf0d4
AM
36162012-09-05 Alan Modra <amodra@gmail.com>
3617
3618 * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
3619 update all uses and lose "enum" when using type.
3620
864a1b56
AM
36212012-09-05 Alan Modra <amodra@gmail.com>
3622
3623 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
3624 * configure: Regenerate.
3625 * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
3626 (plugin_final_layout.stdout): Likewise.
3627 (memory_test): Set page sizes to 0x1000.
3628 * testsuite/Makefile.in: Regenerate.
3629 * testsuite/discard_locals_test.sh: Add FIXME comment.
3630 * testsuite/justsyms_exec.c: Disable function test for powerpc64.
3631 * testsuite/pr14265.t: Add .got output section statement.
3632 * testsuite/script_test_2.t: Likewise.
3633 * testsuite/script_test_3.t: Likewise.
3634 * testsuite/script_test_4.t: Likewise.
3635 * testsuite/script_test_5.t: Likewise.
3636 * testsuite/script_test_6.t: Likewise.
3637 * testsuite/script_test_7.t: Likewise.
3638 * testsuite/script_test_9.t: Likewise.
3639
3ea0a085
AM
36402012-09-05 Alan Modra <amodra@gmail.com>
3641
3642 * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
3643 (Powerpc_relocate_functions::Status): New typedef.
3644 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
3645 (Target_powerpc::Scan::local): Handle REL64.
3646 (Target_powerpc::Scan::global): Likewise, and dynamic relocs
3647 for REL32 and REL64.
3648 (Target_powerpc::symval_for_branch): New function, extracted from..
3649 (Target_powerpc::Relocate::relocate): ..here. Correct plt call
3650 checks. Report overflow errors.
3651
7404fe1b
AM
36522012-09-05 Alan Modra <amodra@gmail.com>
3653
3654 * object.h (Sized_relobj_file::emit_relocs): Delete.
3655 (Sized_relobj_file::emit_relocs_reltype): Delete.
3656 * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
3657 relocate_relocs for --emit-relocs.
3658 (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
3659 * output.h: Update comment.
3660 (Output_segment::first_section): New function.
3661 (Output_segment::first_section_load_address): Use first_section.
3662 * output.cc (Output_segment::first_section): New function extracted..
3663 (Output_segment::first_section_load_address): ..from here. Delete.
3664 * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
3665 * target.h (Sized_target::relocate_for_relocatable): Likewise.
3666 * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
3667 adjust call to target.h function.
3668 * i386.cc (Target_i386): Likewise.
3669 * sparc.cc (Target_sparc): Likewise.
3670 * x86_64.cc (Target_x86_64): Likewise.
3671 * powerpc.cc (Target_powerpc): Likewise.
3672 (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS. Ensure
3673 first tls section has section symbol for optimised local dynamic
3674 output relocs.
3675 (Target_powerpc::Relocate::relocate): Correct local dynamic value.
3676 (Target_powerpc::relocate_relocs): Adjust relocs emitted for
3677 optimised tls code.
3678 * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
3679 Rename to relocate_relocs. Update error message.
3680
957564c9
AS
36812012-09-04 Andreas Schwab <schwab@linux-m68k.org>
3682
3683 * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
3684 --just-symbols.
3685
dd93cd0a
AM
36862012-08-31 Alan Modra <amodra@gmail.com>
3687
3688 * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
3689 (Powerpc_relobj::toc_base_offset): New stub function.
3690 (Target_powerpc): Add tp_offset, dtp_offset. Rename
3691 got_mod_index_offset to tlsld_got_offset. Update all refs.
3692 (Target_powerpc::Relocate::enum skip_tls): New.
3693 (Target_powerpc::call_tls_get_addr_): New var.
3694 (Target_powerpc::is_branch_reloc): Move to file scope.
3695 (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
3696 (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
3697 New functions.
3698 (Target_powerpc::enum Got_type): Delete old values, add new ones.
3699 (powerpc_info): Correct common_pagesize for ppc64.
3700 (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
3701 (Powerpc_relocate_functions): Add overflow check enums and functions.
3702 Add non-shift version of rela, rela_ua. Delete all rel public
3703 functions. Delete addr16_lo. Add addr64, addr64_u, addr32,
3704 addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
3705 addr16_ha3, addr14 functions.
3706 (Output_data_got_powerpc::add_constant_pair): New function.
3707 (Output_data_got_powerpc::got_base_offset): Likewise.
3708 (Output_data_got_powerpc::do_write): Correct 64-bit got header.
3709 (instruction constants): Sort, add some more.
3710 (Output_data_glink::do_write): Add and use Address typedef. Use
3711 object->toc_base_offset() stub for 64-bit.
3712 (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
3713 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
3714 (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
3715 for R_PPC64_TOC. Handle more relocs. Generate got entries for TLS.
3716 Always treat .opd relocs as against locally defined symbol.
3717 Correct condition for RELATIVE relocs.
3718 (Target_powerpc::do_finalize_sections): Test for NULL sections.
3719 (Target_powerpc::Relocate::relocate): Use plt call stub as value
3720 for 32-bit syms with a plt entry. Correct ppc64 toc base
3721 calculations. Handle TLS relocs, and more. Add overflow
3722 checking and adjust for Powerpc_relocate_functions changes.
3723 (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
3724 Reinstate --emit-relocs code with FIXME.
3725
a1373b60
AM
37262012-08-30 Alan Modra <amodra@gmail.com>
3727
3728 * layout.cc (Layout::set_segment_offsets): Set p_align to
3729 abi_pagesize, not common_pagesize.
3730 (Layout::relaxation_loop_body): Similarly use abi_pagesize
3731 to determine whether file header can go in segment.
3732
703d02da
AM
37332012-08-30 Alan Modra <amodra@gmail.com>
3734
3735 * output.h (Output_reloc::Output_reloc <output section>): Add
3736 is_relative param. Adjust calls.
3737 (Output_reloc::add_output_section_relative): New functions.
3738 * output.cc (Output_reloc::Output_reloc <output section>): Handle
3739 is_relative.
3740 (Output_reloc::symbol_value): Handle SECTION_CODE.
3741
16164a6b
ST
37422012-08-24 Sriraman Tallam <tmsriram@google.com>
3743
3744 * gold.cc (queue_middle_tasks): Call layout again when unique
3745 segments for sections is desired.
3746 * layout.cc (Layout::Layout): Initialize new members.
3747 (Layout::get_output_section_flags): New function.
3748 (Layout::choose_output_section): Call get_output_section_flags.
3749 (Layout::layout): Make output section for mapping to a unique segment.
3750 (Layout::insert_section_segment_map): New function.
3751 (Layout::attach_allocated_section_to_segment): Make unique segment for
703d02da 3752 output sections marked so.
16164a6b
ST
3753 (Layout::segment_precedes): Check for unique segments when sorting.
3754 * layout.h (Layout::Unique_segment_info): New struct.
3755 (Layout::Section_segment_map): New typedef.
3756 (Layout::insert_section_segment_map): New function.
3757 (Layout::get_output_section_flags): New function.
3758 (Layout::is_unique_segment_for_sections_specified): New function.
3759 (Layout::set_unique_segment_for_sections_specified): New function.
3760 (Layout::unique_segment_for_sections_specified_): New member.
3761 (Layout::section_segment_map_): New member.
3762 * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
3763 Rename is_gc_pass_one to is_pass_one.
3764 Rename is_gc_pass_two to is_pass_two.
3765 Rename is_gc_or_icf to is_two_pass.
3766 Check for which pass based on whether symbols data is present.
3767 Make it two pass when unique segments for sections is desired.
3768 * output.cc (Output_section::Output_section): Initialize new
3769 members.
3770 * output.h (Output_section::is_unique_segment): New function.
3771 (Output_section::set_is_unique_segment): New function.
3772 (Output_section::is_unique_segment_): New member.
3773 (Output_section::extra_segment_flags): New function.
3774 (Output_section::set_extra_segment_flags): New function.
3775 (Output_section::extra_segment_flags_): New member.
3776 (Output_section::segment_alignment): New function.
3777 (Output_section::set_segment_alignment): New function.
3778 (Output_section::segment_alignment_): New member.
3779 (Output_segment::Output_segment): Initialize is_unique_segment_.
3780 (Output_segment::is_unique_segment): New function.
3781 (Output_segment::set_is_unique_segment): New function.
3782 (Output_segment::is_unique_segment_): New member.
3783 * plugin.cc (allow_unique_segment_for_sections): New function.
3784 (unique_segment_for_sections): New function.
3785 (Plugin::load): Add new functions to transfer vector.
3786 * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
3787 * Makefile.in: Regenerate.
3788 * testsuite/plugin_final_layout.sh: Check if unique segment
3789 functionality works.
3790 * testsuite/plugin_section_order.c (onload): Check if new interfaces
3791 are available.
3792 (allow_unique_segment_for_sections): New global.
3793 (unique_segment_for_sections): New global.
3794 (claim_file_hook): Call allow_unique_segment_for_sections.
3795 (all_symbols_read_hook): Call unique_segment_for_sections.
16164a6b 3796
1e2bee4f
CC
37972012-08-22 Cary Coutant <ccoutant@google.com>
3798
3799 * layout.cc (Layout::include_section): Don't assert on GROUP
3800 sections with --emit-relocs.
3801
1d5dfe78
CC
38022012-08-21 Cary Coutant <ccoutant@google.com>
3803
3804 * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
3805 if --export-dynamic-symbol names an undef symbol.
3806
c9269dff
AM
38072012-08-18 Alan Modra <amodra@gmail.com>
3808
3809 * powerpc.cc: Formatting and white space.
3810 (Powerpc_relobj): Rename got2_section_ to special_.
3811 Add opd_ent_shndx_ and opd_ent_off_ vectors.
3812 (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
3813 scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
3814 (Target_powerpc): Add Address typedef and invalid_address. Use
3815 throughout.
3816 (Target_powerpc::is_branch_reloc): New function.
3817 (Powerpc_relocate_functions): Add Address typedef, use throughout.
3818 (Powerpc_relocate_functions:rela, rela_ua): Correct type used
3819 for dst_mask, value and addend.
3820 (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
3821 (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
3822 (Output_data_glink::do_write): Correct toc base. Don't try to use
3823 uint16_t for 24-bit offset. Use get_output_section_offset and
3824 check return.
3825 (Target_powerpc::Scan::local): Handle more relocs.
3826 (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
3827 (Target_powerpc::Relocate::relocate): Correct toc base calculation.
3828 Plug in toc restoring insn after plt calls. Translate branches
3829 to function descriptor symbols to corresponding entry point.
3830 (Target_powerpc::relocate_for_relocatable): Check return from
3831 get_output_section_offset.
3832 * symtab.h: Comment typo.
3833
b1759dce
ILT
38342012-08-14 Ian Lance Taylor <iant@google.com>
3835
3836 * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
3837 unsupported_relocal_local to call unsupported_reloc_global.
3838
b9b2ae8b
NC
38392012-08-14 Nick Clifton <nickc@redhat.com>
3840
3841 PR ld/14265
3842 * script-sections.cc (Sections_element::output_section_name): Add
3843 keep return parameter.
3844 (Output_section_element::match_name): Add keep return parameter.
3845 Return the value of the keep_ member.
3846 * script-sections.h (class Output_section): Update
3847 output_section_name prototype.
3848 * layout.cc (Layout::keep_input_section): New public member
3849 function.
3850 (Layout::choose_output_section): Pass keep parameter to
3851 output_section_name.
3852 * layout.h (class Layout): Add keep_input_section.
3853 * object.cc (Sized_relobj_file::do_layout): Check for kept input
3854 sections.
3855 * testsuite/Makefile.am: Add a test.
3856 * testsuite/Makefile.in: Regenerate.
3857 * testsuite/pr14265.c: Source file for the test.
3858 * testsuite/pr14265.t: Linker script for the test.
3859 * testsuite/pr14265.sh: Shell script for the test.
3860
921b5322
AM
38612012-08-14 Alan Modra <amodra@gmail.com>
3862
3863 * target.h (Target::output_section_name): New function.
3864 (Target::do_output_section_name): New function.
3865 * layout.cc (Layout::choose_output_section): Call the above.
3866 * powerpc.cc (Target_powerpc::do_output_section_name): New function.
3867
6ce78956
AM
38682012-08-14 Alan Modra <amodra@gmail.com>
3869
3870 * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
3871 (Output_data_got_powerpc::do_write): Don't rely on base class lookup
3872 for replace_constant call.
3873 (Output_data_plt_powerpc::do_print_to_mapfile): New function.
3874 (Output_data_glink::do_print_to_mapfile): New function.
3875 (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
3876 (Target_powerpc::Relocate::relocate): Likewise.
3877
d1a8cabd
AM
38782012-08-14 Alan Modra <amodra@gmail.com>
3879
3880 * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
3881 (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
3882 (Output_data_glink::add_entry,find_entry): Remove shndx param.
3883 (class Glink_sym_ent): Rename from struct Glink_sym_ent. Remove
3884 all references to shndx_. Handle special case for R_PPC_PLTREL24
3885 here.
3886 (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
3887 (Output_data_glink::do_write): Retrieve got2_shdnx from object.
3888 (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
3889 here.
3890 (Target_powerpc::Scan::global): Nor on make_plt_entry call.
3891 (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
3892
d83ce4e3
AM
38932012-08-12 Alan Modra <amodra@gmail.com>
3894
3895 * powerpc.cc: Whitespace fixes. Wrap overly long lines.
3896 (glink insn constants): Use uint32_t.
3897 (Output_data_glink::add_entry): Use insert, not [] operator.
3898
cf43a2fe
AM
38992012-08-11 Alan Modra <amodra@gmail.com>
3900
3901 * object.h (Sized_relobj_file::find_shdr): New function.
3902 (Sized_relobj_file::find_special_sections): New function.
3903 * object.cc (Sized_relobj_file::find_shdr): New function.
3904 (Sized_relobj_file::find_eh_frame): Use find_shdr.
3905 (Sized_relobj_file::find_special_sections): New function, split out..
3906 (Sized_relobj_file::do_read_symbols): ..from here.
3907 * output.h (Output_data_got::replace_constant): New function.
3908 (Output_data_got::num_entries): New function.
3909 (Output_data_got::last_got_offset,set_got_size): Use num_entries.
3910 (Output_data_got::got_offset): Protected rather than private.
3911 (Output_data_got::replace_got_entry): New function.
3912 * output.cc (Output_data_got::replace_got_entry): New function.
3913 * powerpc.cc (class Powerpc_relobj): New.
3914 (class Powerpc_relocate_functions): Delete all psymval variants or
3915 convert to value,addend type. Delete pcrela, pcrela_unaligned.
3916 Implement _ha functions using corresponding _hi function.
3917 (Powerpc_relobj::find_special_sections): New function.
3918 (Target_powerpc::do_make_elf_object): New function.
3919 (class Output_data_got_powerpc): New.
3920 (class Output_data_glink): New.
3921 (class Powerpc_scan_relocatable_reloc): New.
3922 Many more changes througout file.
3923
3c892704
NC
39242012-08-09 Nick Clifton <nickc@redhat.com>
3925
3926 * po/vi.po: Updated Vietnamese translation.
3927
82435b3b
ILT
39282012-08-07 Ian Lance Taylor <iant@google.com>
3929
3930 * layout.cc (Layout::add_target_dynamic_tags): If
3931 dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
3932 plt_rel.
3933
a6dc81d2
NC
39342012-07-30 Nick Clifton <nickc@redhat.com>
3935
3936 * po/gold.pot: Updated template.
3937 * po/es.po: Updated Spanish translation.
3938
f1415016
CC
39392012-07-18 Cary Coutant <ccoutant@google.com>
3940
3941 PR gold/14344
3942 * configure.ac: Add check for -gpubnames support.
3943 * configure: Regenerate.
3944 * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
3945 support; force -gno-pubnames.
3946 (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
3947 support.
3948 (gdb_index_test_4): New test.
3949 * testsuite/Makefile.in: Regenerate.
3950 * testsuite/gdb_index_test_1.sh: Refactor code into common file.
3951 * testsuite/gdb_index_test_2.sh: Likewise.
3952 * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
3953 * testsuite/gdb_index_test_4.sh: New script.
3954 * testsuite/gdb_index_test_comm.sh: New script with common code;
3955 don't look for space after colon.
3956
b7fd7c37
ST
39572012-07-16 Sriraman Tallam <tmsriram@google.com>
3958
3959 * gold.cc (queue_middle_tasks): Update function order only after
3960 deferred objects due to plugins are processed.
3961
1f3212db
ILT
39622012-07-11 Ian Lance Taylor <iant@google.com>
3963
3964 * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
3965 (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
3966 (Target_arm::scan_reloc_for_stub): Likewise.
3967 * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
3968 * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
3969 * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
3970 * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
3971 * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
3972
81c82a68
ILT
39732012-07-10 Dodji Seketeli <dodji@redhat.com>
3974 Ian Lance Taylor <iant@google.com>
3975
3976 PR gold/14309
3977 * configure.ac: Test whether std::tr1::hash<off_t> works.
3978 * gold.h: Add a specialization for std::tr1::hash<off_t> if
3979 needed.
3980 * output.h (class Output_fill): Add virtual destructor.
3981 * configure, config.in: Rebuild.
3982
eabc84f4
RM
39832012-06-22 Roland McGrath <mcgrathr@google.com>
3984
3985 * layout.cc (finalize): Define __ehdr_start symbol if applicable.
3986
370e30b6
RÁE
39872012-06-12 Rafael Ávila de Espíndola <respindola@mozilla.com>
3988
3989 * plugin.cc (Plugin::load): Handle position independent executables.
3990
fb1b895d
CC
39912012-06-06 Cary Coutant <ccoutant@google.com>
3992
3993 * layout.cc (gdb_sections): Remove ".debug_" prefixes,
3994 add .debug_macro.
3995 (lines_only_debug_sections): Likewise.
3996 (gdb_fast_lookup_sections): New static array.
3997 (is_gdb_debug_section): Rename formal parameter.
3998 (is_lines_only_debug_section): Likewise.
3999 (is_gdb_fast_lookup_section): New function.
4000 (Layout::include_section): Check for ".zdebug_" prefix; pass
4001 section name suffix to is_gdb_debug_section, et al.; check for
4002 fast-lookup sections when building .gdb_index.
4003 * options.h (--strip-debug-gdb): Update GDB version number.
4004
7c0640fa
CC
40052012-06-06 Cary Coutant <ccoutant@google.com>
4006
4007 * configure.ac: Add check for fallocate.
4008 * configure: Regenerate.
4009 * config.in: Regenerate.
4010
4011 * options.h (class General_options): Add --mmap-output-file and
4012 --posix-fallocate options.
4013 * output.cc: (posix_fallocate): Remove; replace with...
4014 (gold_fallocate): New function.
4015 (Output_file::map_no_anonymous): Call gold_fallocate.
4016 (Output_file::map): Check --mmap-output-file option.
4017
2a49eb69
DK
40182012-06-05 Jing Yu <jingyu@google.com>
4019
4020 * gold.h (textdomain): Add do {} to empty while(0).
4021 (bindtextdomain): Likewise.
4022
fad072ac
CC
40232012-06-04 Cary Coutant <ccoutant@google.com>
4024
4025 * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
4026 has_dynsym_index.
4027
8cc69fb6
ST
40282012-05-25 Sriraman Tallam <tmsriram@google.com>
4029
4030 * symtab.cc (Symbol_table::define_special_symbol):
4031 Initialize *poldsym to prevent uninitialized variable errors.
4032
1be75daa
CC
40332012-05-23 Cary Coutant <ccoutant@google.com>
4034
4035 * layout.cc (Layout::section_name_mapping): Add rules to handle
4036 exact match on .data.rel.ro.local or .data.rel.ro.
4037 (Layout::output_section_name): Check for exact matches.
4038
9b689de0
CC
40392012-05-23 Cary Coutant <ccoutant@google.com>
4040
4041 * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
4042 more carefully.
4043
b24fdbf5
CC
40442012-05-22 Cary Coutant <ccoutant@google.com>
4045
4046 * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
4047 object before exporting symbol.
4048
e550e1a2
L
40492012-05-21 H.J. Lu <hongjiu.lu@intel.com>
4050
4051 * testsuite/tls_test.cc: Include "config.h" first.
4052 * testsuite/tls_test_c.c: Likewise.
4053
df7b86aa
NC
40542012-05-17 Daniel Richard G. <skunk@iskunk.org>
4055 Nick Clifton <nickc@redhat.com>
4056
4057 PR 14072
4058 * configure.in: Add check that sysdep.h has been included before
4059 any system header files.
4060 * configure: Regenerate.
4061 * config.in: Regenerate.
4062
1007b503
CC
40632012-05-14 Cary Coutant <ccoutant@google.com>
4064
4065 * layout.cc (Layout::make_output_section): Mark .tdata section
4066 as RELRO.
4067 * testsuite/relro_test.cc: Add a TLS variable.
4068
fd885f3a
L
40692012-05-10 H.J. Lu <hongjiu.lu@intel.com>
4070
4071 PR gold/14091
4072 * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
4073 R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
4074 R_X86_64_64.
4075
80f5885c
CC
40762012-05-08 Cary Coutant <ccoutant@google.com>
4077
4078 * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
4079 (lines_only_debug_sections): Likewise.
4080
2e702c99
RM
40812012-05-02 Roland McGrath <mcgrathr@google.com>
4082
4083 * nacl.cc: New file.
4084 * nacl.h: New file.
4085 * Makefile.am (CCFILES, HFILES): Add them.
4086 * Makefile.in: Regenerate.
4087 * i386.cc (Output_data_plt_i386_nacl): New class.
4088 (Output_data_plt_i386_nacl_exec): New class.
4089 (Output_data_plt_i386_nacl_dyn): New class.
4090 (Target_i386_nacl): New class.
4091 (Target_selector_i386_nacl): New class.
4092 (target_selector_i386): Use it instead of Target_selector_i386.
4093 * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
4094 (Target_x86_64_nacl): New class.
4095 (Target_selector_x86_64_nacl): New class.
4096 (target_selector_x86_64, target_selector_x32): Use it instead of
4097 Target_selector_x86_64.
4098 * arm.cc (Output_data_plt_arm_nacl): New class.
4099 (Target_arm_nacl): New class.
4100 (Target_selector_arm_nacl): New class.
4101 (target_selector_arm, target_selector_armbe): Use it instead of
4102 Target_selector_arm.
4103
4104 * target-select.cc (select_target): Take new Input_file* and off_t
4105 arguments, pass them on to recognize method of selector.
4106 * object.cc (make_elf_sized_object): Update caller.
4107 * parameters.cc (parameters_force_valid_target): Likewise.
4108 * incremental.cc (make_sized_incremental_binary): Likewise.
4109 * target-select.h: Update decl.
4110 (Target_selector::recognize): Take new Input_file* argument,
4111 pass it on to do_recognize.
4112 (Target_selector::do_recognize): Take new Input_file* argument.
4113 * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
4114 * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
4115 * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
4116 * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
4117
4118 * target.h (Target::Target_info): New members isolate_execinstr
4119 and rosegment_gap.
4120 (Target::isolate_execinstr, Target::rosegment_gap): New methods.
4121 * arm.cc (Target_arm::arm_info): Update initializer.
4122 * i386.cc (Target_i386::i386_info): Likewise.
4123 * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
4124 * sparc.cc (Target_sparc::sparc_info): Likewise.
4125 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
4126 * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
4127 * layout.cc (Layout::attach_allocated_section_to_segment):
4128 Take new const Target* argument. If target->isolate_execinstr(), act
4129 like --rosegment.
4130 (Layout::find_first_load_seg): Take new const Target* argument;
4131 if target->isolate_execinstr(), reject PF_X segments.
4132 (Layout::relaxation_loop_body): Update caller.
4133 (Layout::set_segment_offsets): If target->isolate_execinstr(),
4134 reset file offset to zero when we hit LOAD_SEG, and then do a second
4135 loop over the segments before LOAD_SEG to reassign offsets after
4136 addresses have been determined. Handle target->rosegment_gap().
4137 (Layout::attach_section_to_segment): Take new const Target* argument;
4138 pass it to attach_allocated_section_to_segment.
4139 (Layout::make_output_section): Update caller.
4140 (Layout::attach_sections_to_segments): Take new const Target* argument;
4141 pass it to attach_section_to_segment.
4142 * gold.cc (queue_middle_tasks): Update caller.
4143 * layout.h (Layout): Update method decls with new arguments.
4144
4145 * arm.cc (Target_arm::Target_arm): Take optional argument for the
4146 Target_info pointer to use.
4147 (Target_arm::do_make_data_plt): New virtual method.
4148 (Target_arm::make_data_plt): New method that calls it.
4149 (Target_arm::make_plt_entry): Use it.
4150 (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
4151 for the section alignment.
4152 (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
4153 method.
4154 (Output_data_plt_arm::first_plt_entry_offset): Call it.
4155 (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
4156 method.
4157 (Output_data_plt_arm::get_plt_entry_size): Call it.
4158 (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
4159 (Output_data_plt_arm::fill_plt_entry): New method that calls it.
4160 (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
4161 method.
4162 (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
4163 (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
4164 method instead of sizeof(plt_entry).
4165 (Output_data_plt_arm::add_entry): Likewise.
4166 Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
4167 (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
4168 than static method.
4169 (Target_arm::plt_entry_size): Likewise.
4170 (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
4171 Move to ...
4172 (Output_data_plt_arm_standard): ... here, new class.
4173 (Output_data_plt_arm::do_write): Move guts of PLT filling to...
4174 (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
4175 (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
4176
4177 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
4178 Take additional argument for the PLT entry size.
4179 (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
4180 Use get_plt_entry_size method rather than plt_entry_size variable.
4181 (Output_data_plt_x86_64::reserve_slot): Likewise.
4182 (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
4183 (Output_data_plt_x86_64::add_entry): Likewise.
4184 (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
4185 (Output_data_plt_x86_64::address_for_global): Likewise.
4186 (Output_data_plt_x86_64::address_for_local): Likewise.
4187 (Output_data_plt_x86_64::set_final_data_size): Likewise.
4188 (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
4189 Make method non-static.
4190 (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
4191 method.
4192 (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
4193 (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
4194 (Output_data_plt_x86_64::add_eh_frame): New method to call it.
4195 (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
4196 virtual method.
4197 (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
4198 (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
4199 virtual method.
4200 (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
4201 (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
4202 virtual method.
4203 (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
4204 (Output_data_plt_x86_64::plt_entry_size)
4205 (Output_data_plt_x86_64::first_plt_entry)
4206 (Output_data_plt_x86_64::plt_entry)
4207 (Output_data_plt_x86_64::tlsdesc_plt_entry)
4208 (Output_data_plt_x86_64::plt_eh_frame_fde_size)
4209 (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
4210 (Output_data_plt_x86_64_standard): ... here, new class.
4211 (Target_x86_64::Target_x86_64): Take optional argument for the
4212 Target_info pointer to use.
4213 (Target_x86_64::do_make_data_plt): New virtual method.
4214 (Target_x86_64::make_data_plt): New method to call it.
4215 (Target_x86_64::init_got_plt_for_update): Use that.
4216 Call this->plt_->add_eh_frame method here.
4217 (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
4218 (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
4219 rather than static method.
4220 (Target_x86_64::plt_entry_size): Likewise.
4221 (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
4222 rather than plt_entry_size variable. Move guts of PLT filling to...
4223 (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
4224 (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
4225 (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
4226
4227 * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
4228 additional argument for the section alignment.
4229 Don't do add_eh_frame_for_plt here.
4230 (Output_data_plt_i386::first_plt_entry_offset): Make the method
4231 non-static. Use get_plt_entry_size method rather than plt_entry_size
4232 variable.
4233 (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
4234 method.
4235 (Output_data_plt_i386::get_plt_entry_size): Call it.
4236 (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
4237 (Output_data_plt_i386::add_eh_frame): New method to call it.
4238 (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
4239 method.
4240 (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
4241 (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
4242 method.
4243 (Output_data_plt_i386::fill_plt_entry): New method to call it.
4244 (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
4245 method instead of plt_entry_size.
4246 (Output_data_plt_i386::plt_entry_size)
4247 (Output_data_plt_i386::plt_eh_frame_fde_size)
4248 (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
4249 (Output_data_plt_i386_standard): ... here, new class.
4250 (Output_data_plt_i386_exec): New class.
4251 (Output_data_plt_i386::exec_first_plt_entry): Move to ...
4252 (Output_data_plt_i386_exec::first_plt_entry): ... here.
4253 (Output_data_plt_i386::exec_plt_entry): Move to ...
4254 (Output_data_plt_i386_exec::plt_entry): ... here.
4255 (Output_data_plt_i386_dyn): New class.
4256 (Output_data_plt_i386::first_plt_entry): Move to ...
4257 (Output_data_plt_i386_dyn::first_plt_entry): ... here.
4258 (Output_data_plt_i386::dyn_plt_entry): Move to ...
4259 (Output_data_plt_i386_dyn::plt_entry): ... here.
4260 (Target_i386::Target_i386): Take optional argument for the Target_info
4261 pointer to use.
4262 (Target_i386::do_make_data_plt): New virtual method.
4263 (Target_i386::make_data_plt): New method to call it.
4264 (Target_i386::make_plt_section): Use that.
4265 Call this->plt_->add_eh_frame method here.
4266 (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
4267 rather than plt_entry_size variable.
4268 (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
4269 (Output_data_plt_i386::address_for_local): Likewise.
4270 (Output_data_plt_i386::do_write): Likewise.
4271 Move guts of PLT filling to...
4272 (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
4273 (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
4274 (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
4275 (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
4276
b9b9f2ee
CC
42772012-05-01 Cary Coutant <ccoutant@google.com>
4278
4279 * dwarf_reader.cc (Dwarf_die::read_attributes)
4280 (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
4281 (Dwarf_die::uint_attribute): Remove DW_FORM_null.
4282 * reduced_debug_output.cc
4283 (Output_reduced_debug_info_section::get_die_end): Remove
4284 DW_FORM_GNU_ref_index. Add default case.
4285
57923f48
MW
42862012-04-26 Mark Wielaard <mjw@redhat.com>
4287
4288 * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
4289 * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
4290 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
4291 DW_AT_high_pc as offset from DW_AT_low_pc.
4292
4293 * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
4294 * testsuite/Makefile.in: Regenerate.
4295 * testsuite/gdb_index_test_3.c: New test source file.
4296 * testsuite/gdb_index_test_3.sh: New test source file.
4297
2c54b4f4
ILT
42982012-04-25 Ian Lance Taylor <iant@google.com>
4299
4300 * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
4301 pointer.
4302 (Stub_addend_reader::operator()): Declare Arm_relocate_functions
4303 as a class, not a struct.
4304 (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
4305 (Target_arm::apply_cortex_a8_workaround): Likewise.
4306 * gc.h: Declare Reloc_types as a struct, not a class.
4307 * object.h: Declare Symbols_data as a struct.
4308 * reloc.h: Declare Read_relocs_data as a struct.
4309 * target.h: Declare Relocate_info as a struct.
4310
a5a5f7a3
DM
43112012-04-24 David S. Miller <davem@davemloft.net>
4312
4313 * sparc.cc (Target_sparc::Relocate::relax_call): New function.
4314 (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
4315 and R_SPARC_WPLT30.
4316
f038d496
CC
43172012-04-24 Cary Coutant <ccoutant@google.com>
4318
4319 * incremental-dump.cc (find_input_containing_global): Replace
4320 magic number with symbolic constant.
4321 (dump_incremental_inputs): Update version number.
4322 * incremental.cc (Output_section_incremental_inputs): Update version
4323 number; import symbolic constants from Incremental_inputs_reader.
4324 (Incremental_inputs::create_data_sections): Align relocations
4325 section correctly for 64-bit targets.
4326 (Output_section_incremental_inputs::set_final_data_size): Use symbolic
4327 constants; add padding.
4328 (Output_section_incremental_inputs::write_header): Add assert for
4329 header_size.
4330 (Output_section_incremental_inputs::write_input_files): Add assert
4331 for input_entry_size.
4332 (Output_section_incremental_inputs::write_info_blocks): Add padding;
4333 add assert for object_info_size, input_section_entry_size,
4334 global_sym_entry_size.
4335 * incremental.h (Incremental_inputs_reader): Add symbolic constants
4336 for data structure sizes; use them.
4337 (Incremental_input_entry_reader): Import symbolic constants from
4338 Incremental_inputs_reader; use them.
4339
a4d85145
DM
43402012-04-23 David S. Miller <davem@davemloft.net>
4341
4342 * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
4343 and elf_flags_set_.
4344 (Target_sparc::Target_sparc): Initialize new fields.
4345 (Target_sparc::do_make_elf_object): New function.
4346 (Target_sparc::do_adjust_elf_header): New function.
4347
1d509098
CC
43482012-04-23 Cary Coutant <ccoutant@google.com>
4349
4350 * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
4351 CU range table of gdb index.
4352
7ebeff7f
DM
43532012-04-20 David S. Miller <davem@davemloft.net>
4354
4355 * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
4356 instead of false.
4357
13cf9988
DM
43582012-04-16 David S. Miller <davem@davemloft.net>
4359
2a1079e8
DM
4360 * sparc.cc (Target_sparc::got_address): New function.
4361 (Sparc_relocate_functions::gdop_hix22): New function.
4362 (Sparc_relocate_functions::gdop_lox10): New function.
4363 (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
4364 relocs.
4365 (Target_sparc::Scan::local): Likewise if the global symbol is not
4366 preemptible and is not IFUNC.
4367 (Target_sparc::Relocate::relocate): Perform GOTDATA code
4368 transformations for local and non-preemptible non-IFUNC global
4369 symbols.
4370
0bc964fc
DM
4371 * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
4372 writing out 64-bit part of ranges.
4373
661d7a80
DM
4374 * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
4375 -fpic and -fpie respectively.
4376 * Makefile.in: Regenerate.
4377
8c2bf391
DM
4378 * sparc.cc (class Target_sparc): Add rela_ifunc_.
4379 (Target_sparc::Target_sparc): Initialize new field.
4380 (Target_sparc::do_plt_section_for_global): New function.
4381 (Target_sparc::do_plt_section_for_local): New function.
4382 (Target_sparc::reloc_needs_plt_for_ifunc): New function.
4383 (Target_sparc::make_plt_section): New function, broken out of
4384 make_plt_entry. Use ORDER_NON_RELRO_FIRST for ".plt".
4385 (Target_sparc::make_plt_entry): Call make_plt_section.
4386 (Target_sparc::make_local_ifunc_plt_entry): New function.
4387 (Target_sparc::rela_ifunc_section): New function.
4388 (Target_sparc::plt_section): Remove const.
4389 (Output_data_plt_sparc): Update declarations. Define Global_ifunc
4390 and Local_ifunc types. Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
4391 and ifunc_count_ fields.
4392 (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
4393 (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
4394 (Output_data_plt_sparc::add_local_ifunc_entry): New function.
4395 (Output_data_plt_sparc::rela_ifunc): New function.
4396 (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
4397 (Output_data_plt_sparc::has_ifunc_section): New function.
4398 (Output_data_plt_sparc::entry_count): Include ifunc_count_.
4399 (Output_data_plt_sparc::address_for_global): New function.
4400 (Output_data_plt_sparc::address_for_local): New function.
4401 (Output_data_plt_sparc::plt_index_to_offset): New function.
4402 (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
4403 and entry_count.
4404 (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
4405 entry_count.
4406 (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
4407 R_SPARC_JMP_IREL to switch.
4408 (Target_sparc::Scan::check_non_pic): Likewise.
4409 (Target_sparc::Scan::local): Handle IFUNC symbols.
4410 (Target_sparc::Scan::local): Likewise.
4411 (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
4412 and plt_address_for_local.
4413 (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
4414 Define __rel_iplt_start and __rel_iplt_end if doing a static link.
4415
13cf9988
DM
4416 * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
4417 (class Output_data_reloc): Adjust calls to Output_reloc_type.
4418 (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
4419 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
4420 global relocs too.
4421 (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
4422 * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
4423 calls.
4424 * sparc.cc (Target_sparc::Scan::global): Likewise.
4425 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
4426
31821be0
CC
44272012-04-16 Cary Coutant <ccoutant@google.com>
4428
4429 * archive.cc (Library_base::should_include_member): Check for
4430 --export-dynamic-symbol.
4431 * options.h (class General_options): Add --export-dynamic-symbol.
4432 * symtab.cc (Symbol::should_add_dynsym_entry): Check for
4433 --export-dynamic-symbol.
4434 (Symbol_table::gc_mark_undef_symbols): Likewise.
4435 (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
4436
2615994e
DM
44372012-04-12 David S. Miller <davem@davemloft.net>
4438
4439 * sparc.cc (Reloc::wdisp10): New relocation method.
4440 (Reloc::h34): Likewise.
4441 (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
4442 (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
4443 R_SPARC_WDISP10.
4444 (Target_sparc::Scan::local): Likewise.
4445 (Target_sparc::Scan::global): Likewise.
4446 (Target_sparc::Relocate::relocate): Likewise.
4447
6782735d
CC
44482012-04-09 Cary Coutant <ccoutant@google.com>
4449
4450 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
4451 low_pc == 0.
4452
8c7a0b00
ILT
44532012-04-06 Ian Lance Taylor <iant@google.com>
4454
4455 * timer.cc: #include <unistd.h>.
4456
58797674
RM
44572012-04-06 Roland McGrath <mcgrathr@google.com>
4458
4459 * configure.in (AC_CHECK_HEADERS): Add locale.h.
4460 * config.in: Regenerate.
4461 * configure: Regenerate.
4462
44350750
NC
44632012-04-05 Nick Clifton <nickc@redhat.com>
4464
4465 * configure.ac (AC_CHECK_FUNCS): Add setlocale.
4466 (AM_LC_MESSAGES): Add.
4467 * aclocal.m4: Regenerate.
4468 * config.in: Regenerate.
4469 * configure: Regenerate.
4470
c1027032
CC
44712012-03-21 Cary Coutant <ccoutant@google.com>
4472
4473 * Makefile.am: Add gdb-index.cc, gdb-index.h.
4474 * Makefile.in: Regenerate.
4475 * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
4476 (Sized_elf_reloc_mapper::symbol_section): New function.
4477 (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
4478 (make_elf_reloc_mapper): New function.
4479 (Dwarf_abbrev_table::clear_abbrev_codes): New function.
4480 (Dwarf_abbrev_table::do_read_abbrevs): New function.
4481 (Dwarf_abbrev_table::do_get_abbrev): New function.
4482 (Dwarf_ranges_table::read_ranges_table): New function.
4483 (Dwarf_ranges_table::read_range_list): New function.
4484 (Dwarf_pubnames_table::read_section): New function.
4485 (Dwarf_pubnames_table::read_header): New function.
4486 (Dwarf_pubnames_table::next_name): New function.
4487 (Dwarf_die::Dwarf_die): New function.
4488 (Dwarf_die::read_attributes): New function.
4489 (Dwarf_die::skip_attributes): New function.
4490 (Dwarf_die::set_name): New function.
4491 (Dwarf_die::set_linkage_name): New function.
4492 (Dwarf_die::attribute): New function.
4493 (Dwarf_die::string_attribute): New function.
4494 (Dwarf_die::int_attribute): New function.
4495 (Dwarf_die::uint_attribute): New function.
4496 (Dwarf_die::ref_attribute): New function.
4497 (Dwarf_die::child_offset): New function.
4498 (Dwarf_die::sibling_offset): New function.
4499 (Dwarf_info_reader::check_buffer): New function.
4500 (Dwarf_info_reader::parse): New function.
4501 (Dwarf_info_reader::do_parse): New function.
4502 (Dwarf_info_reader::do_read_string_table): New function.
4503 (Dwarf_info_reader::lookup_reloc): New function.
4504 (Dwarf_info_reader::get_string): New function.
4505 (Dwarf_info_reader::visit_compilation_unit): New function.
4506 (Dwarf_info_reader::visit_type_unit): New function.
4507 (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
4508 Sized_elf_reloc_mapper.
4509 (Sized_dwarf_line_info::symbol_section): Remove function.
4510 (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
4511 (Sized_dwarf_line_info::read_line_mappings): Remove object
4512 parameter, adjust callers.
4513 (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
4514 * dwarf_reader.h: Include <sys/types.h>.
4515 (class Track_relocs): Remove forward declaration.
4516 (class Elf_reloc_mapper): New class.
4517 (class Sized_elf_reloc_mapper): New class.
4518 (class Dwarf_abbrev_table): New class.
4519 (class Dwarf_range_list): New class.
4520 (class Dwarf_ranges_table): New class.
4521 (class Dwarf_pubnames_table): New class.
4522 (class Dwarf_die): New class.
4523 (class Dwarf_info_reader): New class.
4524 (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
4525 (Sized_dwarf_line_info::symbol_section): Remove member function.
4526 * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
4527 base class.
4528 * gdb-index.cc: New source file.
4529 * gdb-index.h: New source file.
4530 * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
4531 and .debug_types sections, call Layout::add_to_gdb_index.
4532 (Sized_relobj_incr::do_section_name): Implement.
4533 (Sized_relobj_incr::do_section_contents): Adjust parameter list and
4534 return type; Implement.
4535 (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
4536 return type.
4537 * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
4538 parameter list and return type.
4539 (Sized_incr_dynobj::do_section_contents): Likewise.
4540 * layout.cc: Include gdb-index.h.
4541 (Layout::Layout): Initialize gdb_index_data_.
4542 (Layout::init_fixed_output_section): Check for .gdb_index section.
4543 (Layout::add_to_gdb_index): New function. Instantiate.
4544 * layout.h: Add forward declaration for class Gdb_index.
4545 (Layout::add_to_gdb_index): New member function.
4546 (Layout::gdb_index_data_): New data member.
4547 * main.cc: Include gdb-index.h.
4548 (main): Print statistics for gdb index.
4549 * object.cc (Object::section_contents): Move code into
4550 do_section_contents.
4551 (need_decompressed_section): Check for sections needed when building
4552 gdb index.
4553 (build_compressed_section_map): Likewise.
4554 (Sized_relobj_file::do_read_symbols): Need local symbols when building
4555 gdb index.
4556 (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
4557 sections; call Layout::add_to_gdb_index.
4558 (Sized_relobj_file::do_decompressed_section_contents): Call
4559 do_section_contents directly.
4560 * object.h (Object::do_section_contents): Adjust parameter list and
4561 return type.
4562 (Object::do_decompressed_section_contents): Call do_section_contents
4563 directly.
4564 (Sized_relobj_file::do_section_contents): Adjust parameter list and
4565 return type.
4566 * options.h (class General_options): Add --gdb-index option.
4567 * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
4568 list and return type.
4569 * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
4570 * reloc.h (Track_relocs::checkpoint): New function.
4571 (Track_relocs::reset): New function.
4572
4573 * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
4574 New test cases.
4575 * testsuite/Makefile.in: Regenerate.
4576 * testsuite/gdb_index_test.cc: New test source file.
4577 * testsuite/gdb_index_test_1.sh: New test source file.
4578 * testsuite/gdb_index_test_2.sh: New test source file.
4579
647f1574
DK
45802012-03-19 Doug Kwan <dougkwan@google.com>
4581
4582 * arm.cc (Target_arm::do_define_standard_symbols): New method.
2e702c99 4583 (Target_arm::do_finalize_sections): Remove code which defines
647f1574
DK
4584 __exidx_start and __exidx_end. Make symbol table parameter
4585 anonymous as it is not used.
4586 * gold.cc (queue_middle_tasks): Call target hook to define any
4587 target-specific symbols.
4588 * target.h (Target::define_standard_symbols): New method.
4589 (Target::do_define_standard_symbols): Same.
4590 * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
4591 * testsuite/Makefile.in: Regenerate.
4592 * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
4593 and __exidx_end.
4594 * testsuite/arm_exidx_test.sh: Check that no unused dynamic
4595 relocations are generated for __exidx_start and __exidx_end.
4596
7c6109da
DK
45972012-03-16 Doug Kwan <dougkwan@google.com>
4598
4599 * testsuite/Makefile.am: Disable test initpri3b.
4600 * testsuite/Makefile.in: Regenerate.
4601
7b8957f8
DK
46022012-03-15 Doug Kwan <dougkwan@google.com>
4603
4604 * arm.cc (Target_arm::got_section): Make .got section read-only
4605 if -z now is given.
4606
14dc9ef7
ILT
46072012-03-15 Ian Lance Taylor <iant@google.com>
4608
4609 PR gold/13850
4610 * layout.cc (Layout::make_output_section): Correctly mark
4611 SHT_INIT_ARRAY, et. al., as relro.
4612
fa40b62a
DK
46132012-03-14 Doug Kwan <dougkwan@google.com>
4614
4615 * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
4616 dynamic relocations for protected symbols in shared objects.
4617
fd325007
ILT
46182012-03-13 Ian Lance Taylor <iant@google.com>
4619
4620 * resolve.cc (Symbol_table::resolve): When merging common symbols,
4621 keep the larger alignment.
4622
e8dd54e1
CC
46232012-03-12 Cary Coutant <ccoutant@google.com>
4624
4625 * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
4626 handling of DW_LNE_define_file.
4627
feb5f3b0
CC
46282012-03-12 Cary Coutant <ccoutant@google.com>
4629
4630 * reduced_debug_output.cc
4631 (Output_reduced_debug_info_section::get_die_end): Add new FORM
4632 codes to switch.
4633
a1fb4256
CC
46342012-02-29 Cary Coutant <ccoutant@google.com>
4635
4636 * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
4637
5dd8762a
CC
46382012-02-29 Cary Coutant <ccoutant@google.com>
4639
4640 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
4641 Call Object::decompressed_section_contents.
4642 * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
4643 New dtor.
4644 (Sized_dwarf_line_info::buffer_start_): New data member.
4645 * merge.cc (Output_merge_data::do_add_input_section): Call
4646 Object::decompressed_section_contents.
4647 (Output_merge_string::do_add_input_section): Likewise.
4648 * object.cc (need_decompressed_section): New function.
4649 (build_compressed_section_map): Decompress sections needed later.
4650 (Sized_relobj_file::do_decompressed_section_contents): New function.
4651 (Sized_relobj_file::do_discard_decompressed_sections): New function.
4652 * object.h (Object::decompressed_section_contents): New function.
4653 (Object::discard_decompressed_sections): New function.
4654 (Object::do_decompressed_section_contents): New function.
4655 (Object::do_discard_decompressed_sections): New function.
4656 (Compressed_section_info): New type.
4657 (Compressed_section_map): Include decompressed section contents.
4658 (Sized_relobj_file::do_decompressed_section_contents): New function.
4659 (Sized_relobj_file::do_discard_decompressed_sections): New function.
4660
7b5de7ee
CC
46612012-02-16 Cary Coutant <ccoutant@google.com>
4662
4663 * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
4664 * testsuite/Makefile.in: Regenerate.
4665
f9fa4a63
CC
46662012-02-14 Cary Coutant <ccoutant@google.com>
4667
4668 * options.cc (General_options::finalize): Disallow -pie and -static.
4669
2c175ebc
DK
46702012-02-03 Doug Kwan <dougkwan@google.com>
4671
4672 * arm.cc (Arm_relocate_functions::abs8,
4673 Arm_relocate_functions::abs16): Use
4674 Bits::has_signed_unsigned_overflow32.
4675 (Arm_relocate_functions::thm_abs8): Correct range of
4676 overflow check.
4677 * reloc.h (Bits class): Change minimum number of bits from 0 to 1
4678 in assertions.
4679
90cff06f
DK
46802012-02-02 Doug Kwan <dougkwan@google.com>
4681
4682 * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
4683 position independent outputs, not just shared objects.
4684
63887f3d
L
46852012-01-30 H.J. Lu <hongjiu.lu@intel.com>
4686
4687 * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
4688 * configure: Regenerated.
4689
bef2b434
ILT
46902012-01-27 Ian Lance Taylor <iant@google.com>
4691
4692 * reloc.h (Bits): New class with static functions, copied from
4693 namespace utils in arm.cc.
4694 * arm.cc (namespace utils): Remove. Rewrite all uses to use Bits
4695 instead.
4696
c335b55d
L
46972012-01-27 H.J. Lu <hongjiu.lu@intel.com>
4698
4699 * incremental.cc (write_info_blocks): Correct relocation offset.
4700
41194d9f
L
47012012-01-27 H.J. Lu <hongjiu.lu@intel.com>
4702
4703 * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
4704 (Relocate::tls_gd_to_le): Likewise.
4705
1bae613c
L
47062012-01-27 H.J. Lu <hongjiu.lu@intel.com>
4707
4708 * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
4709
24482ca0
L
47102012-01-27 H.J. Lu <hongjiu.lu@intel.com>
4711
4712 * configure.ac: Check if -mcmodel=medium works.
4713 * configure: Regenerated.
4714
c2c7840a
CC
47152012-01-24 Cary Coutant <ccoutant@google.com>
4716
4717 * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
4718 definition and ...
4719 (read_unsigned_LEB_128_x): ... this new function.
4720 (read_signed_LEB_128): Replaced with inline definition and ...
4721 (read_signed_LEB_128_x): ... this new function.
4722 * int_encoding.h (read_unsigned_LEB_128_x): New function.
4723 (read_unsigned_LEB_128): Add inline definition.
4724 (read_signed_LEB_128_x): New function.
4725 (read_signed_LEB_128): Add inline definition.
4726 * testsuite/Makefile.am (leb128_unittest): New unit test.
4727 * testsuite/Makefile.in: Regenerate.
4728 * testsuite/leb128_unittest.cc: New unit test.
4729
833de760 47302012-01-23 Ian Lance Taylor <iant@google.com>
9dee3b3c
ILT
4731
4732 PR gold/13617
4733 * i386.cc (Target_i386::do_code_fill): When using a jmp
4734 instruction, pad with nop instructions.
4735 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
4736
618d6666
L
47372012-01-22 H.J. Lu <hongjiu.lu@intel.com>
4738
4739 * x86_64.cc (gc_process_relocs): Add typename on types used in
4740 template.
4741 (scan_relocs): Likewise.
4742 (relocate_section): Likewise.
4743 (apply_relocation): Likewise.
4744
3660ff06
L
47452012-01-10 H.J. Lu <hongjiu.lu@intel.com>
4746
4747 * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
4748 (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
4749 under x32.
4750
fc51264f
L
47512012-01-09 H.J. Lu <hongjiu.lu@intel.com>
4752
4753 * x86_64.cc: Initial support for x32.
4754
dd74ae06
CC
47552012-01-03 Cary Coutant <ccoutant@google.com>
4756
4757 * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
4758 Use abstract base class for GOT.
4759 * gold/output.h (class Output_data_got_base): New abstract base class.
4760 (class Output_data_got): Derive from new base class, adjust ctors.
4761 (Output_data_got::reserve_slot): Make virtual; rename to
4762 do_reserve_slot; Adjust callers.
4763 * gold/target.h (Sized_target::init_got_plt_for_update): Return
4764 pointer to abstract base class.
4765 * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
4766
83896202
ILT
47672011-12-18 Ian Lance Taylor <iant@google.com>
4768
4769 * object.h (Relobj::local_symbol_value): New function.
4770 (Relobj::local_plt_offset): New function.
4771 (Relobj::local_has_got_offset): New function.
4772 (Relobj::local_got_offset): New function.
4773 (Relobj::set_local_got_offset): New function.
4774 (Relobj::do_local_symbol_value): New pure virtual function.
4775 (Relobj::do_local_plt_offset): Likewise.
4776 (Relobj::do_local_has_got_offset): Likewise.
4777 (Relobj::do_local_got_offset): Likewise.
4778 (Relobj::do_set_local_got_offset): Likewise.
4779 (Sized_relobj::do_local_has_got_offset): Rename from
4780 local_has_got_offset.
4781 (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
4782 (Sized_relobj::do_set_local_got_offset): Rename from
4783 set_local_got_offset.
4784 (Sized_relobj_file::do_local_plt_offset): Rename from
4785 local_plt_offset.
4786 (Sized_relobj_file::do_local_symbol_value): New function.
4787 * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
4788 local_plt_offset.
4789 * output.cc (Output_data_got::Got_entry::write): Change object to
4790 Relobj. Use local_symbol_value.
4791 (Output_data_got::add_global_with_rel): Change rel_dyn to
4792 Output_data_reloc_generic*. Use add_global_generic.
4793 (Output_data_got::add_global_with_rela): Remove. Change all
4794 callers to use add_global_with_rel.
4795 (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
4796 Output_data_reloc_generic*. Use add_global_generic.
4797 (Output_data_got::add_global_pair_with_rela): Remove. Change all
4798 callers to use add_global_pair_with_rel.
4799 (Output_data_got::add_local): Change object to Relobj*.
4800 (Output_data_got::add_local_plt): Likewise.
4801 (Output_data_got::add_local_with_rel): Change object to Relobj*,
4802 change rel_dyn to Output_data_reloc_generic*. Use
4803 add_local_generic.
4804 (Output_data_got::add_local_with_rela): Remove. Change all
4805 callers to use all_local_with_rel.
4806 (Output_data_got::add_local_pair_with_rel): Change object to
4807 Relobj*, change rel_dyn to Output_data_reloc_generic*. Use
4808 add_output_section_generic.
4809 (Output_data_got::add_local_pair_with_rela): Remove. Change all
4810 callers to use add_local_pair_with_rel.
4811 (Output_data_got::reserve_local): Change object to Relobj*.
4812 * output.h: (class Output_data_reloc_generic): Add pure virtual
4813 declarations for add_global_generic, add_local_generic,
4814 add_output_section_generic.
4815 (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
4816 functions for Output_data_reloc_generic. Update declarations for
4817 changes listed in output.cc.
4818 (class Output_data_got): Change template parameter to got_size.
4819 Don't define Rel_dyn or Rela_dyn. Update declarations per above.
4820 * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
4821 function.
4822 (Sized_relobj_incr::do_local_plt_offset): New function.
4823 * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
4824 add_global_generic.
4825
76677ad0
CC
48262011-12-17 Cary Coutant <ccoutant@google.com>
4827
4828 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
4829 * resolve.cc (Symbol_table::resolve): Likewise.
4830 * i386.cc (Target_i386::do_code_fill): Use char constants for nop
4831 arrays.
4832 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
4833
8b8dd8d5
ILT
48342011-12-16 Ian Lance Taylor <iant@google.com>
4835
4836 * output.h (Output_data_reloc_generic::add): Only call
4837 add_dynamic_reloc if this is a dynamic reloc section.
4838
d55525b9
L
48392011-12-15 H.J. Lu <hongjiu.lu@intel.com>
4840
4841 PR gold/13505
4842 * target-reloc.h (apply_relocation): Replace <64, false> with
4843 <size, big_endian>.
4844
ff81c7c1
NC
48452011-11-25 Nick Clifton <nickc@redhat.com>
4846
4847 * po/it.po: New Italian translation.
4848
628f39be
SA
48492011-11-17 Sterling Augustine <saugustine@google.com>
4850
4851 * script.cc (script_include_directive): Implement.
4852 (read_script_file): New local variables name and search_path. Update
4853 comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
4854 * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
4855 * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
4856
98ef3ea4
SA
48572011-11-11 Sterling Augustine <saugustine@google.com>
4858
4859 * yyscript.y (section_cmd): Add support for INCLUDE directive.
4860 (file_or_sections_cmd): Likewise.
4861
f4a8b6d7
DK
48622011-11-11 Doug Kwan <dougkwan@google.com>
4863
4864 * arm.cc (Target_arm::do_make_elf_object): Allow executable also
4865 if --just-symbols is given.
4866
29ab395d
DK
48672011-11-10 Doug Kwan <dougkwan@google.com>
4868
4869 PR gold/13362
4870 * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
4871 when processing data relocs.
4872 * reloc.h (Relocate_functions::rel_unaligned): New method.
4873 (Relocate_functions::pcrel_unaligned): Ditto.
4874 (Relocate_functions::rel32_unaligned): Ditto.
4875 (Relocate_functions::pcrel32_unaligned): Ditto.
4876
2c339f71
DK
48772011-11-09 Doug Kwan <dougkwan@google.com>
4878
4879 PR gold/13362
4880 * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
4881 Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
4882 * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
4883 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
4884 (Relocate_functions::rel_unaligned): New.
4885 (Relocate_functions::rel32_unaligned): New.
4886 * target-reloc.h (relocate_for_relocatable): Add code to handle
4887 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
4888 * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
4889 arm_unaligned_reloc_r): New targets.
4890 * testsuite/Makefile.in: Regenerate.
4891 * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
4892 linking.
4893
3f3cddf1
ILT
48942011-11-02 Ian Lance Taylor <iant@google.com>
4895
4896 * configure.ac: Add --with-lib-path option. Define LIB_PATH and
4897 NATIVE_LINKER.
4898 * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
4899 * options.cc (General_options::finalize): Use library search path
4900 from configure script if specified. If not native and no sysroot,
4901 only search TOOLLIBDIR.
4902 * options.h (Search_directory::Search_directory): Change name to
4903 const std::string&.
4904 (General_options::add_to_library_path_with_sysroot): Change arg to
4905 const std::string&.
4906 * configure, Makefile.in, config.in: Rebuild.
4907
a8e2273b
ILT
49082011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
4909
4910 * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
4911 we are working around the ARM1176 Erratum.
4912 * options.h (General_options::fix_arm1176): Add option.
4913 * testsuite/Makefile.am: Add testcases, and keep current ones
4914 working.
4915 * testsuite/Makefile.in: Regenerate.
4916 * testsuite/arm_fix_1176.s: New file.
4917 * testsuite/arm_fix_1176.sh: Likewise.
4918
cd6eab1c
ILT
49192011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
4920
4921 * arm.cc (Target_arm::Target_arm): Remove initialisation of
4922 may_use_blx_.
4923 (Target_arm::may_use_blx): Remove method.
4924 (Target_arm::set_may_use_blx): Likewise.
4925 (Target_arm::may_use_v4t_interworking): New method.
4926 (Target_arm::may_use_v5t_interworking): Likewise.
4927 (Target_arm::may_use_blx_): Remove member variable.
4928 (Arm_relocate_functions::arm_branch_common): Check for v5T
4929 interworking.
4930 (Arm_relocate_functions::thumb_branch_common): Likewise.
4931 (Reloc_stub::stub_type_for_reloc): Likewise.
4932 (Target_arm::do_finalize_sections): Correct interworking checks.
4933 * testsuite/Makefile.am: Add new tests.
4934 * testsuite/Makefile.in: Regenerate.
4935 * testsuite/arm_farcall_arm_arm.s: New test.
4936 * testsuite/arm_farcall_arm_arm.sh: Likewise.
4937 * testsuite/arm_farcall_arm_thumb.s: Likewise.
4938 * testsuite/arm_farcall_arm_thumb.sh: Likewise.
4939 * testsuite/arm_farcall_thumb_arm.s: Likewise.
4940 * testsuite/arm_farcall_thumb_arm.sh: Likewise.
4941 * testsuite/arm_farcall_thumb_thumb.s: Likewise.
4942 * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
4943
286adcf4
CC
49442011-10-31 Cary Coutant <ccoutant@google.com>
4945
4946 PR gold/13023
4947 * expression.cc (Expression::eval_with_dot): Add
4948 is_section_dot_assignment parameter.
4949 (Expression::eval_maybe_dot): Likewise. Adjust value when rhs is
4950 absolute and assigning to dot within a section.
4951 * script-sections.cc
4952 (Output_section_element_assignment::set_section_addresses): Pass
4953 dot_section to set_if_absolute.
4954 (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
4955 as is_section_dot_assignment flag to eval_with_dot.
4956 (Output_section_element_dot_assignment::set_section_addresses):
4957 Likewise.
4958 * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
4959 parameter. Also set value if relative to dot_section; set the
4960 symbol's output_section.
4961 * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
4962 parameter. Adjust all callers.
4963 (Expression::eval_maybe_dot): Likewise.
4964 (Symbol_assignment::set_if_absolute): Add dot_section parameter.
4965 Adjust all callers.
4966 * testsuite/script_test_2.t: Test assignment of an absolute value
4967 to dot within an output section element.
4968
9634ed06
CC
49692011-10-31 Cary Coutant <ccoutant@google.com>
4970
4971 * options.h (class General_options): Add --[no-]gnu-unique options.
4972 * symtab.cc (Symbol_table::sized_write_globals): Convert
4973 STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
4974
de4101c7
CC
49752011-10-31 Cary Coutant <ccoutant@google.com>
4976
4977 PR gold/13359
4978 * i386.cc (Target_i386::Relocate::relocate_tls): Remove
4979 unnecessary assertion.
4980 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
4981
7257cc92
ST
49822011-10-31 Sriraman Tallam <tmsriram@google.com>
4983
4984 * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
4985 gc_mark_symbol.
4986 * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
4987 gc_mark_symbol.
4988 Change to just keep the section associated with symbol.
4989 (Symbol_table::add_from_relobj): Mark symbols as not garbage when
4990 they are externally visible and --export-dynamic is turned on.
4991 (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
4992
bfc34b3f
ILT
49932011-10-19 Ian Lance Taylor <iant@google.com>
4994
4995 PR gold/13163
4996 * script-sections.cc
4997 (Output_section_element_dot_assignment::needs_output_section): New
4998 function.
4999
ea0d8c47
ILT
50002011-10-19 Ian Lance Taylor <iant@google.com>
5001
5002 PR gold/13204
5003 * layout.cc (Layout::segment_precedes): Don't assert failure if a
5004 --section-start option was seen.
5005 * options.h (General_options::any_section_start): New function.
5006
abd242a9
DM
50072011-10-18 David S. Miller <davem@davemloft.net>
5008
5009 PR binutils/13301
5010 * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
5011 member to track relocation locations that have moved during TLS
5012 reloc optimizations.
5013 (Target_sparc::Relocate::Relocate): Initialize to NULL.
5014 (Target_sparc::Relocate::relocate): Adjust view down by 4
5015 bytes if it matches reloc_adjust_addr_.
5016 (Target_sparc::Relocate::relocate_tls): Always move the
5017 __tls_get_addr call delay slot instruction forward 4 bytes when
5018 performing relaxation.
5019
bab9090f
CC
50202011-10-18 Cary Coutant <ccoutant@google.com>
5021
5022 * output.cc (posix_fallocate): Return 0 on success, errno on failure.
5023 (Output_file::map_no_anonymous): Check for non-zero
5024 return code from posix_fallocate.
5025
f7c5b166
CC
50262011-10-17 Cary Coutant <ccoutant@google.com>
5027
5028 PR gold/13245
5029 * plugin.cc (is_visible_from_outside): Check for symbols
5030 referenced from dynamic objects.
5031 * resolve.cc (Symbol_table::resolve): Don't count references
5032 from dynamic objects as references from real ELF files.
5033 * testsuite/plugin_test_2.sh: Adjust expected result.
5034
b490c0bb
CC
50352011-10-17 Cary Coutant <ccoutant@google.com>
5036
5037 * gold.cc: Include timer.h.
5038 (queue_middle_tasks): Stamp time.
5039 (queue_final_tasks): Likewise.
5040 * main.cc (main): Store timer in parameters. Print timers
5041 for each pass.
5042 * parameters.cc (Parameters::Parameters): Initialize timer_.
5043 (Parameters::set_timer): New function.
5044 (set_parameters_timer): New function.
5045 * parameters.h (Parameters::set_timer): New function.
5046 (Parameters::timer): New function.
5047 (Parameters::timer_): New data member.
5048 (set_parameters_timer): New function.
5049 * timer.cc (Timer::stamp): New function.
5050 (Timer::get_pass_time): New function.
5051 * timer.h (Timer::stamp): New function.
5052 (Timer::get_pass_time): New function.
5053 (Timer::pass_times_): New data member.
5054
f475cf7b
CC
50552011-10-17 Cary Coutant <ccoutant@google.com>
5056
5057 * readsyms.cc (Read_symbols::run): Don't queue an unblocker
5058 task for members of lib groups.
5059
cdd7e244
CC
50602011-10-17 Cary Coutant <ccoutant@google.com>
5061
5062 PR gold/13288
4f95c8b4 5063 * fileread.cc (File_read::find_view): Add assert.
cdd7e244
CC
5064 (File_read::make_view): Move bounds check (replace with assert)...
5065 (File_read::find_or_make_view): ... to here.
5066
dfb45471
CC
50672011-10-12 Cary Coutant <ccoutant@google.com>
5068
4f95c8b4 5069 * output.cc (Output_file::open_base_file): Handle case where
dfb45471
CC
5070 ::read returns less than requested size.
5071
53bbcc1b
CC
50722011-10-10 Cary Coutant <ccoutant@google.com>
5073
4f95c8b4 5074 * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
53bbcc1b
CC
5075 Initialize defined_count_.
5076 (Sized_relobj_incr::do_add_symbols): Count defined symbols.
5077 (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
5078 (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
5079 (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
5080 (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
4f95c8b4 5081 * incremental.h (Sized_relobj_incr::defined_count_): New data
53bbcc1b
CC
5082 member.
5083 (Sized_incr_dynobj::defined_count_): New data member.
4f95c8b4 5084 * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
53bbcc1b
CC
5085 Return zeroes instead of internal error.
5086
397b129b
CC
50872011-10-10 Cary Coutant <ccoutant@google.com>
5088
5089 PR gold/13249
4f95c8b4 5090 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
397b129b 5091 (Output_reloc::symbol_value): Return PLT offset if flag is set.
4f95c8b4 5092 * output.h (class Output_reloc): Add use_plt_offset flag.
397b129b
CC
5093 (Output_reloc::type_): Adjust size of bit field.
5094 (Output_reloc::use_plt_offset_): New bit field.
5095 (class Output_data_reloc): Adjust all calls to Output_reloc_type.
5096 (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
5097 flag. Adjust all callers.
4f95c8b4 5098 * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
397b129b
CC
5099 creating RELATIVE relocations.
5100
d5698657
NC
51012011-10-10 Nick Clifton <nickc@redhat.com>
5102
5103 * po/es.po: Updated Spanish translation.
5104 * po/fi.po: Updated Finnish translation.
5105
6a59a5c2
DN
51062011-10-03 Diego Novillo <dnovillo@google.com>
5107
5108 * options.cc (parse_uint): Fix dereference of RETVAL.
5109
f0558624
ST
51102011-09-29 Sriraman Tallam <tmsriram@google.com>
5111
5112 * layout.h (section_order_map_): New member.
5113 (get_section_order_map): New member function.
5114 * output.cc (Output_section::add_input_section): Check for patterns
5115 only when --section-ordering-file is specified.
5116 * gold.cc (queue_middle_tasks): Delay updating order of sections till
5117 output_sections have been formed.
5118 * layout.cc (Layout_Layout): Initialize section_order_map_.
5119 * plugin.cc (update_section_order): Store order in order_map. Do not
5120 update the order.
5121 * testsuite/Makefile.am: Add test case for plugin_final_layout.
5122 * testsuite/Makefile.in: Regenerate.
5123 * testsuite/plugin_section_order.c: New file.
5124 * testsuite/plugin_final_layout.cc: New file.
5125 * testsuite/plugin_final_layout.sh: New file.
5126
a7dac153
CC
51272011-09-29 Cary Coutant <ccoutant@google.com>
5128
4f95c8b4 5129 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
a7dac153 5130 Check for NULL.
4f95c8b4 5131 * symtab.cc (Symbol_table::add_from_relobj): Ignore version
a7dac153
CC
5132 symbols during incremental update.
5133 (Symbol_table::add_from_dynobj): Likewise.
5134
eebd87a5
ILT
51352011-09-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5136 Ian Lance Taylor <iant@google.com>
5137
5138 * symtab.cc (Symbol_table::define_special_symbol): Always
5139 canonicalize version string.
5140
403a3331
CC
51412011-09-26 Cary Coutant <ccoutant@google.com>
5142
4f95c8b4
CC
5143 * gold.cc (queue_initial_tasks): Move option checks ...
5144 * options.cc (General_options::finalize): ... to here. Disable
403a3331
CC
5145 some options; make others fatal.
5146
235061c2
CC
51472011-09-26 Cary Coutant <ccoutant@google.com>
5148
5149 gcc PR lto/47247
5150 * plugin.cc (get_symbols_v2): New function.
5151 (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
5152 (is_referenced_from_outside): New function.
5153 (Pluginobj::get_symbol_resolution_info): Add version parameter, return
5154 LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
5155 (get_symbols): Pass version parameter.
5156 (get_symbols_v2): New function.
5157 * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
5158 parameter.
5159 * testsuite/plugin_test.c (get_symbols_v2): New static variable.
5160 (onload): Add LDPT_GET_SYMBOLS_V2.
5161 (all_symbols_read_hook): Use get_symbols_v2; check for
5162 LDPR_PREVAILING_DEF_IRONLY_EXP.
5163 * testsuite/plugin_test_3.sh: Update expected results.
5164
dc87f620
ILT
51652011-09-23 Simon Baldwin <simonb@google.com>
5166
5167 * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
5168 configuration options.
5169 * configure: Regenerate.
5170 * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
5171 * Makefile.in: Regenerate.
5172 * testsuite/Makefile.in: Regenerate.
5173
a8279f82
ST
51742011-09-19 Sriraman Tallam <tmsriram@google.com>
5175
5176 * plugin.h (should_defer_layout): Modify to check for any_claimed_.
5177
0c9350c8
CC
51782011-09-19 Cary Coutant <ccoutant@google.com>
5179
5180 * incremental.cc (can_incremental_update): Fix typo in comment.
5181 * incremental.h (can_incremental_update): Likewise.
5182
aa06ae28
CC
51832011-09-18 Cary Coutant <ccoutant@google.com>
5184
5185 * incremental.cc (can_incremental_update): New function.
5186 * incremental.h (can_incremental_update): New function.
5187 * layout.cc (Layout::init_fixed_output_section): Call it.
5188 (Layout::make_output_section): Don't allow patch space in .eh_frame.
5189 * object.cc (Sized_relobj_file::do_layout): Call
5190 can_incremental_update.
5191
ebb300b2
CC
51922011-09-13 Cary Coutant <ccoutant@google.com>
5193
5194 * configure.ac: Check for glibc support for gnu_indirect_function
5195 support with static linking, setting automake conditional
5196 IFUNC_STATIC.
5197 * Makefile.in: Regenerate.
5198 * configure: Regenerate.
5199
5200 * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
5201 (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
5202 for IFUNC_STATIC.
5203 * testsuite/Makefile.in: Regenerate.
5204
1206d0d5
CC
52052011-09-13 Cary Coutant <ccoutant@google.com>
5206
5207 * incremental.cc (Sized_relobj_incr::do_layout): Call
5208 report_comdat_group for kept comdat sections.
5209 * testsuite/Makefile.am (incremental_comdat_test_1): New test.
5210 * testsuite/Makefile.in: Regenerate.
5211 * testsuite/incr_comdat_test_1.cc: New source file.
5212 * testsuite/incr_comdat_test_2_v1.cc: New source file.
5213 * testsuite/incr_comdat_test_2_v2.cc: New source file.
5214 * testsuite/incr_comdat_test_2_v3.cc: New source file.
5215
40b29874
ILT
52162011-09-13 Ian Lance Taylor <iant@google.com>
5217
5218 * object.cc (Sized_relobj_file::do_layout): Remove unused local
5219 variable external_symbols_offset.
5220
1b045aac
ILT
52212011-09-12 Ian Lance Taylor <iant@google.com>
5222
5223 * object.cc (Sized_relobj_file::do_layout): Remove assertion which
5224 triggered if object has no symbols.
5225
24c6c55a
DM
52262011-09-09 David S. Miller <davem@davemloft.net>
5227
5228 * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
5229 (Output_fill_debug_line::do_write): Likewise.
5230
66570254
CC
52312011-08-29 Cary Coutant <ccoutant@google.com>
5232
5233 * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
5234 casts to match formatting specs.
5235 (Output_fill_debug_line::do_minimum_hole_size): Likewise.
5236
8ea8cd50
CC
52372011-08-26 Cary Coutant <ccoutant@google.com>
5238
5239 * layout.cc (Free_list::allocate): Provide guarantee of minimum
5240 remaining hole size when allocating.
5241 (Layout::make_output_section): Set fill methods for debug sections.
5242 * layout.h (Free_list::Free_list_node): Move from private to
5243 public.
5244 (Free_list::set_min_hole_size): New function.
5245 (Free_list::begin, Free_list::end): New functions.
5246 (Free_list::min_hole_): New data member.
5247 * output.cc: Include dwarf.h.
5248 (Output_fill_debug_info::do_minimum_hole_size): New function.
5249 (Output_fill_debug_info::do_write): New function.
5250 (Output_fill_debug_line::do_minimum_hole_size): New function.
5251 (Output_fill_debug_line::do_write): New function.
5252 (Output_section::Output_section): Initialize new data member.
5253 (Output_section::set_final_data_size): Ensure patch space is larger
5254 than minimum hole size.
5255 (Output_section::do_write): Fill holes in debug sections.
5256 * output.h (Output_fill): New class.
5257 (Output_fill_debug_info): New class.
5258 (Output_fill_debug_line): New class.
5259 (Output_section::set_free_space_fill): New function.
5260 (Output_section::free_space_fill_): New data member.
5261 * testsuite/Makefile.am (incremental_test_3): Add
5262 --incremental-patch option.
5263 (incremental_test_4): Likewise.
5264 (incremental_test_5): Likewise.
5265 (incremental_test_6): Likewise.
5266 (incremental_copy_test): Likewise.
5267 (incremental_common_test_1): Likewise.
5268 * testsuite/Makefile.in: Regenerate.
5269
7cf80422
NC
52702011-08-26 Nick Clifton <nickc@redhat.com>
5271
5272 * po/es.po: Updated Spanish translation.
5273
c3f7b0e5
CC
52742011-08-01 Cary Coutant <ccoutant@google.com>
5275
5276 * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
5277 * gold/testsuite/Makefile.in: Regenerate.
5278 * gold/testsuite/justsyms_exec.c: New source file.
5279 * gold/testsuite/justsyms_lib.c: New source file.
5280
9590bf25
CC
52812011-08-01 Cary Coutant <ccoutant@google.com>
5282
5283 * layout.cc (Layout::set_segment_offsets): Don't realign text
5284 segment if -Ttext was specified.
5285 * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
5286 file type.
5287 * object.h (Sized_relobj_file::e_type): New function.
5288 (Sized_relobj_file::e_type_): New data member.
5289 * symtab.cc (Symbol_table::add_from_relobj): Don't add section
5290 base address for ET_EXEC files.
5291 * target.cc (Target::do_make_elf_object_implementation): Allow
5292 ET_EXEC files with --just-symbols option.
5293
dcd8d12e
CC
52942011-07-28 Cary Coutant <ccoutant@google.com>
5295
5296 * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
5297 Add thread_number parameter.
5298 (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
5299 * workqueue-threads.cc
5300 (Workqueue_threader_threadpool::should_cancel_thread): Cancel
5301 current thread if its thread number is greater than desired thread
5302 count.
5303 * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
5304 Add thread_number parameter.
5305 (Workqueue::should_cancel_thread): Likewise.
5306 (Workqueue::find_runnable_or_wait): Pass thread_number to
5307 should_cancel_thread.
5308 * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
5309 parameter.
5310
804eb480
ST
53112011-07-22 Sriraman Tallam <tmsriram@google.com>
5312
5313 * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
5314 only after checking if it cannot be forced local.
5315 * symtab.h (is_externally_visible): Check if the symbol is not forced
5316 local.
5317
f1ddb600
ILT
53182011-07-15 Ian Lance Taylor <iant@google.com>
5319
5320 * options.h (class General_options): Add --print-output-format.
5321 Move -EL next to -EB, for better --help output.
5322 * target-select.cc: Include <cstdio>, "options.h", and
5323 "parameters.h".
5324 (Target_selector::do_target_bfd_name): New function.
5325 (print_output_format): New function.
5326 * target-select.h (class Target_selector): Update declarations.
5327 (Target_selector::target_bfd_name): New function.
5328 (print_output_format): Declare.
5329 * main.cc: Include "target-select.h".
5330 (main): Handle --print-output-format.
5331 * gold.cc: Include "target-select.h".
5332 (queue_initial_tasks): Handle --print-output-format when there are
5333 no input files.
5334 * parameters.cc (parameters_force_valid_target): Give a better
5335 error message if -EB/-EL does not match target.
5336 * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
5337 function.
5338
7d172687
ILT
53392011-07-15 Ian Lance Taylor <iant@google.com>
5340
5341 * i386.cc (class Output_data_plt_i386): Add layout_ field.
5342 (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
5343 (Output_data_plt_i386::do_write): Write address of .dynamic
5344 section to first entry in .got.plt section.
5345 * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
5346 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
5347 Initialize layout_.
5348 (Output_data_plt_x86_64::do_write): Write address of .dynamic
5349 section to first entry in .got.plt section.
5350 * layout.h (Layout::dynamic_section): New function.
5351
e9552f7e
ST
53522011-07-13 Sriraman Tallam <tmsriram@google.com>
5353
5354 * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
5355 to claim_file call.
5356 * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
5357 input_section_position_, and input_section_glob_.
5358 (read_layout_from_file): Call function section_ordering_specified.
5359 * layout.h (is_section_ordering_specified): New function.
5360 (section_ordering_specified): New function.
5361 (section_ordering_specified_): New boolean member.
5362 * main.cc(main): Call load_plugins after layout object is defined.
5363 * output.cc (Output_section::add_input_section): Use
5364 function section_ordering_specified to check if section ordering is
5365 needed.
5366 * output.cc (Output_section::add_relaxed_input_section): Use
5367 function section_ordering_specified to check if section ordering is
5368 needed.
5369 (Output_section::update_section_layout): New function.
5370 (Output_section::sort_attached_input_sections): Check if input section
5371 must be reordered.
5372 * output.h (Output_section::update_section_layout): New function.
5373 * plugin.cc (get_section_count): New function.
5374 (get_section_type): New function.
5375 (get_section_name): New function.
5376 (get_section_contents): New function.
5377 (update_section_order): New function.
58797674 5378 (allow_section_ordering): New function.
e9552f7e
ST
5379 (Plugin::load): Add the new interfaces to the transfer vector.
5380 (Plugin_manager::load_plugins): New parameter.
5381 (Plugin_manager::all_symbols_read): New parameter.
5382 (Plugin_manager::claim_file): New parameter. Save the elf object for
5383 unclaimed objects.
5384 (Plugin_manager::get_elf_object): New function.
5385 (Plugin_manager::get_view): Change to directly use the bool to check
5386 if get_view is called from claim_file_hook.
5387 * plugin.h (input_objects): New function
5388 (Plugin__manager::load_plugins): New parameter.
5389 (Plugin_manager::claim_file): New parameter.
5390 (Plugin_manager::get_elf_object): New function.
5391 (Plugin_manager::in_claim_file_handler): New function.
5392 (Plugin_manager::in_claim_file_handler_): New member.
5393 (layout): New function.
5394 * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
5395 handler with an extra parameter. Make the elf object before calling
5396 claim_file handler.
5397 * testsuite/plugin_test.c (get_section_count): New function pointer.
5398 (get_section_type): New function pointer.
5399 (get_section_name): New function pointer.
5400 (get_section_contents): New function pointer.
5401 (update_section_order): New function pointer.
5402 (allow_section_ordering): New function pointer.
5403 (onload): Check if the new interfaces exist.
5404
9446efde
ILT
54052011-07-13 Ian Lance Taylor <iant@google.com>
5406
5407 * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
5408 relro section.
5409 * x86_64.cc (Target_x86_64::got_section): Likewise.
5410 * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
5411 (relro_now_test_SOURCES): New variable.
5412 (relro_now_test_DEPENDENCIES): New variable.
5413 (relro_now_test_LDFLAGS): New variable.
5414 (relro_now_test_LDADD): New variable.
5415 (relro_now_test.so): New target.
5416 * testsuite/Makefile.in: Rebuild.
5417
07aa62f2
ILT
54182011-07-12 Ian Lance Taylor <iant@google.com>
5419
5420 PR gold/12980
5421 * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
5422 GLOB_DAT relocation rather than a RELATIVE relocation for a
5423 protected symbol when creating a shared library.
5424 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
5425 * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
5426 * testsuite/protected_main_1.cc (main): Test that protected
5427 function has same address.
5428
e2153196
ILT
54292011-07-11 Ian Lance Taylor <iant@google.com>
5430
5431 PR gold/12979
5432 * options.h (class General_options): Add -Bgroup.
5433 * options.cc (General_options::finalize): If -Bgroup is set,
5434 default to --unresolved-symbols=report-all.
5435 * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
5436 * target-reloc.h (issue_undefined_symbol_error): Handle
5437 --unresolved-symbols=report-all.
5438
6daf5215
ILT
54392011-07-08 Ian Lance Taylor <iant@google.com>
5440
5441 PR gold/11985
5442 * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
5443 if linker script discards key sections.
5444 (Layout::create_dynamic_symtab): Likewise.
5445 (Layout::assign_local_dynsym_offsets): Likewise.
5446 (Layout::sized_create_version_sections): Likewise.
5447 (Layout::create_interp): Likewise.
5448 (Layout::finish_dynamic_section): Likewise.
5449 (Layout::set_dynamic_symbol_size): Likewise.
5450
beabb2c6
ILT
54512011-07-08 Ian Lance Taylor <iant@google.com>
5452
5453 PR gold/12386
5454 * options.h (class General_options): Add --unresolved-symbols.
5455 * target-reloc.h (issue_undefined_symbol_error): Check
5456 --unresolved-symbols. Add comments.
5457
9c16daf1
ILT
54582011-07-08 Ian Lance Taylor <iant@google.com>
5459
5460 * testsuite/odr_violation2.cc (Ordering::operator()): Make
5461 expression more complex.
5462
191f1a2d
ILT
54632011-07-08 Ian Lance Taylor <iant@google.com>
5464
5465 PR gold/11317
5466 * target-reloc.h (issue_undefined_symbol_error): New inline
5467 function, broken out of relocate_section.
5468 (relocate_section): Call issue_undefined_symbol_error.
5469 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
5470 there is no TLS segment if we are about to issue an undefined
5471 symbol error.
5472 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
5473
62855347
ILT
54742011-07-08 Ian Lance Taylor <iant@google.com>
5475
5476 PR gold/12279
5477 * resolve.cc (Symbol_table::should_override): Add fromtype
5478 parameter. Change all callers. Give error when linking together
5479 TLS and non-TLS symbol.
5480 (Symbol_table::should_override_with_special): Add fromtype
5481 parameter. Change all callers.
5482 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
5483 there is no TLS segment if we have reported some errors.
5484 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
5485
67181c72
ILT
54862011-07-08 Ian Lance Taylor <iant@google.com>
5487
5488 PR gold/12372
5489 * target.h (Target::plt_address_for_global): New function.
5490 (Target::plt_address_for_local): New function.
5491 (Target::plt_section_for_global): Remove.
5492 (Target::plt_section_for_local): Remove.
5493 (Target::do_plt_address_for_global): New virtual function.
5494 (Target::do_plt_address_for_local): New virtual function.
5495 (Target::do_plt_section_for_global): Remove.
5496 (Target::do_plt_section_for_local): Remove.
5497 (Target::register_global_plt_entry): Add Symbol_table and Layout
5498 parameters.
5499 * output.cc (Output_data_got::Got_entry::write): Use
5500 plt_address_for_global and plt_address_for_local.
5501 * layout.cc (Layout::add_target_dynamic_tags): Use size and
5502 address of output section.
5503 * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
5504 got_irelative_, and irelative_count_ fields. Update
5505 declarations.
5506 (Output_data_plt_i386::has_irelative_section): New function.
5507 (Output_data_plt_i386::entry_count): Add irelative_count_.
5508 (Output_data_plt_i386::set_final_data_size): Likewise.
5509 (class Target_i386): Add got_irelative_ and rel_irelative_
5510 fields. Update declarations.
5511 (Target_i386::Target_i386): Initialize new fields.
5512 (Target_i386::do_plt_address_for_global): New function replacing
5513 do_plt_section_for_global.
5514 (Target_i386::do_plt_address_for_local): New function replacing
5515 do_plt_section_for_local.
5516 (Target_i386::got_section): Create got_irelative_.
5517 (Target_i386::rel_irelative_section): New function.
5518 (Output_data_plt_i386::Output_data_plt_i386): Initialize new
5519 fields. Don't define __rel_iplt_{start,end}.
5520 (Output_data_plt_i386::add_entry): Add symtab and layout
5521 parameters. Change all callers. Use different PLT and GOT for
5522 IFUNC symbols.
5523 (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
5524 layout parameters. Change all callers. Use different PLT and
5525 GOT.
5526 (Output_data_plt_i386::rel_tls_desc): Fix formatting.
5527 (Output_data_plt_i386::rel_irelative): New function.
5528 (Output_data_plt_i386::address_for_global): New function.
5529 (Output_data_plt_i386::address_for_local): New function.
5530 (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use
5531 IRELATIVE GOT when changing IFUNC GOT entries.
5532 (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
5533 reloc.
5534 (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
5535 if we didn't create an IRELATIVE GOT.
5536 (Target_i386::Relocate::relocate): Use plt_address_for_global and
5537 plt_address_for_local.
5538 (Target_i386::do_dynsym_value): Use plt_address_for_global.
5539 * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
5540 got_irelative_, and irelative_count_ fields. Update
5541 declarations.
5542 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
5543 Initialize new fields. Remove symtab parameter. Change all
5544 callers.
5545 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
5546 irelative_count_.
5547 (Output_data_plt_x86_64::has_irelative_section): New function.
5548 (Output_data_plt_x86_64::entry_count): Add irelative_count_.
5549 (class Target_x86_64): Add got_irelative_ and rel_irelative_
5550 fields. Update declarations.
5551 (Target_x86_64::Target_x86_64): Initialize new fields.
5552 (Target_x86_64::do_plt_address_for_global): New function replacing
5553 do_plt_section_for_global.
5554 (Target_x86_64::do_plt_address_for_local): New function replacing
5555 do_plt_section_for_local.
5556 (Target_x86_64::got_section): Create got_irelative_.
5557 (Target_x86_64::rela_irelative_section): New function.
5558 (Output_data_plt_x86_64::init): Remove symtab parameter. Change
5559 all callers. Don't create __rel_iplt_{start,end}.
5560 (Output_data_plt_x86_64::add_entry): Add symtab and layout
5561 parameters. Change all callers. Use different PLT and GOT for
5562 IFUNC symbols.
5563 (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
5564 layout parameters. Change all callers. Use different PLT and
5565 GOT.
5566 (Output_data_plt_x86_64::add_relocation): Add symtab and layout
5567 parameters. Change all callers. Use different PLT and GOT for
5568 IFUNC symbols.
5569 (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
5570 (Output_data_plt_x86_64::rela_irelative): New function.
5571 (Output_data_plt_x86_64::address_for_global): New function.
5572 (Output_data_plt_x86_64::address_for_local): New function.
5573 (Output_data_plt_x86_64::set_final_data_size): Likewise.
5574 (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
5575 (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
5576 (Target_x86_64::register_global_plt_entry): Add symtab and layout
5577 parameters.
5578 (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
5579 reloc.
5580 (Target_x86_64::do_finalize_sections): Create the __rela_iplt
5581 symbols if we didn't create an IRELATIVE GOT.
5582 (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
5583 plt_address_for_local.
5584 (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
5585 * testsuite/ifuncvar1.c: New test file.
5586 * testsuite/ifuncvar2.c: New test file.
5587 * testsuite/ifuncvar3.c: New test file.
5588 * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
5589 (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
5590 (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
5591 (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
5592 * testsuite/Makefile.in: Rebuild.
5593
33c15b45
CC
55942011-07-07 Cary Coutant <ccoutant@google.com>
5595
5596 * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
5597 (two_file_test_1_ndebug.o): Likewise.
5598 (two_file_test_1b_ndebug.o): Likewise.
5599 (two_file_test_2_ndebug.o): Likewise.
5600 (two_file_test_main_ndebug.o): Likewise.
5601 (incremental_test_2): Link with no-debug versions.
5602
f48b5fb7
CC
56032011-07-06 Cary Coutant <ccoutant@google.com>
5604
5605 * gold/incremental.cc
5606 (Output_section_incremental_inputs::write_info_blocks): Check for
5607 hidden and internal symbols.
5608
221597a5
CC
56092011-07-06 Cary Coutant <ccoutant@google.com>
5610
5611 * incremental.cc (Sized_incremental_binary::do_file_has_changed):
5612 Check disposition for startup file.
5613 (Incremental_inputs::report_command_line): Ignore
5614 --incremental-startup-unchanged option.
5615 * options.cc (General_options::parse_incremental_startup_unchanged):
5616 New function.
5617 (General_options::General_options): Initialize new data member.
5618 * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
5619 (General_options): Add --incremental-startup-unchanged option.
5620 (General_options::incremental_startup_disposition): New function.
5621 (General_options::incremental_startup_disposition_): New data member.
5622
e24719f6
CC
56232011-07-06 Cary Coutant <ccoutant@google.com>
5624
5625 * incremental.cc (Sized_incremental_binary::setup_readers): Pass
5626 input file index to Script_info ctor.
5627 (Sized_incremental_binary::do_file_has_changed): Find the
5628 command-line argument for files named in scripts.
5629 * incremental.h (Script_info::Script_info): New ctor
5630 with input file index.
5631 (Script_info::input_file_index): New function.
5632 (Script_info::input_file_index_): New data member.
5633 (Incremental_binary::get_library): Add const.
5634 (Incremental_binary::get_script_info): Add const.
5635 * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
5636 * testsuite/Makefile.am (incremental_test_5): New test case.
5637 (incremental_test_6): New test case.
5638 * testsuite/Makefile.in: Regenerate.
5639
8f7c81e8
CC
56402011-07-06 Cary Coutant <ccoutant@google.com>
5641
5642 * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
5643 debug output when command lines differ.
5644
9fbd3822
CC
56452011-07-06 Cary Coutant <ccoutant@google.com>
5646
5647 * incremental.cc (Incremental_inputs::report_command_line): Ignore
5648 --incremental-patch option.
5649 * layout.cc (Free_list::allocate): Extend allocation beyond original
5650 end if enabled.
5651 (Layout::make_output_section): Mark sections that should get
5652 patch space.
5653 * options.cc (parse_percent): New function.
5654 * options.h (parse_percent): New function.
5655 (DEFINE_percent): New macro.
5656 (General_options): Add --incremental-patch option.
5657 * output.cc (Output_section::Output_section): Initialize new data
5658 members.
5659 (Output_section::add_input_section): Print section name when out
5660 of patch space.
5661 (Output_section::add_output_section_data): Likewise.
5662 (Output_section::set_final_data_size): Add patch space when
5663 doing --incremental-full.
5664 (Output_section::do_reset_address_and_file_offset): Remove patch
5665 space.
5666 (Output_segment::set_section_list_addresses): Print debug output
5667 only if --incremental-update.
5668 * output.h (Output_section::set_is_patch_space_allowed): New function.
5669 (Output_section::is_patch_space_allowed_): New data member.
5670 (Output_section::patch_space_): New data member.
5671 * parameters.cc (Parameters::incremental_full): New function.
5672 * parameters.h (Parameters::incremental_full): New function
5673 * testsuite/Makefile.am (incremental_test_2): Add test for
5674 --incremental-patch option.
5675 * testsuite/Makefile.in: Regenerate.
5676 * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
5677 (t18): Remove function body.
5678
f6cccc2c
DK
56792011-07-05 Doug Kwan <dougkwan@google.com>
5680
5681 PR gold/12771
5682 * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
5683 Arm_Address type for relocation result.
5684 (Arm_relocate_functions::abs16): Use unaligned access. Also fix
5685 overflow check.
5686 (Arm_relocate_functions::abs32): Use unaligned access.
5687 (Arm_relocate_functions::rel32): Ditto.
5688 (Arm_relocate_functions::prel31): Ditto.
5689 (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
5690 * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
5691 static data relocations.
5692 * testsuite/Makefile.in: Regnerate.
5693 * testsuite/arm_unaligned_reloc.{s,sh}: New files.
5694
28a13fec
ILT
56952011-07-05 Ian Lance Taylor <iant@google.com>
5696
5697 PR gold/12392
5698 * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
5699 symbols if necessary.
5700 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5701
24d47b34
ILT
57022011-07-05 Ian Lance Taylor <iant@google.com>
5703
5704 PR gold/12952
5705 * resolve.cc (Symbol::override_base_with_special): Simply override
5706 version with special symbol version, ignoring previous version.
5707
41f9cbbe
ILT
57082011-07-05 Ian Lance Taylor <iant@google.com>
5709
5710 * object.cc (Sized_relobj_file::include_section_group): Add
5711 information to comment about signature location.
5712
886288f1
ILT
57132011-07-02 Ian Lance Taylor <iant@google.com>
5714
5715 PR gold/12957
5716 * options.h (class General_options): Add -f and -F.
5717 * options.cc (General_options::finalize): Fatal error if -f/-F
5718 are used without -shared.
5719 * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
5720
ae3a6d4f
ILT
57212011-07-02 Ian Lance Taylor <iant@google.com>
5722
5723 * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
5724
21131061
ILT
57252011-07-01 Ian Lance Taylor <iant@google.com>
5726
5727 PR gold/12525
5728 PR gold/12952
5729 * resolve.cc (Symbol::override_base_with_special): Don't override
5730 the version if the overriding symbol has a different name.
5731 * dynobj.cc (Versions::add_def): Add dynpool parameter. Change
5732 all callers. If we give an error about an undefined version,
5733 define the base version if necessary.
5734 * dynobj.h (class Versions): Update declaration.
5735 * testsuite/weak_alias_test_5.cc: New file.
5736 * testsuite/weak_alias_test.script: New file.
5737 * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
5738 and versioned_alias have the right value, and call t2.
5739 * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
5740 weak_alias_test_5.so.
5741 (weak_alias_test_LDADD): Likewise.
5742 (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
5743 * testsuite/Makefile.in: Rebuild.
5744
611062c0
ILT
57452011-07-01 Ian Lance Taylor <iant@google.com>
5746
5747 PR gold/12525
5748 * options.h (class General_options): Support -z notext.
5749 * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
5750 -Wl,-z,notext.
5751 (two_file_shared_nonpic.so): Likewise.
5752 (two_file_shared_mixed.so): Likewise.
5753 (two_file_shared_mixed_1.so): Likewise.
5754 (weak_undef_lib_nonpic.so): Likewise.
5755 (alt/weak_undef_lib_nonpic.so): Likewise.
5756 (tls_test_shared_nonpic.so): Likewise.
5757 * testsuite/Makefile.in: Rebuild.
5758
328c7c2f
ILT
57592011-07-01 Ian Lance Taylor <iant@google.com>
5760
5761 PR gold/12525
5762 * configure.ac: Test whether static linking works, setting
5763 the automake conditional HAVE_STATIC.
5764 * testsuite/Makefile.am: Disable tests using -static if
5765 HAVE_STATIC is not true.
5766 * configure, testsuite/Makefile.in: Rebuild.
5767
02d7cd44
ILT
57682011-07-01 Ian Lance Taylor <iant@google.com>
5769
5770 PR gold/12525
5771 * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
5772 Assert if we see DW_EH_PE_indirect.
5773 * target.h (Target::ehframe_datarel_base): New function.
5774 (Target::do_ehframe_datarel_base): New target function.
5775 * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
5776 * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
5777 function.
5778
07a60597
ILT
57792011-07-01 Ian Lance Taylor <iant@google.com>
5780
5781 PR gold/12571
5782 * options.h (class General_options): Add
5783 --ld-generated-unwind-info.
5784 * ehframe.cc (Fde::write): Add address parameter. Change all
5785 callers. If associated with PLT, fill in address and size.
5786 (Cie::set_output_offset): Only add merge mapping if there is an
5787 object.
5788 (Cie::write): Add address parameter. Change all callers.
5789 (Eh_frame::add_ehframe_for_plt): New function.
5790 * ehframe.h (class Fde): Update declarations. Move shndx_ and
5791 input_offset_ fields into union u_, with new plt field.
5792 (Fde::Fde): Adjust for new union field.
5793 (Fde::Fde) [Output_data version]: New constructor.
5794 (Fde::add_mapping): Only add merge mapping if there is an object.
5795 (class Cie): Update declarations.
5796 (class Eh_frame): Declare add_ehframe_for_plt.
5797 * layout.cc (Layout::layout_eh_frame): Break out code into
5798 make_eh_frame_section, and call it.
5799 (Layout::make_eh_frame_section): New function.
5800 (Layout::add_eh_frame_for_plt): New function.
5801 * layout.h (class Layout): Update declarations.
5802 * merge.cc (Merge_map::add_mapping): Add assertion.
5803 * i386.cc: Include "dwarf.h".
5804 (class Output_data_plt_i386): Make first_plt_entry,
5805 dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add
5806 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
5807 and plt_eh_frame_fde.
5808 (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
5809 boundary. Call add_eh_frame_for_plt if appropriate.
5810 * x86_64.cc: Include "dwarf.h".
5811 (class Output_data_plt_x86_64): Align to 16-byte boundary. Make
5812 first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add
5813 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
5814 and plt_eh_frame_fde.
5815 (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
5816 appropriate.
5817
14788a3f
ILT
58182011-06-29 Ian Lance Taylor <iant@google.com>
5819
5820 PR gold/12629
5821 * object.cc (Sized_relobj_file::layout_section): Change shdr
5822 parameter to be const.
5823 (Sized_relobj_file::layout_eh_frame_section): New function, broken
5824 out of do_layout.
5825 (Sized_relobj_file::do_layout): Defer .eh_frame sections if
5826 appropriate. Call layout_eh_frame_section.
5827 (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
5828 sections.
5829 * object.h (class Sized_relobj_file): Update declarations.
5830
6c21fce1
ILT
58312011-06-29 Ian Lance Taylor <iant@google.com>
5832
37e41b03 5833 PR gold/12652
6c21fce1
ILT
5834 * script.cc (Token::integer_value): Accept trailing M/m/K/k
5835 modifier.
5836 (Lex::gather_token): Accept trailing M/m/K/k for integers.
5837
4d5e4e62
ILT
58382011-06-29 Ian Lance Taylor <iant@google.com>
5839
5840 PR gold/12675
5841 * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
5842 SHT_X86_64_UNWIND.
5843 * layout.cc (Layout::layout_eh_frame): Likewise.
5844
886f533a
ILT
58452011-06-29 Ian Lance Taylor <iant@google.com>
5846
5847 PR gold/12695
5848 * layout.cc (Layout::symtab_section_shndx): New function.
5849 * layout.h (class Layout): Declare symtab_section_shndx.
5850 * output.cc (Output_section::write_header): Call it.
5851
f3ae1b28
ILT
58522011-06-29 Ian Lance Taylor <iant@google.com>
5853
5854 PR gold/12818
5855 * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
5856 symbols which are not used in a relocation.
5857
aecf301f
ILT
58582011-06-28 Ian Lance Taylor <iant@google.com>
5859
5860 PR gold/12898
5861 * layout.cc (Layout::segment_precedes): Don't crash if a linker
5862 script create indistinguishable segments.
5863 (Layout::set_segment_offsets): Use stable_sort when sorting
5864 segments. Pass this to Compare_segments constructor.
5865 * layout.h (class Layout): Make segment_precedes non-static.
5866 (class Compare_segments): Change from struct to class. Add
5867 layout_ field. Add constructor.
5868 * script-sections.cc
5869 (Script_sections::attach_sections_using_phdrs_clause): Rename
5870 local orphan to is_orphan. Don't report failure to put empty
5871 section in segment. On attachment failure, report name of
5872 section, and attach to first PT_LOAD segment.
5873
03ef7571
ILT
58742011-06-28 Ian Lance Taylor <iant@google.com>
5875
5876 PR gold/12934
5877 * target-select.cc (Target_selector::Target_selector): Add
5878 emulation parameter. Change all callers.
5879 (select_target_by_bfd_name): Rename from select_target_by_name.
5880 Change all callers.
5881 (select_target_by_emulation): New function.
5882 (supported_emulation_names): New function.
5883 * target-select.h (class Target_selector): Add emulation_ field.
5884 Update declarations.
5885 (Target_selector::recognize_by_bfd_name): Rename from
5886 recognize_by_name. Change all callers.
5887 (Target_selector::supported_bfd_names): Rename from
5888 supported_names. Change all callers.
5889 (Target_selector::recognize_by_emulation): New function.
5890 (Target_selector::supported_emulations): New function.
5891 (Target_selector::emulation): New function.
5892 (Target_selector::do_recognize_by_bfd_name): Rename from
5893 do_recognize_by_name. Change all callers.
5894 (Target_selector::do_supported_bfd_names): Rename from
5895 do_supported_names. Change all callers.
5896 (Target_selector::do_recognize_by_emulation): New function.
5897 (Target_selector::do_supported_emulations): New function.
5898 (select_target_by_bfd_name): Change name in declaration.
5899 (select_target_by_emulation): Declare.
5900 (supported_emulation_names): Declare.
5901 * parameters.cc (parameters_force_valid_target): Try to find
5902 target based on emulation from -m option.
5903 * options.h (class General_options): Change doc string for -m.
5904 * options.cc (help): Print emulations.
5905 (General_options::parse_V): Likewise.
5906 * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
5907 Add emulation parameter. Change all callers.
5908
200b2bb9
ILT
59092011-06-28 Ian Lance Taylor <iant@google.com>
5910
5911 * target.h (class Target): Add osabi_ field.
5912 (Target::osabi): New function.
5913 (Target::set_osabi): New function.
5914 (Target::Target): Initialize osabi_.
5915 (Target::do_adjust_elf_header): Make pure virtual.
5916 (Sized_target::do_adjust_elf_header): Declare.
5917 * target.cc (Sized_target::do_adjust_elf_header): New function.
5918 (class Sized_target): Instantiate all versions.
5919 * freebsd.h (class Target_freebsd): Remove.
5920 (Target_selector_freebsd::do_recognize): Call set_osabi on
5921 Target.
5922 (Target_selector_freebsd::do_recognize_by_name): Likewise.
5923 (Target_selector_freebsd::set_osabi): Remove.
5924 * i386.cc (class Target_i386): Inherit from Sized_target rather
5925 than Target_freebsd.
5926 * x86_64.cc (class Target_x86_64): Likewise.
5927
b3ce541e
ILT
59282011-06-28 Ian Lance Taylor <iant@google.com>
5929
5930 * target.h (Target::can_check_for_function_pointers): Rewrite.
5931 Make non-virtual.
5932 (Target::can_icf_inline_merge_sections): Likewise.
5933 (Target::section_may_have_icf_unsafe_poineters): Likewise.
5934 (Target::Target_info): Add can_icf_inline_merge_sections field.
5935 (Target::do_can_check_for_function_pointers): New virtual
5936 function.
5937 (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
5938 * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
5939 from can_check_for_function_pointers, move in file.
5940 (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
5941 section_may_have_icf_unsafe_poineters, move in file.
5942 (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
5943 * i386.cc (Target_i386::do_can_check_for_function_pointers):
5944 Rename from can_check_for_function_pointers, move in file.
5945 (Target_i386::can_icf_inline_merge_sections): Remove.
5946 (Target_i386::i386_info): Initialize
5947 can_icf_inline_merge_sections.
5948 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
5949 Initialize can_icf_inline_merge_sections.
5950 * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
5951 * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
5952 Rename from can_check_for_function_pointers, move in file.
5953 (Target_x86_64::can_icf_inline_merge_sections): Remove.
5954 (Target_x86_64::x86_64_info): Initialize
5955 can_icf_inline_merge_sections.
5956 * testsuite/testfile.cc (Target_test::test_target_info):
5957 Likewise.
5958 * icf.cc (get_section_contents): Correct formatting.
5959
6d1c4efb
ILT
59602011-06-27 Ian Lance Taylor <iant@google.com>
5961
5962 * symtab.cc (Symbol::versioned_name): New function.
5963 (Symbol_table::add_to_final_symtab): Use versioned_name when
5964 appropriate.
5965 (Symbol_table::sized_write_symbol): Likewise.
5966 * symtab.h (class Symbol): Declare versioned_name.
5967 * stringpool.h (class Stringpool_template): Add variant of add
5968 which takes a std::basic_string.
5969 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
5970 (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
5971 (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
5972 (ver_test_12.o): New target.
5973 * testsuite/Makefile.in: Rebuild.
5974
57eb9b50
DK
59752011-06-27 Doug Kwan <dougkwan@google.com>
5976
5977 * arm.cc (Arm_relocate_functions::thm_jump8,
5978 Arm_relocate_functions::thm_jump11): Use a wider signed
5979 type to compute offset.
5980 * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
5981 arm_thm_jump8.
5982 * testsuite/Makefile.in: Regenerate.
5983 * testsuite/arm_branch_in_range.sh: Check test results of
5984 arm_thm_jump11 and arm_thm_jump8.
5985 * testsuite/arm_thm_jump11.s: New test source file.
5986 * testsuite/arm_thm_jump11.t: New linker script.
5987 * testsuite/arm_thm_jump8.s: New test source file.
5988 * testsuite/arm_thm_jump8.t: New linker script.
5989
487b39df
ILT
59902011-06-24 Ian Lance Taylor <iant@google.com>
5991
5992 * layout.cc: Include "object.h".
5993 (ctors_sections_in_init_array): New static variable.
5994 (Layout::is_ctors_in_init_array): New function.
5995 (Layout::layout): Add entry to ctors_sections_in_init_array if
5996 appropriate.
5997 * layout.h (class Layout): Declare is_ctors_in_init_array.
5998 * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
5999 is_ctors_reverse_view is set.
6000 (Sized_relobj_file::write_sections): Add layout parameter. Change
6001 all callers. Set is_ctors_reverse_view field of View_size.
6002 (Sized_relobj_file::reverse_words): New function.
6003 * object.h (Sized_relobj_file::View_size): Add
6004 is_ctors_reverse_view field.
6005 (class Sized_relobj_file): Update declarations.
6006 * testsuite/initpri3.c: New test.
6007 * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
6008 initpri3b.
6009 (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
6010 (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
6011 (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
6012 (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
6013 * testsuite/Makefile.in: Rebuild.
6014
472076e4
CC
60152011-06-24 Cary Coutant <ccoutant@google.com>
6016
6017 * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
6018 (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
6019 (debug_msg_cdebug.err): New targets.
6020 * testsuite/Makefile.in: Regenerate.
6021 * testsuite/debug_msg.sh: Check output of link with compressed debug.
6022 Fix checks for link with shared library.
6023
a60af0db
DK
60242011-06-24 Doug Kwan <dougkwan@google.com>
6025
6026 * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
6027 skip empty text sections.
6028 * testsuite/arm_exidx_test.s: Test handling of an empty text section.
6029
5393d741
ILT
60302011-06-22 Ian Lance Taylor <iant@google.com>
6031
6032 PR gold/12910
6033 * options.h (class General_options): Add --ctors-in-init-array.
6034 * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
6035 friends as SHT_PROGBITS for merging sections.
6036 (Layout::layout): Remove special handling of .init_array and
6037 friends. Don't sort if doing relocatable link. Sort for .ctors
6038 and .dtors if ctors_in_init_array.
6039 (Layout::make_output_section): Force correct section types for
6040 .init_array and friends. Don't sort if doing relocatable link,
6041 Don't sort .ctors and .dtors if ctors_in_init_array.
6042 (Layout::section_name_mapping): Remove .ctors. and .dtorso.
6043 (Layout::output_section_name): Add relobj parameter. Change all
6044 callers. Handle .ctors. and .dtors. in code rather than table.
6045 Handle .ctors and .dtors if ctors_in_init_array.
6046 (Layout::match_file_name): New function, moved from output.cc.
6047 * layout.h (class Layout): Update declarations.
6048 * output.cc: Include "layout.h".
6049 (Input_section_sort_entry::get_priority): New function.
6050 (Input_section_sort_entry::match_file_name): Just call
6051 Layout::match_file_name.
6052 (Output_section::Input_section_sort_init_fini_compare::operator()):
6053 Handle .ctors and .dtors. Sort by explicit priority rather than
6054 by name.
6055 * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
6056 * testsuite/initpri2.c: New test.
6057 * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
6058 (check_PROGRAMS): Add initpri2.
6059 (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
6060 (initpri2_LDFLAGS, initpri2_LDADD): New variables.
6061 * configure, testsuite/Makefile.in: Rebuild.
6062
e1f74f98
ILT
60632011-06-19 Ian Lance Taylor <iant@google.com>
6064
6065 PR gold/12880
6066 * layout.cc (Layout::attach_allocated_section_to_segment): Add a
6067 .interp section to a PT_INTERP segment even if we have seen a
6068 --dynamic-linker option. Don't do it if we have seen a PHDRS
6069 clause in a linker script.
6070 (Layout::finalize): Don't create a .interp section if we've
6071 already create a PT_INTERP segment.
6072 (Layout::create_interp): Always call choose_output_section (revert
6073 patch of 2011-06-17). Don't create PT_INTERP segment.
6074 * script-sections.cc
6075 (Script_sections::create_note_and_tls_segments): Add a .interp
6076 section to a PT_INTERP segment even if we have seen a
6077 --dynamic-linker option.
6078
766f91bb
ILT
60792011-06-18 Ian Lance Taylor <iant@google.com>
6080
6081 * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
6082 merely because a non-PT_LOAD segment has a dynamic reloc.
6083
0d212c3a
ILT
60842011-06-18 Ian Lance Taylor <iant@google.com>
6085
6086 * layout.cc (Layout::finish_dynamic_section): Don't create
6087 DT_FLAGS entry if not needed.
6088
911a5072
ILT
60892011-06-18 Ian Lance Taylor <iant@google.com>
6090
6091 PR gold/12745
6092 * layout.cc (Layout::layout_eh_frame): Correct handling of
6093 writable .eh_frame section.
6094
534b4e5f
ILT
60952011-06-17 Ian Lance Taylor <iant@google.com>
6096
6097 PR gold/12893
6098 * resolve.cc (Symbol_table::resolve): Don't give an error if a
6099 symbol is redefined with the exact same object and value.
6100
10b4f102
ILT
61012011-06-17 Ian Lance Taylor <iant@google.com>
6102
6103 PR gold/12880
6104 * layout.h (class Layout): Add interp_segment_ field.
6105 * layout.cc (Layout::Layout): Initialize interp_segment_ field.
6106 (Layout::attach_allocated_section_to_segment): If making shared
6107 library, put .interp section in PT_INTERP segment.
6108 (Layout::finalize): Also call create_interp if -dynamic-linker
6109 option was used.
6110 (Layout::create_interp): Assert that there is no PT_INTERP
6111 segment. If not using a SECTIONS clause, use make_output_section.
6112 (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
6113 * script-sections.cc
6114 (Script_sections::create_note_and_tls_segments): If making shared
6115 library, put .interp section in PT_INTERP segment.
6116
a29b0dad
ILT
61172011-06-17 Ian Lance Taylor <iant@google.com>
6118
e588ea8d
ILT
6119 * object.cc (Sized_relobj_file::do_layout): Keep warning sections
6120 when making a shared library.
6121
61222011-06-17 Ian Lance Taylor <iant@google.com>
6123
6124 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
6125 parameter. Change all callers. Don't issue warning about PC32
6126 against locally defined symbol.
a29b0dad 6127
9d3b0698
ILT
61282011-06-16 Ian Lance Taylor <iant@google.com>
6129
6130 * symtab.cc (Warnings::issue_warning): Don't warn if relocation
6131 occurs in same object.
6132
85b0f90c
AM
61332011-06-14 Alan Modra <amodra@gmail.com>
6134
6135 * po/POTFILES.in: Regenerate.
6136
a94907d9
ILT
61372011-06-09 Ian Lance Taylor <iant@google.com>
6138
6139 * script-sections.cc
6140 (Orphan_output_section::set_section_addresses): For a relocatable
6141 link set address to 0.
6142
4fb3a1c3
CC
61432011-06-09 Cary Coutant <ccoutant@google.com>
6144
6145 PR gold/12804
6146 * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
6147 used with --compress-debug-sections.
6148 * gold/object.cc (Sized_relobj_file::do_layout): Report
6149 uncompressed size of compressed input sections.
6150
61220854
CC
61512011-06-08 Cary Coutant <ccoutant@google.com>
6152
6153 PR gold/12804
6154 * testsuite/two_file_test_2_v1.cc: Change initialization of
6155 v2 to keep it in .data.
6156
e6455dfb
CC
61572011-06-07 Cary Coutant <ccoutant@google.com>
6158
6159 * common.cc (Symbol_table::do_allocate_commons_list): Call
6160 gold_fallback.
6161 * errors.cc (Errors::fatal): Adjust call to gold_exit.
6162 (Errors::fallback): New function.
6163 (gold_fallback): New function.
6164 * errors.h (Errors::fallback): New function.
6165 * gold.cc (gold_exit): Change status parameter to enum; adjust
6166 all callers.
6167 (queue_initial_tasks): Call gold_fallback.
6168 * gold.h: Include cstdlib.
6169 (Exit_status): New enum type.
6170 (gold_exit): Change status parameter to enum.
6171 (gold_fallback): New function.
6172 * layout.cc (Layout::set_section_offsets): Call gold_fallback.
6173 (Layout::create_symtab_sections): Likewise.
6174 (Layout::create_shdrs): Likewise.
6175 * main.cc (main): Adjust call to gold_exit.
6176 * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
6177 (Output_data_got::add_got_entry_pair): Likewise.
6178 (Output_section::add_input_section): Likewise.
6179 (Output_section::add_output_section_data): Likewise.
6180 (Output_segment::set_section_list_addresses): Likewise.
6181 * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
6182
fb0e076f
CC
61832011-06-07 Cary Coutant <ccoutant@google.com>
6184
6185 * layout.cc (Layout::set_segment_offsets): Don't adjust layout
6186 for incremental links.
6187 * output.cc (Output_segment::set_section_list_addresses): Remove
6188 FIXME and test for TLS or BSS.
6189
a5ee4d5d
CC
61902011-06-07 Cary Coutant <ccoutant@google.com>
6191
6192 * testsuite/Makefile.am: Add incremental_copy_test,
6193 incremental_common_test_1.
6194 * testsuite/Makefile.in: Regenerate.
6195 * testsuite/common_test_1_v1.c: New source file.
6196 * testsuite/common_test_1_v2.c: New source file.
6197 * testsuite/copy_test_v1.cc: New source file.
6198
5146f448
CC
61992011-06-07 Cary Coutant <ccoutant@google.com>
6200
6201 * common.cc (Symbol_table::do_allocate_commons_list): For incremental
6202 update, allocate common from bss section's free list.
6203 * incremental-dump.cc (dump_incremental_inputs): Print flag for
6204 linker-defined symbols.
6205 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
6206 Skip GOT and PLT entries that are no longer referenced.
6207 (Output_section_incremental_inputs::write_info_blocks): Mark
6208 linker-defined symbols.
6209 (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
6210 * output.cc (Output_section::allocate): New function.
6211 * output.h (Output_section::allocate): New function.
6212 * resolve.cc (Symbol_table::report_resolve_problem): Add case for
6213 linker-defined symbols.
6214 (Symbol::override_base_with_special): Copy is_predefined_ flag.
6215 * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
6216 (Symbol::init_base_output_data): Likewise.
6217 (Symbol::init_base_output_segment): Likewise.
6218 (Symbol::init_base_constant): Likewise.
6219 (Sized_symbol::init_output_data): Likewise.
6220 (Sized_symbol::init_output_segment): Likewise.
6221 (Sized_symbol::init_constant): Likewise.
6222 (Symbol_table::do_define_in_output_data): Likewise.
6223 (Symbol_table::do_define_in_output_segment): Likewise.
6224 (Symbol_table::do_define_as_constant): Likewise.
6225 * symtab.h (Symbol::is_predefined): New function.
6226 (Symbol::init_base_output_data): Add is_predefined parameter.
6227 (Symbol::init_base_output_segment): Likewise.
6228 (Symbol::init_base_constant): Likewise.
6229 (Symbol::is_predefined_): New data member.
6230 (Sized_symbol::init_output_data): Add is_predefined parameter.
6231 (Sized_symbol::init_output_segment): Likewise.
6232 (Sized_symbol::init_constant): Likewise.
6233 (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
6234
26d3c67d
CC
62352011-06-07 Cary Coutant <ccoutant@google.com>
6236
6237 * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
6238 instead of emit_copy_reloc.
6239 (Copy_relocs::emit_copy_reloc): Refactor.
6240 (Copy_relocs::make_copy_reloc): New function.
6241 (Copy_relocs::add_copy_reloc): Remove.
6242 * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
6243 section.
6244 (Copy_relocs::make_copy_reloc): New function.
6245 (Copy_relocs::add_copy_reloc): Remove.
6246 * gold.cc (queue_middle_tasks): Emit old COPY relocations from
6247 unchanged input files.
6248 * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
6249 * incremental.cc (Sized_incremental_binary::do_reserve_layout):
6250 Reserve BSS space for COPY relocations.
6251 (Sized_incremental_binary::do_emit_copy_relocs): New function.
6252 (Output_section_incremental_inputs::write_info_blocks): Record
6253 whether a symbol is copied from a shared object.
6254 (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
6255 * incremental.h (enum Incremental_shlib_symbol_flags): New type.
6256 (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
6257 (Incremental_input_entry_reader::get_output_symbol_index): Add
6258 is_copy parameter.
6259 (Incremental_binary::emit_copy_relocs): New function.
6260 (Incremental_binary::do_emit_copy_relocs): New function.
6261 (Sized_incremental_binary::Sized_incremental_binary): Initialize
6262 new data member.
6263 (Sized_incremental_binary::add_copy_reloc): New function.
6264 (Sized_incremental_binary::do_emit_copy_relocs): New function.
6265 (Sized_incremental_binary::Copy_reloc): New struct.
6266 (Sized_incremental_binary::Copy_relocs): New typedef.
6267 (Sized_incremental_binary::copy_relocs_): New data member.
6268 * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
6269 * symtab.h (Symbol_table::add_from_incrobj): Change return type.
6270 * target.h (Sized_target::emit_copy_reloc): New function.
6271 * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
6272
7cdb37d9
CC
62732011-06-02 Cary Coutant <ccoutant@google.com>
6274
6275 PR gold/12163
6276 * gold/archive.cc (Archive::Archive): Initialize new data member.
6277 (Archive::include_all_members): Return if archive has already been
6278 included.
6279 * gold/archive.h (Archive::include_all_members_): New data member.
6280
cc643b88
NC
62812011-06-02 Nick Clifton <nickc@redhat.com>
6282
6283 * dynobj.h: Fix spelling mistake in comment.
6284 * output.cc: Likewise.
6285
f62a3ca7 62862011-05-31 Doug Kwan <dougkwan@google.com>
2e702c99 6287 Asier Llano
f62a3ca7
DK
6288
6289 PR gold/12826
cc643b88 6290 * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
f62a3ca7
DK
6291 arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
6292 * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up. Remove
6293 redundant arm_exidx_test.so.
6294 * testsuite/Makefile.in: Regenerate.
6295 (check_SCRIPTS): Add pr12826.sh
6296 (check_DATA): Add pr12826.stdout
6297 (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
6298 * testsuite/pr12826.sh: New file.
6299 * testsuite/pr12826_1.s: Ditto.
6300 * testsuite/pr12826_1.s: Ditto.
6301
8dbe1edc
ILT
63022011-05-30 Ian Lance Taylor <iant@google.com>
6303
6304 * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
6305 sections.
6306
c49875be
ILT
63072011-05-29 Ian Lance Taylor <iant@google.com>
6308
6309 PR gold/12804
6310 * testsuite/Makefile.am: Use different file name for two_file_test
6311 temporary file for each incremental test.
6312 * testsuite/Makefile.in: Rebuild.
6313
69d53f7a
ILT
63142011-05-29 Ian Lance Taylor <iant@google.com>
6315
6316 * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
6317 binary input file is empty.
6318
41d0ab5f
ILT
63192011-05-27 Ian Lance Taylor <iant@google.com>
6320
6321 * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
6322 (ver_test_9.so): Likewise.
6323 * testsuite/Makefile.in: Rebuild.
6324
89d8a36b
CC
63252011-05-26 Cary Coutant <ccoutant@google.com>
6326
6327 * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
6328 * incremental.cc (Incremental_inputs::report_input_section): Fix
6329 comment, indentation.
6330 (Incremental_inputs::report_comdat_group): New function.
6331 (Output_section_incremental_inputs::set_final_data_size): Adjust size
6332 of data for incremental input file entry.
6333 (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
6334 group count, COMDAT group signatures.
6335 (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
6336 an unchanged input file.
6337 * incremental.h (Incremental_object_entry::Incremental_object_entry):
6338 Initialize new data member.
6339 (Incremental_object_entry::add_comdat_group): New function.
6340 (Incremental_object_entry::get_comdat_group_count): New function.
6341 (Incremental_object_entry::get_comdat_signature_key): New function.
6342 (Incremental_object_entry::groups_): New data member.
6343 (Incremental_inputs::report_comdat_group): New function.
6344 (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
6345 data for incremental input file entry.
6346 (Incremental_input_entry_reader::get_comdat_group_count): New function.
6347 (Incremental_input_entry_reader::get_input_section): Adjust size of
6348 data for incremental input file entry.
6349 (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
6350 (Incremental_input_entry_reader::get_comdat_group_signature): New
6351 function.
6352 * object.cc (Sized_relobj::include_section_group): Report kept
6353 COMDAT groups for incremental links.
6354
1706a06f
ILT
63552011-05-24 David Meyer <pdox@google.com>
6356
6357 * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
6358 with name parameter. Add found_name parameter.
6359 * fileread.cc (Input_file::find_file): Adjust code accordingly.
6360 * dirsearch.h (class Dirsearch): Update declaration.
6361
a10ae760
ILT
63622011-05-24 Ian Lance Taylor <iant@google.com>
6363
6364 * archive.cc (Library_base::should_include_member): Pull in object
6365 from archive if it defines the entry symbol.
6366 * parameters.cc (Parameters::entry): New function.
6367 * parameters.h (class Parameters): Declare entry.
6368 * output.h (class Output_file_header): Remove entry_ field.
6369 * output.cc (Output_file_header::Output_file_header): Remove entry
6370 parameter. Change all callers.
6371 (Output_file_header::entry): Use parameters->entry.
6372 * gold.cc (queue_middle_tasks): Likewise.
6373 * plugin.cc (Plugin_hook::run): Likewise.
6374
aa92d6ed
CC
63752011-05-24 Cary Coutant <ccoutant@google.com>
6376
6377 * gold.cc (queue_initial_tasks): Pass incremental base filename
6378 to Output_file::open_base_file; don't print error message.
6379 * incremental-dump.cc (main): Adjust call to
6380 Output_file::open_for_modification.
6381 * incremental-dump.cc (main): Likewise.
6382 * incremental.cc (Incremental_inputs::report_command_line):
6383 Ignore --incremental-base option when comparing command lines.
6384 Ignore parameter when given as separate argument.
6385 * options.h (class General_options): Add --incremental-base.
6386 * output.cc (Output_file::Output_file):
6387 (Output_file::open_base_file): Add base_name and writable parameters;
6388 read base file into new file; print error message here.
6389 (Output_file::map_no_anonymous): Add writable parameter; adjust all
6390 callers.
6391 * output.h (Output_file::open_for_modification): Rename to...
6392 (Output_file::open_base_file): ...this; add base_name and
6393 writable parameters; adjust all callers.
6394 (Output_file::map_no_anonymous): Add writable parameter; adjust all
6395 callers.
6396 * testsuite/Makefile.am (incremental_test_4): Test
6397 --incremental-base.
6398 * testsuite/Makefile.in: Regenerate.
6399
2eedd706
CC
64002011-05-24 Cary Coutant <ccoutant@google.com>
6401
6402 * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
6403 incremental_test_4.
6404 * testsuite/Makefile.in: Regenerate.
6405 * testsuite/two_file_test_1_v1.cc: New test source file.
6406 * testsuite/two_file_test_1b_v1.cc: New test source file.
6407 * testsuite/two_file_test_2_v1.cc: New test source file.
6408
0f1c85a6
CC
64092011-05-24 Cary Coutant <ccoutant@google.com>
6410
6411 * dynobj.h (Dynobj::do_dynobj): New function.
6412 * incremental-dump.cc (dump_incremental_inputs): Print as_needed
6413 flag and soname for shared objects.
6414 * incremental.cc (Incremental_inputs::report_object): Make
6415 either Incremental_object_entry or Incremental_dynobj_entry; add
6416 soname to string table.
6417 (Incremental_inputs::report_input_section): Add assertion.
6418 (Output_section_incremental_inputs::set_final_data_size): Adjust
6419 type of input file entry for shared libraries; adjust size of
6420 shared library info entry.
6421 (Output_section_incremental_inputs::write_input_files): Write
6422 as_needed flag for shared libraries.
6423 (Output_section_incremental_inputs::write_info_blocks): Adjust type
6424 of input file entry for shared libraries; write soname.
6425 (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
6426 soname from incremental info.
6427 * incremental.h (enum Incremental_input_flags): Add
6428 INCREMENTAL_INPUT_AS_NEEDED.
6429 (Incremental_input_entry::Incremental_input_entry): Initialize new
6430 data member.
6431 (Incremental_input_entry::set_as_needed): New function.
6432 (Incremental_input_entry::as_needed): New function.
6433 (Incremental_input_entry::do_dynobj_entry): New function.
6434 (Incremental_input_entry::as_needed_): New data member.
6435 (Incremental_object_entry::Incremental_object_entry): Don't check
6436 for shared library.
6437 (Incremental_object_entry::do_type): Likewise.
6438 (class Incremental_dynobj_entry): New class.
6439 (Incremental_input_entry_reader::as_needed): New function.
6440 (Incremental_input_entry_reader::get_soname): New function.
6441 (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
6442 (Incremental_input_entry_reader::get_output_symbol_index): Adjust
6443 size of shared library info entry.
58797674 6444 * layout.cc (Layout::finish_dynamic_section): Don't test for
0f1c85a6
CC
6445 incremental link when adding DT_NEEDED entries.
6446 * object.h (Object::Object): Initialize new data member.
6447 (Object::dynobj): New function.
6448 (Object::set_as_needed): New function.
6449 (Object::as_needed): New function.
6450 (Object::do_dynobj): New function.
6451 (Object::as_needed_): New data member.
6452
6fa2a40b
CC
64532011-05-24 Cary Coutant <ccoutant@google.com>
6454
6455 * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
6456 info; adjust display of GOT entries.
6457 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
6458 vector of input objects; remove file_status_.
6459 (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
6460 (Sized_incremental_binary::do_process_got_plt): Adjust calls to
6461 got_plt reader; call target hooks to reserve GOT entries.
6462 (Output_section_incremental_inputs::set_final_data_size): Adjust size
6463 of input file info header and GOT info entry.
6464 (Output_section_incremental_inputs::write_info_blocks): Write dynamic
6465 relocation info.
6466 (Got_plt_view_info::got_descriptor): Remove.
6467 (Got_plt_view_info::sym_index): New data member.
6468 (Got_plt_view_info::input_index): New data member.
6469 (Local_got_offset_visitor::visit): Write input file index.
6470 (Global_got_offset_visitor::visit): Write 0 for input file index.
6471 (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
6472 with sym_index and input_index.
6473 (Output_section_incremental_inputs::write_got_plt): Adjust size of
6474 incremental info GOT entry; replace got_descriptor with input_index.
6475 (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
6476 map from input file index to object.
6477 (Sized_relobj_incr::do_layout): Replace direct data member reference
6478 with accessor function.
6479 (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
6480 * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
6481 Adjust size of input file info header.
6482 (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
6483 (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
6484 (Incremental_input_entry_reader::get_input_section): Adjust size of
6485 input file info header.
6486 (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
6487 of incremental info GOT entry.
6488 (Incremental_got_plt_reader::get_got_desc): Remove.
6489 (Incremental_got_plt_reader::get_got_symndx): New function.
6490 (Incremental_got_plt_reader::get_got_input_index): New function.
6491 (Sized_incremental_binary::Sized_incremental_binary): Remove
6492 file_status_; add input_objects_.
6493 (Sized_incremental_binary::~Sized_incremental_binary): Remove.
6494 (Sized_incremental_binary::set_file_is_unchanged): Remove.
6495 (Sized_incremental_binary::file_is_unchanged): Remove.
6496 (Sized_incremental_binary::set_input_object): New function.
6497 (Sized_incremental_binary::input_object): New function.
6498 (Sized_incremental_binary::file_status_): Remove.
6499 (Sized_incremental_binary::input_objects_): New data member.
6500 (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
6501 references.
6502 (Sized_relobj_incr::invalid_address): Move to base class.
6503 (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
6504 class.
6505 (Sized_relobj_incr::do_output_section_offset): Likewise.
6506 (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
6507 (Sized_relobj_incr::section_offsets_): Likewise.
6508 * object.cc (Sized_relobj::do_for_all_local_got_entries): New
6509 function.
6510 (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
6511 (Sized_relobj_file::layout_section): Replace refs to section_offsets_
6512 with accessor function.
6513 (Sized_relobj_file::do_layout): Likewise.
6514 (Sized_relobj_file::do_layout_deferred_sections): Likewise.
6515 (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
6516 (Sized_relobj_file::compute_final_local_value): Replace refs to
6517 section_offsets_ with accessor function.
6518 (Sized_relobj_file::do_finalize_local_symbols): Likewise.
6519 * object.h (Relobj::Relobj): Initialize new data members.
6520 (Relobj::add_dyn_reloc): New function.
6521 (Relobj::first_dyn_reloc): New function.
6522 (Relobj::dyn_reloc_count): New function.
6523 (Relobj::first_dyn_reloc_): New data member.
6524 (Relobj::dyn_reloc_count_): New data member.
6525 (Sized_relobj): Rename Sized_relobj_base to this; adjust all
6526 references.
6527 (Sized_relobj::Address): New typedef.
6528 (Sized_relobj::invalid_address): Move here from child class.
6529 (Sized_relobj::Sized_relobj): Initialize new data members.
6530 (Sized_relobj::sized_relobj): New function.
6531 (Sized_relobj::is_output_section_offset_invalid): Move here from
6532 child class.
6533 (Sized_relobj::get_output_section_offset): Likewise.
6534 (Sized_relobj::local_has_got_offset): Likewise.
6535 (Sized_relobj::local_got_offset): Likewise.
6536 (Sized_relobj::set_local_got_offset): Likewise.
6537 (Sized_relobj::do_for_all_local_got_entries): Likewise.
6538 (Sized_relobj::clear_got_offsets): New function.
6539 (Sized_relobj::section_offsets): Move here from child class.
6540 (Sized_relobj::do_output_section_offset): Likewise.
6541 (Sized_relobj::do_set_section_offset): Likewise.
6542 (Sized_relobj::Local_got_offsets): Likewise.
6543 (Sized_relobj::local_got_offsets_): Likewise.
6544 (Sized_relobj::section_offsets_): Likewise.
6545 (Sized_relobj_file): Rename Sized_relobj to this; adjust all
6546 references.
6547 (Sized_relobj_file::is_output_section_offset_invalid): Move to base
6548 class.
6549 (Sized_relobj_file::sized_relobj): New function
6550 (Sized_relobj_file::local_has_got_offset): Move to base class.
6551 (Sized_relobj_file::local_got_offset): Likewise.
6552 (Sized_relobj_file::set_local_got_offset): Likewise.
6553 (Sized_relobj_file::get_output_section_offset): Likewise.
6554 (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
6555 (Sized_relobj_file::do_output_section_offset): Likewise.
6556 (Sized_relobj_file::do_set_section_offset): Likewise.
6557 (Sized_relobj_file::Local_got_offsets): Likewise.
6558 (Sized_relobj_file::local_got_offsets_): Likewise.
6559 (Sized_relobj_file::section_offsets_): Likewise.
6560 * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
6561 (all constructors).
6562 (set_needs_dynsym_index): Convert relobj to derived class pointer.
6563 (Output_reloc::get_symbol_index): Likewise.
6564 (Output_reloc::local_section_offset): Likewise.
6565 (Output_reloc::get_address): Likewise.
6566 (Output_reloc::symbol_value): Likewise.
6567 (Output_data_got::reserve_slot): Move to class definition.
6568 (Output_data_got::reserve_local): New function.
6569 (Output_data_got::reserve_slot_for_global): Remove.
6570 (Output_data_got::reserve_global): New function.
6571 * output.h (Output_reloc::Output_reloc): Adjust type of relobj
6572 (all constructors, two instantiations).
6573 (Output_reloc::get_relobj): New function (two instantiations).
6574 (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
6575 (Output_data_reloc_base::add): Convert relobj to derived class pointer.
6576 (Output_data_reloc::add_global): Adjust type of relobj.
6577 (Output_data_reloc::add_global_relative): Likewise.
6578 (Output_data_reloc::add_symbolless_global_addend): Likewise.
6579 (Output_data_reloc::add_local): Likewise.
6580 (Output_data_reloc::add_local_relative): Likewise.
6581 (Output_data_reloc::add_symbolless_local_addend): Likewise.
6582 (Output_data_reloc::add_local_section): Likewise.
6583 (Output_data_reloc::add_output_section): Likewise.
6584 (Output_data_reloc::add_absolute): Likewise.
6585 (Output_data_reloc::add_target_specific): Likewise.
6586 (Output_data_got::reserve_slot): Move definition here.
6587 (Output_data_got::reserve_local): New function.
6588 (Output_data_got::reserve_global): New function.
6589 * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
6590 section_offsets_ with accessor function.
6591 (Sized_relobj_file::write_sections): Likewise.
6592 (Sized_relobj_file::do_relocate_sections): Likewise.
6593 * target.h (Sized_target::reserve_local_got_entry): New function.
6594 (Sized_target::reserve_global_got_entry): New function.
6595 * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
6596 (Target_x86_64::reserve_global_got_entry): New function.
6597 (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
6598
4829d394
CC
65992011-05-23 Cary Coutant <ccoutant@google.com>
6600
6601 * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
6602 * incremental-dump.cc (dump_incremental_inputs): Mask high-order
6603 bit when checking got_type.
6604 * incremental.cc (Sized_incremental_binary::setup_readers):
6605 Store symbol table and string table locations; initialize bit vector
6606 of file status flags.
6607 (Sized_incremental_binary::do_reserve_layout): Set bit flag for
6608 unchanged files.
6609 (Sized_incremental_binary::do_process_got_plt): New function.
6610 (Sized_incremental_binary::get_symtab_view): Use stored locations.
6611 (Output_section_incremental_inputs::set_final_data_size): Record
6612 file index for each input file.
6613 (Output_section_incremental_inputs::write_got_plt): Store file index
6614 instead of input entry offset for each GOT entry.
6615 * incremental.h
6616 (Incremental_input_entry::Incremental_input_entry): Initialize new
6617 data member.
6618 (Incremental_input_entry::set_offset): Store file index.
6619 (Incremental_input_entry::get_file_index): New function.
6620 (Incremental_input_entry::file_index_): New data member.
6621 (Incremental_binary::process_got_plt): New function.
6622 (Incremental_binary::do_process_got_plt): New function.
6623 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
6624 data members.
6625 (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
6626 (Sized_incremental_binary::set_file_is_unchanged): New function.
6627 (Sized_incremental_binary::file_is_unchanged): New function.
6628 (Sized_incremental_binary::do_process_got_plt): New function.
6629 (Sized_incremental_binary::file_status_): New data member.
6630 (Sized_incremental_binary::main_symtab_loc_): New data member.
6631 (Sized_incremental_binary::main_strtab_loc_): New data member.
6632 * output.cc (Output_data_got::Got_entry::write): Add case
6633 RESERVED_CODE.
6634 (Output_data_got::add_global): Call add_got_entry.
6635 (Output_data_got::add_global_plt): Likewise.
6636 (Output_data_got::add_global_with_rel): Likewise.
6637 (Output_data_got::add_global_with_rela): Likewise.
6638 (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
6639 (Output_data_got::add_global_pair_with_rela): Likewise.
6640 (Output_data_got::add_local): Call add_got_entry.
6641 (Output_data_got::add_local_plt): Likewise.
6642 (Output_data_got::add_local_with_rel): Likewise.
6643 (Output_data_got::add_local_with_rela): Likewise.
6644 (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
6645 (Output_data_got::add_local_pair_with_rela): Likewise.
6646 (Output_data_got::reserve_slot): New function.
6647 (Output_data_got::reserve_slot_for_global): New function.
6648 (Output_data_got::add_got_entry): New function.
6649 (Output_data_got::add_got_entry_pair): New function.
6650 (Output_section::add_output_section_data): Edit FIXME.
6651 * output.h
6652 (Output_section_data_build::Output_section_data_build): New
6653 constructor with size parameter.
6654 (Output_data_space::Output_data_space): Likewise.
6655 (Output_data_got::Output_data_got): Initialize new data member; new
6656 constructor with size parameter.
6657 (Output_data_got::add_constant): Call add_got_entry.
6658 (Output_data_got::reserve_slot): New function.
6659 (Output_data_got::reserve_slot_for_global): New function.
6660 (class Output_data_got::Got_entry): Add RESERVED_CODE.
6661 (Output_data_got::add_got_entry): New function.
6662 (Output_data_got::add_got_entry_pair): New function.
6663 (Output_data_got::free_list_): New data member.
6664 * target.h (Sized_target::init_got_plt_for_update): New function.
6665 (Sized_target::register_global_plt_entry): New function.
6666 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
6667 Initialize new data member; call init; add constructor with PLT count.
6668 (Output_data_plt_x86_64::init): New function.
6669 (Output_data_plt_x86_64::add_relocation): New function.
6670 (Output_data_plt_x86_64::reserve_slot): New function.
6671 (Output_data_plt_x86_64::free_list_): New data member.
6672 (Target_x86_64::init_got_plt_for_update): New function.
6673 (Target_x86_64::register_global_plt_entry): New function.
6674 (Output_data_plt_x86_64::add_entry): Allocate from free list for
6675 incremental updates.
6676 (Output_data_plt_x86_64::add_relocation): New function.
6677 * testsuite/object_unittest.cc (Object_test): Set default options.
6678
ec69d6da
ILT
66792011-05-16 Ian Lance Taylor <iant@google.com>
6680
6681 * options.h (class General_options): Make -i a synonym for -r.
6682
732e31de
ILT
66832011-05-16 Ian Lance Taylor <iant@google.com>
6684
6685 * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
6686
403676b5
CC
66872011-05-10 Cary Coutant <ccoutant@google.com>
6688
6689 * object.cc (Sized_relobj::do_count_local_symbols): Check for
6690 strip_all (-s).
6691
5b7b7d6e
ILT
66922011-05-06 Ian Lance Taylor <iant@google.com>
6693
6694 * layout.cc (Layout::layout): If the output section flags change,
6695 update the ordering.
6696
f0f9babf
CC
66972011-04-25 Cary Coutant <ccoutant@google.com>
6698
6699 * incremental-dump.cc (dump_incremental_inputs): Print local
6700 symbol info for each input file.
6701 * incremental.cc
6702 (Output_section_incremental_inputs::set_final_data_size): Add local
6703 symbol info to input file entries in incremental info.
6704 (Output_section_incremental_inputs::write_info_blocks): Likewise.
6705 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
6706 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
6707 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
6708 implementation.
6709 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
6710 (Sized_incr_relobj::do_relocate): Write the local symbols.
6711 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
6712 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
6713 Adjust size of input file header.
6714 (Incremental_inputs_reader::get_local_symbol_offset): New function.
6715 (Incremental_inputs_reader::get_local_symbol_count): New function.
6716 (Incremental_inputs_reader::get_input_section): Adjust size of input
6717 file header.
6718 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
6719 (Sized_incr_relobj::This): New typedef.
6720 (Sized_incr_relobj::sym_size): New const data member.
6721 (Sized_incr_relobj::Local_symbol): New struct.
6722 (Sized_incr_relobj::do_output_local_symbol_count): New function.
6723 (Sized_incr_relobj::do_local_symbol_offset): New function.
6724 (Sized_incr_relobj::local_symbol_count_): New data member.
6725 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
6726 (Sized_incr_relobj::local_symbol_index_): New data member.
6727 (Sized_incr_relobj::local_symbol_offset_): New data member.
6728 (Sized_incr_relobj::local_dynsym_offset_): New data member.
6729 (Sized_incr_relobj::local_symbols_): New data member.
6730 * object.h (Relobj::output_local_symbol_count): New function.
6731 (Relobj::local_symbol_offset): New function.
6732 (Relobj::do_output_local_symbol_count): New function.
6733 (Relobj::do_local_symbol_offset): New function.
6734 (Sized_relobj::do_output_local_symbol_count): New function.
6735 (Sized_relobj::do_local_symbol_offset): New function.
6736
d0a9ace3
ILT
67372011-04-22 Vladimir Simonov <sv@sw.ru>
6738
6739 * descriptors.cc (set_close_on_exec): New function.
6740 (Descriptors::open): Use set_close_on_exec.
6741 * output.cc (S_ISLNK): Define if not defined.
6742
94a3fc8b
CC
67432011-04-22 Cary Coutant <ccoutant@google.com>
6744
6745 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
6746 global symbol map.
6747 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
6748 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
6749 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
6750 relocations.
6751 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
6752 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
6753 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
6754 * incremental.h
6755 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
6756 function.
6757 (Incremental_binary::apply_incremental_relocs): New function.
6758 (Incremental_binary::do_apply_incremental_relocs): New function.
6759 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
6760 data member.
6761 (Sized_incremental_binary::add_global_symbol): New function.
6762 (Sized_incremental_binary::global_symbol): New function.
6763 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
6764 (Sized_incremental_binary::symbol_map_): New data member.
6765 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
6766 * target.h (Sized_target::apply_relocation): New function.
6767 * target-reloc.h (apply_relocation): New function.
6768 * x86_64.cc (Target_x86_64::apply_relocation): New function.
6769
c87e4302
DK
67702011-04-22 Doug Kwan <dougkwan@google.com>
6771
6772 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
6773 flag of a SHT_ARM_EXIDX section.
2e702c99 6774 * testsuite/Makefile.am (arm_exidx_test): New test rules.
c87e4302
DK
6775 * testsuite/Makefile.in: Regenerate.
6776 * testsuite/arm_exidx_test.s: New file.
6777 * testsuite/arm_exidx_test.sh: Same.
6778
e7782cf6
CC
67792011-04-20 Cary Coutant <ccoutant@google.com>
6780
6781 PR gold/12689
6782 * archive.h (Incremental_archive_entry::Archive_member):
6783 Initialize arg_serial_ (second constructor).
6784
308ecdc7
ILT
67852011-04-17 Ian Lance Taylor <iant@google.com>
6786
6787 * object.cc (Relocate_info::location): Simplify location string.
6788 * errors.cc (Errors::error_at_location): Don't print program
6789 name.
6790 (Errors::warning_at_location): Likewise.
6791 (Errors::undefined_symbol): Likewise.
6792 * testsuite/debug_msg.sh: Update accordingly.
6793
bec5b579
CC
67942011-04-14 Cary Coutant <ccoutant@google.com>
6795
6796 * gold/layout.cc (Layout::symtab_section_offset): New function.
6797 * gold/layout.h (Layout::symtab_section_offset): New function.
6798 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
6799
88597d34
ILT
68002011-04-12 Ian Lance Taylor <iant@google.com>
6801
6802 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
6803 with MREMAP_MAYMOVE.
6804 * output.h (class Output_file): Add map_is_allocated_ field.
6805 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
6806 not available, provide stubs. If mremap is not available, #define
6807 it to gold_mremap.
6808 (MREMAP_MAYMOVE): Define if not defined.
6809 (Output_file::Output_file): Initialize map_is_allocated_.
6810 (Output_file::resize): Check map_is_allocated_.
6811 (Output_file::map_anonymous): If mmap fails, use malloc.
6812 (Output_file::unmap): Don't do anything for an anonymous map.
6813 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
6814 is not available, provide stubs.
6815 (File_read::View::~View): Use free rather than delete[].
6816 (File_read::make_view): Use malloc rather than new[]. If mmap
6817 fails, use malloc.
6818 (File_read::find_or_make_view): Use malloc rather than new[].
6819 * gold.h: Remove HAVE_REMAP code.
6820 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
6821 exists. Rename mremap to gold_mremap. If mmap is not available
6822 don't do anything.
6823 * configure, config.in: Rebuild.
6824
11e361bc
ILT
68252011-04-11 Ian Lance Taylor <iant@google.com>
6826
6827 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
6828 initialize local variable v.
6829
cdc29364
CC
68302011-04-11 Cary Coutant <ccoutant@google.com>
6831
6832 * archive.cc (Archive::include_member): Adjust call to
6833 report_object.
6834 (Add_archive_symbols::run): Track argument serial numbers.
6835 (Lib_group::include_member): Likewise.
6836 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
6837 * archive.h (Incremental_archive_entry::Archive_member):
6838 Initialize arg_serial_.
6839 (Archive_member::arg_serial_): New data member.
6840 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
6841 (Sized_dynobj::do_add_symbols): Track symbols when doing an
6842 incremental link.
6843 (Sized_dynobj::do_for_all_local_got_entries): New function.
6844 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
6845 function.
6846 * fileread.cc (get_mtime): New function.
6847 * fileread.h (get_mtime): New function.
6848 * gold.cc (queue_initial_tasks): Check for incremental update.
6849 (process_incremental_input): New function.
6850 (queue_middle_tasks): Don't force valid target for incremental
6851 update.
6852 * incremental-dump.cc (find_input_containing_global): Adjust
6853 size of symbol info entry.
6854 (dump_incremental_inputs): Dump argument serial number and
6855 in_system_directory flag; bias shndx by 1; print symbol names
6856 when dumping per-file symbol lists; use new symbol info readers.
6857 * incremental.cc
6858 (Output_section_incremental_inputs:update_data_size): New function.
6859 (Sized_incremental_binary::setup_readers): Setup input readers
6860 for each input file; build maps for files added from libraries
6861 and scripts.
6862 (Sized_incremental_binary::check_input_args): New function.
6863 (Sized_incremental_binary::do_check_inputs): Build map of argument
6864 serial numbers to input arguments.
6865 (Sized_incremental_binary::do_file_has_changed): Rename
6866 do_file_is_unchanged to this; compare file modification times.
6867 (Sized_incremental_binary::do_init_layout): New function.
6868 (Sized_incremental_binary::do_reserve_layout): New function.
6869 (Sized_incremental_binary::do_get_input_reader): Remove.
6870 (Sized_incremental_binary::get_symtab_view): New function.
6871 (Incremental_checker::can_incrementally_link_output_file): Remove.
6872 (Incremental_inputs::report_command_line): Exclude --debug options.
6873 (Incremental_inputs::report_archive_begin): Add parameter; track
6874 argument serial numbers; don't put input file entry for archive
6875 before archive members.
6876 (Incremental_inputs::report_archive_end): Put input file entry
6877 for archive after archive members.
6878 (Incremental_inputs::report_object): Add parameter; track argument
6879 serial numbers and in_system_directory flag.
6880 (Incremental_inputs::report_script): Add parameter; track argument
6881 serial numbers.
6882 (Output_section_incremental_inputs::set_final_data_size): Adjust
6883 size of symbol info entry; check for forwarding symbols.
6884 (Output_section_incremental_inputs::write_input_files): Write
6885 in_system_directory flag and argument serial number.
6886 (Output_section_incremental_inputs::write_info_blocks): Map section
6887 indices between incremental info and original input file; store
6888 input section index for each symbol.
6889 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
6890 change operator() to visit().
6891 (class Global_got_offset_visitor): Likewise.
6892 (class Global_symbol_visitor_got_plt):
6893 (Output_section_incremental_inputs::write_got_plt): Use new visitor
6894 classes.
6895 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
6896 (Sized_incr_relobj::do_read_symbols): New function.
6897 (Sized_incr_relobj::do_layout): New function.
6898 (Sized_incr_relobj::do_layout_deferred_sections): New function.
6899 (Sized_incr_relobj::do_add_symbols): New function.
6900 (Sized_incr_relobj::do_should_include_member): New function.
6901 (Sized_incr_relobj::do_for_all_global_symbols): New function.
6902 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
6903 (Sized_incr_relobj::do_section_size): New function.
6904 (Sized_incr_relobj::do_section_name): New function.
6905 (Sized_incr_relobj::do_section_contents): New function.
6906 (Sized_incr_relobj::do_section_flags): New function.
6907 (Sized_incr_relobj::do_section_entsize): New function.
6908 (Sized_incr_relobj::do_section_address): New function.
6909 (Sized_incr_relobj::do_section_type): New function.
6910 (Sized_incr_relobj::do_section_link): New function.
6911 (Sized_incr_relobj::do_section_info): New function.
6912 (Sized_incr_relobj::do_section_addralign): New function.
6913 (Sized_incr_relobj::do_initialize_xindex): New function.
6914 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
6915 (Sized_incr_relobj::do_read_relocs): New function.
6916 (Sized_incr_relobj::do_gc_process_relocs): New function.
6917 (Sized_incr_relobj::do_scan_relocs): New function.
6918 (Sized_incr_relobj::do_count_local_symbols): New function.
6919 (Sized_incr_relobj::do_finalize_local_symbols): New function.
6920 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
6921 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
6922 (Sized_incr_relobj::do_relocate): New function.
6923 (Sized_incr_relobj::do_set_section_offset): New function.
6924 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
6925 (Sized_incr_dynobj::do_read_symbols): New function.
6926 (Sized_incr_dynobj::do_layout): New function.
6927 (Sized_incr_dynobj::do_add_symbols): New function.
6928 (Sized_incr_dynobj::do_should_include_member): New function.
6929 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
6930 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
6931 (Sized_incr_dynobj::do_section_size): New function.
6932 (Sized_incr_dynobj::do_section_name): New function.
6933 (Sized_incr_dynobj::do_section_contents): New function.
6934 (Sized_incr_dynobj::do_section_flags): New function.
6935 (Sized_incr_dynobj::do_section_entsize): New function.
6936 (Sized_incr_dynobj::do_section_address): New function.
6937 (Sized_incr_dynobj::do_section_type): New function.
6938 (Sized_incr_dynobj::do_section_link): New function.
6939 (Sized_incr_dynobj::do_section_info): New function.
6940 (Sized_incr_dynobj::do_section_addralign): New function.
6941 (Sized_incr_dynobj::do_initialize_xindex): New function.
6942 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
6943 (make_sized_incremental_object): New function.
6944 (Incremental_library::copy_unused_symbols): New function.
6945 (Incremental_library::do_for_all_unused_symbols): New function.
6946 * incremental.h (enum Incremental_input_flags): New type.
6947 (class Incremental_checker): Remove.
6948 (Incremental_input_entry::Incremental_input_entry): Add argument
6949 serial number.
6950 (Incremental_input_entry::arg_serial): New function.
6951 (Incremental_input_entry::set_is_in_system_directory): New function.
6952 (Incremental_input_entry::is_in_system_directory): New function.
6953 (Incremental_input_entry::arg_serial_): New data member.
6954 (Incremental_input_entry::is_in_system_directory_): New data member.
6955 (class Script_info): Move here from script.h.
6956 (Script_info::Script_info): Add filename parameter.
6957 (Script_info::filename): New function.
6958 (Script_info::filename_): New data member.
6959 (Incremental_script_entry::Incremental_script_entry): Add argument
6960 serial number.
6961 (Incremental_object_entry::Incremental_object_entry): Likewise.
6962 (Incremental_object_entry::add_input_section): Build list of input
6963 sections with map to original shndx.
6964 (Incremental_object_entry::get_input_section_index): New function.
6965 (Incremental_object_entry::shndx_): New data member.
6966 (Incremental_object_entry::name_key_): Rename; adjust all refs.
6967 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
6968 (Incremental_archive_entry::Incremental_archive_entry): Add argument
6969 serial number.
6970 (Incremental_inputs::report_archive_begin): Likewise.
6971 (Incremental_inputs::report_object): Likewise.
6972 (Incremental_inputs::report_script): Likewise.
6973 (class Incremental_global_symbol_reader): New class.
6974 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
6975 and store flags and input file type.
6976 (Incremental_input_entry_reader::arg_serial): New function.
6977 (Incremental_input_entry_reader::type): Extract type from flags.
6978 (Incremental_input_entry_reader::is_in_system_directory): New function.
6979 (Incremental_input_entry_reader::get_input_section_count): Call
6980 accessor function for type.
6981 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
6982 function for type; adjust size of global symbol entry.
6983 (Incremental_input_entry_reader::get_global_symbol_count): Call
6984 accessor function for type.
6985 (Incremental_input_entry_reader::get_object_count): Likewise.
6986 (Incremental_input_entry_reader::get_object_offset): Likewise.
6987 (Incremental_input_entry_reader::get_member_count): Likewise.
6988 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
6989 (Incremental_input_entry_reader::get_member_offset): Likewise.
6990 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
6991 (Incremental_input_entry_reader::Global_symbol_info): Remove.
6992 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
6993 (Incremental_input_entry_reader::get_global_symbol_reader): New
6994 function.
6995 (Incremental_input_entry_reader::get_output_symbol_index): New
6996 function.
6997 (Incremental_input_entry_reader::type_): Remove.
6998 (Incremental_input_entry_reader::flags_): New data member.
6999 (Incremental_inputs_reader::input_file_offset): New function.
7000 (Incremental_inputs_reader::input_file_index): New function.
7001 (Incremental_inputs_reader::input_file): Call input_file_offset.
7002 (Incremental_inputs_reader::input_file_at_offset): New function.
7003 (Incremental_relocs_reader::get_r_type): Reformat.
7004 (Incremental_relocs_reader::get_r_shndx): Reformat.
7005 (Incremental_relocs_reader::get_r_offset): Reformat.
7006 (Incremental_relocs_reader::data): New function.
7007 (Incremental_binary::Incremental_binary): Initialize new data members.
7008 (Incremental_binary::check_inputs): Add cmdline parameter.
7009 (Incremental_binary::file_is_unchanged): Remove.
7010 (Input_reader::arg_serial): New function.
7011 (Input_reader::get_unused_symbol_count): New function.
7012 (Input_reader::get_unused_symbol): New function.
7013 (Input_reader::do_arg_serial): New function.
7014 (Input_reader::do_get_unused_symbol_count): New function.
7015 (Input_reader::do_get_unused_symbol): New function.
7016 (Incremental_binary::input_file_count): New function.
7017 (Incremental_binary::get_input_reader): Change signature to use
7018 index instead of filename.
7019 (Incremental_binary::file_has_changed): New function.
7020 (Incremental_binary::get_input_argument): New function.
7021 (Incremental_binary::get_library): New function.
7022 (Incremental_binary::get_script_info): New function.
7023 (Incremental_binary::init_layout): New function.
7024 (Incremental_binary::reserve_layout): New function.
7025 (Incremental_binary::output_file): New function.
7026 (Incremental_binary::do_check_inputs): New function.
7027 (Incremental_binary::do_file_is_unchanged): Remove.
7028 (Incremental_binary::do_file_has_changed): New function.
7029 (Incremental_binary::do_init_layout): New function.
7030 (Incremental_binary::do_reserve_layout): New function.
7031 (Incremental_binary::do_input_file_count): New function.
7032 (Incremental_binary::do_get_input_reader): Change signature.
7033 (Incremental_binary::input_args_map_): New data member.
7034 (Incremental_binary::library_map_): New data member.
7035 (Incremental_binary::script_map_): New data member.
7036 (Sized_incremental_binary::Sized_incremental_binary): Initialize
7037 new data members.
7038 (Sized_incremental_binary::output_section): New function.
7039 (Sized_incremental_binary::inputs_reader): Add const.
7040 (Sized_incremental_binary::symtab_reader): Add const.
7041 (Sized_incremental_binary::relocs_reader): Add const.
7042 (Sized_incremental_binary::got_plt_reader): Add const.
7043 (Sized_incremental_binary::get_symtab_view): New function.
7044 (Sized_incremental_binary::Inputs_reader): New typedef.
7045 (Sized_incremental_binary::Input_entry_reader): New typedef.
7046 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
7047 (Sized_incremental_binary::do_file_is_unchanged): Remove.
7048 (Sized_incremental_binary::do_file_has_changed): New function.
7049 (Sized_incremental_binary::do_init_layout): New function.
7050 (Sized_incremental_binary::do_reserve_layout): New function.
7051 (Sized_input_reader::Inputs_reader): Remove.
7052 (Sized_input_reader::Input_entry_reader): Remove.
7053 (Sized_input_reader::do_arg_serial): New function.
7054 (Sized_input_reader::do_get_unused_symbol_count): New function.
7055 (Sized_input_reader::do_get_unused_symbol): New function.
7056 (Sized_incremental_binary::do_input_file_count): New function.
7057 (Sized_incremental_binary::do_get_input_reader): Change signature;
7058 use index instead of filename.
7059 (Sized_incremental_binary::section_map_): New data member.
7060 (Sized_incremental_binary::input_entry_readers_): New data member.
7061 (class Sized_incr_relobj): New class.
7062 (class Sized_incr_dynobj): New class.
7063 (make_sized_incremental_object): New function.
7064 (class Incremental_library): New class.
7065 * layout.cc (Free_list::num_lists): New static data member.
7066 (Free_list::num_nodes): New static data member.
7067 (Free_list::num_removes): New static data member.
7068 (Free_list::num_remove_visits): New static data member.
7069 (Free_list::num_allocates): New static data member.
7070 (Free_list::num_allocate_visits): New static data member.
7071 (Free_list::init): New function.
7072 (Free_list::remove): New function.
7073 (Free_list::allocate): New function.
7074 (Free_list::dump): New function.
7075 (Free_list::print_stats): New function.
7076 (Layout_task_runner::run): Resize output file for incremental updates.
7077 (Layout::Layout): Initialize new data members.
7078 (Layout::set_incremental_base): New function.
7079 (Layout::init_fixed_output_section): New function.
7080 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
7081 incremental updates.
7082 (Layout::create_gold_note): Do not create gold note section for
7083 incremental updates.
7084 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
7085 for incremental updates.
7086 (Layout::set_section_offsets): For incremental updates, allocate space
7087 from free list.
7088 (Layout::create_symtab_sections): Layout with offsets relative to
7089 start of section; for incremental updates, allocate space from free
7090 list.
7091 (Layout::create_shdrs): For incremental updates, allocate space from
7092 free list.
7093 (Layout::finish_dynamic_section): For incremental updates, do not
7094 check --as-needed (fixed in subsequent patch).
7095 * layout.h (class Free_list): New class.
7096 (Layout::set_incremental_base): New function.
7097 (Layout::incremental_base): New function.
7098 (Layout::init_fixed_output_section): New function.
7099 (Layout::allocate): New function.
7100 (Layout::incremental_base_): New data member.
7101 (Layout::free_list_): New data member.
7102 * main.cc (main): Print Free_list statistics.
7103 * object.cc (Relobj::finalize_incremental_relocs): Add
7104 clear_counts parameter; clear counts only when clear_counts is set.
7105 (Sized_relobj::Sized_relobj): Initialize new base class.
7106 (Sized_relobj::do_layout): Don't report special sections.
7107 (Sized_relobj::do_for_all_local_got_entries): New function.
7108 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
7109 symtab_off to all symbol table offsets.
7110 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
7111 * object.h (class Got_offset_list): Move to top of file.
7112 (Object::Object): Allow case where input_file == NULL.
7113 (Object::~Object): Likewise.
7114 (Object::input_file): Assert that input_file != NULL.
7115 (Object::lock): Allow case where input_file == NULL.
7116 (Object::unlock): Likewise.
7117 (Object::is_locked): Likewise.
7118 (Object::token): Likewise.
7119 (Object::release): Likewise.
7120 (Object::is_incremental): New function.
7121 (Object::get_mtime): New function.
7122 (Object::for_all_local_got_entries): New function.
7123 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
7124 (Object::set_is_in_system_directory): New function.
7125 (Object::is_in_system_directory): New function.
7126 (Object::do_is_incremental): New function.
7127 (Object::do_get_mtime): New function.
7128 (Object::do_for_all_local_got_entries): New function.
7129 (Object::is_in_system_directory_): New data member.
7130 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
7131 (class Sized_relobj_base): New class.
7132 (class Sized_relobj): Derive from Sized_relobj_base.
7133 (class Sized_relobj::Symbols): Redeclare from base class.
7134 (class Sized_relobj::local_got_offset_list): Remove.
7135 (class Sized_relobj::Output_sections): Redeclare from base class.
7136 (class Sized_relobj::do_for_all_local_got_entries): New function.
7137 (class Sized_relobj::write_local_symbols): Add offset parameter.
7138 (class Sized_relobj::local_symbol_offset_): Update comment.
7139 (class Sized_relobj::local_dynsym_offset_): Update comment.
7140 * options.cc (Input_arguments::add_file): Remove const.
7141 * options.h (Input_file_argument::Input_file_argument):
7142 Initialize arg_serial_ (all constructors).
7143 (Input_file_argument::set_arg_serial): New function.
7144 (Input_file_argument::arg_serial): New function.
7145 (Input_file_argument::arg_serial_): New data member.
7146 (Input_arguments::Input_arguments): Initialize file_count_.
7147 (Input_arguments::add_file): Remove const.
7148 (Input_arguments::number_of_input_files): New function.
7149 (Input_arguments::file_count_): New data member.
7150 (Command_line::number_of_input_files): Call
7151 Input_arguments::number_of_input_files.
7152 * output.cc (Output_segment_headers::Output_segment_headers):
7153 Set current size.
7154 (Output_section::Input_section::current_data_size): New function.
7155 (Output_section::Output_section): Initialize new data members.
7156 (Output_section::add_input_section): Don't do merge sections for
7157 an incremental link; allocate space from free list for an
7158 incremental update.
7159 (Output_section::add_output_section_data): Allocate space from
7160 free list for an incremental update.
7161 (Output_section::update_data_size): New function.
7162 (Output_section::set_fixed_layout): New function.
7163 (Output_section::reserve): New function.
7164 (Output_segment::set_section_addresses): Remove const.
7165 (Output_segment::set_section_list_addresses): Remove const; allocate
7166 space from free list for an incremental update.
7167 (Output_segment::set_offset): Adjust size of RELRO segment for an
7168 incremental update.
7169 * output.h (Output_data::current_data_size): Move here from
7170 child classes.
7171 (Output_data::pre_finalize_data_size): New function.
7172 (Output_data::update_data_size): New function.
7173 (Output_section_headers::update_data_size): new function.
7174 (Output_section_data_build::current_data_size): Move to Output_data.
7175 (Output_data_strtab::update_data_size): New function.
7176 (Output_section::current_data_size): Move to Output_data.
7177 (Output_section::set_fixed_layout): New function.
7178 (Output_section::has_fixed_layout): New function.
7179 (Output_section::reserve): New function.
7180 (Output_section::update_data_size): New function.
7181 (Output_section::has_fixed_layout_): New data member.
7182 (Output_section::free_list_): New data member.
7183 (Output_segment::set_section_addresses): Remove const.
7184 (Output_segment::set_section_list_addresses): Remove const.
7185 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
7186 New function.
7187 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
7188 New function.
7189 * readsyms.cc (Read_symbols::do_read_symbols): Add library
7190 parameter when calling Add_symbols constructor; store argument
7191 serial number for members of a lib group.
7192 (Add_symbols::locks): Allow case where token == NULL.
7193 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
7194 (Read_member::~Read_member): New function.
7195 (Read_member::is_runnable): New function.
7196 (Read_member::locks): New function.
7197 (Read_member::run): New function.
7198 (Check_script::~Check_script): New function.
7199 (Check_script::is_runnable): New function.
7200 (Check_script::locks): New function.
7201 (Check_script::run): New function.
7202 (Check_library::~Check_library): New function.
7203 (Check_library::is_runnable): New function.
7204 (Check_library::locks): New function.
7205 (Check_library::run): New function.
7206 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
7207 (Add_symbols::library_): New data member.
7208 (class Read_member): New class.
7209 (class Check_script): New class.
7210 (class Check_library): New class.
7211 * reloc.cc (Read_relocs::is_runnable): Allow case where
7212 token == NULL.
7213 (Read_relocs::locks): Likewise.
7214 (Scan_relocs::locks): Likewise.
7215 (Relocate_task::locks): Likewise.
7216 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
7217 to clear counters.
7218 (Sized_relobj::incremental_relocs_scan): Fix comment.
7219 (Sized_relobj::do_relocate): Pass output file offset to
7220 write_local_symbols.
7221 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
7222 from class declaration.
7223 * script.cc (read_input_script): Allocate Script_info; pass
7224 argument serial number to report_script.
7225 * script.h (class Script_info): Move to incremental.h.
7226 * symtab.cc (Symbol_table::add_from_incrobj): New function.
7227 * symtab.h (Symbol_table::add_from_incrobj): New function.
7228 (Symbol_table::set_file_offset): New function.
7229
b961d0d7
CC
72302011-04-05 Cary Coutant <ccoutant@google.com>
7231
7232 * incremental-dump.cc (dump_incremental_inputs): Change signature
7233 to take a Sized_incremental_binary; change caller. Use readers
7234 in Sized_incremental_binary.
7235 * incremental.cc
7236 (Sized_incremental_binary::find_incremental_inputs_sections):
7237 Rename do_find_incremental_inputs_sections to this.
7238 (Sized_incremental_binary::setup_readers): New function.
7239 (Sized_incremental_binary::do_check_inputs): Check
7240 has_incremental_info_ flag; move setup code to setup_readers;
7241 use input readers.
7242 (Sized_incremental_binary::do_file_is_unchanged): New function.
7243 (Sized_incremental_binary::do_get_input_reader): New function.
7244 * incremental.h (class Incremental_binary): Move to end of file.
7245 (Incremental_binary::file_is_unchanged): New function.
7246 (Incremental_binary::do_file_is_unchanged): New function.
7247 (Incremental_binary::Input_reader): New class.
7248 (Incremental_binary::get_input_reader): New function.
7249 (class Sized_incremental_binary): Move to end of file.
7250 (Sized_incremental_binary::Sized_incremental_binary): Setup the
7251 input section reader classes.
7252 (Sized_incremental_binary::has_incremental_info): New function.
7253 (Sized_incremental_binary::inputs_reader): New function.
7254 (Sized_incremental_binary::symtab_reader): New function.
7255 (Sized_incremental_binary::relocs_reader): New function.
7256 (Sized_incremental_binary::got_plt_reader): New function.
7257 (Sized_incremental_binary::do_file_is_unchanged): New function.
7258 (Sized_incremental_binary::Sized_input_reader): New class.
7259 (Sized_incremental_binary::get_input_reader): New function.
7260 (Sized_incremental_binary::find_incremental_inputs_sections):
7261 Rename do_find_incremental_inputs_sections to this.
7262 (Sized_incremental_binary::setup_readers): New function.
7263 (Sized_incremental_binary::has_incremental_info_): New data member.
7264 (Sized_incremental_binary::inputs_reader_): New data member.
7265 (Sized_incremental_binary::symtab_reader_): New data member.
7266 (Sized_incremental_binary::relocs_reader_): New data member.
7267 (Sized_incremental_binary::got_plt_reader_): New data member.
7268 (Sized_incremental_binary::current_input_file_): New data member.
7269
a869183f
PP
72702011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
7271
7272 PR gold/12640
7273 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
7274 violation.
7275
72762011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
7277
7278 * archive.cc (Archive::include_member): Adjust call to report_object.
7279 (Add_archive_symbols::run): Add script_info to call to
7280 report_archive_begin.
7281 (Lib_group::include_member): Adjust call to report_object.
7282 (Add_lib_group_symbols::run): Adjust call to report_object.
7283 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
7284 blocks. Add object count for script input files.
7285 * incremental.cc (Incremental_inputs::report_archive_begin): Add
7286 script_info parameter; change all callers.
7287 (Incremental_inputs::report_object): Add script_info parameter;
7288 change all callers.
7289 (Incremental_inputs::report_script): Store backpointer to
7290 incremental info entry.
7291 (Output_section_incremental_inputs::set_final_data_size): Record
7292 additional information for scripts.
7293 (Output_section_incremental_inputs::write_info_blocks): Likewise.
7294 * incremental.h (Incremental_script_entry::add_object): New function.
7295 (Incremental_script_entry::get_object_count): New function.
7296 (Incremental_script_entry::get_object): New function.
7297 (Incremental_script_entry::objects_): New data member; adjust
7298 constructor.
7299 (Incremental_inputs::report_archive_begin): Add script_info parameter.
7300 (Incremental_inputs::report_object): Add script_info parameter.
7301 (Incremental_inputs_reader::get_object_count): New function.
7302 (Incremental_inputs_reader::get_object_offset): New function.
7303 * options.cc (Input_arguments::add_file): Return reference to
7304 new input argument.
7305 * options.h (Input_argument::set_script_info): New function.
7306 (Input_argument::script_info): New function.
7307 (Input_argument::script_info_): New data member; adjust all
7308 constructors.
7309 (Input_file_group::add_file): Return reference to new input argument.
7310 (Input_file_lib::add_file): Likewise.
7311 (Input_arguments::add_file): Likewise.
7312 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
7313 * script.cc (Parser_closure::Parser_closure): Add script_info
7314 parameter; adjust all callers.
7315 (Parser_closure::script_info): New function.
7316 (Parser_closure::script_info_): New data member.
7317 (read_input_script): Report scripts earlier to incremental info.
7318 (script_add_file): Set script_info in Input_argument.
7319 (script_add_library): Likewise.
7320 * script.h (Script_options::Script_info): Rewrite class.
7321
a869183f 73222011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
7323
7324 * archive.cc (Library_base::should_include_member): Move
7325 method here from class Archive.
7326 (Archive::Archive): Initialize base class.
7327 (Archive::should_include_member): Move to base class.
7328 (Archive::do_for_all_unused_symbols): New function.
7329 (Add_archive_symbols::run): Remove redundant access to
7330 incremental_inputs.
7331 (Lib_group::Lib_group): Initialize base class.
7332 (Lib_group::do_filename): New function.
7333 (Lib_group::include_member): Pass pointer to Lib_group to
7334 report_object.
7335 (Lib_group::do_for_all_unused_symbols): New function.
7336 (Add_lib_group_symbols::run): Report archive information for
7337 incremental links.
7338 * archive.h (class Library_base): New base class.
7339 (class Archive): Derive from Library_base.
7340 (Archive::filename): Move to base class.
7341 (Archive::set_incremental_info): Likewise.
7342 (Archive::incremental_info): Likewise.
7343 (Archive::Should_include): Likewise.
7344 (Archive::should_include_member): Likewise.
7345 (Archive::Armap_entry): Remove.
7346 (Archive::Unused_symbol_iterator): Remove.
7347 (Archive::unused_symbols_begin): Remove.
7348 (Archive::unused_symbols_end): Remove.
7349 (Archive::do_filename): New function.
7350 (Archive::do_get_mtime): New function.
7351 (Archive::do_for_all_unused_symbols): New function.
7352 (Archive::task_): Move to base class.
7353 (Archive::incremental_info_): Likewise.
7354 (class Lib_group): Derive from Library_base.
7355 (Lib_group::do_filename): New function.
7356 (Lib_group::do_get_mtime): New function.
7357 (Lib_group::do_for_all_unused_symbols): New function.
7358 (Lib_group::task_): Move to base class.
7359 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
7360 function.
7361 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
7362 function.
7363 * incremental.cc (Incremental_inputs::report_archive_begin):
7364 Use Library_base; call library's get_mtime; add incremental inputs
7365 entry before members.
7366 (class Unused_symbol_visitor): New class.
7367 (Incremental_inputs::report_archive_end): Use Library_base; use
7368 visitor class to record unused symbols; don't add incremental inputs
7369 entry after members.
7370 (Incremental_inputs::report_object): Use Library_base.
7371 * incremental.h
7372 (Incremental_archive_entry::Incremental_archive_entry): Remove
7373 unused Archive parameter.
7374 (Incremental_inputs::report_archive_begin): Use Library_base.
7375 (Incremental_inputs::report_archive_end): Likewise.
7376 (Incremental_inputs::report_object): Likewise.
7377 * object.cc (Sized_relobj::do_for_all_global_symbols): New
7378 function.
7379 * object.h (Object::for_all_global_symbols): New function.
7380 (Object::do_for_all_global_symbols): New function.
7381 (Sized_relobj::do_for_all_global_symbols): New function.
7382 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
7383 function.
7384 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
7385 function.
7386
61ab3e40
ILT
73872011-03-27 Ian Lance Taylor <iant@google.com>
7388
7389 * archive.cc (Archive::interpret_header): Return -1 if something
7390 goes wrong. Change callers accordingly.
7391
30e1f9e6
CC
73922011-03-25 Cary Coutant <ccoutant@google.com>
7393
7394 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
7395 * testsuite/Makefile.in: Regenerate.
7396
9370ce59 73972011-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
9c793f14
RÁE
7398
7399 * plugin.cc (get_view): New.
7400 (Plugin::load): Pass get_view to the plugin.
7401 (Plugin_manager::get_view): New.
7402
9312bb0a
ILT
74032011-03-21 Ian Lance Taylor <iant@google.com>
7404
7405 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 7406 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 7407
7e12ba9e
ST
74082011-03-21 Sriraman Tallam <tmsriram@google.com>
7409
7410 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
7411 Change == to -eq.
7412 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
7413 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
7414 Change == to -eq.
7415 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
7416 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
7417
fd7a005d
ILT
74182011-03-14 Ian Lance Taylor <iant@google.com>
7419
7420 * script-sections.cc (Sort_output_sections::script_compare):
7421 Rename from is_before, change return type.
7422 (Sort_output_sections::operator()): Adjust accordingly.
7423
ed16fd1b
ILT
74242011-03-11 Jeffrey Yasskin <jyasskin@google.com>
7425
7426 PR gold/12572
7427 * testsuite/odr_violation2.cc: Add comment to make all error line
7428 numbers double digits.
7429 * testsuite/debug_msg.sh: Adjust expected errors.
7430
71ff8986
ILT
74312011-03-09 Jeffrey Yasskin <jyasskin@google.com>
7432
7433 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
7434 but mark earlier ones as non-canonical
7435 (offset_to_iterator): Update search target and example
7436 (do_addr2line): Return extra lines in a vector*
7437 (format_file_lineno): Extract from do_addr2line
7438 (one_addr2line): Add vector* out-param
7439 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
7440 when a lineno entry appeared last for its instruction
7441 (Dwarf_line_info): Add vector* out-param
7442 * object.cc (Relocate_info): Pass NULL for the vector* out-param
7443 * symtab.cc (Odr_violation_compare): Include the lineno in the
7444 comparison again.
7445 (linenos_from_loc): New. Combine the canonical line for an
7446 address with its other lines.
7447 (True_if_intersect): New. Helper functor to make
7448 std::set_intersection a query.
7449 (detect_odr_violations): Compare sets of lines instead of just
7450 one line for each function. This became less deterministic, but
7451 has fewer false positives.
7452 * symtab.h: Declarations.
7453 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
7454 mix an optimized and non-optimized object in the same binary
7455 (odr_violation2.so): Same.
7456 * testsuite/Makefile.in: Regenerate from Makefile.am.
7457 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
7458 * testsuite/debug_msg.sh: Update line numbers and add
7459 assertions.
7460 * testsuite/odr_violation1.cc: Use OdrDerived, in a
7461 non-optimized context.
7462 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
7463 isn't inlined, and use OdrDerived in an optimized context.
7464 * testsuite/odr_header1.h: Defines OdrDerived, where
7465 optimization will change the
7466 first-instruction-in-the-destructor's file and line number.
7467 * testsuite/odr_header2.h: Defines OdrBase.
7468
a19fefdc
ILT
74692011-03-09 Ian Lance Taylor <iant@google.com>
7470
7471 * fileread.cc (File_read::clear_views): Don't delete the whole
7472 file view.
7473
ecb351e9
ILT
74742011-03-08 Ian Lance Taylor <iant@google.com>
7475
7476 PR gold/12525
7477 * fileread.cc: #include <climits>.
7478 (GOLD_IOV_MAX): Define.
7479 (File_read::read_multiple): Limit number of entries by iov_max.
7480 * fileread.h (class File_read): Always set max_readv_entries to
7481 128.
7482
b821d13c
ILT
74832011-03-07 Ian Lance Taylor <iant@google.com>
7484
7485 PR gold/12525
7486 * options.h (class General_options): Add -dy and -dn.
7487
89243142
CC
74882011-03-02 Cary Coutant <ccoutant@google.com>
7489
7490 * testsuite/script_test_9.t: Add TLS segment.
7491
d0773f31
ILT
74922011-03-02 Simon Baldwin <simonb@google.com>
7493
7494 * configure.ac: Add check for gnu_indirect_function support in
7495 the toolchain building binutils.
7496 * configure: Rebuild.
7497
9370ce59 74982011-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
badc8139
RÁE
7499
7500 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
7501 plugin only symbols.
7502 (Symbol_table::sized_finalize_symbol) Mark symbol only present
7503 in plugin files as not needed in the symbol table.
7504
4cf7a849
ST
75052011-02-11 Sriraman Tallam <tmsriram@google.com>
7506
7507 * output.cc (Output_section::add_input_section): Delay fill
7508 generation for section ordering.
7509
b578bd7d
ILT
75102011-02-09 Ian Lance Taylor <iant@google.com>
7511
7512 PR gold/12316
7513 * object.h (class Sized_relobj): Remove clear_local_symbols.
7514 * reloc.cc (Sized_relobj::do_relocate): Don't call
7515 clear_local_symbols.
7516
9370ce59 75172011-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
84ced98a
RÁE
7518
7519 * plugin.cc (is_visible_from_outside): Return true for symbols
7520 in the -u option.
7521
55382fb7
ILT
75222011-02-04 Jeffrey Yasskin <jyasskin@google.com>
7523
7524 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
7525 filename.
7526
4e271fff
ST
75272011-02-02 Sriraman Tallam <tmsriram@google.com>
7528
7529 * icf.h (is_section_foldable_candidate): Change type of parameter
2e702c99 7530 to std::string.
4e271fff 7531 * icf.cc (Icf::find_identical_sections): Change type of local variable
2e702c99 7532 section_name to be std::string.
4e271fff
ST
7533 (is_function_ctor_or_dtor): Change type of parameter to std::string.
7534
d433c3ac
ILT
75352011-01-25 Ian Lance Taylor <iant@google.com>
7536
7537 * script.cc (script_add_extern): Rewrite to use
7538 add_symbol_reference.
7539
880473a6
DK
75402011-01-25 Doug Kwan <dougkwan@google.com>
7541
d433c3ac 7542 * icf.cc (get_section_contents): Always lock section's object.
880473a6 7543
f30f86fa
ILT
75442011-01-24 Ian Lance Taylor <iant@google.com>
7545
7546 * options.h (class General_options): Accept
7547 --no-detect-odr-violations.
7548
8e51a0b9
ILT
75492011-01-24 Ian Lance Taylor <iant@google.com>
7550
7551 * version.cc (version_string): Bump to 1.11.
7552
0f3b89d8
ILT
75532011-01-24 Ian Lance Taylor <iant@google.com>
7554
7555 * plugin.cc (class Plugin_rescan): Define new class.
7556 (Plugin_manager::claim_file): Set any_claimed_.
7557 (Plugin_manager::save_archive): New function.
7558 (Plugin_manager::save_input_group): New function.
7559 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
7560 necessary.
7561 (Plugin_manager::new_undefined_symbol): New function.
7562 (Plugin_manager::rescan): New function.
7563 (Plugin_manager::rescannable_defines): New function.
7564 (Plugin_manager::add_input_file): Set any_added_.
7565 * plugin.h (class Plugin_manager): define new fields rescannable_,
7566 undefined_symbols_, any_claimed_, and any_added_. Declare
7567 Plugin_rescan as friend. Declare new functions.
7568 (Plugin_manager::Rescannable): Define type.
7569 (Plugin_manager::Rescannable_list): Define type.
7570 (Plugin_manager::Undefined_symbol_list): Define type.
7571 (Plugin_manager::Plugin_manager): Initialize new fields.
7572 * archive.cc (Archive::defines_symbol): New function.
7573 (Add_archive_symbols::run): Pass archive to plugins if any.
7574 * archive.h (class Archive): Declare defines_symbol.
7575 * readsyms.cc (Input_group::~Input_group): New function.
7576 (Finish_group::run): Pass input_group to plugins if any.
7577 * readsyms.h (class Input_group): Declare destructor.
7578 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
7579 any.
7580
3bb951e5
ILT
75812011-01-10 Ian Lance Taylor <iant@google.com>
7582
7583 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
7584 section as relro.
7585 (Layout::set_segment_offsets): Reset increase_relro before calling
7586 set_section_addresses a second time.
7587
0aa45fac
CC
75882011-01-04 Cary Coutant <ccoutant@google.com>
7589
7590 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
7591 sections before NOBITS sections.
7592
0db46eb4
L
75932011-01-01 H.J. Lu <hongjiu.lu@intel.com>
7594
7595 * version.cc (print_version): Update copyright to 2011.
7596
829c9745
CC
75972010-12-23 Cary Coutant <ccoutant@google.com>
7598
7599 * output.h (Output_data_reloc::add_output_section): Pass OD instead
7600 of OS to this->add. Add OD parameter to second form of the function.
7601
7500420b
ILT
76022010-12-20 Ian Lance Taylor <iant@google.com>
7603
7604 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
7605 second of two consecutive entries with same offset.
7606
f8e9a930
RW
76072010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7608
7609 * testsuite/Makefile.am (ifuncmain2static_LDADD)
7610 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
7611 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
7612 to avoid unneeded links against $(LDADD).
7613 * testsuite/Makefile.in: Regenerate.
7614
2fbb4320
ILT
76152010-12-15 Ian Lance Taylor <iant@google.com>
7616
7617 PR gold/12324
7618 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
7619 for R_X86_64_32 and R_X86_64_PC32.
7620 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
7621 ver_matching_def_pic.o.
7622 (ver_matching_def_pic.o): New target.
7623
fedb228d
RW
76242010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7625
7626 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
7627 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
7628 Move definition before File_read::View member definitions.
7629 (File_read::View::~View): Initialize and hold lock before
7630 updating current_mapped_bytes.
7631
9b547ce6
RW
76322010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7633
7634 * dwarf_reader.cc: Remove outdated comment.
7635 * gold-threads.cc: Fix typo in error message.
7636 * archive.cc: Fix typos in comments.
7637 * archive.h: Likewise.
7638 * arm-reloc-property.cc: Likewise.
7639 * arm-reloc-property.h: Likewise.
7640 * arm-reloc.def: Likewise.
7641 * arm.cc: Likewise.
7642 * attributes.h: Likewise.
7643 * cref.cc: Likewise.
7644 * ehframe.cc: Likewise.
7645 * fileread.h: Likewise.
7646 * gold.h: Likewise.
7647 * i386.cc: Likewise.
7648 * icf.cc: Likewise.
7649 * incremental.h: Likewise.
7650 * int_encoding.cc: Likewise.
7651 * layout.h: Likewise.
7652 * main.cc: Likewise.
7653 * merge.h: Likewise.
7654 * object.cc: Likewise.
7655 * object.h: Likewise.
7656 * options.cc: Likewise.
7657 * readsyms.cc: Likewise.
7658 * reduced_debug_output.cc: Likewise.
7659 * reloc.cc: Likewise.
7660 * script-sections.cc: Likewise.
7661 * sparc.cc: Likewise.
7662 * symtab.h: Likewise.
7663 * target-reloc.h: Likewise.
7664 * target.cc: Likewise.
7665 * target.h: Likewise.
7666 * timer.cc: Likewise.
7667 * timer.h: Likewise.
7668 * x86_64.cc: Likewise.
7669
83e17bd5
CC
76702010-12-09 Cary Coutant <ccoutant@google.com>
7671
7672 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
7673 stack.
7674 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
7675 parameter; change all callers.
7676 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
7677 * options.h (warn_execstack): New option.
7678
017257f8
DK
76792010-12-07 Doug Kwan <dougkwan@google.com>
7680
7681 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
7682 like function call relocations.
7683
c20cbc06
ILT
76842010-12-07 Ian Lance Taylor <iant@google.com>
7685
7686 * archive.cc (Archive::get_elf_object_for_member): Permit
7687 punconfigured to be NULL.
7688 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
7689 (Archive::include_member): Pass NULL to get_elf_object_for_member
7690 if we searched for the archive and this is the first included
7691 object.
7692
4dbfafcc
ILT
76932010-12-01 Ian Lance Taylor <iant@google.com>
7694
7695 * dwarf_reader.h (class Sized_dwarf_line_info): Add
7696 track_relocs_type_ field.
7697 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
7698 Set track_relocs_type_.
7699 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
7700 contents when using RELA relocs.
7701 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
7702 reloc_map_.
7703 * reloc.cc (Track_relocs::next_addend): New function.
7704 * reloc.h (class Track_relocs): Declare next_addend.
7705
e5e19edd
ILT
77062010-12-01 Ian Lance Taylor <iant@google.com>
7707
7708 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
7709 virtual destructor.
7710
9a5ce24c
ILT
77112010-12-01 Ian Lance Taylor <iant@google.com>
7712
7713 * README: Update compilers known to work and fail.
7714
c7791212
NC
77152010-11-23 Matthias Klose <doko@ubuntu.com>
7716
7717 * configure.in: For --enable-gold, handle value `default' instead of
7718 `both*'. Always install ld as ld.bfd, install as ld if gold is
7719 not the default.
7720 * configure: Regenerate.
7721
0ad220c9
DK
77222010-11-18 Doug Kwan <dougkwan@google.com>
7723
7724 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
7725 and right_alignment to be zero. Store result alignment only if it is
7726 greater than existing alignment.
7727
ab8056e0
CC
77282010-11-16 Cary Coutant <ccoutant@google.com>
7729
7730 PR gold/12220
7731 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
7732 Check for ".zdebug_line".
7733
fd064a5b
CC
77342010-11-16 Doug Kwan <dougkwan@google.com>
7735 Cary Coutant <ccoutant@google.com>
7736
7737 * output.h (Output_segment::set_section_addresses): Pass increase_relro
7738 by reference; adjust all callers.
7739 * output.cc (Output_segment::set_section_addresses): Adjust references
7740 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
7741 list is empty.
7742 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
7743 end at page boundary.
7744
6fc6ea19
CC
77452010-11-16 Cary Coutant <ccoutant@google.com>
7746
7747 PR gold/12220
7748 * layout.cc (Layout::choose_output_section): Transform names of
7749 compressed sections even when using a script with a SECTIONS clause.
7750 (Layout::output_section_name): Remove code to transform
7751 compressed debug section names.
7752 * output.cc (Output_section::add_input_section): Use uncompressed
7753 section size when tracking input sections.
7754
95a2c8d6
RS
77552010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
7756
7757 * symtab.h (Symbol::NON_PIC_REF): Remove.
7758 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
7759 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
7760 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
7761 (Symbol::use_plt_offset): Take a flags argument and pass it
7762 directly to needs_dynamic_reloc. Restrict check for undefined
7763 weak symbols to function calls.
7764 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
7765 (Target_arm::Scan::global): Use it.
7766 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
7767 (Target_arm::Relocate::relocate): Likewise.
7768 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
7769 parameter with an r_type parameter. Use get_reference_flags
7770 to get the flags.
7771 (Target_arm::Relocate::relocate): Update accordingly.
7772 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
7773 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
7774 (Target_i386::Scan::global): Likewise.
7775 (Target_i386::Relocate::relocate): Likewise.
7776 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
7777 parameter with an r_type parameter. Use get_reference_flags
7778 to get the flags.
7779 (Target_i386::Relocate::relocate): Update accordingly.
7780 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
7781 (Target_powerpc::Scan::global): Use it.
7782 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
7783 (Target_powerpc::Relocate::relocate): Likewise.
7784 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
7785 (Target_sparc::Scan::global): Use it.
7786 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
7787 (Target_sparc::Relocate::relocate): Likewise.
7788 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
7789 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
7790 (Target_x86_64::Scan::global): Likewise.
7791 (Target_x86_64::Relocate::relocate): Likewise.
7792
f625ae50
DK
77932010-11-08 Doug Kwan <dougkwan@google.com>
7794 Cary Coutant <ccoutant@google.com>
7795
7796 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
7797 (Arm_exidx_merge_section::section_contents_): New data member.
7798 (Arm_input_section::Arm_input_section): Initialize original_contents_.
7799 (Arm_input_section::~Arm_input_section): De-allocate memory.
58797674 7800 (Arm_input_section::original_contents_): New data member.
f625ae50
DK
7801 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
7802 in parameters instead of calling Object::section_contents without
7803 locking.
7804 (Arm_output_section::group_section): New parameter TASK. Pass it
7805 to callees that need locking objects.
7806 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
7807 to lock EXIDX input sections. Fix a formatting issue. Call
7808 Arm_exidx_merged_section::build_contents to create merged section
7809 contents.
7810 (Arm_output_section::create_stub_group): New parameter TASK. Use it
7811 to lock object of stub table owner.
7812 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
7813 TEXT_SIZE to initialize data member TEXT_SIZE_.
7814 (Arm_exidx_input_section::addralign): Fix typo in comment.
7815 (Arm_exidx_input_section::text_size): New method.
7816 (Target_arm::do_relax): New parameter TASK. Pass it to callees
7817 that require locking objects. Lock objects before scanning for stubs
7818 and updating local symbols.
7819 (Arm_input_section<big_endian>::init): Copy contents of original
7820 input section.
2e702c99 7821 (Arm_input_section<big_endian>::do_write): Use saved contents of
f625ae50
DK
7822 original input section instead of calling Object::section_contents
7823 without locking.
7824 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
7825 size without calling Object::section_size().
7826 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
7827 for size. Allocate a buffer for merged EXIDX entries.
7828 (Arm_exidx_merged_section::build_contents): New method.
2e702c99 7829 (Arm_exidx_merged_section::do_write): Move merge section contents
f625ae50
DK
7830 building code to Arm_exidx_merged_section::build_contetns. Write
7831 out contetns in buffer instead of building it on the fly.
7832 (Arm_relobj::make_exidx_input_section): Also pass text section size
7833 to Arm_exidx_input_section constructor.
7834 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
7835 (Arm_dynobj::do_read_symbols): Fix memory leak.
7836 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
7837 * target.h: (class Task): Add forward declaration.
7838 (Target::relax): Add new parameter TASK and pass it to
7839 Target::do_relax().
7840 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
7841
5f9bcf58
CC
78422010-11-05 Cary Coutant <ccoutant@google.com>
7843
7844 PR gold/10708
7845 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
7846 object when reading from the file.
7847 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
7848 second layout pass.
7849 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
7850 when reading section contents.
7851 (get_section_contents): Likewise.
7852 (icf::find_identical_sections): Likewise.
7853 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
7854 object when reading from the file.
7855 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
7856 the object when doing deferred section layout.
7857
e597fa08
NC
78582010-11-03 Nick Clifton <nickc@redhat.com>
7859
7860 PR gold/12001
7861 * script.h (class Symbol_assignment: name): New member. Returns
7862 the name of the symbol.
7863 * scrfipt.cc (Script_options::is_pending_assignment): New member.
7864 Returns true if the given symbol name is on the list of
7865 assignments wating to be processed.
7866 * archive.cc (should_incldue_member): If the symbol is undefined,
7867 check to see if it is on the list of symbols pending assignment.
7868
3f9a3278
ILT
78692010-11-03 Ryan Mansfield <rmansfield@qnx.com>
7870
7871 * script-sections.cc (Script_sections::find_memory_region): Check
7872 for a NULL output section pointer.
7873
d06fb4d1
DK
78742010-10-29 Doug Kwan <dougkwan@google.com>
7875
7876 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
7877 Output_section::add_relaxed_input_section.
7878 * output.cc (Output_section::add_relaxed_input_section): Add new
7879 arguments LAYOUT and NAME. Set section order index.
7880 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
7881 Copy section order index.
7882 * output.h (Output_section::add_relaxed_input_section): Add new
7883 arguments LAYOUT and NAME.
7884
90e24de5
ILT
78852010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7886
7887 * testsuite/Makefile.am: Move gcctestdir/ld rule to
2e702c99 7888 NATIVE_OR_CROSS_LINKER.
90e24de5
ILT
7889 * testsuite/Makefile.in: Regenerate.
7890
c9484ea5
DK
78912010-10-20 Doug Kwan <dougkwan@google.com>
7892
7893 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
7894 without SHF_LINK_ORDER flags.
7895 * layout.cc (Layout::choose_output_section): Do not filter
7896 SHF_LINK_ORDER flag in a relocatable link.
7897
5bc2f5be
CC
78982010-10-17 Cary Coutant <ccoutant@google.com>
7899
7900 * output.h (Output_segment::set_section_addresses): Change function
7901 signature. Update all callers.
7902 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
7903 sections.
7904 (Output_segment::set_section_addresses): Align after last TLS
7905 section. Add padding before last relro section instead of after.
7906
0c91cf04
DK
79072010-10-17 Doug Kwan <dougkwan@google.com>
7908
7909 * gold/arm.cc (Target_arm::got_section): Use correct order and set
7910 GOT output section to be writable.
7911
8c21d9d3
CC
79122010-10-14 Cary Coutant <ccoutant@google.com>
7913
7914 * debug.h (DEBUG_INCREMENTAL): New flag.
2e702c99
RM
7915 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
7916 * gold.cc (queue_initial_tasks): Check parameters for incremental link
7917 mode.
7918 * incremental.cc (report_command_line): Ignore all forms of
7919 --incremental.
7920 * layout.cc (Layout::Layout): Check parameters for incremental link
7921 mode.
7922 * options.cc (General_options::parse_incremental): New function.
7923 (General_options::parse_no_incremental): New function.
7924 (General_options::parse_incremental_full): New function.
7925 (General_options::parse_incremental_update): New function.
7926 (General_options::incremental_mode_): New data member.
7927 (General_options::finalize): Check incremental_mode_.
7928 * options.h (General_options): Update help text for --incremental.
7929 Add --no-incremental, --incremental-full, --incremental-update.
7930 (General_options::Incremental_mode): New enum type.
7931 (General_options::incremental_mode): New function.
7932 (General_options::incremental_mode_): New data member.
7933 * parameters.cc (Parameters::incremental_mode_): New data member.
7934 (Parameters::set_options): Set incremental_mode_.
7935 (Parameters::set_incremental_full): New function.
7936 (Parameters::incremental): New function.
7937 (Parameters::incremental_update): New function.
7938 (set_parameters_incremental_full): New function.
7939 * parameters.h (Parameters::set_incremental_full): New function.
7940 (Parameters::incremental): New function.
7941 (Parameters::incremental_update): New function.
7942 (Parameters::incremental_mode_): New data member.
7943 (set_parameters_incremental_full): New function.
7944 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
7945 incremental link mode.
7946 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
7947 (Sized_relobj::do_relocate_sections): Likewise.
7948 * testsuite/Makefile.am (incremental_test): Use --incremental-full
7949 option.
7950 * testsuite/Makefile.in: Regenerate.
7951 * testsuite/incremental_test.sh: Filter all forms of --incremental.
8c21d9d3 7952
bb32aa18 79532010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
7954
7955 * script-sections.h (class Script_sections): Make
7956 Sections_elements typedef public.
7957 * script-sections.cc (class Sort_output_sections): Add elements_
7958 field. Add constructor which sets it; change all callers.
7959 (Sort_output_sections::is_before): New function.
7960 (Sort_output_sections::operator()): Call is_before.
7961 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
7962 conditional.
7963 * testsuite/script_test_10.sh: New test. Test script section
7964 order.
7965 * testsuite/script_test_10.t: Likewise.
7966 * testsuite/script_test_10.s: Likewise.
7967 * testsuite/Makefile.am: Wrap the cross linker tests and the
7968 common tests into NATIVE_OR_CROSS_LINKER.
7969 (check_SCRIPTS): Add script_test_10.sh.
7970 (check_DATA): Add script_test_10.stdout.
7971 (script_test_10.o, script_test_10): New targets.
7972 (script_test_10.stdout): New target.
7973 * configure, testsuite/Makefile.in: Regenerate.
7974
3cef7179
ILT
79752010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7976
7977 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
7978 error for the deprecated relocations.
7979 (Target_arm::Scan::global): Likewise.
7980 (Target_arm::Relocate::relocate): Likewise.
7981
7411e9a8
RS
79822010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
7983
7984 * fileread.cc (Input_file::find_file): Initialize *found_name
7985 and *namep when using the fallback search for case 4.
7986
6a9da32a
CC
79872010-10-11 Cary Coutant <ccoutant@google.com>
7988
7989 * options.h (class General_options): Redefine -z lazy as an alias for
7990 the negation of -z now.
7991
ac897c20
ILT
79922010-10-11 Ian Lance Taylor <iant@google.com>
7993
7994 * resolve.cc (symbol_to_bits): Report the value of the unsupported
7995 binding.
7996
ea5cae92
NC
79972010-10-06 Nick Clifton <nickc@redhat.com>
7998
7999 * script-sections.cc(class Memory_region): Remove
8000 current_lma_offset_ field. Rename current_vma_offset_ to
8001 current_offset_. Add last_section_ field.
8002 (Memory_region::get_current_vma_address): Rename to
8003 get_current_address.
8004 (Memory_region::get_current_lma_address): Delete.
8005 (Memory_region::increment_vma_offset): Rename to
8006 increment_offset.
8007 (Memory_region::increment_lma_offset): Delete.
8008 (Memory_region::attributes_compatible): New method. Returns
8009 true if the provided section is compatible with the region.
8010 (Memory_region::get_last_section): New method. Returns the last
8011 section to use the region.
8012 (Memory_region::set_last_section): New method. Stores the last
8013 section to use the region.
8014 (Script_sections::block_in_region): New method. Returns true if
8015 a block of memory is contained within a region.
8016 (Script_sections::find_memory_region): New method. Locates a
8017 memory region to be used to set a VMA or LMA address.
8018 (Output_section_definition::set_section_addresses): Add code to
8019 check for addresses set by memory regions.
8020 (Output_segment::set_section_addresses): Remove memory region
8021 walking code.
8022 (Script_sections::create_segment): Add a warning if a header
8023 segment is created outside of any region.
8024 * script-sections.h (class Script_sections): Add prototypes for
8025 find_memory_region and block_in_region methods.
8026 * testsuite/memory_test.s: Use .long instead of .word.
8027 * testsuite/memory_test.t: Add some more output sections.
8028 * testsuite/memory_test.sh: Update expected output.
8029
a9bfd952
DK
80302010-10-02 Doug Kwan <dougkwan@google.com>
8031
8032 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
8033 defintion to symtab.h
8034 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
8035 declaration to defintion.
8036
bacff3ab
NC
80372010-10-01 Nick Clifton <nickc@redhat.com>
8038
8039 * expression.cc (eval): Replace dummy argument with NULL.
8040 (eval_maybe_dot): Check for a NULL result section pointer.
8041 (Symbol_expression::value): Likewise.
8042 (Dot_expression::value): Likewise.
8043 (BINARY_EXPRESSION): Likewise.
8044 (Max_expression::value): Likewise.
8045 (Min_expression::value): Likewise.
8046 (Absolute_expression::value): Likewise.
8047 (Addr_expression::value_from_output_section): Likewise.
8048 (Loaddddr_expression::value_from_output_section): Likewise.
8049 (Segment_start_expression::value): Likewise.
8050 * script-sections.cc
8051 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
8052 argument with NULL.
8053 (Sections_elememt_dot_assignment::set_section_addresses):
8054 Likewise.
8055 (Output_data_expression::do_write_to_buffer): Likewise.
8056 (Output_section_definition::finalize_symbols): Likewise.
8057 (Output_section_definition::set_section_addresses): Likewise.
8058
f81bc8b5
DK
80592010-09-30 Doug Kwan <dougkwan@google.com>
8060
8061 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
8062
c95e9f27
ST
80632010-09-28 Sriraman Tallam <tmsriram@google.com>
8064
8065 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 8066 function.
c95e9f27
ST
8067 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
8068 virtual function.
8069 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
8070 virtual function.
8071 * icf.cc (get_section_contents): Inline merge sections only when
8072 target allows it.
8073
3cac54d2
RW
80742010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8075
8076 * configure: Regenerate.
8077
2904037a
ILT
80782010-09-17 Ian Lance Taylor <iant@google.com>
8079
8080 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
8081 * testsuite/Makefile.am (memory_test.o): New target.
8082 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
8083 memory_test.t.
8084 * testsuite/Makefile.in: Rebuild.
2904037a 8085
bca7fb63
DK
80862010-09-17 Doug Kwan <dougkwan@google.com>
8087
8088 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
8089 defintion if relocation uses GOT entries of the symbol.
8090 * testsuite/icf_safe_test.sh: Fix test.
8091 * testsuite/icf_safe_so_test.sh: Fix test.
8092
4ef28648
CC
80932010-09-16 Cary Coutant <ccoutant@google.com>
8094
8095 * script_sections.cc (class Memory_region): Remove "NULL" from
8096 vector initializations.
8097
793990de
CC
80982010-09-15 Cary Coutant <ccoutant@google.com>
8099
8100 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
8101 Resolve forwarding symbols.
8102
81e015e2
DK
81032010-09-15 Doug Kwan <dougkwan@google.com>
8104
8105 * gold/testsuite/script_test_3.t: Add ARM special sections.
8106 * gold/testsuite/script_test_4.t: Same.
8107 * gold/testsuite/script_test_5.t: Same.
8108 * gold/testsuite/script_test_6.t: Same.
8109 * gold/testsuite/script_test_7.t: Same.
8110 * gold/testsuite/script_test_7.t: Same.
8111 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
8112
36171d64
CC
81132010-09-14 Cary Coutant <ccoutant@google.com>
8114
8115 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
8116 (Target_x86_64::Relocate::relocate_tls): Replace check for
8117 saw_tls_block_reloc_ with test for executable section.
8118
d89051bd
CC
81192010-09-12 Cary Coutant <ccoutant@google.com>
8120
8121 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
8122 position-independent executables to shared libraries need dynamic
8123 relocations.
8124 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
8125 position-independent executables.
8126 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
8127 * testsuite/Makefile.in: Regenerate.
8128
fca41f0f
NC
81292010-09-10 Nick Clifton <nickc@redhat.com>
8130
8131 PR gold/11997
8132 * testsuite/memory_test.t: Discard any sections that are not
8133 needed.
8134
6695e4b3
L
81352010-09-09 H.J. Lu <hongjiu.lu@intel.com>
8136
8137 PR gold/11996
8138 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
8139 "This::" to work around a bug in gcc 4.2.
8140
8141 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
8142
0f72bf6f
RÁE
81432010-09-09 Rafael Espindola <espindola@google.com>
8144
8145 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
8146 sections with different PF_X flags in the same segment.
8147 (Layout::find_first_load_seg): Search all segments to find the first
8148 one.
8149 * options.h (rosegment): New.
8150
81512010-09-08 Rafael Espindola <espindola@google.com>
a6577478 8152
05a79166 8153 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 8154
aa98ff75
DK
81552010-09-08 Doug Kwan <dougkwan@google.com>
8156
8157 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
8158 (Arm_relobj::do_relocate_sections): Add new parameter for output
8159 file to match the parent.
8160 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
8161 of local symbols instead of input values. Update code to track
8162 changes in gold::relocate_section.
8163 * object.cc (Sized_relobj::compute_final_local_value): New methods.
8164 (Sized_relobj::compute_final_local_value_internal): New methods.
8165 (Sized_relobj::do_finalize_local_symbols): Move code from loop
8166 body into private version of Sized_relobj::compute_final_local_value.
8167 Call the inline method.
8168 * object.h (Symbol_value::Symbol_value): Define destructor. Free
8169 merged symbol value if there is one.
8170 (Symbol_value::has_output_value): New method defintiion.
8171 (Sized_relobj::Compute_final_local_value_status): New enum type.
8172 (Sized_relobj::compute_final_local_value): New methods.
8173 (Sized_relobj::compute_final_local_value_internal): New methods.
8174 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
8175 and arm_cortex_a8.sh.
8176 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
8177 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
8178 New tests.
8179 * Makefile.in: Regenerate.
8180 * testsuite/arm_bl_out_of_range.s: Update test.
8181 * testsuite/thumb_bl_out_of_range.s: Ditto.
8182 * testsuite/thumb_blx_out_of_range.s: Ditto.
8183 * testsuite/arm_branch_out_of_range.sh: New file.
8184 * testsuite/arm_cortex_a8.sh: Ditto.
8185 * testsuite/arm_cortex_a8_b.s: Ditto.
8186 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
8187 * testsuite/arm_cortex_a8_b_local.s: Ditto.
8188 * testsuite/arm_cortex_a8_bl.s: Ditto.
8189 * testsuite/arm_cortex_a8_blx.s: Ditto.
8190 * testsuite/arm_cortex_a8_local.s: Ditto.
8191 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
8192 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
8193
05a79166
L
81942010-09-08 Rafael Espindola <espindola@google.com>
8195
8196 * Makefile.am (memory_test.stdout): Run readelf with -W.
8197 * Makefile.in: Regenerate.
8198 * testsuite/memory_test.sh: Make the regexps accept both 32 and
8199 64 bit output.
8200
33dbc701
RÁE
82012010-09-08 Rafael Espindola <espindola@google.com>
8202
8203 * script-sections.cc (Script_sections::add_memory_region): Convert
8204 field precision to int.
8205 * script.cc (script_set_section_region, script_set_section_region):
8206 Convert field precision to int.
8207
731ca54a
RÁE
82082010-09-08 Rafael Espindola <espindola@google.com>
8209
8210 * arm.cc (do_finalize_sections): Create the __exidx_start and
8211 __exdix_end symbols even when the section is missing.
8212
7f8cd844
NC
82132010-09-08 Nick Clifton <nickc@redhat.com>
8214
8215 * README: Remove claim that MEMORY is not supported.
8216 * expression.cc (script_exp_function_origin)
8217 (script_exp_function_length): Move from here to ...
8218 * script.cc: ... here.
8219 (script_set_section_region, script_add_memory)
8220 (script_parse_memory_attr, script_include_directive): New
8221 functions.
8222 * script-sections.cc
8223 (class Memory_region): New class.
8224 (class Output_section_definition): Add set_memory_region,
8225 set_section_vma, set_section_lma and get_section_name methods.
8226 (class Script_Sections): Add add_memory_region,
8227 find_memory_region, find_memory_region_origin,
8228 find_memory_region_length and set_memory_region methods.
8229 Have set_section_addresses method walk the list of set memory
8230 regions.
8231 Extend the print methos to display memory regions.
8232 * script-sections.h: Add prototypes for new methods.
8233 Add enum for MEMORY region attributes.
8234 * yyscript.y: Add support for parsing MEMORY regions.
8235 * script-c.h: Add prototypes for new functions.
8236 * testsuite/Makefile.am: Add test of MEMORY region functionality.
8237 * testsuite/Makefile.in: Regenerate.
8238 * testsuite/memory_test.sh: New script.
8239 * testsuite/memory_test.s: New assembler source file.
8240 * testsuite/memory_test.t: New linker script.
8241
a4649286
DK
82422010-08-27 Doug Kwan <dougkwan@google.com>
8243
8244 * gold/resolve.cc (Symbol_table::should_override): Let a weak
8245 reference override an existing dynamic weak reference.
8246 * testsuite/Makefile.am: Add new test dyn_weak_ref.
8247 * testsuite/Makefile.in: Regenerate.
8248 * testsuite/dyn_weak_ref.sh: New file.
8249 * testsuite/dyn_weak_ref_1.c: Ditto.
8250 * testsuite/dyn_weak_ref_2.c: Ditto.
8251
b56648ad
ILT
82522010-08-27 Ian Lance Taylor <iant@google.com>
8253
8254 * incremental.h (class Incremental_input_entry): Add virtual
8255 destructor.
8256
809313cb
ILT
82572010-08-27 Ian Lance Taylor <iant@google.com>
8258
8259 * testsuite/start_lib_test_3.c: Mark t3 as used.
8260
11e32464
NC
82612010-08-27 Nick Clifton <nickc@redhat.com>
8262
8263 * options.cc (version_script): Fix small typo in previous
8264 whitespace tidyup.
8265
ca09d69a
NC
82662010-08-25 Nick Clifton <nickc@redhat.com>
8267
8268 * archive.cc: Formatting fixes: Remove whitespace between
8269 typename and following asterisk. Remove whitespace between
8270 function name and opening parenthesis.
8271 * archive.h: Likewise.
8272 * arm.cc: Likewise.
8273 * attributes.cc: Likewise.
8274 * attributes.h: Likewise.
8275 * common.cc: Likewise.
8276 * copy-relocs.cc: Likewise.
8277 * dirsearch.h: Likewise.
8278 * dynobj.cc: Likewise.
8279 * ehframe.cc: Likewise.
8280 * ehframe.h: Likewise.
8281 * expression.cc: Likewise.
8282 * fileread.cc: Likewise.
8283 * fileread.h: Likewise.
8284 * gc.h: Likewise.
8285 * gold-threads.cc: Likewise.
8286 * gold.cc: Likewise.
8287 * i386.cc: Likewise.
8288 * icf.h: Likewise.
8289 * incremental-dump.cc: Likewise.
8290 * incremental.cc: Likewise.
8291 * layout.cc: Likewise.
8292 * layout.h: Likewise.
8293 * main.cc: Likewise.
8294 * merge.cc: Likewise.
8295 * merge.h: Likewise.
8296 * object.cc: Likewise.
8297 * object.h: Likewise.
8298 * options.cc: Likewise.
8299 * options.h: Likewise.
8300 * output.cc: Likewise.
8301 * output.h: Likewise.
8302 * plugin.cc: Likewise.
8303 * plugin.h: Likewise.
8304 * powerpc.cc: Likewise.
8305 * reloc.cc: Likewise.
8306 * script-c.h: Likewise.
8307 * script-sections.cc: Likewise.
8308 * script.cc: Likewise.
8309 * stringpool.cc: Likewise.
8310 * symtab.cc: Likewise.
8311 * symtab.h: Likewise.
8312 * target.cc: Likewise.
8313 * timer.cc: Likewise.
8314 * timer.h: Likewise.
8315 * version.cc: Likewise.
8316 * x86_64.cc: Likewise.
8317
b8fa8750
NC
83182010-08-24 Nick Clifton <nickc@redhat.com>
8319
8320 PR 11899
8321 * layout.cc (segment_precedes): Sort segments by their physical
8322 addresses, if they have been set.
8323
9919d93b
CC
83242010-08-23 Cary Coutant <ccoutant@google.com>
8325
8326 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
8327 symbols data.
8328 (Lib_group::include_member): Unlock object after deleting its
8329 symbols data.
8330 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
8331 the bug fixed here.
8332
97b4be1c
CC
83332010-08-19 Neil Vachharajani <nvachhar@google.com>
8334 Cary Coutant <ccoutant@google.com>
8335
8336 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
8337 constructor, and set_blocker.
8338 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
8339 readsyms_blocker_.
8340 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
8341 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
8342 * testsuite/Makefile.am (start_lib_test): New test case.
8343 * testsuite/Makefile.in: Regenerate.
8344 * testsuite/start_lib_test_main.c: New file.
8345 * testsuite/start_lib_test_1.c: New file.
8346 * testsuite/start_lib_test_2.c: New file.
8347 * testsuite/start_lib_test_3.c: New file.
8348
dd0b1884
ILT
83492010-08-19 Ian Lance Taylor <iant@google.com>
8350
8351 * Makefile.in: Rebuild with automake 1.11.1.
8352 * aclocal.m4: Likewise.
8353 * testsuite/Makefile.in: Likewise.
8354
7223e9ca
ILT
83552010-08-19 Ian Lance Taylor <iant@google.com>
8356
8357 PR 10893
8358 * i386.cc (class Output_data_plt_i386): Update declarations.
8359 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
8360 local_ifuncs_ fields.
8361 (Target_i386::do_plt_section_for_global): New function.
8362 (Target_i386::do_plt_section_for_local): New function.
8363 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
8364 parameter; change all callers. Initialize global_ifuncs_ and
8365 local_ifuncs_. If doing a static link define __rel_iplt_start and
8366 __rel_iplt_end.
8367 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
8368 (Output_data_plt_i386::add_local_ifunc_entry): New function.
8369 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
8370 symbols.
8371 (Target_i386::make_plt_section): New function, broken out of
8372 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
8373 (Target_i386::make_plt_entry): Call make_plt_section.
8374 (Target_i386::make_local_ifunc_plt_entry): New function.
8375 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
8376 (Target_i386::Scan::local): Handle IFUNC symbols. Add
8377 R_386_IRELATIVE to switch.
8378 (Target_i386::Scan::global): Likewise.
8379 (Target_i386::Relocate::relocate): Likewise.
8380 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
8381 switch.
8382 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
8383 (Target_x86_64::do_plt_section_for_global): New function.
8384 (Target_x86_64::do_plt_section_for_local): New function.
8385 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
8386 parameter; change all callers. If doing a static link define
8387 __rela_iplt_start and __rela_iplt_end.
8388 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
8389 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
8390 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
8391 to point to .plt.
8392 (Target_x86_64::make_local_ifunc_plt_entry): New function.
8393 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
8394 switch.
8395 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
8396 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
8397 R_X86_64_IRELATIVE to switch.
8398 (Target_x86_64::Scan::global): Likewise.
8399 (Target_x86_64::Relocate::relocate): Likewise.
8400 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
8401 switch.
8402 * target.h (class Target): Add plt_section_for_global and
8403 plt_section_for_local functions. Add do_plt_section_for_global
8404 and do_plt_section_for_local virtual functions.
8405 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
8406 clarifying comments.
8407 (Symbol::use_plt_offset): Handle IFUNC symbol.
8408 * object.cc (Sized_relobj::Sized_relobj): Initialize
8409 local_plt_offsets_.
8410 (Sized_relobj::local_has_plt_offset): New function.
8411 (Sized_relobj::local_plt_offset): New function.
8412 (Sized_relobj::set_local_plt_offset): New function.
8413 (Sized_relobj::do_count): Handle IFUNC symbol.
8414 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
8415 a bit away from input_shndx_ field. Add set_is_func_symbol and
8416 is_ifunc_symbol functions.
8417 (class Sized_relobj): Update declarations. Remove Tls_got_entry
8418 and Local_tls_got_offsets. Define Local_plt_offsets. Add
8419 local_plt_offsets_ field.
8420 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
8421 * output.h (class Output_section_data): Add non-const
8422 output_section function.
8423 (class Output_data_got): Update declarations.
8424 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
8425 Add use_plt_offset parameter to global and local constructors.
8426 Change all callers. Change local_sym_index_ field to 31 bits.
8427 Change GSYM_CODE and CONSTANT_CODE accordingly.
8428 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
8429 doing a static link don't set sh_link field.
8430 (Output_data_got::Got_entry::write): Use PLT offset if
8431 appropriate.
8432 (Output_data_got::add_global_plt): New function.
8433 (Output_data_got::add_local_plt): New function.
8434 * target-reloc.h (relocate_section): Handle IFUNC symbol.
8435 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
8436 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
8437 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
8438 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
8439 IFUNC conditional.
8440 * testsuite/ifunc-sel.h: New file.
8441 * testsuite/ifuncmain1.c: New file.
8442 * testsuite/ifuncmain1vis.c: New file.
8443 * testsuite/ifuncmod1.c: New file.
8444 * testsuite/ifuncdep2.c: New file.
8445 * testsuite/ifuncmain2.c: New file.
8446 * testsuite/ifuncmain3.c: New file.
8447 * testsuite/ifuncmod3.c: New file.
8448 * testsuite/ifuncmain4.c: New file.
8449 * testsuite/ifuncmain5.c: New file.
8450 * testsuite/ifuncmod5.c: New file.
8451 * testsuite/ifuncmain6pie.c: New file.
8452 * testsuite/ifuncmod6.c: New file.
8453 * testsuite/ifuncmain7.c: New file.
8454 * configure, testsuite/Makefile.in: Rebuild.
8455
56f75c03
ILT
84562010-08-18 Ian Lance Taylor <iant@google.com>
8457
8458 * incremental.cc
8459 (Output_section_incremental_inputs::write_input_files): Add cast
8460 to avoid signed/unsigned comparison warning.
8461 (Output_section_incremental_inputs::write_info_blocks): Likewise.
8462
55455f89
CC
84632010-08-12 Cary Coutant <ccoutant@google.com>
8464
8465 * common.cc (Sort_commons::operator()): Remove unnecessary code.
8466
e2054bcb
ILT
84672010-08-13 Ian Lance Taylor <iant@google.com>
8468
8469 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
8470
74f67560
DK
84712010-08-12 Cary Coutant <ccoutant@google.com>
8472 Doug Kwan <dougkwan@google.com>
8473
8474 * resolve.cc (Symbol_table::should_override): When a weak dynamic
8475 defintion overrides non-weak undef, remember that the original undef
8476 is not weak.
8477 * symtab.cc (Symbol_table::sized_write_global): For undef without
8478 an original weak binding, set binding to global in output.
8479 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
8480 * testsuite/Makefile.in: Regenerate.
8481 * testsuite/strong_ref_weak_def.sh: New file.
8482 * testsuite/strong_ref_weak_def_1.c: Ditto.
8483 * testsuite/strong_ref_weak_def_2.c: Ditto.
8484
d1238d12
CC
84852010-08-12 Cary Coutant <ccoutant@google.com>
8486
8487 * testsuite/incremental_test.sh: Rewrite.
8488 * testsuite/incremental_test_1.c: Rewrite.
8489 * testsuite/incremental_test_2.c: Rewrite.
8490
0e70b911
CC
84912010-08-12 Cary Coutant <ccoutant@google.com>
8492
8493 * arm.cc (Target_arm::got_size): Add const.
8494 (Target_arm::got_entry_count): New function.
8495 (Target_arm::plt_entry_count): New function.
8496 (Target_arm::first_plt_entry_offset): New function.
8497 (Target_arm::plt_entry_size): New function.
8498 (Output_data_plt_arm::entry_count): New function.
8499 (Output_data_plt_arm::first_plt_entry_offset): New function.
8500 (Output_data_plt_arm::get_plt_entry_size): New function.
8501 * i386.cc (Target_i386::got_size): Add const.
8502 (Target_i386::got_entry_count): New function.
8503 (Target_i386::plt_entry_count): New function.
8504 (Target_i386::first_plt_entry_offset): New function.
8505 (Target_i386::plt_entry_size): New function.
8506 (Output_data_plt_i386::entry_count): New function.
8507 (Output_data_plt_i386::first_plt_entry_offset): New function.
8508 (Output_data_plt_i386::get_plt_entry_size): New function.
8509 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
8510 find_incremental_inputs_sections. Dump incremental_got_plt section.
8511 * incremental.cc: Include target.h.
8512 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
8513 parameter. Adjust all callers. Find incremental_got_plt section.
8514 (Incremental_inputs::create_data_sections): Create incremental_got_plt
8515 section.
8516 (Output_section_incremental_inputs::set_final_data_size): Calculate
8517 size of incremental_got_plt section.
8518 (Output_section_incremental_inputs::do_write): Write the
8519 incremental_got_plt section.
8520 (Got_plt_view_info): New struct.
8521 (Local_got_offset_visitor): New class.
8522 (Global_got_offset_visitor): New class.
8523 (Global_symbol_visitor_got_plt): New class.
8524 (Output_section_incremental_inputs::write_got_plt): New function.
8525 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
8526 Add parameter. Adjust all callers.
8527 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
8528 (Incremental_inputs::got_plt_section): New function.
8529 (Incremental_inputs::got_plt_section_): New data member.
8530 (Incremental_got_plt_reader): New class.
8531 * layout.cc (Layout::create_incremental_info_sections): Add the
8532 incremental_got_plt section.
8533 * object.h (Got_offset_list::get_list): New function.
8534 (Got offset_list::for_all_got_offsets): New function.
8535 (Sized_relobj::local_got_offset_list): New function.
8536 * powerpc.cc (Target_powerpc::got_size): Add const.
8537 (Target_powerpc::got_entry_count): New function.
8538 (Target_powerpc::plt_entry_count): New function.
8539 (Target_powerpc::first_plt_entry_offset): New function.
8540 (Target_powerpc::plt_entry_size): New function.
8541 (Output_data_plt_powerpc::entry_count): New function.
8542 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
8543 (Output_data_plt_powerpc::get_plt_entry_size): New function.
8544 * sparc.cc (Target_sparc::got_size): Add const.
8545 (Target_sparc::got_entry_count): New function.
8546 (Target_sparc::plt_entry_count): New function.
8547 (Target_sparc::first_plt_entry_offset): New function.
8548 (Target_sparc::plt_entry_size): New function.
8549 (Output_data_plt_sparc::entry_count): New function.
8550 (Output_data_plt_sparc::first_plt_entry_offset): New function.
8551 (Output_data_plt_sparc::get_plt_entry_size): New function.
8552 * symtab.h (Symbol::got_offset_list): New function.
8553 (Symbol_table::for_all_symbols): New function.
8554 * target.h (Sized_target::got_entry_count): New function.
8555 (Sized_target::plt_entry_count): New function.
8556 (Sized_target::plt_entry_size): New function.
8557 * x86_64.cc (Target_x86_64::got_size): Add const.
8558 (Target_x86_64::got_entry_count): New function.
8559 (Target_x86_64::plt_entry_count): New function.
8560 (Target_x86_64::first_plt_entry_offset): New function.
8561 (Target_x86_64::plt_entry_size): New function.
8562 (Output_data_plt_x86_64::entry_count): New function.
8563 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
8564 (Output_data_plt_x86_64::get_plt_entry_size): New function.
8565
09ec0418
CC
85662010-08-12 Cary Coutant <ccoutant@google.com>
8567
8568 * archive.cc: Include incremental.h.
8569 (Archive::Archive): Initialize incremental_info_.
8570 (Archive::include_member): Record archive members in incremental info.
8571 (Add_archive_symbols::run): Record begin and end of an archive in
8572 incremental info.
8573 (Lib_group::include_member): Record objects in incremental info.
8574 * archive.h (Incremental_archive_entry): Forward declaration.
8575 (Archive::set_incremental_info): New member function.
8576 (Archive::incremental_info): New member function.
8577 (Archive::Unused_symbol_iterator): New class.
8578 (Archive::unused_symbols_begin): New member function.
8579 (Archive::unused_symbols_end): New member function.
8580 (Archive::incremental_info_): New data member.
8581 * incremental-dump.cc (find_input_containing_global): New function.
8582 (dump_incremental_inputs): Dump new incremental info sections.
8583 * incremental.cc: Include symtab.h.
8584 (Output_section_incremental_inputs): New class.
8585 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
8586 new incremental info sections.
8587 (Sized_incremental_binary::do_check_inputs): Likewise.
8588 (Incremental_inputs::report_archive): Remove.
8589 (Incremental_inputs::report_archive_begin): New function.
8590 (Incremental_inputs::report_archive_end): New function.
8591 (Incremental_inputs::report_object): New function.
8592 (Incremental_inputs::finalize_inputs): Remove.
8593 (Incremental_inputs::report_input_section): New function.
8594 (Incremental_inputs::report_script): Rewrite.
8595 (Incremental_inputs::finalize): Do nothing but finalize string table.
8596 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
8597 (Incremental_inputs::sized_create_inputs_section_data): Remove.
8598 (Incremental_inputs::create_data_sections): New function.
8599 (Incremental_inputs::relocs_entsize): New function.
8600 (Output_section_incremental_inputs::set_final_data_size): New function.
8601 (Output_section_incremental_inputs::do_write): New function.
8602 (Output_section_incremental_inputs::write_header): New function.
8603 (Output_section_incremental_inputs::write_input_files): New function.
8604 (Output_section_incremental_inputs::write_info_blocks): New function.
8605 (Output_section_incremental_inputs::write_symtab): New function.
8606 * incremental.h (Incremental_script_entry): Forward declaration.
8607 (Incremental_object_entry): Forward declaration.
8608 (Incremental_archive_entry): Forward declaration.
8609 (Incremental_inputs): Forward declaration.
8610 (Incremental_inputs_header_data): Remove.
8611 (Incremental_inputs_header): Remove.
8612 (Incremental_inputs_header_write): Remove.
8613 (Incremental_inputs_entry_data): Remove.
8614 (Incremental_inputs_entry): Remove.
8615 (Incremental_inputs_entry_write): Remove.
8616 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
8617 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
8618 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
8619 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
8620 Likewise.
8621 (Incremental_input_entry): New class.
8622 (Incremental_script_entry): New class.
8623 (Incremental_object_entry): New class.
8624 (Incremental_archive_entry): New class.
8625 (Incremental_inputs::Incremental_inputs): Initialize new data members.
8626 (Incremental_inputs::report_inputs): Remove.
8627 (Incremental_inputs::report_archive): Remove.
8628 (Incremental_inputs::report_archive_begin): New function.
8629 (Incremental_inputs::report_archive_end): New function.
8630 (Incremental_inputs::report_object): Change prototype.
8631 (Incremental_inputs::report_input_section): New function.
8632 (Incremental_inputs::report_script): Change prototype.
8633 (Incremental_inputs::get_reloc_count): New function.
8634 (Incremental_inputs::set_reloc_count): New function.
8635 (Incremental_inputs::create_data_sections): New function.
8636 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
8637 (Incremental_inputs::inputs_section): New function.
8638 (Incremental_inputs::symtab_section): New function.
8639 (Incremental_inputs::relocs_section): New function.
8640 (Incremental_inputs::get_stringpool): Add const.
8641 (Incremental_inputs::command_line): Add const.
8642 (Incremental_inputs::inputs): Remove.
8643 (Incremental_inputs::command_line_key): New function.
8644 (Incremental_inputs::input_file_count): New function.
8645 (Incremental_inputs::input_files): New function.
8646 (Incremental_inputs::relocs_entsize): New function.
8647 (Incremental_inputs::sized_create_inputs_section_data): Remove.
8648 (Incremental_inputs::finalize_inputs): Remove.
8649 (Incremental_inputs::Input_info): Remove.
8650 (Incremental_inputs::lock_): Remove.
8651 (Incremental_inputs::inputs_): Change type.
8652 (Incremental_inputs::inputs_map_): Remove.
8653 (Incremental_inputs::current_object_entry_): New data member.
8654 (Incremental_inputs::inputs_section_): New data member.
8655 (Incremental_inputs::symtab_section_): New data member.
8656 (Incremental_inputs::relocs_section_): New data member.
8657 (Incremental_inputs::reloc_count_): New data member.
8658 (Incremental_inputs_reader): New class.
8659 (Incremental_symtab_reader): New class.
8660 (Incremental_relocs_reader): New class.
8661 * layout.cc (Layout::finalize): Move finalization of incremental info
8662 and creation of incremental info sections to follow finalization of
8663 symbol table. Set offsets for postprocessing sections.
8664 (Layout::create_incremental_info_sections): Call
8665 Incremental_inputs::create_data_sections. Add incremental symtab
8666 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
8667 sections to layout after input sections.
8668 * layout.h (struct Timespec): Forward declaration.
8669 (Layout::incremental_inputs): Add const.
8670 (Layout::create_incremental_info_sections): Add parameter.
8671 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
8672 * object.cc: Include incremental.h.
8673 (Relobj::finalize_incremental_relocs): New function.
8674 (Sized_relobj::do_layout): Record input sections in incremental info.
8675 * object.h (Object::output_section): New function.
8676 (Object::output_section_offset): Moved from Relobj.
8677 (Object::get_incremental_reloc_base): New function.
8678 (Object::get_incremental_reloc_count): New function.
8679 (Object::do_output_section): New function.
8680 (Object::do_output_section_offset): Moved from Relobj.
8681 (Object::do_get_incremental_reloc_base): New function.
8682 (Object::do_get_incremental_reloc_count): New function.
8683 (Object::Object): Initialize new data members.
8684 (Relobj::output_section): Renamed do_output_section and moved to
8685 protected.
8686 (Relobj::output_section_offset): Moved to Object.
8687 (Relobj::do_get_incremental_reloc_base): New function.
8688 (Relobj::do_get_incremental_reloc_count): New function.
8689 (Relobj::allocate_incremental_reloc_counts): New function.
8690 (Relobj::count_incremental_reloc): New function.
8691 (Relobj::finalize_incremental_relocs): New function.
8692 (Relobj::next_incremental_reloc_index): New function.
8693 (Relobj::reloc_counts_): New data member.
8694 (Relobj::reloc_bases_): New data member.
8695 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
8696 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
8697 (Sized_relobj::incremental_relocs_scan): New function.
8698 (Sized_relobj::incremental_relocs_scan_reltype): New function.
8699 (Sized_relobj::incremental_relocs_write): New function.
8700 (Sized_relobj::incremental_relocs_write_reltype): New function.
8701 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
8702 incremental link.
8703 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
8704 archives and object files elsewhere.
8705 (Add_symbols::run): Report object files here.
8706 (Finish_group::run): Report end of archive at end of group.
8707 * reloc.cc: Include layout.h, incremental.h.
8708 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
8709 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
8710 (Sized_relobj::incremental_relocs_scan): New function.
8711 (Sized_relobj::incremental_relocs_scan_reltype): New function.
8712 (Sized_relobj::do_relocate_sections): Write incremental relocations.
8713 (Sized_relobj::incremental_relocs_write): New function.
8714 (Sized_relobj::incremental_relocs_write_reltype): New function.
8715 * script.cc (read_input_script): Rewrite test for incremental link.
8716 Change call to Incremental_inputs::report_script.
8717 * symtab.h (Symbol_table::first_global_index): New function.
8718 (Symbol_table::output_count): New function.
8719
ce0d1972
DK
87202010-08-12 Doug Kwan <dougkwan@google.com>
8721
8722 * arm.cc (Target_arm::merge_object_attributes): Check command line
8723 options --no-wchar-size-warning and --no-enum-size-warning.
8724 * options.h (General_options): Add ld-compatible options
8725 --no-enum-size-warning and --no-wchar-size-warning.
8726
6e5710ce
ILT
87272010-08-04 Ian Lance Taylor <iant@google.com>
8728
8729 * x86_64.cc (Target_x86_64::Scan::local): Use
8730 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
8731 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
8732 (Target_x86_64::Scan::global): Likewise.
8733 (Target_x86_64::Relocate::relocate): Likewise.
8734 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
8735 Likewise.
8736
fef830db
CC
87372010-08-03 Cary Coutant <ccoutant@google.com>
8738
8739 * merge.cc (Output_merge_string::do_add_input_section): Count strings
8740 to reserve space in merged_strings vector. Keep total input size
8741 for stats.
8742 (Output_merge_string::do_print_merge_stats): Print total input size.
8743 * merge.h (Output_merge_string): Add input_size_ field.
8744 * stringpool.cc (Stringpool_template::string_length): Move
8745 implementations out of Stringpool_template class and place in
8746 stringpool.h.
8747 * stringpool.h (string_length): Move out of Stringpool_template.
8748
1e3811b0
ILT
87492010-08-03 Ian Lance Taylor <iant@google.com>
8750
8751 PR 11712
8752 * layout.cc (relaxation_loop_body): If address of load segment is
8753 set, adjust address to include headers if possible.
8754
7af0c620
ILT
87552010-08-03 Ian Lance Taylor <iant@google.com>
8756
8757 * version.cc (version_string): Bump to 1.10.
8758
22f0da72
ILT
87592010-08-03 Ian Lance Taylor <iant@google.com>
8760
8761 PR 11805
8762 * layout.h (enum Output_section_order): Define.
8763 (class Layout): Update declarations.
8764 * layout.cc (Layout::get_output_section): Add order parameter.
8765 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
8766 is_first_non_relro parameters. Change all callers.
8767 (Layout::choose_output_section): Likewise.
8768 (Layout::add_output_section_data): Likewise.
8769 (Layout::make_output_section): Likewise. Set order.
8770 (Layout::default_section_order): New function.
8771 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
8772 * output.cc (Output_section::Output_section): Initialize order_.
8773 Don't initialize deleted fields.
8774 (Output_segment::Output_segment): Don't initialize deleted
8775 fields.
8776 (Output_segment::add_output_section_to_load): New function
8777 replacing add_output_section. Change all callers to call this or
8778 add_output_section_to_nonload.
8779 (Output_segment::add_output_section_to_nonload): New function.
8780 (Output_segment::remove_output_section): Rewrite.
8781 (Output_segment::add_initial_output_data): Likewise.
8782 (Output_segment::has_any_data_sections): Likewise.
8783 (Output_segment::is_first_section_relro): Likewise.
8784 (Output_segment::maximum_alignment): Likewise.
8785 (Output_segment::has_dynamic_reloc): New function replacing
8786 dynamic_reloc_count. Change all callers.
8787 (Output_segment::has_dynamic_reloc_list): New function replacing
8788 dynamic_reloc_count_list. Change all callers.
8789 (Output_segment::set_section_addresses): Rewrite.
8790 (Output_segment::set_offset): Rewrite.
8791 (Output_segment::find_first_and_last_list): Remove.
8792 (Output_segment::set_tls_offsets): Rewrite.
8793 (Output_segment::first_section_load_address): Likewise.
8794 (Output_segment::output_section_count): Likewise.
8795 (Output_segment::section_with_lowest_load_address): Likewise.
8796 (Output_segment::write_section_headers): Likewise.
8797 (Output_segment::print_sections_to_map): Likewise.
8798 * output.h (class Output_data): Remove dynamic_reloc_count_
8799 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
8800 (Output_data::add_dynamic_reloc): Rewrite.
8801 (Output_data::has_dynamic_reloc): New function.
8802 (Output_data::dynamic_reloc_count): Remove.
8803 (class Output_section): Add order_ field. Remvoe is_relro_local_,
8804 is_last_relro_, is_first_non_relro_, is_interp_,
8805 is_dynamic_linker_section_ fields. Add order and set_order
8806 functions. Remove is_relro_local, set_is_relro_local,
8807 is_last_relro, set_is_last_relro, is_first_non_relro,
8808 set_is_first_non_relro functions, is_interp, set_is_interp,
8809 is_dynamic_linker_section, and set_is_dynamic_linker_section
8810 functions.
8811 (class Output_segment): Change Output_data_list from std::list to
8812 std:;vector. Add output_lists_ field. Remove output_data_ and
8813 output_bss_ fields. Update declarations.
8814
3ff2ccb0
ILT
88152010-08-02 Ian Lance Taylor <iant@google.com>
8816
8817 * arm.cc (Target_arm::gc_process_relocs): Use typename.
8818 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
8819 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
8820
88a4108b
ILT
88212010-08-02 Ian Lance Taylor <iant@google.com>
8822
8823 PR 11855
8824 * script.cc (Script_options::Script_options): Initialize
8825 symbol_definitions_ and symbol_references_.
8826 (Script_options::add_symbol_assignment): Update
8827 symbol_definitions_ and symbol_references_.
8828 (Script_options::add_symbol_reference): New function.
8829 (script_symbol): New function.
8830 * script.h (class Script_options): Add symbol_definitions_ and
8831 symbol_references_ fields.
8832 (Script_options::referenced_const_iterator): New type.
8833 (Script_options::referenced_begin): New function.
8834 (Script_options::referenced_end): New function.
8835 (Script_options::is_referenced): New function.
8836 (Script_options::any_unreferenced): New function.
8837 * script-c.h (script_symbol): Declare.
8838 * yyscript.y (exp): Call script_symbol.
8839 * symtab.cc: Include "script.h".
8840 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
8841 Change all callers. Check symbols referenced by scripts.
8842 (Symbol_table::add_undefined_symbols_from_command_line): Add
8843 layout parameter. Change all callers.
8844 (Symbol_table::do_add_undefined_symbols_from_command_line):
8845 Likewise. Break out loop body. Check symbols referenced by
8846 scripts.
8847 (Symbol_table::add_undefined_symbol_from_command_line): New
8848 function broken out of
8849 do_add_undefined_symbols_from_command_line.
8850 * symtab.h (class Symbol_table): Update declarations.
8851 * archive.cc: Include "layout.h".
8852 (Archive::should_include_member): Add layout parameter. Change
8853 all callers. Check for symbol mentioned in expression.
8854 * archive.h (class Archive): Update declaration.
8855 * object.cc (Sized_relobj::do_should_include_member): Add layout
8856 parameter.
8857 * object.h (Object::should_include_member): Add layout parameter.
8858 Change all callers.
8859 (Object::do_should_include_member): Add layout parameter.
8860 (class Sized_relobj): Update declaration.
8861 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
8862 parameter.
8863 * dynobj.h (class Sized_dynobj): Update declaration.
8864 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
8865 layout parameter.
8866 * plugin.h (class Sized_pluginobj): Update declaration.
8867
5f1ab67a
ILT
88682010-08-02 Ian Lance Taylor <iant@google.com>
8869
8870 PR 11866
8871 * output.cc (Output_segment::set_offset): Search for the first and
8872 last sections rather than assuming that the list is in order.
8873 (Output_segment::find_first_and_last_list): New function.
8874 * output.h (class Output_segment): Update declarations.
8875 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
8876 (relro_strip_test_SOURCES): New variable.
8877 (relro_strip_test_DEPENDENCIES): New variable.
8878 (relro_strip_test_LDFLAGS): New variable.
8879 (relro_strip_test_LDADD): New variable.
8880 (relro_strip_test.so): New target.
8881
a8df5856
ILT
88822010-08-02 Ian Lance Taylor <iant@google.com>
8883
8884 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
8885 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
8886 (Target_i386::got_tlsdesc_section): New function.
8887 (Target_i386::got_section): Create space for GOT entries for
8888 TLSDESC relocations.
8889 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
8890 R_386_TLS_GOTDESC.
8891 (Target_i386::Scan::global): Likewise.
8892 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
8893 using TLSDESC GOT.
8894 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
8895 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
8896 (Target_x86_64::got_tlsdesc_section): New function.
8897 (Target_x86_64::got_section): Create space for GOT entries for
8898 TLSDESC relocations.
8899 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
8900 R_386_TLS_GOTDESC.
8901 (Target_x86_64::Scan::global): Likewise.
8902 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
8903 using TLSDESC GOT.
8904
0c10a0a6
ILT
89052010-08-02 Ian Lance Taylor <iant@google.com>
8906
8907 * testsuite/final_layout.sh: Use dc to convert from hex to
8908 decimal.
8909
41cbeecc
ST
89102010-07-29 Sriraman Tallam <tmsriram@google.com>
8911
8912 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
8913 paramter to the call to gold::gc_process_relocs.
8914 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
8915 paramter to the call to gold::gc_process_relocs.
8916 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
8917 parameter to the call to gold::gc_process_relocs.
8918 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
8919 template parameter to the call to gold::gc_process_relocs.
8920 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
8921 paramter to the call to gold::gc_process_relocs.
8922 * gc.h (get_embedded_addend_size): New function.
8923 (gc_process_relocs): Save the size of the reloc for use by ICF.
8924 * icf.cc (get_section_contents): Get the addend from the text section
8925 for SHT_REL relocation sections.
8926 * icf.h (Icf::Reloc_addend_size_info): New typedef.
8927 (Icf::Reloc_info): Add new member reloc_addend_size_info.
8928 * int_encoding.h (read_from_pointer): New overloaded function.
8929 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
8930 * testsuite/icf_sht_rel_addend_test.sh: New file.
8931 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
8932 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
8933
6ea55b82
RW
89342010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8935
8936 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
8937 * Makefile.in: Regenerate.
8938 * testsuite/Makefile.in: Regenerate.
8939
9691462b
ILT
89402010-07-27 Jeffrey Yasskin <jyasskin@google.com>
8941
8942 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
8943 * gold/testsuite/debug_msg.cc: Likewise.
8944 * gold/testsuite/odr_violation1.cc
8945 * gold/testsuite/odr_violation2.cc
8946
76897331
CC
89472010-07-21 Cary Coutant <ccoutant@google.com>
8948
8949 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
8950 string, and length fields.
8951 (Output_merge_string::Merged_strings_list): New type.
8952 (Output_merge_string::Merged_strings_lists): New typedef.
8953 (Output_merge_string): Replace merged_strings_ with
8954 merged_strings_lists_.
8955 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
8956 Merged_strings_list per input object and section. Don't store pointer
8957 to the string. Don't store length with each merged string entry.
8958 (Output_merge_string::finalize_merged_data): Loop over list of merged
8959 strings lists. Recompute length of each merged string.
8960
78384e8f
CC
89612010-07-15 Cary Coutant <ccoutant@google.com>
8962
8963 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
8964 here.
8965
783659f9
ILT
89662010-07-14 Ian Lance Taylor <iant@google.com>
8967
8968 * descriptors.cc (Descriptors::open): Report correct name in error
8969 message.
8970
131687b4
DK
89712010-07-13 Doug Kwan <dougkwan@google.com>
8972
8973 * arm.cc (Arm_input_section::Arm_input_section): For a
8974 SHT_ARM_EXIDX section, always keeps the input sections.
8975 (Arm_input_section::set_exidx_section_link): New method.
8976 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
8977 has_errors_ to false.
8978 (Arm_exidx_input_section::has_errors,
8979 Arm_exidx_input_section::set_has_errors): New methods.
8980 (Arm_exidx_input_section::has_errors_): New data member.
8981 (Arm_relobj::get_exidx_shndx_list): New method.
8982 (Arm_output_section::append_text_sections_to_list): Do not skip
8983 section without SHF_EXECINSTR.
8984 (Arm_output_section::fix_exidx_coverage): Skip input sections with
8985 errors.
2e702c99 8986 (Arm_relobj::make_exidx_input_section): Add new parameter for text
131687b4
DK
8987 section header. Make error messages more verbose. Check for
8988 a non-executable section linked to an EXIDX section.
8989 (Arm_relobj::do_read_symbols): Remove error checking, which has been
8990 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
8991 check that there is no deferred EXIDX section if we exit early.
8992 Instead of not making an EXIDX section in case of an error, make one
8993 and set the has_errors flag of it.
8994 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
8995 in a relocatable link.
8996 (Target_arm::do_relax): Look for the EXIDX output section instead of
8997 assuming that it is called .ARM.exidx.
2e702c99 8998 (Target_arm::fix_exidx_coverage): Add a new parameter for input
131687b4
DK
8999 section list. Do not check for SHF_EXECINSTR section flags but
9000 skip any input section with errors.
9001 * output.cc (Output_section::Output_section): Initialize
9002 always_keeps_input_sections_ to false.
9003 (Output_section::add_input_section): Check for
9004 always_keeps_input_sections_.
9005 * output.h (Output_section::always_keeps_input_sections,
9006 Output_section::set_always_keeps_input_sections): New methods.
9007 (Output_section::always_keeps_input_sections): New data member.
9008
69517287
RÁE
90092010-07-13 Rafael Espindola <espindola@google.com>
9010
9011 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
9012 * fileread.h (Input_file): Add try_extra_search_path and find_file.
9013
82742395
ILT
90142010-07-13 Philip Herron <herron.philip@googlemail.com>
9015 Ian Lance Taylor <iant@google.com>
9016
9017 * output.h (Output_section_lookup_maps::add_merge_section):
9018 Correct check of whether value was inserted.
9019 (Output_section_lookup_maps::add_merge_input_section): Likewise.
9020 (Output_section_lookup_maps::add_relaxed_input_section):
9021 Likewise.
9022 * arm.cc (Target_arm::got_section): Remove used local os.
9023 * i386.cc (Target_i386::got_section): Likewise.
9024 * x86_64.cc (Target_x86_64::got_section): Likewise.
9025 * sparc.cc (Target_sparc::got_section): Likewise.
9026 (Target_sparc::relocate): Remove unused local have_got_offset.
9027 * powerpc.cc (Target_powerpc::relocate): Likewise.
9028
f2d707b5
ILT
90292010-07-13 Ian Lance Taylor <iant@google.com>
9030
241531d6
ILT
9031 * compressed_output.cc (zlib_decompress): Fix signature in
9032 !HAVE_ZLIB_H case.
9033
f2d707b5
ILT
9034 * archive.cc (Archive::include_member): Unlock an external member
9035 of a thin archive. Don't bother to delete an object we know is
9036 NULL.
9037
a2e47362
CC
90382010-07-12 Cary Coutant <ccoutant@google.com>
9039
9040 * compressed_output.cc (zlib_decompress): New function.
9041 (get_uncompressed_size): New function.
9042 (decompress_input_section): New function.
9043 * compressed_output.h (get_uncompressed_size): New function.
9044 (decompress_input_section): New function.
9045 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
9046 Handle compressed debug sections.
9047 * layout.cc (is_compressed_debug_section): New function.
9048 (Layout::output_section_name): Map compressed section names to
9049 canonical names.
9050 * layout.h (is_compressed_debug_section): New function.
9051 (is_debug_info_section): Recognize compressed debug sections.
9052 * merge.cc: Include compressed_output.h.
9053 (Output_merge_data::do_add_input_section): Handle compressed
9054 debug sections.
9055 (Output_merge_string::do_add_input_section): Handle compressed
9056 debug sections.
9057 * object.cc: Include compressed_output.h.
9058 (Sized_relobj::Sized_relobj): Initialize new data members.
9059 (build_compressed_section_map): New function.
9060 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
9061 * object.h (Object::section_is_compressed): New method.
9062 (Object::do_section_is_compressed): New method.
9063 (Sized_relobj::Compressed_section_map): New type.
9064 (Sized_relobj::do_section_is_compressed): New method.
9065 (Sized_relobj::compressed_sections_): New data member.
9066 * output.cc (Output_section::add_input_section): Handle compressed
9067 debug sections.
9068 * reloc.cc: Include compressed_output.h.
9069 (Sized_relobj::write_sections): Handle compressed debug sections.
9070
ce279a62
CC
90712010-07-08 Cary Coutant <ccoutant@google.com>
9072
9073 * resolve.cc (Symbol_table::resolve): Remember whether undef was
9074 weak when resolving to a dynamic def.
9075 (Symbol_table::should_override): Add adjust_dyndef flag; set it
9076 for weak undef/dynamic def cases. Adjust callers.
9077 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
9078 undef_binding_weak_.
9079 (Symbol_table::sized_write_globals): Adjust symbol binding.
9080 (Symbol_table::sized_write_symbol): Add binding parameter.
9081 * symtab.h (Symbol::set_undef_binding): New method.
9082 (Symbol::is_undef_binding_weak): New method.
9083 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
9084 (Symbol_table::should_override): Add new parameter.
9085 (Symbol_table::sized_write_symbol): Add new parameter.
9086
9087 * testsuite/weak_undef_file1.cc: Add new test case.
9088 * testsuite/weak_undef_file2.cc: Fix header comment.
9089 * testsuite/weak_undef_test.cc: Add new test case.
9090
b2286c10
DK
90912010-06-29 Doug Kwan <dougkwan@google.com>
9092
9093 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
9094 Initialize USE_SYMBOL_.
9095 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
9096 definition.
9097 (Arm_reloc_property::uses_symbol_): New data member declaration.
9098 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
9099 uses symbol value and symbol is undefined but not weakly undefined.
9100
4802450a
RÁE
91012010-06-28 Rafael Espindola <espindola@google.com>
9102
9103 * plugin.cc (Plugin::load): Use dlerror.
9104
e5ca47ba
ILT
91052010-06-26 Jeffrey Yaskin <jyasskin@google.com>
9106
9107 * symtab.cc (detect_odr_violations): When reporting an ODR
9108 violation, report an object where the symbol is defined.
9109
8a75a161
DK
91102010-06-25 Doug Kwan <dougkwan@google.com>
9111
9112 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
9113 (Target_arm::section_may_have_icf_unsafe_pointers): New method
9114 definition.
9115 (Target_arm::Scan::local_reloc_may_be_function_pointer,
9116 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
9117 target hook to detect function points.
9118 (Target_arm::Scan::possible_function_pointer_reloc): New method.
9119 * icf.h (Icf::check_section_for_function_pointers): Change type of
9120 parameter SECTION_NAME to const reference to std::string. Use
9121 target hook to determine if section may have unsafe pointers.
9122 * target.h (Target::section_may_have_icf_unsafe_pointers): New
9123 method definition.
9124
42218b9f
RÁE
91252010-06-21 Rafael Espindola <espindola@google.com>
9126
9127 * fileread.cc (Input_file::find_fie): New
9128 (Input_file::open): Use Input_file::find_fie.
9129 * fileread.h (Input_file::find_fie): New
9130 * plugin.cc (set_extra_library_path): New.
9131 (Plugin::load): Add set_extra_library_path to the transfer vector.
9132 (Plugin_manager::set_extra_library_path): New.
9133 (Plugin_manager::add_input_file): Use the extra search path if set.
9134 (set_extra_library_path(): New.
9135 * plugin.h (Plugin_manager): Add set_extra_library_path and
9136 extra_search_path_.
9137
a0506cca
CC
91382010-06-19 Cary Coutant <ccoutant@google.com>
9139
9140 * layout.cc (gdb_sections): Add .debug_types.
9141 (lines_only_debug_sections): Likewise.
9142
6508b958
RÁE
91432010-06-18 Rafael Espindola <espindola@google.com>
9144
9145 * plugin.cc (add_input_file,add_input_library)
9146 (Plugin_manager::add_input_file): Make filename arguments const.
9147 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
9148 const.
9149
3e235302
DK
91502010-06-16 Doug Kwan <dougkwan@google.com>
9151
9152 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
9153 .ARM.attributes section if we have not merged any input
9154 attributes sections.
9155
106e8a6c
DK
91562010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9157
9158 * arm.cc: Allow combining objects with no EABI version
9159 information.
9160
91ff43fe
RÁE
91612010-06-15 Rafael Espindola <espindola@google.com>
9162
9163 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
9164
68ed838c
ILT
91652010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9166
9167 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
9168 (struct iovec): Correct !HAVE_READV definition.
9169
f3a2388f
CC
91702010-06-10 Cary Coutant <ccoutant@google.com>
9171
9172 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
9173 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
9174 reloc sections.
9175 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
9176
9177 PR 11683
9178 * symtab.h (Symbol::is_placeholder): New member function.
9179 * target-reloc.h (relocate_section): Check for placeholder symbols.
9180
9181 * testsuite/Makefile.am (plugin_test_8): New test.
9182 (plugin_test_9): New test.
9183 * testsuite/Makefile.in: Regenerate.
9184
e1df38aa
NC
91852010-06-09 Nick Clifton <nickc@redhat.com>
9186
9187 * yyscript.y (input_list_element): Allow strings prefixed with
9188 the '-' character. Treat these as libraries.
9189 * script.cc (script_add_library): New function. Adds a library
9190 specified by "-l<name>" found in an input script.
9191 * script-c.h: Add prototype for script_add_library.
9192
25bbe950
DK
91932010-06-07 Doug Kwan <dougkwan@google.com>
9194
9195 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
9196 Restrict stub-group size to be within long conditional branch
9197 range when working around cortex-A8 erratum.
9198
0f32ea4c
ILT
91992010-06-07 Damien Diederen <dd@crosstwine.com>
9200
9201 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
9202 #ifdef typo.
9203
8fe2a369
ST
92042010-06-03 Sriraman Tallam <tmsriram@google.com>
9205
9206 PR gold/11658
9207 * output.cc
9208 (Output_section::Input_section_sort_entry::compare_section_ordering):
9209 Change to return non-zero correctly.
9210 (Output_section::Input_section_sort_section_order_index_compare
9211 ::operator()): Change to fix ambiguity in comparisons.
9212
6e9ba2ca
ST
92132010-06-01 Sriraman Tallam <tmsriram@google.com>
9214
9215 * gold.h (is_wildcard_string): New function.
9216 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
9217 (Layout::layout_eh_frame): Ditto.
9218 (Layout::find_section_order_index): New method.
9219 (Layout::read_layout_from_file): New method.
9220 * layout.h (Layout::find_section_order_index): New method.
9221 (Layout::read_layout_from_file): New method.
9222 (Layout::input_section_position_): New private member.
9223 (Layout::input_section_glob_): New private member.
9224 * main.cc (main): Call read_layout_from_file here.
9225 * options.h (--section-ordering-file): New option.
9226 * output.cc (Output_section::input_section_order_specified_): New
9227 member.
9228 (Output_section::Output_section): Initialize new member.
9229 (Output_section::add_input_section): Add new parameter.
9230 Keep input sections when --section-ordering-file is used.
9231 (Output_section::set_final_data_size): Sort input sections when
9232 section ordering file is specified.
9233 (Output_section::Input_section_sort_entry): Add new parameter.
9234 Check sorting type.
9235 (Output_section::Input_section_sort_entry::compare_section_ordering):
9236 New method.
9237 (Output_section::Input_section_sort_compare::operator()): Change to
9238 consider section_order_index.
9239 (Output_section::Input_section_sort_init_fini_compare::operator()):
9240 Change to consider section_order_index.
9241 (Output_section::Input_section_sort_section_order_index_compare
9242 ::operator()): New method.
9243 (Output_section::sort_attached_input_sections): Change to sort
9244 according to section order when specified.
e1df38aa
NC
9245 (Output_section::add_input_section<32, true>): Add new parameter.
9246 (Output_section::add_input_section<64, true>): Add new parameter.
9247 (Output_section::add_input_section<32, false>): Add new parameter.
9248 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
9249 * output.h (Output_section::add_input_section): Add new parameter.
9250 (Output_section::input_section_order_specified): New
9251 method.
9252 (Output_section::set_input_section_order_specified): New method.
9253 (Input_section::Input_section): Initialize section_order_index_.
9254 (Input_section::section_order_index): New method.
9255 (Input_section::set_section_order_index): New method.
9256 (Input_section::section_order_index_): New member.
9257 (Input_section::Input_section_sort_section_order_index_compare): New
9258 struct.
9259 (Output_section::input_section_order_specified_): New member.
9260 * script-sections.cc (is_wildcard_string): Delete and move modified
9261 method to gold.h.
9262 (Output_section_element_input::Output_section_element_input): Modify
9263 call to is_wildcard_string.
9264 (Output_section_element_input::Input_section_pattern
9265 ::Input_section_pattern): Ditto.
9266 (Output_section_element_input::Output_section_element_input): Ditto.
9267 * testsuite/Makefile.am (final_layout): New test case.
9268 * testsuite/Makefile.in: Regenerate.
9269 * testsuite/final_layout.cc: New file.
9270 * testsuite/final_layout.sh: New file.
9271
3537c84b
RÁE
92722010-06-01 Rafael Espindola <espindola@google.com>
9273
9274 * plugin.cc (Plugin::load): Pass the output name to the plugin.
9275
105b6afd
RÁE
92762010-06-01 Rafael Espindola <espindola@google.com>
9277
9278 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
9279 visibility of symbols.
9280
29e11421
DK
92812010-05-27 Doug Kwan <dougkwan@google.com>
9282
9283 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
9284 from start of output section instead of address for a local symbol
9285 in a merged or relaxed section when doing a relocatable link.
9286
5e0f337e
RÁE
92872010-05-26 Rafael Espindola <espindola@google.com>
9288
703d02da 9289 PR 11604
5e0f337e
RÁE
9290 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
9291 adding sections the garbage collector removed.
9292 * gold/testsuite/Makefile.am: Add test.
9293 * gold/testsuite/Makefile.in: Regenerate.
9294 * gold/testsuite/plugin_test_7.sh: New.
9295 * gold/testsuite/plugin_test_7_1.c: New.
9296 * gold/testsuite/plugin_test_7_2.c: New.
9297
f4187277
RÁE
92982010-05-26 Rafael Espindola <espindola@google.com>
9299
9300 * script-sections.cc (Output_section_definition::set_section_addresses):
9301 Check for --section-start.
9302
5c388529
DK
93032010-05-26 Doug Kwan <dougkwan@google.com>
9304
9305 * arm.cc (Arm_scan_relocatable_relocs): New class.
9306 (Target_arm::relocate_special_relocatable): New method.
9307 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
9308 (Arm_relocate_functions::thumb_branch_common): Same.
9309 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
9310 instead of Default_scan_relocatable_relocs.
9311 * target-reloc.h (relocate_for_relocatable): Let target handle
9312 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
9313 * target.h (Sized_target::relocate_special_relocatable): New method.
9314
bca1c3ae
ILT
93152010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9316
9317 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
9318
0439c796
DK
93192010-05-23 Doug Kwan <dougkwan@google.com>
9320
9321 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
9322 instead of a cast.
9323 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
9324 with a direct branch, not a conditional branch, to a stub.
9325 * merge.cc (Output_merge_base::record_input_section): New method
9326 defintion.
9327 (Output_merge_data::do_add_input_section): Record input section if
9328 keeps-input-sections flag is set.
9329 (Output_merge_string::do_add_input_section): Ditto.
9330 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
9331 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
9332 INPUT_SECTIONS_.
9333 (Output_merge_base::keeps_input_sections,
9334 Output_merge_base::set_keeps_input_sections,
9335 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
9336 method definitions.
9337 (Output_merge_base::Input_sections): New type declaration.
9338 (Output_merge_base::input_sections_begin,
9339 Output_merge_base::input_sections_end,
9340 Output_merge_base::do_set_keeps_input_sections): New method definitions.
9341 (Output_merge_base::bool keeps_input_sections_,
9342 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
9343 Output_merge_base::input_sections_): New data members.
9344 (Output_merge_data::do_set_keeps_input_sections): New method
9345 defintion.
9346 (Output_merge_string::do_set_keeps_input_sections): Ditto.
9347 * output.cc (Output_section::Input_section::relobj): Move method
9348 defintion from class declaration to here and handle merge sections.
9349 (Output_section::Input_section::shndx): Ditto.
9350 (Output_section::Output_section): Remove initializations of removed
9351 data members and initialize new data member LOOKUP_MAPS_.
9352 (Output_section::add_input_section): Set keeps-input-sections flag
9353 for a newly created merge output section as appropriate. Adjust code
9354 to use Output_section_lookup_maps class.
9355 (Output_section::add_relaxed_input_section): Adjst code for lookup
9356 maps code refactoring.
2e702c99 9357 (Output_section::add_merge_input_section): Add a new parameter
0439c796
DK
9358 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
9359 class. If adding input section to a newly created merge output
9360 section fails, remove the new merge section.
9361 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 9362 Adjust code for use of the Output_section_lookup_maps class.
2e702c99 9363 (Output_section::find_merge_section): Ditto.
0439c796 9364 (Output_section::build_lookup_maps): New method defintion.
2e702c99 9365 (Output_section::find_relaxed_input_section): Adjust code to use
0439c796
DK
9366 Output_section_lookup_maps class.
9367 (Output_section::get_input_sections): Export merge sections. Adjust
9368 code to use Output_section_lookup_maps class.
9369 (Output_section:::add_script_input_section): Adjust code to use
9370 Output_section_lookup_maps class. Update lookup maps for merge
9371 sections also.
9372 (Output_section::discard_states): Use Output_section_lookup_maps.
9373 (Output_section::restore_states): Same.
9374 * output.h (Merge_section_properties): Move class defintion out of
9375 Output_section.
9376 (Output_section_lookup_maps): New class.
9377 (Output_section::Input_section::is_merge_section): New method
9378 defintion.
9379 (Output_section::Input_section::relobj): Move defintion out of class
9380 defintion. Declare method only.
9381 (Output_section::Input_section::shndx): Ditto.
9382 (Output_section::Input_section::output_merge_base): New method defintion.
2e702c99 9383 (Output_section::Input_section::u2_.pomb): New union field.
0439c796
DK
9384 (Output_section::Merge_section_by_properties_map,
9385 Output_section::Output_section_data_by_input_section_map,
9386 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
9387 Remove types.
2e702c99 9388 (Output_section::add_merge_input_section): Add new parameter
0439c796
DK
9389 KEEPS_INPUT_SECTIONS.
9390 (Output_section::build_lookup_maps): New method declaration.
9391 (Output_section::merge_section_map_,
9392 Output_section::merge_section_by_properties_map_,
9393 Output_section::relaxed_input_section_map_,
9394 Output_section::is_relaxed_input_section_map_valid_): Remove data
9395 members.
9396 (Output_section::lookup_maps_): New data member.
9397
76295588
L
93982010-05-21 Doug Kwan <dougkwan@google.com>
9399
9400 PR gold/11619
9401 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
9402 avoid a compilation error.
9403
d103a984
RÁE
94042010-05-19 Rafael Espindola <espindola@google.com>
9405
9406 * script-sections.cc (Output_section_definition::allocate_to_segment):
9407 Update the phdrs_list even when the output section is NULL.
9408 * testsuite/Makefile.am: Add test.
9409 * testsuite/Makefile.in: Regenerate.
9410 * testsuite/script_test_9.cc: New.
9411 * testsuite/script_test_9.sh: New.
9412 * testsuite/script_test_9.t: New.
9413
6625d24e
DK
94142010-05-19 Doug Kwan <dougkwan@google.com>
9415
9416 * arm.cc (Arm_input_section::original_size): New method.
9417 (Arm_input_section::do_addralign): Add a cast.
9418 (Arm_input_section::do_output_offset): Remove static cast.
9419 (Arm_input_section::original_addralign,
9420 Arm_input_section::original_size_): Change type to uint32_t.
9421 (Arm_input_section::init): Add safe casts for section alignment
9422 and size.
9423 (Arm_input_section::set_final_data_size): Do not set address and
9424 offset of stub table.
9425 (Arm_output_section::fix_exidx_coverage): Change use of of
9426 Output_section::Simple_input_section to that of
9427 Output_section::Input_section.
9428 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
9429 except for the first pass.
9430 * output.cc (Output_section::get_input_sections): Change type of
9431 input_sections to std::list<Input_section>.
9432 (Output_section::add_script_input_section): Rename from
9433 Output_section::add_simple_input_section. Change type of SIS
9434 parameter from Simple_input_section to Input_section.
9435 * output.h (Output_section::Simple_input_section): Remove class.
9436 (Output_section::Input_section): Change class visibility to public.
9437 (Output_section::Input_section::addralign): Use stored alignments
9438 for special input sections if set.
9439 (Output_section::Input_section::set_addralign): New method.
9440 (Output_section::get_input_sections): Change parameter type from
9441 list of Simple_input_section to list of Input_section.
9442 (Output_section::add_script_input_section): Rename from
9443 Output_section::add_simple_input_section. Change first parameter's
9444 type from Simple_input_section to Input_section and remove the
9445 second and third parameters.
9446 * script-sections.cc (Input_section::Input_section_list): Change
9447 type to list of Output_section::Input_section/
9448 (Input_section_info::Input_section_info): Change parameter type of
9449 INPUT_SECTION to Output_section::Input_section.
9450 (Input_section_info::input_section): Change return type.
9451 (Input_section_info::input_section_): Change type to
9452 Output_section::Input_section.
9453 (Output_section_element_input::set_section_addresses): Adjust code
9454 to use Output_section::Input_section instead of
9455 Output_section::Simple_input_section. Adjust code for renaming
9456 of Output_section::add_simple_input_section.
9457 (Orphan_output_section::set_section_addresses): Ditto.
9458
e1e82ea4
RW
94592010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9460
9461 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
9462 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
9463
91e75c8a
RÁE
94642010-05-18 Rafael Espindola <espindola@google.com>
9465
9466 * options.cc (General_options::finalize): Handle -nostdlib.
9467 * options.h (nostdlib): New option.
9468 * script.cc (script_add_search_dir): Handle -nostdlib.
9469
da59ad79
DK
94702010-05-12 Doug Kwan <dougkwan@google.com>
9471
9472 * arm.cc (Target_arm::do_finalize_sections): Create an empty
9473 attributes section only if there no attributes section after merging.
9474 (Target_arm::merge_object_attributes): Move value of
e1df38aa 9475 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
9476 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
9477 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
9478 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
9479 and arm_attr_merge_7.stdout.
9480 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
9481 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
9482 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
9483 arm_attr_merge_7b.o): New rules.
9484 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
9485 arm_attr_merge_7
9486 * testsuite/Makefile.in: Regenerate.
9487 * testsuite/arm_attr_merge.sh: New file.
9488 * testsuite/arm_attr_merge_[67][ab].s: Same.
9489
3e01a7fd
NC
94902010-05-05 Nick Clifton <nickc@redhat.com>
9491
9492 * po/es.po: Updated Spanish translation.
9493
7ad2014a
L
94942010-04-27 H.J. Lu <hongjiu.lu@intel.com>
9495
9496 * Makefile.am (install-exec-local): Properly install gold as
9497 default cross linker.
9498 * Makefile.in: Regenerated.
9499
4fda8867
NC
95002010-04-27 H.J. Lu <hongjiu.lu@intel.com>
9501 Nick Clifton <nickc@redhat.com>
9502
9503 * configure.ac (install_as_default): Define and set to false
9504 unless --enable-gold or --enable-gold=both/gold has been
9505 specified.
9506 * configure: Regenerate.
9507
9508 * Makefile.am (install-exec-local): Install the executable as
9509 'ld.gold'. If install_as_default is true then also install it as
9510 'ld'.
9511 * Makefile.in: Regenerated.
9512
bd288ea2
ILT
95132010-04-24 Ian Lance Taylor <iant@google.com>
9514
9515 * layout.cc (Layout::layout_reloc): In relocatable link don't
9516 combine reloc sections for grouped sections.
9517
ef38fd8a
ST
95182010-04-23 Sriraman Tallam <tmsriram@google.com>
9519
9520 * gc.h (gc_process_relocs): Pass information on relocs pointing to
9521 sections that are not ordinary to icf.
9522 * icf.cc (get_section_contents): Handle relocation pointing to section
9523 with no object or shndx information.
9524 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
9525 * testsuite/Makefile.in: Regenerate.
9526 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
9527 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
9528
f6973bdc
ILT
95292010-04-22 Ian Lance Taylor <iant@google.com>
9530
9531 * expression.cc (Expression::Expression_eval_info): Add
9532 result_alignment_pointer field.
9533 (Expression::eval_with_dot): Add result_alignment_pointer
9534 parameter. Change all callers.
9535 (Expression::eval_maybe_dot): Likewise.
9536 (class Binary_expression): Add alignment_pointer parameter to
9537 left_value and right_value. Change all callers.
9538 (BINARY_EXPRESSION): Set result alignment.
9539 (class Trinary_expression): Add alignment_pointer parameter to
9540 arg2_value and arg3_value. Change all callers.
9541 (Trinary_cond::value): Set result alignment.
9542 (Max_expression::value, Min_expression::value): Likewise.
9543 (Align_expression::value): Likewise.
9544 * script-sections.cc (class Sections_element): Add dot_alignment
9545 parameter to set_section_addresses virtual function. Update
9546 instantiations.
9547 (class Output_section_element): Likewise.
9548 (Script_sections::create_segments): Add dot_alignment parameter.
9549 Change all callers.
9550 (Script_sections::create_segments_from_phdrs_clause): Likewise.
9551 (Script_sections::set_phdrs_clause_addresses): Likewise.
9552 * script-sections.h: Update declarations.
9553 * script.h: Update declarations.
9554 * output.h (Output_segment::set_minimum_p_align): Don't decrease
9555 min_p_align.
9556 * testsuite/script_test_3.t: Set large alignment.
9557 * testsuite/script_test_3.sh: Make sure that at least one LOAD
9558 segment has expected alignment.
9559
9c9c98a5
NC
95602010-04-22 Nick Clifton <nickc@redhat.com>
9561
9562 * po/gold.pot: Updated by the Translation project.
9563 * po/vi.po: Updated Vietnamese translation.
9564
2253bfba
L
95652010-04-22 H.J. Lu <hongjiu.lu@intel.com>
9566
9567 * testsuite/Makefile.am (check_PROGRAMS): Add
9568 icf_virtual_function_folding_test.
9569 * testsuite/Makefile.in: Regenerated.
9570
85fdf906
AH
95712010-04-15 Andrew Haley <aph@redhat.com>
9572
9573 * options.h (merge_exidx_entries): New option.
9574 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
9575 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
9576 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
9577 (Target_arm::merge_exidx_entries): New function.
9578 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
9579 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
9580 to Arm_exidx_fixup constructor.
9581 Add new arg, merge_exidx_entries.
9582 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
9583 Arm_output_section::fix_exidx_coverage.
9584
ce97fa81
ST
95852010-04-18 Sriraman Tallam <tmsriram@google.com>
9586
9587 * icf.cc (get_section_contents): Check for preemptible functions.
9588 Ignore addend when appropriate.
9589 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
9590 section folded.
9591 (add_from_relobj): Check for section folded.
9592 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
9593 * symtab.h (should_add_dynsym_entry): Add new parameter.
9594 * target-reloc.h (scan_relocs): Check for section folded.
9595 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
9596 Check reloc types for function pointers in shared objects.
9597 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
9598 case.
9599 (icf_preemptible_functions_test): New test case.
9600 (icf_string_merge_test): New test case.
9601 * testsuite.Makefile.in: Regenerate.
9602 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
9603 bar_glob. Refactor code.
9604 * testsuite/icf_preemptible_functions_test.cc: New file.
9605 * testsuite/icf_preemptible_functions_test.sh: New file.
9606 * testsuite/icf_string_merge_test.cc: New file.
9607 * testsuite/icf_string_merge_test.sh: New file.
9608 * testsuite/icf_virtual_function_folding_test.cc: New file.
9609 * testsuite/icf_virtual_function_folding_test.sh: New file.
9610
04ceb17c
DK
96112010-04-14 Doug Kwan <dougkwan@google.com>
9612
9613 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
9614 for local symbol recounting if we remove a section due to ICF.
9615 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
9616 there are no regular objects in input.
9617
153e7da4
DK
96182010-04-13 Doug Kwan <dougkwan@google.com>
9619
9620 * arm.cc (Arm_input_section::set_final_data_size): Compute
9621 accurate final data size instead of using current data size.
9622
4dbd9faf
DK
96232010-04-09 Doug Kwan <dougkwan@google.com>
9624
9625 * layout.cc (Layout::choose_output_section): Handle script section
9626 types.
9627 (Layout::make_output_section_for_script): Add section type parameter.
9628 Handle script section types.
9629 * layout.h (Layout::make_output_section_for_script): Add section
9630 type parameter.
9631 * output.cc (Output_section::Output_section): Initialize data member
9632 is_noload_.
9633 (Output_section::do_reset_address_and_file_offset): Do not set address
9634 to 0 if section is a NOLOAD section.
9635 * output.h (Output_section::is_noload): New method.
9636 (Output_section::set_is_noload): Ditto.
9637 (Output_section::is_noload_): New data member.
9638 * script-c.h (Script_section_type): New enum type.
9639 (struct Parser_output_section_header): Add new file section_type.
9640 * script-sections.cc (Sections_element::output_section_name): Add
9641 parameter for returning script section type.
9642 (Output_section_definition::output_section_name): Ditto.
9643 (Output_section_definition::section_type)P; New method.
9644 (Output_section_definiton::script_section_type_name): Ditto.
9645 (Output_section_definition::script_section_type_): New data member.
9646 (Output_section_definition::Output_section_definition): Initialize
9647 data member Output_section_definition::script_section_type_.
9648 (Output_section_definition::create_sections): Pass script section type
9649 to Layout::make_output_section_for_script.
9650 (Output_section_definition::output_section_name): Return script
9651 section type to caller.
9652 (Output_section_definition::set_section_address): Do not advance
9653 dot value and load address if section type is NOLOAD. Set address
9654 of NOLOAD sections regardless of section flags.
9655 (Output_section_definition::print): Print section type if it is
9656 not SCRIPT_SECTION_TYPE_NONE.
9657 (Output_section_definition::section_type): New method.
9658 (Output_section_definition::script_section_type_name): Ditto.
9659 (Script_sections::output_section_name): Add new parameter
9660 PSECTION_TYPE for returning script section type. Pass it to
9661 section elements. Handle discard sections.
9662 (Sort_output_sections::operator()): Handle NOLOAD sections.
9663 * script-sections.h (Script_sections::Section_type): New enum type.
2e702c99 9664 (Script_sections::output_section_name): Add a new parameter for
4dbd9faf
DK
9665 returning script section type.
9666 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
9667 INFO and NOLOAD.
9668 * yyscript.y (union): Add new field SECTION_TYPE.
9669 (COPY, DSECT, INFO, NOLOAD): New tokens.
9670 (opt_address_and_section_type): Change type to output_section_header.
9671 (section_type): New non-terminal
9672 (section_header): Handle section type.
2253bfba 9673 (opt_address_and_section_type): Return section type value.
4dbd9faf 9674
721ea635
L
96752010-04-09 H.J. Lu <hongjiu.lu@intel.com>
9676
9677 * testsuite/plugin_common_test_1.c (foo): Add prototype.
9678 * testsuite/plugin_common_test_2.c (foo): Likewise.
9679
6bf924b0
DK
96802010-04-08 Doug Kwan <dougkwan@google.com>
9681
9682 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
9683 Output_merge_data.
9684 * output.cc (Output_section::add_merge_input_section): Simplify
9685 code and return status of Output_merge_base::add_input_section.
e1df38aa 9686 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
9687 returns true.
9688
24af6f92
DK
96892010-04-07 Doug Kwan <dougkwan@google.com>
9690
9691 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
9692 if section is marked as containing instructions but has no mapping
9693 symbols.
9694 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
9695 correct section index.
9696 (Arm_relobj::find_linked_text_section): Ditto.
9697
00698fc5
CC
96982010-04-07 Cary Coutant <ccoutant@google.com>
9699
9700 * archive.cc (include_member): Destroy Read_symbols_data object before
9701 releasing file.
9702 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
9703 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
9704 (Read_symbols_data::~Read_symbols_data) New destructor.
9705 (Section_relocs::Section_relocs) New constructor.
9706 (Section_relocs::~Section_relocs) New destructor.
9707 (Read_relocs_data::Read_relocs_data) New constructor.
9708 (Read_relocs_data::~Read_relocs_data) New destructor.
9709 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
9710 pointers to NULL after deleting.
9711
7296d933
DK
97122010-04-07 Doug Kwan <dougkwan@google.com>
9713
9714 * arm.cc: Replace "endianity" with "endianness" in comments.
9715 (Arm_exidx_cantunwind): Ditto.
9716 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
9717 (Arm_relobj::merge_flags_and_attributes): New method.
9718 (Arm_relobj::merge_flags_and_attributes_): New data member.
9719 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
9720 (Arm_relobj::scan_sections_for_stubs): Ditto.
9721 (Arm_relobj::do_read_symbols): Check to see if we really want to
9722 merge processor-specific flags and attributes. Exit early if
9723 an object is empty except for section names and the undefined symbol.
9724 (Target_arm::do_finalize_sections): Move check for ELF format to
9725 Arm_relobj::do_read_symbols. Merge processor specific flags and
9726 attributes from a regular object only when we have determined that
9727 it is aapropriate. Do not create an .ARM.attributes section in
9728 output if there is no regular input object.
9729 (Target_arm::merge_processor_specific_flags): Check
9730 --warn-mismatch before printing any error.
9731 (Target_arm::merge_object_attributes): Ditto.
9732 * gold.cc (queue_middle_tasks): Handle the case in which there is
9733 no regular object in input.
9734 * options.cc (General_options::parse_EB): New method.
9735 (General_options::parse_EL): Same.
9736 (General_options::General_options): Initialize endianness_.
9737 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
9738 New options.
9739 (General_options::Endianness): New enum.
9740 (General_options::endianness): New method.
9741 (General_options::endianness_): New data member.
9742 * parameters.cc (Parameters::set_options): Check target endianness.
9743 (Parameters::set_target_once): Ditto.
9744 (Parameters::check_target_endianness): New method.
9745 (parameters_force_valid_target): If either -EL or -EB is specified,
9746 use it to define endianness of default target.
9747 * parameters.h (Parameters::check_target_endianness): New method
9748 declaration.
9749 * target.h (class Target): Change "endianity" to "endianness"
9750 in comments.
9751
efc8d4f2
RW
97522010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9753
9754 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
9755 * configure: Regenerate.
9756 * Makefile.in: Regenerate.
9757 * testsuite/Makefile.in: Regenerate.
9758
be234d88
CC
97592010-04-06 Cary Coutant <ccoutant@google.com>
9760
9761 gcc PR lto/42757
9762 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
9763 prevailing definitions of common symbols.
9764 * testsuite/plugin_test_6.sh: New test case.
9765 * testsuite/plugin_common_test_1.c: New test case.
9766 * testsuite/plugin_common_test_2.c: New test case.
9767 * testsuite/Makefile.am (plugin_test_6): New test case.
9768 * testsuite/Makefile.in: Regenerate.
9769
bd32c6bd
NC
97702010-04-06 Nick Clifton <nickc@redhat.com>
9771
9772 * po/vi.po: New Vietnamese translation.
9773
323c532f
DK
97742010-03-30 Doug Kwan <dougkwan@google.com>
9775
9776 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
9777
4fcd97eb
DK
97782010-03-25 Doug Kwan <dougkwan@google.com>
9779
9780 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
9781 to avoid a conversion warning on a 32-bit host.
9782
4ebf39db
ILT
97832010-03-24 Ian Lance Taylor <iant@google.com>
9784
9785 * testsuite/script_test_3.t: Add a TLS segment.
9786 * testsuite/Makefile.am (check_PROGRAMS): Add
9787 tls_phdrs_script_test.
9788 (tls_phdrs_script_test_SOURCES): Define.
9789 (tls_phdrs_script_test_DEPENDENCIES): Define.
9790 (tls_phdrs_script_test_LDFLAGS): Define.
9791 (tls_phdrs_script_test_LDADD): Define.
9792 * testsuite/Makefile.in: Rebuild.
9793
4a599bdd
CC
97942010-03-23 Cary Coutant <ccoutant@google.com>
9795
9796 * fileread.cc (find_or_make_view): Fix comment.
9797
6c93b22c
ILT
97982010-03-23 Ian Lance Taylor <iant@google.com>
9799
9800 * script-sections.cc (class Orphan_section_placement): Define
9801 PLACE_TLS and PLACE_TLS_BSS.
9802 (Orphan_section_placement::Orphan_section_placement): Initialize
9803 new places.
9804 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
9805 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
9806 (tls_script_test_SOURCES): Define.
9807 (tls_script_test_DEPENDENCIES): Define.
9808 (tls_script_test_LDFLAGS): Define.
9809 (tls_script_test_LDADD): Define.
9810 * testsuite/Makefile.in: Rebuild.
9811
a2c7281b
DK
98122010-03-22 Doug Kwan <dougkwan@google.com>
9813
9814 * arm.cc (Arm_relocate_functions::abs8,
9815 Arm_relocate_functions::abs16): Use correct check for overflow
9816 specified in the ARM ELF specs.
9817 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
9818 target of a BLX instruction specially.
9819 (Reloc_stub::stub_type_for_reloc): Ditto.
9820 (Relocate::relocate): Use symbolic names instead of numeric relocation
9821 codes to report error.
9822 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
9823 workaround.
9824 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
9825 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
9826 thumb2_blx_out_of_range.stdout
9827 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
9828 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
9829 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
9830 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
9831 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
9832 thumb2_blx_in_range, thumb2_blx_in_range.o,
9833 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
9834 thumb2_blx_out_of_range.o): New rules.
2e702c99 9835 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
a2c7281b
DK
9836 thumb2_blx_in_range and thumb2_blx_out_of_range.
9837 * testsuite/Makefile.in: Regenerate.
9838 * arm_branch_in_range.sh: Add tests for THUMB BLX.
9839 * testsuite/thumb_blx_in_range.s: New file.
9840 * testsuite/thumb_blx_out_of_range.s: New file.
9841
b0193076
RÁE
98422010-03-22 Rafael Espindola <espindola@google.com>
9843
9844 * archive.cc (Should_include): Move to archive.h.
9845 (should_include_member): Make it a member of Archive.
9846 (Lib_group): New.
9847 (Add_lib_group_symbols): New.
9848 * archive.h: Include options.h.
9849 (Archive_member): Moved from Archive.
9850 (Should_include): Moved from archive.cc.
9851 (Lib_group): New.
9852 (Add_lib_group_symbols): New.
9853 * dynobj.cc (do_should_include_member): New.
9854 * dynobj.h (do_should_include_member): New.
9855 * gold.cc (queue_initial_tasks): Update call to queue.
9856 * main.cc (main): Print lib group stats.
9857 * object.cc (do_should_include_member): New.
9858 * object.h: Include archive.h.
9859 (Object::should_include_member): New.
9860 (Object::do_should_include_member): New.
9861 (Sized_relobj::do_should_include_member): New.
9862 * options.cc (General_options::parse_start_lib): New.
9863 (General_options::parse_end_lib): New.
9864 (Input_arguments::add_file): Handle lib groups.
9865 (Input_arguments::start_group): Check we are not in a lib.
9866 (Input_arguments::start_lib): New.
9867 (Input_arguments::end_lib): New.
9868 * options.h (General_options): Add start_lib and end_lib.
9869 (Input_argument::lib_): New.
9870 (Input_argument::lib): New.
9871 (Input_argument::is_lib): New.
9872 (Input_file_lib): New.
9873 (Input_arguments::in_lib_): New.
9874 (Input_arguments::in_lib): New.
9875 (Input_arguments::start_lib): New.
9876 (Input_arguments::end_lib_): New.
9877 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
9878 in unused members as preempted.
9879 (Sized_pluginobj::do_should_include_member): New.
9880 * plugin.h (Sized_pluginobj::do_should_include_member): New.
9881 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
9882 return the blocker.
9883 (Read_symbols::do_whole_lib_group): New.
9884 (Read_symbols::do_lib_group): New.
9885 (Read_symbols::do_read_symbols): Handle lib groups.
9886 (Read_symbols::get_name): Handle lib groups.
9887 * readsyms.h (Read_symbols): Add an archive member pointer.
9888 (Read_symbols::do_whole_lib_group): New.
9889 (Read_symbols::do_lib_group): New.
9890 (Read_symbols::member_): New.
9891 * script.cc (read_input_script): Update call to queue_soon.
9892
d099120c
DK
98932010-03-19 Doug Kwan <dougkwan@google.com>
9894
9895 * arm.cc (Stub_table::Stub_table): Initialize new data members
9896 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
9897 (Stub_table::add_reloc_stub): Assign stub offset and update
9898 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
9899 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
9900 New data members.
2e702c99 9901 (Stub_table::update_data_size_and_addralign): Use
d099120c
DK
9902 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
9903 instead of going over all reloc stubs.
2e702c99 9904 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
d099120c
DK
9905 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
9906 Stringpool_template::offset_ to size of Stringpool_char.
2e702c99 9907 (Stringpool_template::new_key_offset): Remove code to initialize
d099120c
DK
9908 Stringpool_template::offset_.
9909 * stringpool.h (Stringpool_template::set_no_zero_null): Set
9910 Stringpool_template::offset_ to zero.
9911
1aa37384
DK
99122010-03-15 Doug Kwan <dougkwan@google.com>
9913
9914 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
9915 offset_.
9916 (Stringpool_template::new_key_offset): New method.
9917 (Stringpool_template::add_string): Assign offsets when adding new
9918 strings.
9919 (Stringpool_template::set_string_offsets): Do not set string offsets
9920 when not optimizing.
9921 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
9922 member size_.
2e702c99
RM
9923 (Chunked_vector::clear): Clear size_.
9924 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
9925 (Chunked_vector::size): Return size_.
9926 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 9927 (Chunked_vector::size_): New data member.
1aa37384
DK
9928 (Stringpool_template::set_no_zero_null): Assert string set is empty.
9929 (Stringpool_template::new_key_offset): New method declaration.
9930 (Stringpool_template::offset_): New data member.
9931
b672b057
RÁE
99322010-03-15 Rafael Espindola <espindola@google.com>
9933
9934 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
9935 Add_symbols' constructor.
9936 * readsyms.h (Add_symbols): Remove the input_group member.
9937
b6848d3c
ILT
99382010-03-10 Ian Lance Taylor <iant@google.com>
9939
9940 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
9941 target to ask whether a reference to a symbol requires a stack
9942 split.
9943 * target.h (Target::is_call_to_non_split): New function.
9944 (Target::do_is_call_to_non_split): Declare virtual function.
9945 * target.cc: Include "symtab.h".
9946 (Target::do_is_call_to_non_split): New function.
9947 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
9948
a2a5469e
CC
99492010-03-10 Cary Coutant <ccoutant@google.com>
9950
9951 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
9952 (File_read::open[1]): Remove initial mapping of whole_file_view_.
9953 (File_read::open[2]): Add whole_file_view_ to list of views.
9954 (File_read::make_view): Remove test of whole_file_view_.
9955 (File_read::find_or_make_view): Create whole_file_view_ if
9956 necessary.
9957 (File_read::clear_views): Replace bool parameter with enum;
9958 adjust all callers. Don't delete views with permanent data;
9959 do delete cached views and views from archives if
9960 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
9961 if clearing the corresponding view.
9962 * fileread.h (File_read::Clear_views_mode): New enum.
9963 (File_read::View::is_permanent_view): New method.
9964 (File_read::clear_views): Replace bool parameter
9965 with enum; adjust all callers.
9966 * options.h (General_options): Change keep_files_mapped option;
9967 add map_whole_files.
9968 * readsyms.cc (Add_symbols::run): Delete sd_ object before
9969 releasing the file.
9970 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
9971 the file.
9972
8861f32b
DM
99732010-03-10 David S. Miller <davem@davemloft.net>
9974
9975 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
9976
d62d0f5f
ST
99772010-03-09 Sriraman Tallam <tmsriram@google.com>
9978
9979 * icf.cc (get_section_contents): Add '@' marker after processing the
9980 merge reloc.
9981
9177756d
DK
99822010-03-08 Doug Kwan <dougkwan@google.com>
9983
9984 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
9985 due to a conversion warning.
9986 (Arm_relobj::update_output_local_symbol_count): Check for local
9987 symbol with unset output index.
9988
9e9e071b
ILT
99892010-03-05 Ian Lance Taylor <iant@google.com>
9990
9991 * options.h (class General_options): Add --spare-dynamic-tags.
9992 * output.cc (Output_data_dynamic::set_final_data_size): Implement
9993 --spare-dynamic-tags.
9994
a81ee015
ILT
99952010-03-05 Ian Lance Taylor <iant@google.com>
9996
9997 * incremental.cc: Include "libiberty.h".
9998
44ec90b9
RO
99992010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10000
10001 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
10002 function, is_info_ member.
10003 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
10004 (Versions::Versions): Update caller.
10005 (Versions::define_base_version): Likewise.
10006 (Versions::add_def): Likewise.
10007
0897ed3b
ST
100082010-03-03 Sriraman Tallam <tmsriram@google.com>
10009
10010 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
10011 (Scan::possible_function_pointer_reloc): New function.
10012 (Scan::local_reloc_may_be_function_pointer): Change to call
10013 possible_function_pointer_reloc.
10014 (Scan::global_reloc_may_be_function_pointer): Ditto.
10015 * icf.h (Icf::check_section_for_function_pointers): Change to reject
10016 relocations in ".data.rel.ro._ZTV" section.
10017 * testsuite/icf_safe_so_test.sh: Change to pass i386.
10018 * testsuite/icf_safe_so_test.cc: Ditto.
10019 * testsuite/icf_safe_test.cc: Ditto.
10020 * testsuite/icf_safe_test.sh: Ditto.
10021
d3bbad62
ILT
100222010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10023 Ian Lance Taylor <iant@google.com>
10024
10025 * target-reloc.h (relocate_section): Check the symbol table index
10026 for -1U before setting the local symbol index.
10027 (scan_relocatable_relocs): If copying the relocation, record that
10028 the local symbol is required.
10029 * object.h (Symbol_value::is_output_symtab_index_set): New
10030 function.
10031 (Symbol_value::may_be_discarded_from_output_symtab): New
10032 function.
10033 (Symbol_value::has_output_symtab_entry): New function.
10034 (Symbol_value::needs_output_symtab_entry): Remove.
10035 (Symbol_value::output_symtab_index): Make sure the symbol index is
10036 set.
10037 (Symbol_value::set_output_symtab_index): Make sure the symbol
10038 index is not set. Make sure the new index is valid.
10039 (Symbol_value::set_must_have_output_symtab_entry): New function.
10040 (Symbol_value::has_output_dynsym_entry): New function.
10041 (Symbol_value::set_output_dynsym_index): Make sure the new index
10042 is valid.
10043 (Sized_relobj::set_must_have_output_symtab_entry): New function.
10044 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
10045 local symbol if permitted.
10046 (Sized_relobj::do_finalize_local_symbols): Call
10047 is_output_symtab_index_set rather than needs_output_symtab_entry.
10048 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
10049 rather than needs_output_symtab_entry. Call
10050 has_output_dynsym_entry rather than needs_output_dynsym_entry.
10051 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
10052 is_output_symtab_index_set rather than needs_output_symtab_entry.
10053 * testsuite/discard_locals_relocatable_test.c: New file.
10054 * testsuite/discard_locals_test.sh: Test -r.
10055 * testsuite/Makefile.am (check_DATA): Add
10056 discard_locals_relocatable_test1.syms,
10057 discard_local_relocatable_test2.syms.
10058 (MOSTLYCLEANFILES): Likewise. Also add
10059 discard_locals_relocatable_test1.lout and
10060 discard_locals_relocatable_test2.out.
10061 (discard_locals_relocatable_test1.syms): New target.
10062 (discard_locals_relocatable_test.o): New target.
10063 (discard_locals_relocatable_test1.out): New target.
10064 (discard_locals_relocatable_test2.syms): New target.
10065 (discard_locals_relocatable_test2.out): New target.
10066 (various): Add missing ../ld-new dependencies.
10067 * testsuite/Makefile.in: Rebuild.
10068
7e8ccf26
NC
100692010-03-03 Nick Clifton <nickc@redhat.com>
10070
10071 * po/fi.po: New Finnish translation.
10072
2a0ff005
DK
100732010-03-01 Doug Kwan <dougkwan@google.com>
10074
10075 * layout.cc (Layout::Layout): Force section types of .init_array*,
10076 .preinit_array* and .fini_array* sections.
10077 * output.cc (Output_section::Input_section_sort_entry::has_priority):
10078 Fix check of return value of std::string::find.().
10079 (Output_section::Input_section_sort_compare::operator()): Remove
10080 comment about .init_array.
10081 (Output_section::Input_section_sort_init_fini_compare::operator()):
10082 New method.
10083 (Output_section::sort_attached_input_sections): Handle .init_array
10084 and .fini_array specially.
10085 * output.h (Output_section::Inut_section_sort_compare): Update
10086 comment.
10087 (Output_section::Input_section_sort_init_fini_compare): New struct.
10088
c3e4ae29
DK
100892010-02-26 Doug Kwan <dougkwan@google.com>
10090
10091 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
10092 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
10093 * testsuite/debug_msg.sh: Avoid matching source line number for
10094 use of global variable undef_int.
10095
2fd9ae7a
DK
100962010-02-26 Doug Kwan <dougkwan@google.com>
10097
10098 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
10099 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
10100 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
10101 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
10102 * options.cc (General_options::General_options): Initialize member
10103 fix_v4bx_.
10104 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
10105 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
10106 and rm_no_fix_v4bx.stdout
10107 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
10108 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
10109 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
10110 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
10111 and arm_no_fix_v4bx.
10112 * Makefile.in: Regenerate.
10113 * testsuite/arm_fix_v4bx.s: New file.
10114 * testsuite/arm_fix_v4bx.sh: Ditto.
10115
67ec7d0b
DK
101162010-02-24 Doug Kwan <dougkwan@google.com>
10117
10118 * arm.cc (Target_arm::got_section): Make the .got section the first
10119 non RELRO section in the data segment.
10120 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
10121 suffixes of section names.
10122
10165461
DK
101232010-02-24 Doug Kwan <dougkwan@google.com>
10124
10125 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
10126 flags and attributes merging if an input file is a binary file.
10127 * fileread.cc (Input_file::open): Record format of original file.
10128 * fileread.h (Input_file::Format): New enum type.
2e702c99 10129 (Input_file::Input_file): Initialize data member format_.
10165461
DK
10130 (Input_file::format): New method definition.
10131 (Input_file::format_):: New data member.
10132
4a54abbb
DK
101332010-02-24 Doug Kwan <dougkwan@google.com>
10134
10135 * arm.cc (Arm_output_data_got): New class.
10136 (ARM_TCB_SIZE): New constant
10137 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
10138 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
10139 If user uses a script with a SECTIONS clause, issue only a warning
10140 for a misplaced EXIDX input section. Otherwise, issue an error.
2e702c99 10141 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
4a54abbb
DK
10142 garbage collection.
10143 (Target_arm::got_mode_index_entry): Handle static linking.
10144 (Target_arm::Scan::local): Ditto.
10145 (Target_arm::Scan::global): Ditto.
10146 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
10147 all incorrectly implemented relocations.
e1df38aa 10148 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
10149 Arm_output_section::fix_exidx_coverage.
10150 * layout.cc (Layout::section_name_mapping): Remove trailing dots
10151 from ".ARM.exidx." and ".ARM.extab.".
10152
ca419a6f
ILT
101532010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10154
10155 * arm.cc (Target_arm::do_finalize_sections): Create attribute
10156 section if it does not already exist.
10157 * attributes.cc (Attributes_section_data::Attributes_section_data):
10158 Don't crash if size is zero.
10159
135b9c78
ILT
101602010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10161 Ian Lance Taylor <iant@google.com>
10162
10163 * gold.cc (queue_middle_tasks): If no input files were opened,
10164 exit.
10165 * workqueue.h (Task_function::Task_function): Assert that there is
10166 a blocker.
10167
bb0bfe4f
DK
101682010-02-22 Doug Kwan <dougkwan@google.com>
10169
10170 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
10171 * icf.cc (get_section_contents): Cast snprintf arguments to long long
10172 types to avoid warnings due to different uint64_t implementations
10173 on different hosts.
10174
2a2b6d42
DK
101752010-02-21 Doug Kwan <dougkwan@google.com>
10176
10177 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
10178 handling of the maximum backward branch offset.
2e702c99 10179 (Arm_relocate_functions::thumb_branch_common): Ditto.
2a2b6d42
DK
10180 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
10181 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 10182 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
10183 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
10184 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
10185 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
10186 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
10187 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
10188 thumb_bl_out_of_range thumb_bl_out_of_range.o,
10189 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
10190 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
10191 thumb2_bl_out_of_range.o): New rules.
10192 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
10193 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
10194 thumb2_bl_out_of_range
10195 * testsuite/Makefile.in: Regenerate.
10196 * testsuite/arm_bl_in_range.s: New file.
10197 * testsuite/arm_bl_out_of_range.s: Ditto.
10198 * testsuite/arm_branch_in_range.sh: Ditto.
10199 * testsuite/arm_branch_range.t: Ditto.
10200 * testsuite/thumb2_branch_range.t: Ditto.
10201 * testsuite/thumb_bl_in_range.s: Ditto.
10202 * testsuite/thumb_bl_out_of_range.s: Ditto.
10203 * testsuite/thumb_branch_range.t: Ditto.
10204
b487ad64
ST
102052010-02-20 Sriraman Tallam <tmsriram@google.com>
10206
10207 * gc.h (gc_process_relocs): Change vectors to point to the new list.
10208 Add reloc offset information.
10209 * icf.cc (get_section_contents): Change iterators to point to the new
10210 vectors. Add reloc offset information to the contents.
10211 * icf.h (Icf::Sections_reachable_info): New typedef.
10212 (Icf::Sections_reachable_list): New typedef.
10213 (Icf::Offset_info): New typedef.
10214 (Icf::Reloc_info): New struct typedef.
10215 (Icf::Reloc_info_list): New typedef.
10216 (Icf::symbol_reloc_list): Delete method.
10217 (Icf::addend_reloc_list): Delete method.
10218 (Icf::section_reloc_list): Delete method.
10219 (Icf::reloc_info_list): New method.
10220 (Icf::reloc_info_list_): New member.
10221
f96accdf
DK
102222010-02-19 Doug Kwan <dougkwan@google.com>
10223
10224 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
10225 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
10226 * arm.cc (Arm_relocation_functions): New forward declaration.
10227 (Target_arm::Target_arm): Initialize new data members
10228 got_mod_index_offset_ and tls_base_symbol_defined_.
10229 (Target_arm::Relocate::relocate_tls): New method.
10230 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
10231 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
10232 New methods.
2e702c99 10233 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
f96accdf
DK
10234 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
10235 (Target_arm::got_mod_index_offset_,
10236 Target_arm::tls_base_symbol_defined_): New data members.
10237 (Target_arm::Scan::local, Target::Scan::global,
10238 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
10239 relocations.
10240
c8761b9a
DK
102412010-02-18 Doug Kwan <dougkwan@google.com>
10242
10243 * arm.cc (Arm_relobj::find_linked_text_section): New method.
10244 (Arm_relobj::make_exidx_input_section): Pass section index of linked
10245 text section as a parameter becuase some broken tools may not set
10246 the link in section header.
10247 (Target_arm::has_got_section): New method.
10248 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
10249 without any mapping symbol as data only. Remove warning.
10250 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
10251 link in its section header, try to discover the link by inspecting the
10252 REL31 relocation at the beginning of the section.
10253 (Target_arm::Scan::check_non_pic): Report name of offending relocation
10254 in error message.
10255 (Target_arm::Scan::global): Treat any reference to the symbol
10256 _GLOBAL_OFFSET_TABLE_ as a GOT access.
10257
21bb3914
ST
102582010-02-12 Sriraman Tallam <tmsriram@google.com>
10259
10260 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
10261 (Scan::global_reloc_may_be_function_pointer): New function.
10262 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
10263 (Scan::global_reloc_may_be_function_pointer): New function.
10264 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
10265 (Scan::global_reloc_may_be_function_pointer): New function.
10266 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
10267 (Scan::global_reloc_may_be_function_pointer): New function.
10268 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
10269 (Scan::global_reloc_may_be_function_pointer): New function.
10270 (Scan::possible_function_pointer_reloc): New function.
10271 (Target_x86_64::can_check_for_function_pointers): New function.
10272 * gc.h (gc_process_relocs): Scan relocation types to determine if
10273 function pointers were taken for targets that support it.
10274 * icf.cc (Icf::find_identical_sections): Include functions for
10275 folding in safe ICF whose pointer is not taken.
10276 * icf.h (Secn_fptr_taken_set): New typedef.
10277 (fptr_section_id_): New member.
10278 (section_has_function_pointers): New function.
10279 (set_section_has_function_pointers): New function.
10280 (check_section_for_function_pointers): New function.
10281 * options.h: Fix comment for safe ICF option.
10282 * target.h (can_check_for_function_pointers): New function.
10283 * testsuite/Makefile.am: Add icf_safe_so_test test case.
10284 Modify icf_safe_test for X86-64.
10285 * testsuite/Makefile.in: Regenerate.
10286 * testsuite/icf_safe_so_test.cc: New file.
10287 * testsuite/icf_safe_so_test.sh: New file.
10288 * testsuite/icf_safe_test.cc (kept_func_3): New function.
10289 (main): Change to take pointer to function kept_func_3.
10290 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
10291 folding is done correctly for X86-64.
10292
0da6fa6c
DM
102932010-02-12 David S. Miller <davem@davemloft.net>
10294
10295 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
10296 is_symbolless parameter.
10297 (Output_reloc<SHT_REL>::is_symbolless): New.
10298 (Output_reloc<SHT_REL>::is_symbolless_): New.
10299 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
10300 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
10301 (Output_reloc<SHT_RELA>::is_symbolless): New.
10302 (Output_data_reloc::add_global): Handle is_symbolless.
10303 (Output_data_reloc::add_global_relative): Likewise.
10304 (Output_data_reloc::add_local): Likewise.
10305 (Output_data_reloc::add_local_relative): Likewise.
10306 (Output_data_reloc::add_symbolless_global_addend): New.
10307 (Output_data_reloc::add_symbolless_local_addend): New.
10308 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
10309 is_symbolless.
10310 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
10311 instead of ->is_relative_
10312 (Output_reloc::write): Likewise.
10313 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
10314 (Output_reloc::write_rel): Simplify.
10315
10316 * sparc.cc (Target_sparc::Scan::local): Use
10317 ->add_symbolless_local_addend as needed.
10318 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
10319 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
10320 based upon relocation offset.
10321
e4782e83
DK
103222010-02-11 Doug Kwan <dougkwan@google.com>
10323
10324 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
10325 (Target_arm::Scan::global): Ditto. Also remove a comment before the
10326 beginning of function.
10327 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
10328 and MOVT_ABS relocations. Those are non issued in scanning. Fix
10329 parameter is_32bit in calls to should_apply_static_reloc.
10330 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
10331 (check_DATA): Add arm_abs_global.stdout.
10332 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
10333 arm_abs_global.stdout): New rules.
10334 (MOSTLLYCLEANFILES): Add arm_abs_global
10335 * Makefile.in: Regenerate.
10336 * testsuite/arm_abs_global.s: New file.
10337 * testsuite/arm_abs_global.sh: Ditto.
10338 * testsuite/arm_abs_lib.s: Ditto.
10339
93ceb764
ILT
103402010-02-11 Ian Lance Taylor <iant@google.com>
10341
10342 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
10343 Read_relocs task.
10344 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
10345 Allocate_commons_task first.
10346 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
10347 task, rather than symtab_lock_.
10348 (Gc_process_relocs::~Gc_process_relocs): New function.
10349 (Gc_process_relocs::is_runnable): Check this_blocker_.
10350 (Gc_process_relocs::locks): Use next_blocker_ rather than
10351 blocker_.
10352 (Scan_relocs::~Scan_relocs): New function.
10353 (Scan_relocs::is_runnable): Check this_blocker_ rather than
10354 symtab_lock_.
10355 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
10356 next_blocker_.
10357 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
10358 fields. Add this_blocker_ and next_blocker_ fields. Adjust
10359 constructor accordingly.
10360 (class Gc_process_relocs): Likewise.
10361 (class Scan_relocs): Likewise.
10362 * common.h (class Allocate_commons_task): Remove symtab_lock_
10363 field, and corresponding constructor parameter.
10364 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
10365 symtab_lock_.
10366 (Allocate_commons_task::locks): Likewise.
10367
114dfbe1
ILT
103682010-02-11 Ian Lance Taylor <iant@google.com>
10369
10370 * gold-threads.h (class Once): Define.
10371 (class Initialize_lock): Rewrite as child of Once.
10372 * gold-threads.cc (class Once_initialize): Define.
10373 (once_pointer_control): New static variable.
10374 (once_pointer, once_arg): New static variables.
10375 (c_run_once): New static function.
10376 (Once::Once, Once::run_once, Once::internal_run): New functions.
10377 (class Initialize_lock_once): Remove.
10378 (initialize_lock_control): Remove.
10379 (initialize_lock_pointer): Remove.
10380 (initialize_lock_once): Remove.
10381 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
10382 (Initialize_lock::initialize): Rewrite.
10383 (Initialize_lock::do_run_once): New function.
10384 * archive.cc (Archive::interpret_header): Only clear name if it is
10385 not already empty.
10386 * fileread.cc: Include "gold-threads.h"
10387 (file_counts_lock): New static variable.
10388 (file_counts_initialize_lock): Likewise.
10389 (File_read::release): Only increment counts when using --stats.
10390 Use a lock around the increment.
10391 * parameters.cc (class Set_parameters_target_once): Define.
10392 (set_parameters_target_once): New static variable.
10393 (Parameters::Parameters): Move here from parameters.h.
10394 (Parameters::set_target): Rewrite.
10395 (Parameters::set_target_once): New function.
10396 (Parameters::clear_target): Move here and rewrite.
10397 * parameters.h (class Parameters): Update declarations. Add
10398 set_parameters_target_once_ field.
10399 (Parameters::Parameters): Move to parameters.cc.
10400 (Parameters::clear_target): Likewise.
10401 * readsyms.cc (Read_symbols::do_group): Create a Start_group
10402 task.
10403 (Start_group::~Start_group): New function.
10404 (Start_group::is_runnable): New function.
10405 (Start_group::locks, Start_group::run): New functions.
10406 (Finish_group::run): Change saw_undefined to size_t.
10407 * readsyms.h (class Start_group): Define.
10408 (class Finish_group): Change saw_undefined_ field to size_t.
10409 (Finish_group::Finish_group): Remove saw_undefined and
10410 this_blocker parameters. Change all callers.
10411 (Finish_group::set_saw_undefined): New function.
10412 (Finish_group::set_blocker): New function.
10413 * symtab.h (class Symbol_table): Change saw_undefined to return
10414 size_t. Change saw_undefined_ field to size_t.
10415 * target-select.cc (Set_target_once::do_run_once): New function.
10416 (Target_selector::Target_selector): Initialize set_target_once_
10417 field. Don't initialize lock_ and initialize_lock_ fields.
10418 (Target_selector::instantiate_target): Rewrite.
10419 (Target_selector::set_target): New function.
10420 * target-select.h (class Set_target_once): Define.
10421 (class Target_selector): Update declarations. Make
10422 Set_target_once a friend. Remove lock_ and initialize_lock_
10423 fields. Add set_target_once_ field.
10424
fa17a3f4
ILT
104252010-02-10 Ian Lance Taylor <iant@google.com>
10426
10427 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
10428 queueing any tasks.
10429 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
10430 (queue_middle_tasks): Add all blockers before queueing any tasks.
10431 (queue_final_tasks): Likewise.
10432 * token.h (Task_token::add_blockers): New function.
10433 * object.h (Input_objects::number_of_relobjs): New function.
10434
c7177d31
ILT
104352010-02-10 Ian Lance Taylor <iant@google.com>
10436
5de0e392
ILT
10437 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
10438 shared, not if not position independent.
10439 * x86_64.cc (Relocate::relocate_tls): Likewise.
10440 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
10441 (tls_pie_pic_test): New target.
10442 * testsuite/Makefile.in: Rebuild.
10443
c7177d31
ILT
10444 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
10445 (tls_test_main_pie.o, tls_test_pie.o): New targets.
10446 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
10447 * testsuite/Makefile.in: Rebuild.
10448
684b268a
DM
104492010-02-09 David S. Miller <davem@davemloft.net>
10450
10451 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
10452 R_SPARC_RELATIVE using ->add_local_relative().
10453 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
10454
612a8d3d
DM
10455 * output.h (Output_data_dynamic::add_section_size): New method
10456 that takes two Output_data objects.
10457 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
10458 entry param. Handle it in initializers.
10459 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
10460 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
10461 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
10462 arg.
10463 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
10464 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
10465 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
10466 for dynrel_includes_plt.
10467 * i386.cc (Target_i386::do_finalize_sections): Likewise.
10468 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
10469 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
10470 before .rela.plt
10471 (Target_sparc::do_finalize_sections): Update to pass true for
10472 dynrel_includes_plt.
10473 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
10474 output before .rela.plt
10475 (Target_powerpc::do_finalize_sections): Update to pass true for
10476 dynrel_includes_plt when 32-bit.
10477
cb1be87e
DK
104782010-02-08 Doug Kwan <dougkwan@google.com>
10479
10480 * arm.cc (Arm_relobj::simple_input_section_output_address): New
10481 method.
10482 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
10483 Arm_relobj::scan_section_for_cortex_a8_stubs,
10484 Arm_relobj::do_relocation_section): Instead of calling
10485 Output_section::output_address, use faster
10486 Arm_relobj::simple_input_section_output_address.
10487
705b5121
DM
104882010-02-08 David S. Miller <davem@davemloft.net>
10489
10490 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
10491 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
10492 relocation helper function.
10493
024c4466
DM
10494 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
10495 just like R_SPARC_GOT{10,13,22}.
10496 (Target_sparc::Scan::local): Likewise.
10497 (Target_sparc::Relocate:relocate): Likewise.
10498
9109c078
ILT
104992010-02-06 Ian Lance Taylor <iant@google.com>
10500
10501 * configure.ac: Rewrite targetobjs duplicate removal code to use
10502 only shell constructs.
10503 * configure: Rebuild.
10504
cf846138
DK
105052010-02-05 Doug Kwan <dougkwan@google.com>
10506
10507 PR 11247
10508 * arm.cc (Arm_relobj::section_is_scannable): New method.
10509 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
10510 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
10511
6cfaf60b
DK
105122010-02-04 Doug Kwan <dougkwan@google.com>
10513
10514 PR 11247
10515 * arm-reloc-property.cc (cstdio): Include.
10516 * configure.ac (targetobjs): Remove duplicates.
10517 * configure: Regenerate.
10518 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
10519 big and little endian version for a given address size.
10520
5c57f1be
DK
105212010-02-03 Doug Kwan <dougkwan@google.com>
10522
10523 * arm-reloc-property.cc
10524 (Arm_reloc_property_table::reloc_name_in_error_message): New method
10525 definition.
10526 * arm-reloc-property.h
10527 (Arm_reloc_property_table::get_implemented_static_reloc_property):
10528 New method definition.
10529 (Arm_reloc_property_table::reloc_name_in_error_message): New method
10530 declaration.
10531 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
10532 overflow to N.
10533 (GOT_PREL): Change implemented to Y.
10534 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
10535 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
10536 (Arm_relocate_functions::movw_abs_nc): Remove method.
10537 (Arm_relocate_functions::movt_abs): Ditto.
10538 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
10539 (Arm_relocate_functions::thm_movt_abs): Ditto.
10540 (Arm_relocate_functions::movw_rel_nc): Ditto.
10541 (Arm_relocate_functions::movw_rel): Ditto.
10542 (Arm_relocate_functions::movt_rel): Ditto.
10543 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
10544 (Arm_relocate_functions:thm_movw_rel): Ditto.
10545 (Arm_relocate_functions:thm_movt_rel): Ditto.
10546 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
10547 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
10548 New method definitions.
10549 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
10550 (Arm_relocation_functions::arm_grp_ldr): Ditto.
10551 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
10552 (Arm_relocation_functions::arm_grp_ldc): Ditto.
10553 (Target_arm::Relocate::relocate): Check for non-static or
10554 unimplemented relocation code and exit early. Change calls to
10555 Target_arm::reloc_uses_thumb_bit and
10556 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
10557 instead. Refactor code to handle similar relocations to increase
10558 code sharing. Remove check for unsupported relocation code in switch
10559 statement.
10560 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
10561 relocation property table to find out size. Change error message to
10562 print out the name of a relocation code instead of the numeric value.
10563 (Target_arm::scan_reloc_for_stub): Use relocation property table
10564 instead of calling Target_arm::reloc_uses_thumb_bit().
10565
218c5831
DK
105662010-02-02 Doug Kwan <dougkwan@google.com>
10567
10568 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
10569 types of relaxed input section.
10570
0d31c79d
DK
105712010-02-02 Doug Kwan <dougkwan@google.com>
10572
10573 * Makefile.am (HFILES): Add arm-reloc-property.h.
10574 (DEFFILES): New.
2e702c99
RM
10575 (TARGETSOURCES): Add arm-reloc-property.cc
10576 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
0d31c79d
DK
10577 (libgold_a_SOURCES): $(DEFFILES)
10578 * Makefile.in: Regenerate.
10579 * arm-reloc-property.cc: New file.
10580 * arm-reloc-property.h: New file.
10581 * arm-reloc.def: New file.
10582 * arm.cc: Update comments.
10583 (arm-reloc-property.h): New included header.
10584 (arm_reloc_property_table): New global variable.
10585 (Target_arm::do_select_as_default_target): New method definition.
10586 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
10587 arm-reloc-property to targ_extra_obj.
10588 * parameters.cc (set_parameters_target): Call
10589 Target::select_as_default_target().
10590 * target.h (Target::select_as_default_target): New method definition.
10591 (Target::do_select_as_default_target): Same.
10592
546c7457
DK
105932010-02-01 Doug Kwan <dougkwan@google.com>
10594
10595 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
10596 first_output_text_section_.
10597 (Arm_exidx_fixup::first_output_text_section): New method definition.
10598 (Arm_exidx_fixup::first_output_text_section_): New data member.
10599 (Arm_exidx_fixup::process_exidx_section): Record the first text
10600 output section seen.
10601 (Arm_output_section::fix_exidx_coverage): Set correct linked section
10602 and entsize in output section header.
10603
11b861d5
DK
106042010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10605
10606 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
10607 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
10608 (Arm_relocate_functions::thm_alu11): New Method.
10609 (Arm_relocate_functions::thm_pc8): New Method.
10610 (Arm_relocate_functions::thm_pc12): New Method.
10611 (Target_arm::Scan::local): Handle the relocations.
10612 (Target_arm::Scan::global): Likewise.
10613 (Target_arm::Relocate::relocate): Likewise.
10614 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
10615
c9a2c125
DK
106162010-01-29 Doug Kwan <dougkwan@google.com>
10617
10618 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
10619 of relocation types as ld.
10620
1521477a
DK
106212010-01-29 Doug Kwan <dougkwan@google.com>
10622
10623 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
10624 to public.
10625 (Arm_relocate_functions::thumb_branch_common): Ditto.
10626 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
10627 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
10628 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
10629 Arm_relocate_functions::jump24): Remove.
10630 (Target_arm::Relocate::relocate): Adjust code to call
10631 Arm_relocation_functions::arm_branch_common and
10632 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 10633 wrappers. Merge switch-cases together to reduce source code size.
1521477a 10634
e7eca48c
DK
106352010-01-29 Doug Kwan <dougkwan@google.com>
10636
10637 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
10638 output_local_symbol_count_needs_update_.
10639 (Arm_relobj::output_local_symbol_count_needs_update,
10640 Arm_relobj::set_output_local_symbol_count_needs_update,
10641 Arm_relobj::update_output_local_symbol_count): New methods.
10642 (Arm_relobj::output_local_symbol_count_needs_update_): New data
10643 member.
10644 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
10645 of pointed function as in a R_ARM_PREL31 relocation.
10646 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
10647 for output local symbol count updating.
10648 (Target_arm::do_relax): Update output local symbol counts in objects
10649 if necessary.
10650 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
10651
02961d7e
ILT
106522010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10653
10654 * arm.cc: Added support for the ARM relocations:
10655 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
10656 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
10657 (Arm_relocate_functions::movw_rel_nc): Renamed (was
10658 movw_prel_nc).
10659 (Arm_relocate_functions::movw_rel): New method.
10660 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
10661 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
10662 thm_movw_prel_nc).
10663 (Arm_relocate_functions::thm_movw_rel): New method.
10664 (Arm_relocate_functions::thm_movt_rel): Renamed (was
10665 thm_movt_prel).
10666 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
10667 relocations.
10668 (Target_arm::Scan::global): Likewise.
10669 (Target_arm::Relocate::relocate): Likewise.
10670 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10671 Likewise.
10672
b10d2873
ILT
106732010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10674
10675 * arm.cc: Added support for ARM group relocations.
10676 (Target_arm::reloc_needs_sym_origin): New method.
10677 (Arm_relocate_functions::calc_grp_kn): New method.
10678 (Arm_relocate_functions::calc_grp_residual): New method.
10679 (Arm_relocate_functions::calc_grp_gn): New method.
10680 (Arm_relocate_functions::arm_grp_alu): New Method.
10681 (Arm_relocate_functions::arm_grp_ldr): New Method.
10682 (Arm_relocate_functions::arm_grp_ldrs): New Method.
10683 (Arm_relocate_functions::arm_grp_ldc): New Method.
10684 (Target_arm::Scan::local): Handle the ARM group relocations.
10685 (Target_arm::Scan::global): Likewise.
10686 (Target_arm::Relocate::relocate): Likewise.
10687 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10688 Likewise.
10689
2b328d4e
DK
106902010-01-26 Doug Kwan <dougkwan@google.com>
10691
10692 * arm.cc (set): Include.
10693 (class Arm_exidx_fixup): Change type of last_input_section_ to const
10694 pointer type.
2e702c99 10695 (Arm_output_section::Text_section_list): New type.
2b328d4e
DK
10696 (Arm_output_section::append_text_sections_to_list): New method.
10697 (Arm_output_section::fix_exidx_coverage): Ditto.
10698 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
2e702c99 10699 (Arm_relobj::convert_input_section_to_relaxed_section): Use
2b328d4e
DK
10700 Relobj::set_section_offset() instead of
10701 Sized_relobj::invalidate_section_offset().
2e702c99 10702 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
2b328d4e
DK
10703 parameter for section headers. Ignore relocation sections for
10704 unallocated sections and EXIDX sections.
10705 (Target_arm::fix_exidx_coverage): New method.
10706 (Target_arm::output_section_address_less_than): New type.
10707 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
10708 linked text section instead of the EXIDX section.
10709 (Arm_output_section::create_stub_group): Add an assertion to check
10710 that this is not an EXIDX output section.
10711 (Arm_output_section::append_text_sections_to_list): New method.
10712 (Arm_output_section::fix_exidx_coverage): Ditto.
10713 (Arm_relobj::scan_sections_for_stubs): Adjust call to
2e702c99 10714 Arm_relobj::section_needs_reloc_stub_scanning.
2b328d4e
DK
10715 (Target_arm::do_relax): Fix EXIDX output section coverage in the
10716 first pass.
10717 (Target_arm::fix_exidx_coverage): New method.
10718 * object.h (Relobj::set_output_section): New method.
10719 (Sized_relobj::invalidate_section_offset): Remove method.
10720 (Sized_relobj::do_invalidate_section_offset): Remove method.
10721 (Sized_relobj::do_set_section_offset): Handle offset value -1.
10722
c7f3c371
DK
107232010-01-25 Doug Kwan <dougkwan@google.com>
10724
10725 * arm.cc (Arm_exidx_merged_section::do_output_offset):
10726 Fix warning due to signed and unsigned comparison on a 32-bit host.
10727
8923b24c
DK
107282010-01-22 Doug Kwan <dougkwan@google.com>
10729
10730 * arm.cc (Target_arm::do_relax): Record an output section for section
10731 offset adjustment it contains any stub table that has changed.
10732 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
10733 offsets in an output section if necessary.
10734 * output.cc (Output_section::Output_section): Initialize
10735 section_offsets_need_adjustments_.
10736 (Output_section::add_input_section_for_script): Renamed to
10737 Output_section::add_simple_input_section.
10738 (Output_section::save_states): Add a comment.
10739 (Output_section::discard_states): New method defintion.
10740 (Output_section::adjust_section_offsets): Same.
10741 * output.h (Output_section::add_input_section_for_script): Renamed to
10742 Output_section::add_simple_input_section.
10743 (Output_section::discard_states): New method declaration.
10744 (Output_section::adjust_section_offsets): Same.
10745 (Output_section::section_offsets_need_adjustment,
10746 Output_section::set_section_offsets_need_adjustment): New method
10747 definitions.
10748 (Output_section::section_offsets_need_adjustment_): New data member.
10749 * script-sections.cc
10750 (Output_section_element_input::set_section_address): Adjust code for
10751 renaming of Output_section::add_input_section_for_script.
10752 (Orphan_output_section::set_section_address): Same.
10753
9b2fd367
DK
107542010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10755
10756 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
10757 Fix_v4bx enum values .
10758 * gold/options.h (General_options): New option definitions.
10759 (General_options::fix_v4bx): New method.
10760 (General_options::Fix_v4bx): New enum.
10761 * gold/options.cc (General_options::parse_fix_v4bx): New method.
10762 (General_options::parse_fix_v4bx_interworking): New method.
10763
80d0d023
DK
107642010-01-22 Doug Kwan <dougkwan@google.com>
10765
10766 * arm.cc (Arm_exidx_fixup): New class.
10767
af2cdeae
DK
107682010-01-21 Doug Kwan <dougkwan@google.com>
10769
10770 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
10771 classes.
10772 (Arm_exidx_section_offset_map): New type.
10773
993d07c1
DK
107742010-01-21 Doug Kwan <dougkwan@google.com>
10775
10776 * arm.cc (Arm_exidx_input_section): New class.
10777 (Arm_relobj::exidx_input_section_by_link,
10778 Arm_relobj::exidx_input_section_by_shndx,
10779 Arm_relobj::make_exidx_input_section): New methods.
10780 (read_arm_attributes_section): Remove.
10781 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
10782 information about them.
10783 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
10784 to here.
10785
5ac169d4
DK
107862010-01-20 Doug Kwan <dougkwan@google.com>
10787
10788 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
10789 Input_section_specifier to Section_id.
10790 (Target_arm::new_arm_input_section: Adjust code for change of key
10791 type.
10792 (Target_arm::find_arm_input_section): Ditto.
10793 * gc.h (object.h): Include for Section_id nand Section_id_hash.
10794 (Section_id): Remove.
10795 (Garbage_collection::Section_id_hash): Remove.
10796 * icf.h (object.h): Include for Section_id nand Section_id_hash.
10797 (Section_id): Remove.
10798 (Icf::Section_id_hash): Remove.
10799 * object.h (Section_id, Const_section_id, Section_id_hash,
10800 Const_section_id_hash): New type definitions.
10801 * output.cc (Output_section::add_relaxed_input_section): Change to
10802 use Const_section_id instead of Input_section_specifier as key type.
10803 (Output_section::add_merge_input_section): Ditto.
10804 (Output_section::build_relaxation_map): Change to use Section_id
10805 instead of Input_section_specifier as key type.
2e702c99 10806 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5ac169d4
DK
10807 Ditto.
10808 (Output_section::convert_input_sections_to_relaxed_sections): Change
10809 to use Const_section_id instead of Input_section_specifier as key type.
2e702c99 10810 (Output_section::find_merge_section): Ditto.
5ac169d4
DK
10811 (Output_section::find_relaxed_input_section): Ditto.
10812 * output.h (Input_section_specifier): Remove class.
10813 (Output_section::Output_section_data_by_input_section_map): Change
10814 key type to Const_section_id.
10815 (Output_section::Output_relaxed_input_section_by_input_section_map):
10816 Ditto.
10817 (Output_section::Relaxation_map): Change key type to Section_id.
10818
a2162063
ILT
108192010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10820
10821 * gold/arm.cc: Added support for R_ARM_V4BX relocation
10822 (class Arm_v4bx_stub): New class.
10823 (DEF_STUBS): Updated definition to support v4_veneer_bx.
10824 (Stub_factory::make_arm_v4bx_stub): New method.
10825 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
10826 (Stub_table::empty): Handle v4bx stubs.
10827 (Stub_table::add_arm_v4bx_stub): New method.
10828 (Stub_table::find_arm_v4bx_stub): New method.
10829 (Arm_relocate_functions::v4bx): New method.
10830 (Target_arm::fix_v4bx): New method.
10831 (Target_arm::Target_arm): Handle R_ARM_V4BX.
10832 (Stub_table::relocate_stubs): Likewise.
10833 (Stub_table::do_write): Likewise.
10834 (Stub_table::update_data_size_and_addralign): Likewise.
10835 (Stub_table::finalize_stubs): Likewise.
10836 (Target_arm::Scan::local): Likewise.
10837 (Target_arm::Scan::global): Likewise.
10838 (Target_arm::do_finalize_sections): Likewise.
10839 (Target_arm::Relocate::relocate): Likewise.
10840 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10841 Likewise.
10842 (Target_arm::scan_reloc_for_stub): Likewise.
10843 (Target_arm::scan_reloc_section_for_stubs): Likewise.
10844
5696ab0b
ILT
108452010-01-19 Ian Lance Taylor <iant@google.com>
10846
10847 * output.cc (Output_section_headers::do_sized_write): Write large
10848 segment count to sh_info field.
10849 (Output_file_header::do_sized_write): For large segment count,
10850 write PN_XNUM to e_phnum field.
10851
800d0f56
ILT
108522010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
10853
10854 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
10855 (Arm_relocate_functions::thm_jump8): New function.
10856 (Arm_relocate_functions::thm_jump11): New function.
10857 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
10858 R_ARM_THM_JUMP11.
10859 (Target_arm::Scan::global): Likewise.
10860 (Target_arm::Relocate::relocate): Likewise.
10861 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10862 Likewise.
10863
41263c05
DK
108642010-01-14 Doug Kwan <dougkwan@google.com>
10865
10866 * arm.cc (map, utility): Include headers.
10867 (Target_arm::apply_cortex_a8_workaround): New method.
10868 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
10869 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
10870 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
10871 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
10872 the --[no-]fix-cortex-a8 command line options.
10873 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
10874 (Target_arm::relocate_stub): Use addend in instruction template.
10875 * options.h (DEFINE_bool): Set the user-set flag.
10876 (General_options): Add --[no-]-fix-cortex options.
10877 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 10878 : Update fast look-up map after conversion.
41263c05 10879
459e9b03
ST
108802010-01-14 Sriraman Tallam <tmsriram@google.com>
10881
10882 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
10883 in the first pass of do_layout.
10884
b521dfe4
DK
108852010-01-13 Doug Kwan <dougkwan@google.com>
10886
10887 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
10888 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
10889 apparent compiler problem of not folding static constant integral
10890 data members of elfcpp::Elf_sizes<32>.
10891
44272192
DK
108922010-01-13 Doug Kwan <dougkwan@google.com>
10893
10894 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
10895 Arm_relobj::section_needs_cortex_a8_stub_scanning,
10896 Arm_relobj::scan_section_for_cortex_a8_erratum,
10897 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
10898 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
10899 sections to scan for relocation stubs into a new method
10900 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
10901 relocation and Cortex-A8 stub scanning.
10902 (Target_arm::do_relax): Force stubs to be after stubbed sections
10903 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 10904 the beginning of a new relaxation pass. Update a comment.
44272192
DK
10905 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
10906
44b71ece
ILT
109072010-01-12 Ian Lance Taylor <iant@google.com>
10908
10909 * target-reloc.h (visibility_error): New inline function.
10910 (relocate_section): Call visibility_error.
10911 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
10912 (MOSTLYCLEANFILES): Likewise.
10913 (protected_4_pic.o, protected_3.err): New targets.
10914 * testsuite/protected_4.cc: New file.
10915
a120bc7f
DK
109162010-01-12 Doug Kwan <dougkwan@google.com>
10917
10918 * arm.cc (Cortex_a8_reloc): New class.
10919 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
10920 and cortex_a8_relocs_info_.
10921 (Target_arm::fix_cortex_a8): New method definition.
10922 (Target_arm::Cortex_a8_relocs_info): New type.
10923 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
10924 New data member declarations.
10925 (Target_arm::scan_reloc_for_stub): Record information about
10926 relocations for THUMB branches that might be exempted from the
10927 Cortex-A8 workaround.
10928 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
10929 at the beginning of a relaxation pass.
10930
20138696
DK
109312010-01-12 Doug Kwan <dougkwan@google.com>
10932
10933 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
10934 (Arm_relobj::Mapping_symbol_position,
10935 Arm_reloj::Mapping_symbol_position_less,
10936 Arm_relobj::Mapping_symbols_info): New types.
10937 (Target_arm::is_mapping_symbol_name): New method definition.
10938 (Arm_relobj::do_count_local_symbols): Save information about mapping
10939 symbols.
10940
089d69dc
DK
109412010-01-11 Doug Kwan <dougkwan@google.com>
10942
10943 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
10944 Arm_relocate_functions::thumb32_branch_upper,
10945 Arm_relocate_functions::thumb32_branch_lower,
10946 Arm_relocate_functions::thumb32_cond_branch_offset,
10947 Arm_relocate_functions::thumb32_cond_branch_upper,
10948 Arm_relocate_functions::thumb32_cond_branch_lower,
10949 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
10950 branch offset encoding.
10951 (Arm_relocate_functions::thumb_branch_common): Use new branch
10952 offset encoding methods to avoid code duplication.
10953 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
10954 (Stub_addend_reader::operator()): Use new branch encoding method
10955 to avoid code duplication.
10956
99e5bff2
DK
109572010-01-11 Doug Kwan <dougkwan@google.com>
10958
10959 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
10960 (Target_arm::do_finalize_sections): Define special EXIDX section
10961 symbols only if referenced.
10962 * gc.h (Garbage_collection::add_reference): New method.
10963 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
10964 code duplication.
10965
98e090bd
ILT
109662010-01-11 Ian Lance Taylor <iant@google.com>
10967
d0a91bd8
ILT
10968 * script.cc (Version_script_info::build_expression_list_lookup):
10969 Change complaing about duplicate wildcard match from error to
10970 warning.
10971
98e090bd
ILT
10972 * script.cc (class Lazy_demangler): Recreate--revert part of patch
10973 of 2009-12-30.
10974 (Version_script_info::Version_script_info): Initialize globs_,
10975 default_version_, default_is_global_, and exact_. Don't
10976 initialize globals_ or locals_.
10977 (Version_script_info::build_lookup_tables): Build local symbols
10978 first.
10979 (Version_script_info::unquote): New function.
10980 (Version_script_info::add_exact_match): New function.
10981 (Version_script_info::build_expression_list_lookup): Remove lookup
10982 parameter. Add is_global parameter. Change all callers. Handle
10983 wildcard pattern specially. Unquote pattern. Call
10984 add_exact_match.
10985 (Version_script_info::get_name_to_match): New function.
10986 (Version_script_info::get_symbol_version): New function.
10987 (Version_script_info::get_symbol_version_helper): Remove.
10988 (Version_script_info::check_unmatched_names): Call unquote.
10989 * script.h (class Version_script_info): Change get_symbol_version
10990 to be non-inline and add is_global parameter; change all callers.
10991 Rewrite symbol_is_local. Update declarations. Define struct
10992 Version_tree_match, Exact, Globs. Don't define struct Lookup.
10993 Remove globals_ and locals_ members. Add exact_, globs_,
10994 default_version_, is_global_.
10995 (Version_script_info::Glob): Remove pattern, add expression and
10996 is_global. Update constructor. Change all callers.
10997 * dynobj.cc (Versions::finalize): Mark the version symbol as the
10998 default version.
10999 (Versions::symbol_section_contents): If a symbol is undefined, or
11000 defined in a dynamic object, set the version index to
11001 VER_NDX_LOCAL.
11002 * symtab.cc (Symbol_table::add_from_relobj): Don't call
11003 symbol_is_local.
11004 (Symbol_table::add_from_pluginobj): Likewise.
11005 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
11006
d56962d3
DK
110072010-01-11 Doug Kwan <dougkwan@google.com>
11008
11009 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
11010 (incremental_dump_LDADD): Add linking option for libintl.
11011 * Makefile.in: Regenerate.
11012
94e6ee91
L
110132010-01-11 H.J. Lu <hongjiu.lu@intel.com>
11014
11015 PR gold/11144
11016 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
11017 instead of -Ds.
11018 * testsuite/Makefile.in: Regenerated.
11019
e96c574b
DK
110202010-01-10 Doug Kwan <dougkwan@google.com>
11021
11022 * options.h (DEFINE_var): Use parentheses around argument varname__
11023 in macro body to avoid any unintended subsequent substitutions.
11024
7198066b
ILT
110252010-01-10 Ian Lance Taylor <iant@google.com>
11026
ba4d53bf
ILT
11027 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
11028 candidates before doing symbol resolution.
11029
7198066b
ILT
11030 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
11031 ODR candidates if only one is weak.
11032
a2beed37
ILT
110332010-01-08 Ian Lance Taylor <iant@google.com>
11034
11035 * script.cc (Version_script_info::build_expression_list_lookup):
11036 Don't warn about ambiguous version, just record the ambiguity.
11037 (Version_script_info::get_symbol_version_helper): Give error if
11038 version is ambiguous.
11039
2fb7225c
DK
110402010-01-08 Doug Kwan <dougkwan@google.com>
11041
11042 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
703d02da
AM
11043 prev_data_size_ and prev_addralign_. Remove initializer for
11044 deleted data member has_been_changed_.
11045 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
11046 to determine if the table is empty.
11047 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
11048 Remove.
11049 (Stub_table::add_reloc_stub): Define method in class definition
11050 instead of just declaring it there.
11051 (Stub_table::add_cortex_a8_stub): New method definition.
11052 (Stub_table::update_data_size_and_addralign): Ditto.
11053 (Stub_table::finalize_stubs): Ditto.
11054 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
11055 (Stub_table::do_addralign_): Return address alignment in the
11056 (Stub_table::do_reset_address_and_file_offset): Define method in
11057 class definition instead of declaring it there. Set current data
11058 size to be the data size of the previous pass.
11059 (Stub_table::set_final_data_size): Use current data size as the
11060 final data size.
11061 (Stub_table::relocate_stub): Change parameter type of stub from
11062 Reloc_stub pointer to Stub pointer.
11063 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
11064 (Stub_table::Cortex_a8_stub_list): New typedef.
11065 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
11066 Stub_table::prev_addralign_): New data member.
11067 (Arm_relobj::Arm_relobj): Initialize data member
11068 section_has_cortex_a8_workaround_.
11069 (Arm_relobj::section_has_cortex_a8_workaround,
11070 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
11071 definitions.
11072 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
11073 declarations.
11074 (Target_arm::relocate_stub): Change parameter type of stub from
11075 Reloc_stub pointer to Stub pointer.
11076 (Insn_template::size, Insn_template::alignment): Handle
11077 THUMB16_SPECIAL_TYPE.
11078 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
11079 Stub_table::update_data_size_and_addralign,
11080 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
11081 definitions.
11082 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
11083 (Stub_table::do_write): Ditto.
11084 (Target_arm::do_relax): Adjust code for changes in Stub_table.
2fb7225c 11085
880cd20d
ILT
110862010-01-08 Ian Lance Taylor <iant@google.com>
11087
11088 PR 11108
11089 * symtab.h (class Symbol): Remove fields is_target_special_ and
11090 has_plt_offset_. Add field is_defined_in_discarded_section_.
11091 (Symbol::is_defined_in_discarded_section): New function.
11092 (Symbol::set_is_defined_in_discarded_section): New function.
11093 (Symbol::has_plt_offset): Rewrite.
11094 (Symbol::set_plt_offset): Verify that new offset is not -1U.
11095 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
11096 Don't initialize is_target_special_ or has_plt_offset_.
11097 Initialize is_defined_in_discarded_section_.
11098 (Symbol_table::add_from_relobj): If appropriate, set
11099 is_defined_in_discarded_section.
11100 * resolve.cc (Symbol::override_base_with_special): Don't test
11101 is_target_special_. Change has_plt_offset_ to has_plt_offset().
11102 * target-reloc.h (relocate_section): Do special handling for
11103 symbols defined in discarded sections for global symbols as well
11104 as local symbols.
11105
2703e3eb
ILT
111062010-01-08 Ian Lance Taylor <iant@google.com>
11107
11108 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
11109 the SHT_SYMTAB case.
11110
339d40a3
ILT
111112010-01-08 Ian Lance Taylor <iant@google.com>
11112
11113 * object.cc (Sized_relobj::do_layout): Don't get confused if
11114 layout_eh_frame returns NULL.
11115
abecea76
ILT
111162010-01-08 Ian Lance Taylor <iant@google.com>
11117
11118 PR 11084
11119 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
11120 dynamic symbol table, use the normal symbol table.
11121 (Sized_dynobj::do_read_symbols): Remove assertion about type of
11122 symbol table.
11123
6b7dd3f3
ILT
111242010-01-08 Ian Lance Taylor <iant@google.com>
11125
11126 PR 11072
11127 * layout.cc (Layout::include_section): Remove .gnu_debuglink
11128 sections.
11129
36c50e63
L
111302010-01-08 H.J. Lu <hongjiu.lu@intel.com>
11131
11132 * version.cc (print_version): Change to "Copyright 2010".
11133
e291e7b9
ILT
111342010-01-08 Ian Lance Taylor <iant@google.com>
11135
11136 PR 10287
11137 PR 11063
11138 * i386.cc (class Target_i386): Change return type of plt_section
11139 to be non-const.
11140 (class Output_data_plt_i386): Add tls_desc_rel_ field.
11141 (Output_data_plt_i386::Output_data_plt_i386): Initialize
11142 tls_desc_rel_ field.
11143 (Output_data_plt_i386::rel_tls_desc): New function.
11144 (Target_i386::rel_tls_desc_section): New function.
11145 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
11146 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
11147 R_386_TLS_DESC reloc in rel_tls_desc_section.
11148 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
11149 Define struct Tlsdesc_info.
11150 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
11151 (Target_x86_64::do_reloc_symbol_index): New function.
11152 (Target_x86_64::add_tlsdesc_info): New function.
11153 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
11154 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
11155 tlsdesc_rel_ field.
11156 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
11157 all callers.
11158 (Output_data_plt_x86_64::rela_tlsdesc): New function.
11159 (Target_x86_64::rela_tlsdesc_section): New function.
11160 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
11161 handling.
11162 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
11163 (Target_x86_64::do_reloc_addend): New function.
11164 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
11165 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
11166 declarations. Define TARGET_CODE. Add arg field to u1_ union.
11167 (Output_reloc::type): New function.
11168 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
11169 (Output_reloc::is_target_specific): New function.
11170 (Output_reloc::target_arg): New function.
11171 (class Output_reloc) [SHT_RELA]: Add four new constructors for
11172 absolute relocs and target specific relocs.
11173 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
11174 add_target_specific.
11175 (class Output_data_reloc) [SHT_RELA]: Likewise.
11176 * output.cc (Output_reloc::Output_reloc): Add four new versions
11177 for absolute relocs and target specific relocs.
11178 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
11179 (Output_reloc::get_symbol_index): Likewise.
11180 (Output_reloc::local_section_offset): Check that local_sym_index_
11181 is not TARGET_CODE or 0.
11182 (Output_reloc::symbol_value): Likewise.
11183 (Output_reloc::write) [SHT_RELA]: Call target for target specific
11184 reloc.
11185 * target.h (class Target): Add reloc_symbol_index and reloc_addend
11186 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
11187 functions.
11188 * layout.cc (add_target_dynamic_tags): Use output section for
11189 DT_PLTRELSZ and DT_JMPREL.
11190
3a44184e
ILT
111912010-01-07 Ian Lance Taylor <iant@google.com>
11192
11193 PR 11061
11194 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
11195 function.
11196 (class Output_data_reloc_generic): Define.
11197 (class Output_data_reloc_base): Change base class to
11198 Output_data_reloc_generic. Change add() method to call
11199 bump_relative_reloc_count for a relative reloc. Remove
11200 sort_relocs_ field.
11201 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
11202 to sort_relocs().
11203 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
11204 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
11205 appropriate.
11206 * layout.h (class Layout): Update declaration.
11207
ea715a34
ILT
112082010-01-07 Ian Lance Taylor <iant@google.com>
11209
11210 * output.h (class Output_data): Add const version of
11211 output_section and do_output_section.
11212 (class Output_section_data): Add const version of
11213 do_output_section.
11214 (class Output_section): Likewise.
11215 * layout.cc (Layout::add_target_dynamic_tags): New function.
11216 * layout.h (class Layout): Update declarations.
11217 * arm.cc (Target_arm::do_finalize_sections): Use
11218 add_target_dynamic_tags.
11219 * i386.cc (Target_i386::do_finalize_sections): Likewise.
11220 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
11221 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
11222 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
11223
659948a4
ILT
112242010-01-07 Ian Lance Taylor <iant@google.com>
11225
11226 PR 11042
11227 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
11228 object as needed.
11229
9d3b86f6
ILT
112302010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
11231 Ian Lance Taylor <iant@google.com>
11232
11233 PR 11019
11234 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
11235 Xindex::read_symtab_xindex.
11236
bb0d3eb0
DK
112372010-01-07 Doug Kwan <dougkwan@google.com>
11238
11239 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
11240 (Insn_template::thumb16_bcond_insn): New method declaration.
11241 (Insn_template): Fix spelling.
11242 (Stub::thumb16_special): New method declaration.
11243 (Stub::do_write): Define virtual method which was previously pure
11244 virtual.
11245 (Stub::do_thumb16_special): New method declaration.
11246 (Stub::do_fixed_endian_write): New template member.
11247 (Reloc_stub::do_write): Remove.
11248 (Reloc_stub::do_fixed_endian_write): Remove.
11249 (Cortex_a8_stub): New class definition.
11250 (Stub_factory::make_cortex_a8_stub): New method definition.
11251 (Stub_factory::Stub_factory): Add missing static storage class
11252 qualifier for elf32_arm_stub_a8_veneer_blx.
11253
ffeef7df
ILT
112542010-01-07 Ian Lance Taylor <iant@google.com>
11255
dc3f80fe
ILT
11256 PR 10980
11257 * options.h (class General_options): Add --warn-unresolved-symbols
11258 and --error-unresolved-symbols.
11259 * errors.cc (Errors::undefined_symbol): Implement
11260 --warn-unresolved-symbols.
11261
ffeef7df
ILT
11262 * options.h (class General_options): Add -z text and -z textoff.
11263 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
11264
f1ec9ded
ST
112652010-01-06 Sriraman Tallam <tmsriram@google.com>
11266
11267 * gc.h (Garbage_collection::Cident_section_map): New typedef.
11268 (Garbage_collection::cident_sections): New function.
11269 (Garbage_collection::add_cident_section): New function.
11270 (Garbage_collection::cident_sections_): New member.
11271 (gc_process_relocs): Add references to sections whose names are C
11272 identifiers.
11273 * gold.h (cident_section_start_prefix): New constant.
11274 (cident_section_stop_prefix): New constant.
11275 (is_cident): New function.
11276 * layout.cc (Layout::define_section_symbols): Replace string constants
11277 with the newly defined constants.
11278 * object.cc (Sized_relobj::do_layout): Track sections whose names are
11279 C identifiers.
11280 * testsuite/Makefile.am: Add gc_orphan_section_test.
11281 * testsuite/Makefile.in: Regenerate.
11282 * testsuite/gc_orphan_section_test.cc: New file.
11283 * testsuite/gc_orphan_section_test.sh: New file.
11284
6eda8c29
ILT
112852010-01-06 Ian Lance Taylor <iant@google.com>
11286
b9674e17
ILT
11287 PR 10980
11288 * options.h (class General_options): Add --warn-shared-textrel.
11289 * layout.cc (Layout::finish_dynamic_section): Implement
11290 --warn-shared-textrel.
11291
6eda8c29
ILT
11292 PR 10980
11293 * options.h (class General_options): Add --warn-multiple-gp.
11294
32dcd44e
ILT
112952010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
11296
11297 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
11298 $(THREADSLIB) and $(LIBDL).
11299 * Makefile.in: Rebuild.
11300
a192ba05
ILT
113012010-01-06 Ian Lance Taylor <iant@google.com>
11302
11303 PR 10980
11304 * options.cc (General_options::parse_section_start): New function.
11305 (General_options::section_start): New function.
11306 (General_options::General_options): Initialize all members.
11307 * options.h: Include <map>
11308 (class General_options): Add --section-start. Add section_starts_
11309 member.
11310 * layout.cc (Layout::attach_allocated_section_to_segment): If
11311 --section-start was used, set the address of the segment. Remove
11312 local sort_sections.
11313 (Layout::relaxation_loop_body): If the address of the load segment
11314 has been set by --section-start, don't use it.
11315 * output.h (Output_segment::update_flags_for_output_section): New
11316 function.
11317 * output.cc (Output_segment::add_output_section): Call
11318 update_flags_for_output_section.
11319
dde3f402
ILT
113202010-01-05 Ian Lance Taylor <iant@google.com>
11321
62dfdd4d
ILT
11322 PR 10980
11323 * options.h (class General_options): Add --undefined-version.
11324 * script.cc (struct Version_expression): Add was_matched_by_symbol
11325 field.
11326 (Version_script_info::matched_symbol): New function.
11327 (Version_script_info::get_symbol_version_helper): Call
11328 matched_symbol.
11329 (Version_script_info::check_unmatched_names): New function.
11330 * script.h (class Version_script_info): Update declarations.
11331 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
11332
9c4ae156
ILT
11333 * options.h (class General_options): Use DEFINE_bool_alias for
11334 allow_multiple_definition.
11335 * resolve.cc (Symbol_table::should_override): Don't test
11336 allow_multiple_definition.
11337
dde3f402
ILT
11338 PR 10980
11339 * options.h (class General_options): Add --cref.
11340 * main.cc (main): Print cref table if --cref. Don't close mapfile
11341 until after printing cref table.
11342 * cref.cc: Include "symtab.h".
11343 (class Cref_inputs): Define Cref_table_compare and Cref_table.
11344 (Cref_table_compare::operator()): New function.
11345 (Cref_inputs::gather_cref): New function.
11346 (filecol): New static const.
11347 (Cref_inputs::print_cref): New function.
11348 (Cref::print_cref): New function.
11349 * cref.h: Include <cstdio>.
11350 (class Cref): Update declarations.
11351 * mapfile.h (Mapfile::file): New function.
11352 * object.h (class Object): Define Symbols. Declare virtual
11353 do_get_global_symbols.
11354 (Object::get_global_symbols): New function.
11355 * object.cc (Input_objects::add_object): Pass object to cref_ if
11356 --cref.
11357 (Input_objects::archive_start): Likewise.
11358 (Input_objects::archive_stop): Likewise.
11359 (Input_objects::print_cref): New function.
11360 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
11361 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
11362 --cref.
11363 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
11364 function.
11365 * plugin.h (class Sized_pluginobj): Update declarations.
11366
8781f709
ILT
113672010-01-05 Ian Lance Taylor <iant@google.com>
11368
11369 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
11370 to is_default_version. Rename insdef to insdefault.
11371 (Symbol_table::add_from_relobj): Rename def to is_default_version
11372 and local to is_forced_local.
11373 (Symbol_table::add_from_pluginobj): Likewise.
11374 (Symbol_table::add_from_dynobj): Likewise.
11375 (Symbol_table::define_special_symbol): Rename insdef to
11376 insdefault.
11377
fe35d28d
ILT
113782010-01-04 Ian Lance Taylor <iant@google.com>
11379
30bc8c46
ILT
11380 PR 10980
11381 * options.h (class General_options): Add
11382 --allow-multiple-definition and -z muldefs.
11383 * resolve.cc (Symbol_table::should_override): Don't warn about a
11384 multiple symbol definition if --allow-multiple-definition or -z
11385 muldefs.
11386
7eaea549
ILT
11387 PR 10980
11388 * options.h (class General_options): Add --add-needed and
11389 --copy-dt-needed-entries. Tweak --as-needed help entry.
11390 * object.cc (Input_objects::check_dynamic_dependencies): Give an
11391 error if --copy-dt-needed-entries aka --add-needed is used and
11392 would cause a change in behaviour.
11393
fe35d28d
ILT
11394 PR 10980
11395 * options.h (class General_options): Add -G as a short version of
11396 --shared. Add no-op options -assert, -g, and -i.
11397
55a2bb35
ST
113982010-01-04 Sriraman Tallam <tmsriram@google.com>
11399
11400 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
11401 check for .text or .gnu.linkonce.t sections.
11402 * icf.cc (Icf::find_identical_sections): Ditto.
11403 Change the detection for mangled function name within the section
11404 name.
11405 * icf.h (is_section_foldable_candidate): New function.
11406
719328e1
ILT
114072009-12-30 Ian Lance Taylor <iant@google.com>
11408
11409 PR 10980
11410 * options.h (class General_options): Permit two dashes with
11411 --retain-symbols-file.
11412
d7bb5745
ILT
114132009-12-30 Ian Lance Taylor <iant@google.com>
11414
403a15dd
ILT
11415 PR 10979
11416 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
11417 don't put the file header and segment headers in the text
11418 segment.
11419
eda294df
ILT
11420 PR 10979
11421 * common.cc (Sort_commons::operator()): Stabilize sort when both
11422 entries are NULL.
11423 (Symbol_table::do_allocate_commons_list): When allocating common
11424 symbols, skip a symbol which is no longer common.
11425 * symtab.h (Symbol::is_common): Test whether the symbol comes from
11426 an object before checking its type.
11427 * testsuite/common_test_2.c: New file.
11428 * testsuite/common_test_3.c: New file.
11429 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
11430 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
11431 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
11432 (common_test_2_pic.o, common_test_2.so): New targets.
11433 (common_test_3_pic.o, common_test_3.so): New targets.
11434 * testsuite/Makefile.in: Rebuild.
11435
d7bb5745
ILT
11436 PR 10979
11437 * script.cc (read_input_script): If we see a new SECTIONS clause,
11438 and we have added an input section, give an error.
11439 * layout.h (class Layout): Add have_added_input_section function.
11440 Add have_added_input_section_ field.
11441 * layout.cc (Layout::Layout): Initialize
11442 have_added_input_section_.
11443 (Layout::layout): Set have_added_input_section_.
11444 (Layout::layout_eh_frame): Likewise.
11445
fc59c572
ILT
114462009-12-30 Ian Lance Taylor <iant@google.com>
11447
11448 PR 10931
11449 * options.h (class General_options): Add --sort-common option.
11450 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
11451 * common.cc (Sort_common): Add sort_order parameter to
11452 constructor. Add sort_order_ field.
11453 (Sort_commons::operator): Check sort_order_.
11454 (Symbol_table::allocate_commons): Determine the sort order.
11455 (Symbol_table::do_allocate_commons): Add sort_order parameter.
11456 Change all callers.
11457 (Symbol_table::do_allocate_commons_list): Likewise.
11458
1c74fab0
ILT
114592009-12-30 Ian Lance Taylor <iant@google.com>
11460
11461 PR 10916
11462 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
11463 symbols from this object, don't change the visibility of an
11464 undefined symbol.
11465 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
11466
6affe781
ILT
114672009-12-30 Ian Lance Taylor <iant@google.com>
11468
11469 PR 10861
11470 * script.h (class Version_script_info): Define Language enum.
11471 Update declarations. Define Glob, Exact, and Lookup types. Add
11472 new fields globals_, locals_, and is_finalized_.
11473 * script.cc: Various formatting fixes.
11474 (class Parser_closure): Change language_stack_ from a vector of
11475 std::string to one of Version_script_info::Language. Adjust all
11476 uses accordingly.
11477 (class Lazy_demangler): Remove.
11478 (struct Version_expression): Change language from std::string to
11479 Version_script_info::Language.
11480 (Version_script_info::Version_script_info): New function.
11481 (Version_script_info::~Version_script_info): Don't call clear.
11482 (Version_script_info::finalize): New function.
11483 (Version_script_info::build_lookup_tables): New function.
11484 (Version_script_info::build_expression_list_lookup): New
11485 function.
11486 (Version_script_info::get_symbol_version_helper): Rewrite to use
11487 lookup tables.
11488 (Version_script_info::print_expression_list): Adjust to use
11489 Version_script_info::Language.
11490 (script_push_lex_into_version_mode): Check that the version script
11491 has not been finalized.
11492 (version_script_push_lang): Change language string to
11493 Version_script_info::Language.
11494 * options.cc (Command_line::version_script): New function.
11495 * options.h (class General_options): Add finalize_dynamic_list
11496 function. Change version_script from declaration to definition.
11497 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
11498 * testsuite/version_script.map: Remove duplicate def of foo.
11499 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
11500 version_script.map.
11501 * testsuite/Makefile.in: Rebuild.
11502
818bf354
ILT
115032009-12-30 Ian Lance Taylor <iant@google.com>
11504
11505 PR 10843
11506 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
11507 if the input symbol index is 0, make the output symbol index 0.
11508
ebcc8304
ILT
115092009-12-30 Ian Lance Taylor <iant@google.com>
11510
11511 PR 10670
11512 * options.h (class General_options): Add -x/--discard-all.
11513 * object.cc (Sized_relobj::do_count_local_symbols): Handle
11514 --discard-all. If the local symbol needs a dynamic entry, check
11515 that before handling --discard-locals.
11516
176fe33f
ILT
115172009-12-30 Ian Lance Taylor <iant@google.com>
11518
bb321bb1
ILT
11519 PR 10450
11520 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
11521 flags to PF_R.
11522 (Output_segment::add_output_section): Don't change the flags if
11523 the type is PT_TLS.
11524
176fe33f
ILT
11525 PR 10450
11526 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
11527 GNU hash table if they need a dynamic value. Otherwise, don't add
11528 them if they are defined in a dynamic object or are forced local.
11529
e8cd95c7
ILT
115302009-12-29 Ian Lance Taylor <iant@google.com>
11531
1b81fb71
ILT
11532 PR 10450
11533 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
11534 .gnu.hash table for a 32-bit target.
11535
8d6d383d
ILT
11536 PR 10450
11537 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
11538 regular and a dynamic object only needs a dynamic symbol table
11539 entry if it is externally visible.
11540
e785ec03
ILT
11541 PR 10450
11542 * i386.cc (class Target_i386): Initialize global_offset_table_ in
11543 constructor. Add global_offset_table_ field.
11544 (Target_i386::got_section): Set global_offset_table_.
11545 (Target_i386::do_finalize_sections): Set global_offset_table_
11546 size.
11547 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
11548 in constructor. Add global_offset_table_ field.
11549 (Target_x86_64::got_section): Set global_offset_table_.
11550 (Target_x86_64::do_finalize_sections): Set global_offset_table_
11551 size.
11552
1a2dff53
ILT
11553 * layout.cc (Layout::Layout): Initialize increase_relro_.
11554 (Layout::get_output_section): Add is_relro, is_last_relro, and
11555 is_first_non_relro parameters. Change all callers.
11556 (Layout::choose_output_section): Likewise.
11557 (Layout::add_output_section_data): Likewise.
11558 (Layout::make_output_section): Likewise.
11559 (Layout::set_segment_offsets): Clear increase_relro when using a
11560 linker script.
11561 * layout.h (class Layout): Add increase_relro method. Add
11562 increase_relro_ field. Update declarations.
11563 * output.cc (Output_section::Output_section): Initialize
11564 is_last_relro_ and is_first_non_relro_.
11565 (Output_segment::add_output_section): Group relro sections is
11566 do_sort is true. Handle is_last_relro and is_first_non_relro.
11567 (Output_segment::maximum_alignment): Remove relro handling.
11568 (Output_segment::set_section_addresses): Add increase_relro
11569 parameter. Change all callers. Add initial alignment to align
11570 relro sections on separate page. Remove old relro handling.
11571 (Output_segment::set_section_list_addresses): Remove in_relro
11572 parameter. Change all callers.
11573 (Output_segment::set_offset): Add increase parameter. Change all
11574 callers. Remove old relro handling.
11575 * output.h (class Output_section): Add new methods: is_last_relro,
11576 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
11577 Add is_last_relro_ and is_first_non_relro_ fields.
11578 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
11579 Create separate .got.plt section. Call increase_relro.
11580 * x86_64.cc (Target_x86_64::got_section): Likewise.
11581 * testsuite/relro_script_test.t: Add .got.plt.
11582
f0ba79e2
ILT
11583 PR 10450
11584 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
11585 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
11586 (Layout::finalize): Call set_dynamic_symbol_size.
11587 (Layout::set_dynamic_symbol_size): New function.
11588 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
11589 set_dynamic_symbol_size.
11590
e8cd95c7
ILT
11591 PR 10450
11592 * output.h (class Output_section): Add is_entsize_zero_ field.
11593 * output.cc (Output_section::Output_section): Initialize
11594 is_entsize_zero_.
11595 (Output_section::set_entsize): If two different entsizes are
11596 requested, force it to zero.
11597 (Output_section::add_input_section): Set flags for .debug_str
11598 before updating section flags. Set entsize.
11599 (Output_section::update_flags_for_input_section): Set SHF_MERGE
11600 and SHF_STRING if all input sections have those flags.
11601
3e1b9a8a
RÁE
116022009-12-29 Rafael Espindola <espindola@google.com>
11603
11604 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
11605 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
11606 reporting.
3e1b9a8a 11607
3dcad376
ST
116082009-12-29 Sriraman Tallam <tmsriram@google.com>
11609
11610 * options.cc (General_options::parse_version): Allow -v to exit
11611 without an error if there is nothing to link.
11612
084e2665
ILT
116132009-12-29 Ian Lance Taylor <iant@google.com>
11614
11615 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
11616 using a version of gcc before 4.1.
11617 * configure: Rebuild.
11618
250acde3
CD
116192009-12-28 Chris Demetriou <cgd@google.com>
11620
11621 * attributes.cc (Output_attributes_section_data::do_write): Use
11622 std::vector::front rather than std::vector::data.
11623
99fff23b
ILT
116242009-12-28 Ian Lance Taylor <iant@google.com>
11625
11626 * symtab.h (class Symbol_table): Add enum Defined.
11627 * resolve.cc (Symbol_table::should_override): Add defined
11628 parameter. Change all callers. Test whether object is NULL
11629 before calling a method on it.
11630 (Symbol_table::report_resolve_problem): Add defined parameter.
11631 Change all callers.
11632 (Symbol_table::should_override_with_special): Likewise.
11633 * symtab.cc (Symbol_table::define_in_output_data): Add defined
11634 parameter. Change all callers.
11635 (Symbol_table::do_define_in_output_data): Likewise.
11636 (Symbol_table::define_in_output_segment): Likewise.
11637 (Symbol_table::do_define_in_output_segment): Likewise.
11638 (Symbol_table::define_as_constant): Likewise.
11639 (Symbol_table::do_define_as_constant): Likewise.
11640 * script.h (class Symbol_assignment): Add is_defsym parameter to
11641 constructor; change all callers.
11642 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
11643 parameter. Change all callers. Add is_defsym_ field.
11644 (class Parser_closure): Add parsing_defsym parameter to
11645 constructor; change all callers. Add parsing_defsym accessor
11646 function. Add parsing_defsym_ field.
11647
556bd683
ILT
116482009-12-28 Ian Lance Taylor <iant@google.com>
11649
11650 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 11651 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 11652
1782c879
ILT
116532009-12-23 Ian Lance Taylor <iant@google.com>
11654
11655 * i386.cc (Target_i386::do_calls_non_split): Recognize
11656 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
11657 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
11658 -fsplit-stack prologue when using %r11.
1782c879 11659
329ca2b1
ST
116602009-12-21 Sriraman Tallam <tmsriram@google.com>
11661
11662 * options.cc (General_options::parse_version): Make -v continue and do
11663 the link like GNU ld does.
11664
d675ff46
RÁE
116652009-12-17 Rafael Avila de Espindola <espindola@google.com>
11666
11667 * Makefile.am (CCFILES): Add timer.cc.
11668 (HFILES): Add timer.h.
11669 * configure.ac: Check for sysconf and times.
11670 * main.cc: include timer.h.
11671 (main): Use Timer instead of get_run_time.
11672 * timer.cc: New.
11673 * timer.h: New.
11674 * workqueue.cc: include timer.h.
11675 (Workqueue::find_and_run_task):
11676 Report user, sys and wall time.
11677 * Makefile.in: Regenerate.
11678 * config.in: Regenerate.
11679 * configure: Regenerate.
11680
d6344fb5
DK
116812009-12-16 Doug Kwan <dougkwan@google.com>
11682
11683 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
11684 sections.
11685 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
11686 relaxed input sections.
11687 * output.cc (Output_section::find_relaxed_input_section): Change
11688 return type to Output_relaxed_input_section pointer. Adjust code
11689 for new type of relaxed_input_section_map_.
11690 * output.h (Output_section::find_relaxed_input_section): Change
11691 return type to Output_relaxed_input_section pointer.
11692 (Output_section::Output_relaxed_input_section_by_input_section_map):
11693 New type.
11694 (Output_section::relaxed_input_section_map_): Change type to
11695 Output_section::Output_relaxed_input_section_by_input_section_map.
11696 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
11697 input section.
11698
0e0d5469
ILT
116992009-12-15 Ian Lance Taylor <iant@google.com>
11700
11701 * layout.cc (Layout::create_shstrtab): Only write out after input
11702 sections if we are compressing debug sections.
11703
0649a889
ILT
117042009-12-15 Ian Lance Taylor <iant@google.com>
11705
11706 * archive.cc (Archive::add_symbols): Only look up a symbol without
11707 a version if there is, in fact, a version.
11708
2ea97941
ILT
117092009-12-14 Ian Lance Taylor <iant@google.com>
11710
11711 Revert -Wshadow changes, all changes from:
11712 2009-12-11 Doug Kwan <dougkwan@google.com>
11713 2009-12-11 Nick Clifton <nickc@redhat.com>
11714 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
11715
b0eec2cc
DK
117162009-12-11 Doug Kwan <dougkwan@google.com>
11717
11718 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
11719 due to -Wshadow.
11720 * attributes.cc (Object_attribute::size): Ditto.
11721 (Attributes_section_data::size): Ditto.
11722 (Attributes_section_data::Attributes_section_data): Ditto.
11723 (Output_attributes_section_data::do_write): Ditto.
11724 * attributes.h (Object_attribute::set_type): Ditto.
11725 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
11726
91d6fa6a
NC
117272009-12-11 Nick Clifton <nickc@redhat.com>
11728
11729 * archive.cc: Fix shadowed variable warnings.
11730 * arm.cc: Likewise.
11731 * compressed_output.cc: Likewise.
11732 * compressed_output.h: Likewise.
11733 * configure: Likewise.
11734 * dwarf_reader.cc: Likewise.
11735 * dynobj.cc: Likewise.
11736 * dynobj.h: Likewise.
11737 * ehframe.cc: Likewise.
11738 * ehframe.h: Likewise.
11739 * errors.cc: Likewise.
11740 * expression.cc: Likewise.
11741 * fileread.cc: Likewise.
11742 * fileread.h: Likewise.
11743 * freebsd.h: Likewise.
11744 * i386.cc: Likewise.
11745 * icf.cc: Likewise.
11746 * incremental.h: Likewise.
11747 * layout.cc: Likewise.
11748 * layout.h: Likewise.
11749 * mapfile.cc: Likewise.
11750 * merge.cc: Likewise.
11751 * merge.h: Likewise.
11752 * object.cc: Likewise.
11753 * object.h: Likewise.
11754 * options.h: Likewise.
11755 * output.cc: Likewise.
11756 * output.h: Likewise.
11757 * parameters.cc: Likewise.
11758 * plugin.cc: Likewise.
11759 * powerpc.cc: Likewise.
11760 * reduced_debug_output.cc: Likewise.
11761 * reduced_debug_output.h: Likewise.
11762 * reloc.cc: Likewise.
11763 * reloc.h: Likewise.
11764 * resolve.cc: Likewise.
11765 * script-sections.cc: Likewise.
11766 * script.cc: Likewise.
11767 * script.h: Likewise.
11768 * sparc.cc: Likewise.
11769 * symtab.cc: Likewise.
11770 * symtab.h: Likewise.
11771 * target-select.cc: Likewise.
11772 * target-select.h: Likewise.
11773 * token.h: Likewise.
11774 * workqueue.cc: Likewise.
11775 * workqueue.h: Likewise.
11776 * x86_64.cc: Likewise.
11777
a0351a69
DK
117782009-12-10 Doug Kwan <dougkwan@google.com>
11779
11780 * arm.cc (attributes.h): New include.
11781 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
11782 (Arm_relobj::~Arm_relobj): Delete object pointed by
11783 attributes_section_data_.
11784 (Arm_relobj::attributes_section_data): New method definition.
11785 (Arm_relobj::attributes_section_data_): New data member declaration.
11786 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
11787 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
11788 attributes_section_data_.
11789 (Arm_dynobj::attributes_section_data): New method definition.
11790 (Arm_dynobj::attributes_section_data_): New data member declaration.
11791 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
11792 initialization value of may_use_blx_ to false.
2e702c99 11793 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
a0351a69
DK
11794 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
11795 object attributes to compute results instead of hard-coding.
11796 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
11797 Target_arm::get_secondary_compatible_arch,
11798 Target_arm::set_secondary_compatible_arch
11799 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
11800 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
11801 New method declarations.
11802 (Target_arm::get_aeabi_object_attribute): New method definition.
11803 (Target_arm::attributes_section_data_): New data member declaration.
11804 (read_arm_attributes_section): New template definition.
11805 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
11806 (Arm_dynobj::do_read_symbols): Ditto.
11807 (Target_arm::do_finalize_sections): Merge attributes sections from
11808 input. Check for BLX use after attributes section merging.
11809 Fix __exidx_start and __exidx_end visibility. Create an
11810 .ARM.attributes section if necessary.
11811 (Target_arm::get_secondary_compatible_arch,
11812 Target_arm::set_secondary_compatible_arch,
11813 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
11814 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 11815 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
11816 New method definitions.
11817
b59befec
ILT
118182009-12-09 Ian Lance Taylor <iant@google.com>
11819
11820 * plugin.cc (Plugin::load): Don't cast from void* to a function
11821 pointer.
11822
1276bc89
ILT
118232009-12-09 Ian Lance Taylor <iant@google.com>
11824
11825 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
11826 information fields.
11827
2f2de248
L
118282009-12-09 H.J. Lu <hongjiu.lu@intel.com>
11829
11830 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
11831 Replace two_file_shared_1.so with two_file_shared_2.so.
11832 * testsuite/Makefile.in: Regenerated.
11833
4f787271
DK
118342009-12-08 Doug Kwan <dougkwan@google.com>
11835
11836 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
11837 (HFILES): Add attributes.h and int_encoding.h.
11838 * Makefile.in: Regenerate.
11839 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
11840 function definitions to int_encoding.cc
11841 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
11842 prototypes to int_encoding.h
11843 * reduced_debug_output.cc (int_encoding.h): New include.
11844 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
11845 function definitions to int_encoding.cc
11846 (insert_into_vector, read_from_pointer): Move template definitions to
11847 int_encoding.h
11848 * attributes.cc: New file.
11849 * attributes.h: New file.
11850 * int_encoding.cc: New file.
11851 * int_encoding.h: New file.
11852
20b52f1a
RÁE
118532009-12-07 Rafael Avila de Espindola <espindola@google.com>
11854
11855 PR gold/11055
11856 * incremental-dump.cc (dump_incremental_inputs): New.
11857 (main): Use dump_incremental_inputs.
11858
53d7974c
L
118592009-12-07 H.J. Lu <hongjiu.lu@intel.com>
11860
11861 PR gold/10893
11862 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
11863 checking elfcpp::STT_FUNC.
11864 (Target_i386::Relocate::relocate): Likewise.
11865 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
11866
11867 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
11868 symbols from shared libraries into normal FUNC symbols.
11869
11870 * symtab.h (Symbol): Add is_func and use it.
11871
05a352e6
DK
118722009-12-05 Doug Kwan <dougkwan@google.com>
11873
11874 * arm.cc (Target_arm::arm_info): Initialize new fields
11875 attributes_section and attributes_vendor.
11876 * i386.cc (Target_i386::i386_info): Same.
11877 * object.cc (Sized_relobj::do_layout): Skip attribute section.
11878 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
11879 fields attributes_section and attributes_vendor.
53d7974c 11880 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
11881 * target.h (Target::attributes_section, Target::attributes_vendor,
11882 Target::is_attributes_section, Target::attribute_arg_type,
11883 Target::attributes_order): New method definitions.
11884 (Target::Target_info::attributes_section,
11885 Target::Target_info::attributes_vendor): New fields.
11886 (Target::do_attribute_arg_type, Target::do_attributes_order): New
11887 virtual method definitions.
11888 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
11889 attributes_section and attributes_vendor.
11890 * testsuite/testfile.cc (Target_test::test_target_info): Same.
11891
f4e5969c
DK
118922009-12-05 Doug Kwan <dougkwan@google.com>
11893
11894 * arm.cc: Update comments about interworking and stub generation.
11895 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
11896 considered as non-PIC.
11897 (Arm_relocate_functions::base_abs): Fix formatting.
11898 (Arm_relocate_functions::got_prel): Fix comment. Change interface
11899 of function to use GOT entry address instead of offset.
11900 (Target_arm::Scan::global): Issue an error if a symbol would need a
11901 PLT does not get one because it is untyped. Remove code to create
11902 dynamic symbols for relative branches.
11903 (Target_arm::Relocate::relocate: Use 0 instead of false since function
11904 takes unsigned integer instead of boolean.
11905
1abce4a6
L
119062009-12-05 H.J. Lu <hongjiu.lu@intel.com>
11907
11908 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
11909 (two_file_test_LDADD): Likewise.
11910 (common_test_1_LDADD): Likewise.
11911 (exception_test_LDADD) Likewise.
11912 (weak_test_LDADD): Likewise.
11913 (many_sections_test_LDADD): Likewise.
11914 (initpri1_LDADD): Likewise.
11915 (script_test_1_LDADD): Likewise.
11916 (script_test_2_LDADD): Likewise.
11917 (justsyms_LDADD): Likewise.
11918 (binary_test_LDADD): Likewise.
11919 (large_LDADD): Likewise.
11920 * testsuite/Makefile.in: Regenerated.
11921
adcf2816 119222009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 11923
adcf2816
L
11924 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
11925 (Symbol_table::override_with_special): Likewise.
11926 (Symbol_table::add_from_object): Likewise.
11927
28e67f5d
RÁE
119282009-12-04 Rafael Avila de Espindola <espindola@google.com>
11929
11930 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
11931 Don't set the data_offset twice.
11932
ae10a101
RÁE
119332009-12-04 Rafael Avila de Espindola <espindola@google.com>
11934
11935 * testsuite/Makefile.in: Regenerate.
11936
f59f41f3
DK
119372009-12-03 Doug Kwan <dougkwan@google.com>
11938
11939 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
11940 (Target_arm::do_finalize_sections): Add parameter for symbol table
11941 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
11942 * i386.cc (Target_i386::do_finalize_sections): Add an additional
11943 parameter for symbol table pointer.
11944 * layout.cc (Layout::finalize): Call Target::finalize_sections with
11945 an additional parameter for a pointer to symbol table.
11946 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
11947 parameter for a symbol table pointer.
11948 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
11949 * target.h (Target::finalize_sections, Target::do_finalize_sections):
11950 Ditto.
11951 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
11952 parameter for a symbol table pointer.
11953
ca55d848
RÁE
119542009-12-03 Rafael Avila de Espindola <espindola@google.com>
11955
11956 * incremental.cc (Incremental_inputs_header)
11957 (Incremental_inputs_header_write, Incremental_inputs_entry)
11958 (Incremental_inputs_entry_write): Move ...
11959 * incremental.h (Incremental_inputs_header)
11960 (Incremental_inputs_header_write, Incremental_inputs_entry)
11961 (Incremental_inputs_entry_write): here.
11962
3aec4f9c
RÁE
119632009-12-02 Rafael Avila de Espindola <espindola@google.com>
11964
11965 * incremental.cc (make_sized_incremental_binary): Set the target.
11966 Error if it is incompatible.
11967 * output.h (Output_file): Add filename method.
11968
9c0ae74d
RÁE
119692009-12-02 Rafael Avila de Espindola <espindola@google.com>
11970
11971 * incremental.cc (Incremental_inputs_entry): Remove unused argument
11972 from the get_* methods.
11973
a45500ae
RÁE
119742009-12-02 Rafael Avila de Espindola <espindola@google.com>
11975
11976 * incremental-dump.cc (main): Check that the offeset of a script is 0.
11977 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
11978 Write 0 for the data_offset of scripts.
11979
325e6408
RÁE
119802009-12-02 Rafael Avila de Espindola <espindola@google.com>
11981
11982 * testsuite/Makefile.am: Add the incremental_test.sh test.
11983 * testsuite/incremental_test.sh: New.
11984 * testsuite/incremental_test_1.c: New.
11985 * testsuite/incremental_test_2.c: New.
11986
954c3e2e
RÁE
119872009-12-01 Rafael Avila de Espindola <espindola@google.com>
11988
703d02da 11989 * incremental-dump.cc (main): Fix typos.
954c3e2e 11990
f8086623
RÁE
119912009-11-27 Rafael Avila de Espindola <espindola@google.com>
11992
11993 PR gold/11025
11994 * incremental-dump.cc (main): Use llu to print 64 bit values.
11995
3b0dd6ac
L
119962009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
11997 H.J. Lu <hongjiu.lu@intel.com>
11998
11999 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
12000 $(LIBDL).
12001 (incremental_dump_LDADD): Likewise.
12002 * Makefile.in: Regenerated.
12003
a6d1ef57 120042009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 12005
a6d1ef57
DK
12006 Revert:
12007
12008 2009-11-25 Doug Kwan <dougkwan@google.com>
12009
12010 * arm.cc (Target_arm::Target_arm): Move method definition
12011 outside of class definition. Add code to handle
12012 --target1-rel, --target1-abs and --target2= options.
12013 (Target_arm::get_reloc_reloc_type): Change method to be
12014 non-static and const.
12015 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
12016 New data member declaration.
12017 (Target_arm::Scan::local, Target_arm::Scan::global,
12018 Target_arm::Relocate::relocate,
12019 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
12020 Adjust call to Target_arm::get_real_reloc_type.
12021 (Target_arm::get_real_reloc_type): Use command line options
12022 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
12023 * options.h (--target1-rel, --target1-abs, --target2): New
12024 ARM-only options.
12025
50aeb7d4
DK
120262009-11-25 Doug Kwan <dougkwan@google.com>
12027
12028 * arm.cc (Target_arm::Target_arm): Move method definition outside of
12029 class definition. Add code to handle --target1-rel, --target1-abs
12030 and --target2= options.
12031 (Target_arm::get_reloc_reloc_type): Change method to be non-static
12032 and const.
12033 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
12034 member declaration.
12035 (Target_arm::Scan::local, Target_arm::Scan::global,
12036 Target_arm::Relocate::relocate,
12037 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
12038 call to Target_arm::get_real_reloc_type.
12039 (Target_arm::get_real_reloc_type): Use command line options to
12040 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
12041 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
12042 options.
12043
51938283
DK
120442009-11-25 Doug Kwan <dougkwan@google.com>
12045
12046 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
12047 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
12048 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
12049 formatting.
12050 (Arm_relocate_functions::thm_call): Replace body with a call to
12051 Arm_relocate_functions::thumb_branch_common.
12052 (Arm_relocate_functions::thm_jump24,
12053 Arm_relocate_functions::thm_xpc22): New method definitions.
12054 (Arm_relocate_functions::thumb_branch_common): New method definition.
12055 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
12056 operator.
12057 (Target_arm::Relocate::relocate): Adjust call to thm_call.
12058 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
12059
e2b8f3c4
RÁE
120602009-11-24 Rafael Avila de Espindola <espindola@google.com>
12061
12062 * Makefile.am: Build incremental-dump
12063 * Makefile.in: Regenerate.
12064 * incremental-dump.cc: New.
12065 * incremental.cc (Incremental_inputs_header_data,
12066 Incremental_inputs_entry_data): Move to incremental.h
12067 * incremental.h: (Incremental_inputs_header_data,
12068 Incremental_inputs_entry_data): Move from incremental.cc
12069
bcba9aec
RÁE
120702009-11-24 Rafael Avila de Espindola <espindola@google.com>
12071
12072 * incremental.cc (Incremental_inputs_header,
12073 Incremental_inputs_header_write, Incremental_inputs_entry,
12074 Incremental_inputs_entry_write): Add a typedef with the data type.
12075
7c3afe08
RÁE
120762009-11-24 Rafael Avila de Espindola <espindola@google.com>
12077
12078 * incremental.cc (Incremental_inputs_header,
12079 Incremental_inputs_header_write, Incremental_inputs_entry,
12080 Incremental_inputs_entry_write): Update comment about which
12081 type has the filed descriptions.
12082
d204b6e9
DK
120832009-11-15 Doug Kwan <dougkwan@google.com>
12084
12085 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
12086 (Arm_relocate_functions::arm_branch_common): Change method defintion
12087 in class definition to a method declaration and update list of formal
12088 parameters.
12089 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
12090 Arm_relocation_functions::jump24): Adjust call to
12091 Arm_relocate_functions::arm_branch_common. Update list of formal
12092 parameters.
12093 (Arm_relocate_functions::xpc25): New method definition.
12094 (Arm_relocate_functions::arm_branch_common): Move method defintion
12095 out from class definition. Use stubs for mode-switching and extending
12096 branch ranges.
12097 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
12098 specially. Change code to enable use of stubs in ARM branches.
12099
43d12afe
DK
121002009-11-10 Doug Kwan <dougkwan@google.com>
12101
12102 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
12103 in method declaration.
12104 (Target_arm::relocate_stub): New method declaration.
12105 (Target_arm::default_target): Change to return a pointer instead of
12106 a const reference.
12107 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
12108 Target_arm::default_target.
12109 (Arm_Relobj::do_relocate_sections): Remove options paramater in
12110 method definition.
12111 (Target_arm::relocate_section): Adjust view.
12112 (Target_arm::relocate_stub): New method definition.
12113
ac33a407
DK
121142009-11-10 Doug Kwan <dougkwan@google.com>
12115
12116 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
12117 a format warning.
12118 * incremental.cc (open_incremental_binary): Initialized local
12119 variables to avoid warnings.
12120 * object.cc (make_elf_object): Ditto.
12121 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
12122 a format warning.
e1df38aa 12123
88ee28e9
L
12124009-11-09 H.J. Lu <hongjiu.lu@intel.com>
12125
12126 PR gold/10930
12127 * testsuite/plugin_test.c: Include "config.h".
12128
2daedcd6
DK
121292009-11-09 Doug Kwan <dougkwan@google.com>
12130
12131 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
12132 (arm_symbol_value): Remove.
12133 (Arm_relocate_functions::arm_branch_common,
12134 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
12135 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
12136 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
12137 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
12138 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
12139 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
12140 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
12141 Arm_relocate_functions::thm_mobw_abs_nc,
12142 Arm_relocate_functions::thm_mov_abs,
12143 Arm_relocate_functions::movw_prel_nc,
12144 Arm_relocate_functions::thm_movt_abs,
12145 Arm_relocate_functions::movt_prel,
12146 Arm_relocate_functions::thm_movw_prel_nc,
12147 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
12148 (Target_arm::Relocate::relocate): Only decompose address into two
12149 parts if relocation type uses the thumb-bit and pass the actual
12150 bit instead of a flag indicating that the thumb-bit is used. Adjust
12151 calls to methods in Arm_relocate_functions for this change.
12152
1276bc89 121532009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
12154
12155 PR 10925
12156 * reloc.cc: Instantiate
12157 Sized_relobj::initialize_input_to_output_maps and
12158 Sized_relobj:free_input_to_output_maps.
12159
e53ad1b5
ILT
121602009-11-06 Ian Lance Taylor <iant@google.com>
12161
12162 PR 10876
12163 * defstd.cc (in_segment): Set only_if_ref true for "end".
12164
eb44217c
DK
121652009-11-06 Doug Kwan <dougkwan@google.com>
12166
12167 * arm.cc (class Reloc_stub): Correct a comment.
12168 (Target_arm::Target_arm): Initialize arm_input_section_map_.
12169 (Target_arm::scan_section_for_stubs): New method declaration.
12170 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
12171 Change methods from private to protected.
12172 (Target_arm::do_may_relax): New method definition.
12173 (Target_arm::do_relax, Target_arm::group_sections,
12174 Target_arm::scan_reloc_for_stub,
12175 Target_arm::scan_reloc_section_for_stubs): New method declarations.
12176 (Target_arm::arm_input_section_map_): New data member declaration.
12177 (Target_arm::scan_reloc_for_stub,
12178 Target_arm::scan_reloc_section_for_stubs,
12179 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
12180 Target_arm::do_relax): New method definitions.
12181
5d329b7d
ILT
121822009-11-06 Mikolaj Zalewski <mikolaj@google.com>
12183
12184 * configure.ac: Check for (struct stat)::st_mtim
12185 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
12186 * config.in: Regenerate.
12187 * configure: Regenerate.
12188
96a0d71b
ILT
121892009-11-05 Ian Lance Taylor <iant@google.com>
12190
12191 PR 10910
12192 * output.cc (Output_segment::add_output_section): Add missing
12193 return statement.
12194
594c8e5e
ILT
121952009-11-04 Ian Lance Taylor <iant@google.com>
12196
12197 PR 10880
12198 * object.h (class Object): Add is_needed and set_is_needed
12199 methods. Add is_needed_ field. Make bool fields into bitfields.
12200 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
12201 defined in a dynamic object and referenced by a regular object,
12202 set is_needed for the dynamic object.
12203 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
12204 if the file is marked with as_needed and it is not needed.
12205
22b127cc
ILT
122062009-11-04 Ian Lance Taylor <iant@google.com>
12207
12208 PR 10887
12209 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
12210 tags if data is discarded by linker script.
12211 * i386.cc (Target_i386::do_finalize_sections): Likewise.
12212 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
12213 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
12214 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
12215
f5c870d2
ILT
122162009-11-04 Ian Lance Taylor <iant@google.com>
12217
12218 * layout.cc (Layout::get_output_section): Add is_interp and
12219 is_dynamic_linker_section parameters. Change all callers.
12220 (Layout::choose_output_section): Likewise.
12221 (Layout::make_output_section): Likewise.
12222 (Layout::add_output_section_data): Add is_dynamic_linker_section
12223 parameter. Change all callers.
12224 * layout.h (class Layout): Update declarations.
12225 * output.h (class Output_section): Add is_interp, set_is_interp,
12226 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
12227 Add is_interp_, is_dynamic_linker_section_ fields. Change
12228 generate_code_fills_at_write_ to a bitfield.
12229 * output.cc (Output_section::Output_sections): Initialize new
12230 fields.
12231 (Output_segment::add_output_section): Add do_sort parameter.
12232 Change all callers.
12233
1ae4d23b
ILT
122342009-11-03 Ian Lance Taylor <iant@google.com>
12235
12236 PR 10860
12237 * options.h (class General_options): Add --warn-common.
12238 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
12239 merging two common symbols.
12240 (Symbol_table::should_override): Handle --warn-common when merging
12241 a common symbol with a defined symbol. Use report_resolve_problem
12242 for multiple definitions.
12243 (Symbol_table::report_resolve_problem): New function.
12244 * symtab.h (class Symbol_table): Declare report_resolve_problem.
12245
55da9579
DK
122462009-11-03 Doug Kwan <dougkwan@google.com>
12247
12248 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
12249 stub_factory_.
12250 (Target_arm::stub_factory): New method definition.
12251 (Target_arm::new_arm_input_section,
12252 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
12253 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 12254 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
12255 New type definitions.
12256 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
12257 member declarations.
12258 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
12259 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
12260 New method definitions.
12261
37a9ac43
ILT
122622009-11-03 Ian Lance Taylor <iant@google.com>
12263
12264 * options.h (class General_options): Add --warn_constructors.
12265
b3d6a3d4
ILT
122662009-11-03 Ian Lance Taylor <iant@google.com>
12267
12268 PR 10893
12269 * defstd.cc (in_section): Add entries for __rel_iplt_start,
12270 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
12271
934b01dd
ILT
122722009-11-03 Ian Lance Taylor <iant@google.com>
12273
12274 PR 10895
12275 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
12276 --msgid-bugs-address.
12277 (install-pdf): New target.
12278 (install-data_yes): Look up one directory to find mkinstalldirs.
12279
03c1939b
L
122802009-11-03 H.J. Lu <hongjiu.lu@intel.com>
12281
12282 * po/Make-in (.po.gmo): Don't generate .gmo files in source
12283 tree.
12284
ebd95253
DK
122852009-10-30 Doug Kwan <dougkwan@google.com>
12286
12287 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
12288
e9bbb538
DK
122892009-10-30 Doug Kwan <dougkwan@google.com>
12290
12291 * arm.cc (Stub_addend_reader): New struct template definition
12292 and partial specializations.
12293 (Stub_addend_reader::operator()): New method definition for a
12294 partially specialized template.
12295
d5b40221
DK
122962009-10-30 Doug Kwan <dougkwan@google.com>
12297
12298 * arm.cc (Arm_relobj::processor_specific_flags): New method
12299 definition.
12300 (Arm_relobj::do_read_symbols): New method declaration.
12301 (Arm_relobj::processor_specific_flags_): New data member declaration.
12302 (Arm_dynobj): New class definition.
12303 (Target_arm::do_finalize_sections): Add input_objects parameter.
12304 (Target_arm::do_adjust_elf_header): New method declaration.
12305 (Target_arm::are_eabi_versions_compatible,
12306 (Target_arm::merge_processor_specific_flags): New method declaration.
12307 (Target_arm::do_make_elf_object): New overloaded method definitions
12308 and declaration.
12309 (Arm_relobj::do_read_symbols): New method definition.
12310 (Arm_dynobj::do_read_symbols): Ditto.
12311 (Target_arm::do_finalize_sections): Add input_objects parameters.
12312 Merge processor-specific flags from all input objects.
12313 (Target_arm::are_eabi_versions_compatible,
12314 Target_arm::merge_processor_specific_flags,
12315 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
12316 New method definitions.
12317 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
12318 Input_objects pointer type parameter.
12319 * layout.cc (Layout::finalize): Pass input objects to target's.
12320 finalize_sections function.
12321 * output.cc (Output_file_header::do_sized_write): Set ELF file
12322 header's processor-specific flags.
12323 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
12324 Input_objects pointer type parameter.
12325 * sparc.cc (Target_sparc::do_finalize_sections): Same.
12326 * target.h (Input_objects): New forward class declaration.
12327 (Target::processor_specific_flags,
12328 Target::are_processor_specific_flags_sect): New method definitions.
12329 (Target::finalize_sections): Add input_objects parameter.
12330 (Target::Target): Initialize processor_specific_flags_ and
12331 are_processor_specific_flags_set_.
12332 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
12333 parameter.
12334 (Target::set_processor_specific_flags): New method definition.
12335 (Target::processor_specific_flags_,
12336 Target::are_processor_specific_flags_set_): New data member
12337 declarations.
12338 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
12339 Input_objects pointer type parameter.
12340
ebabffbd
DK
123412009-10-30 Doug Kwan <dougkwan@google.com>
12342
12343 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
12344
ad0f2072
ILT
123452009-10-28 Ian Lance Taylor <iant@google.com>
12346
12347 * object.h (class Relobj): Drop options parameter from
12348 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
12349 do_scan_relocs, do_relocate. Change all callers.
12350 (class Sized_relobj): Drop options parameters from
12351 do_gc_process_relocs, do_scan_relocs, do_relocate,
12352 do_relocate_sections, relocate_sections, emit_relocs_scan,
12353 emit_relocs_scan_reltype. Change all callers.
12354 (struct Relocate_info): Remove options field and all references to
12355 it.
12356 * reloc.h (class Read_relocs): Remove options constructor
12357 parameter and options_ field. Change all callers.
12358 (class Gc_process_relocs, class Scan_relocs): Likewise.
12359 (class Relocate_task): Likewise.
12360 * target-reloc.h (scan_relocs): Remove options parameter. Change
12361 all callers.
12362 (scan_relocatable_relocs): Likewise.
12363 * target.h (class Sized_target): Remove options parameter from
12364 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
12365 all callers.
12366 * gc.h (gc_process_relocs): Remove options parameter. Change all
12367 callers.
12368 * arm.cc: Update functions to remove options parameters.
12369 * i386.cc: Likewise.
12370 * powerpc.cc: Likewise.
12371 * sparc.cc: Likewise.
12372 * x86_64.cc: Likewise.
12373 * testsuite/testfile.cc: Likewise.
12374
8ffa3667
DK
123752009-10-28 Doug Kwan <dougkwan@google.com>
12376
12377 * arm.cc (Arm_relobj): New class definition.
e1df38aa 12378 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
12379 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
12380 New method definitions.
12381
40f36857
CC
123822009-10-28 Cary Coutant <ccoutant@google.com>
12383
12384 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
12385 (Plugin::cleanup_done_): New member.
12386 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
12387 (Plugin_manager::cleanup_done_): Remove.
12388 (Plugin_manager::add_input_file): Edit error message.
12389 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
12390 (Plugin_manager::cleanup): Remove use of cleanup_done_.
12391
2c849493
ILT
123922009-10-27 Mikolaj Zalewski <mikolajz@google.com>
12393
12394 * fileread.cc: (File_read::View::~View): Use the new
12395 data_ownership_ filed.
12396 (File_read::~File_read): Dispose the new whole_file_view_.
12397 (File_read::open): Mmap the whole file if needed.
12398 (File_read::open): Use whole_file_view_ instead of contents_.
12399 (File_read::find_view): Use whole_file_view_ if applicable.
12400 (File_read::do_read): Use whole_file_view_ instead of contents_.
12401 (File_read::make_view): Use whole_file_view_ instead of contents_,
12402 update File_read::View::View call.
12403 (File_read::find_or_make_view): Update File_read::View::View
12404 call.
12405 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
12406 remove contents_
12407 (File_read::View::Data_ownership): New enum.
12408 (File_read::View::View): Replace bool mapped_ with Data_ownership
12409 argument.
12410 (File_read::View::mapped_): Remove (replaced by data_ownership_).
12411 (File_read::View::data_ownership_): New field.
12412 (File_read::contents_): Remove (replaced by whole_file_view_).
12413 (File_read::whole_file_view_): New field.
12414 * options.h (class General_options): Add --keep-files-mapped.
12415
24998053
CC
124162009-10-27 Cary Coutant <ccoutant@google.com>
12417
12418 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
12419 * testsuite/Makefile.am (plugin_test_5): New test case.
12420 * testsuite/Makefile.in: Regenerate.
12421
72adc4fa
DK
124222009-10-25 Doug Kwan <dougkwan@google.com>
12423
12424 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
12425 from private to protected to allow access by child class.
12426 (Sized_relobj::do_relocate_sections): New method declaration.
12427 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 12428 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
12429 Sized_relobj::relocate_sections. Instantiate template explicitly
12430 for different target sizes and endianity.
12431
07f508a2
DK
124322009-10-24 Doug Kwan <dougkwan@google.com>
12433
12434 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
12435 (Arm_input_section::as_arm_input_section): New method.
12436 (Arm_output_section): New class definition.
12437 (Arm_output_section::create_stub_group,
12438 Arm_output_section::group_sections): New method definitions.
12439
10ad9fe5
DK
124402009-10-22 Doug Kwan <dougkwan@google.com>
12441
12442 * arm.cc (Arm_input_section): New class definition.
12443 (Arm_input_section::init, Arm_input_section:do_write,
12444 Arm_input_section::set_final_data_size,
12445 Arm_input_section::do_reset_address_and_file_offset): New method
12446 definitions.
12447
56ee5e00
DK
124482009-10-21 Doug Kwan <dougkwan@google.com>
12449
12450 * arm.cc (Stub_table, Arm_input_section): New forward class
12451 declarations.
12452 (Stub_table): New class defintion.
12453 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
12454 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
12455 New method definition.
12456
b569affa
DK
124572009-10-21 Doug Kwan <dougkwan@google.com>
12458
12459 * arm.cc: Update copyright comments.
12460 (Target_arm): New forward class template declaration.
12461 (Arm_address): New type.
12462 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
12463 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
12464 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
12465 constants.
12466 (Insn_template): Same.
12467 (DEF_STUBS): New macro.
12468 (Stub_type): New enum type.
12469 (Stub_template): New class definition.
12470 (Stub): Same.
12471 (Reloc_stub): Same.
12472 (Stub_factory): Same.
12473 (Target_arm::Target_arm): Initialize may_use_blx_ and
12474 should_force_pic_veneer_.
12475 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
12476 Target_arm::should_force_pic_veneer,
12477 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
12478 Target_arm::using_thumb_only, Target_arm:;default_target): New
12479 method defintions.
12480 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
12481 New data member declarations.
12482 (Insn_template::size, Insn_template::alignment): New method defintions.
12483 (Stub_template::Stub_template): New method definition.
12484 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
12485 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
12486 (Stub_factory::Stub_factory): New method definition.
12487 * gold.h (string_hash): New template.
12488 * output.h (Input_section_specifier::hash_value): Use
12489 gold::string_hash.
12490 (Input_section_specifier::string_hash): Remove.
12491 * stringpool.cc (Stringpool_template::string_hash): Use
12492 gold::string_hash.
12493
6c172549
DK
124942009-10-20 Doug Kwan <dougkwan@google.com>
12495
12496 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
12497 symbols of relaxed input sections.
12498 * output.h (Output_section::find_relaxed_input_section): Make
12499 method public.
12500
c5617f2f
DK
125012009-10-16 Doug Kwan <dougkwan@google.com>
12502
12503 * dynobj.cc (Versions::Versions): Initialize version_script_.
12504 Only insert base version symbol definition for a shared object
12505 if version script defines any version versions.
12506 (Versions::define_base_version): New method definition.
12507 (Versions::add_def): Check that base version is not needed.
12508 (Versions::add_need): Define base version lazily.
12509 * dynobj.h (Versions::define_base_version): New method declaration.
12510 (Versions::needs_base_version_): New data member declaration.
12511 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
12512 (check_DATA): Add no_version_test.stdout.
12513 (libno_version_test.so, no_version_test.o no_version_test.stdout):
12514 New make rules.
12515 * testsuite/Makefile.in: Regenerate.
12516 * testsuite/no_version_test.c: New file.
12517 * testsuite/no_version_test.sh: Ditto.
12518
3c12dcdb
DK
125192009-10-16 Doug Kwan <dougkwan@google.com>
12520
12521 * expression.cc (class Segment_start_expression): New class definition.
12522 (Segment_start_expression::value): New method definition.
12523 (script_exp_function_segment_start): Return a new
12524 Segment_start_expression.
12525 * gold/script-c.h (script_saw_segment_start_expression): New function
12526 prototype.
12527 * script-sections.cc (Script_sections::Script_sections): Initialize
12528 SAW_SEGMENT_START_EXPRESSION_ to false.
12529 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
12530 and -Tbbs options to specify section addresses if given in
12531 command line and no SEGMENT_START expression is seen in a script.
12532 * script-sections.h (Script_sections::saw_segment_start_expression,
12533 Script_sections::set_saw_segment_start_expression): New method
12534 definition.
12535 (Script_sections::saw_segment_start_expression_): New data member
12536 declaration.
12537 * script.cc (script_saw_segment_start_expression): New function.
12538 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
12539 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
12540 script_test_7.sh and script_test_8.sh.
12541 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
12542 script_test_8.stdout.
12543 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
12544 (script_test_6, script_test_6.stdout, script_test_7,
12545 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
12546 * Makefile.in: Regenerate.
12547 * testsuite/script_test_6.sh: New file.
12548 * testsuite/script_test_6.t: Same.
12549 * testsuite/script_test_7.sh: Same.
12550 * testsuite/script_test_7.t: Same.
12551 * testsuite/script_test_8.sh: Same.
12552
64b1ae37
DK
125532009-10-16 Doug Kwan <dougkwan@google.com>
12554
12555 * output.cc (Output_segment::set_section_list_address): Cast
12556 expressions to unsigned long long type to avoid format warnings.
12557
661be1e2
ILT
125582009-10-15 Ian Lance Taylor <iant@google.com>
12559
12edd763 12560 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 12561 dot assignment to script_sections_.
12edd763
ILT
12562 * script-sections.cc (Script_sections::add_dot_assignment):
12563 Initialize if necessary.
12564
68b6574b
ILT
12565 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
12566 program headers with no load segment if there is a linker script.
12567
661be1e2
ILT
12568 * layout.cc (Layout::set_segment_offsets): Align the file offset
12569 to the segment aligment for -N or -n with no load segment.
12570 * output.cc (Output_segment::add_output_section): Don't crash if
12571 the first section is a TLS section.
12572 (Output_segment::set_section_list_addresses): Print an error
12573 message if the address moves backward in a linker script.
12574 * script-sections.cc
12575 (Output_section_element_input::set_section_addresses): Don't
12576 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
12577 (Orphan_output_section::set_section_addresses): Likewise.
12578
f15f61a7
DK
125792009-10-15 Doug Kwan <dougkwan@google.com>
12580
12581 * layout.cc (Layout::finish_dynamic_section): Generate tags
12582 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
12583 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
12584 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
12585
82bb573a
ILT
125862009-10-14 Ian Lance Taylor <iant@google.com>
12587
12588 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
12589 fields.
12590 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
12591 data_shdr fields of relinfo.
12592 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
12593 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
12594 R_386_TLS_LDO_32, adjust based on section flags.
12595 (Target_i386::Relocate::fix_up_ldo): Remove.
12596
374ad285
ILT
125972009-10-13 Ian Lance Taylor <iant@google.com>
12598
12599 Add support for -pie.
12600 * options.h (class General_options): Add -pie and
12601 --pic-executable.
12602 (General_options::output_is_position_independent): Test -pie.
12603 (General_options::output_is_executable): Return true if not shared
12604 and not relocatable.
12605 (General_options::output_is_pie): Remove.
12606 * options.cc (General_options::finalize): Reject incompatible uses
12607 of -pie.
12608 * gold.cc (queue_middle_tasks): A -pie link is not static.
12609 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
12610 * symtab.cc (Symbol::final_value_is_known): Return false if
12611 output_is_position_independent.
12612 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
12613 output_is_position_independent.
12614 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
12615 output_is_position_independent.
12616 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
12617 output_is_position_independent.
12618 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
12619 two_file_pie_test.
12620 (basic_pie_test.o, basic_pie_test): New targets.
12621 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
12622 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
12623 (two_file_pie_test): New target.
12624 * testsuite/Makefile.in: Rebuild.
12625 * README: Remove note saying that -pie is not supported.
12626
c6585162
ILT
126272009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
12628
12629 * options.h (class General_options): Add -init and -fini.
12630 * layout.cc (Layout::finish_dynamic_section): Emit
12631 given init and fini functions.
12632
032ce4e9
ST
126332009-10-13 Sriraman Tallam <tmsriram@google.com>
12634
12635 * gc.h (gc_process_relocs): Check if icf is enabled using new
12636 function.
12637 * gold.cc (queue_initial_tasks): Likewise.
12638 (queue_middle_tasks): Likewise.
12639 * object.cc (do_layout): Likewise.
12640 * symtab.cc (is_section_folded): Likewise.
12641 * main.cc (main): Likewise.
12642 * reloc.cc (Read_relocs::run): Likewise.
12643 (Sized_relobj::do_scan_relocs): Likewise.
12644 * icf.cc (is_function_ctor_or_dtor): New function.
12645 (Icf::find_identical_sections): Check if function is ctor or dtor when
12646 safe icf is chosen.
12647 * options.h (General_options::icf): Change option to be an enum.
12648 (Icf_status): New enum.
12649 (icf_enabled): New method.
12650 (icf_safe_folding): New method.
12651 (set_icf_status): New method.
12652 (icf_status_): New variable.
12653 * (options.cc) (General_options::finalize): Set icf_status_.
12654 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
12655 icf_test and icf_keep_unique_test to use the --icf enum flag.
12656 * testsuite/icf_safe_test.sh: New file.
e1df38aa 12657 * testsuite/icf_safe_test.cc: New file.
032ce4e9 12658
f345227a
ST
126592009-10-12 Sriraman Tallam <tmsriram@google.com>
12660
12661 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
12662 includes to gc.h and icf.h.
12663 * arm.cc: Include gc.h.
12664 * gold.cc: Likewise.
12665 * i386.cc: Likewise.
12666 * powerpc.cc: Likewise.
12667 * sparc.cc: Likewise.
12668 * x86_64.cc: Likewise.
12669 * gc.h: Include icf.h.
12670
1c7814ed
ILT
126712009-10-11 Ian Lance Taylor <iant@google.com>
12672
12673 * plugin.cc: Include "gold.h" before other header files.
12674
ae3b5189
CD
126752009-10-10 Chris Demetriou <cgd@google.com>
12676
12677 * options.h (Input_file_argument::Input_file_type): New enum.
12678 (Input_file_argument::is_lib_): Replace with...
12679 (Input_file_argument::type_): New member.
12680 (Input_file_argument::Input_file_argument): Take Input_file_type
12681 'type' rather than boolean 'is_lib' as second argument.
12682 (Input_file_argument::is_lib): Use type_.
12683 (Input_file_argument::is_searched_file): New function.
12684 (Input_file_argument::may_need_search): Handle is_searched_file.
12685 * options.cc (General_options::parse_library): Support -l:filename.
12686 (General_options::parse_just_symbols): Update for Input_file_argument
12687 changes.
12688 (Command_line::process): Likewise.
12689 * archive.cc (Archive::get_file_and_offset): Likewise.
12690 * plugin.cc (Plugin_manager::release_input_file): Likewise.
12691 * script.cc (read_script_file, script_add_file): Likewise.
12692 * fileread.cc (Input_file::Input_file): Likewise.
12693 (Input_file::will_search_for): Handle is_searched_file.
12694 (Input_file::open): Likewise.
12695 * readsyms.cc (Read_symbols::get_name): Likewise.
12696 * testsuite/Makefile.am (searched_file_test): New test.
12697 * testsuite/Makefile.in: Regenerate.
12698 * testsuite/searched_file_test.cc: New file.
12699 * testsuite/searched_file_test_lib.cc: New file.
12700
f3048a1d
ILT
127012009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
12702 Ian Lance Taylor <iant@google.com>
12703
12704 * descriptor.cc: Include <cstdio> and "binary-io.h".
12705 (Descriptors::open): Open the files in binary mode always.
12706 * script.cc (Lex::get_token): Treat \r as whitespace.
12707
d4780e57
ILT
127082009-10-09 Ian Lance Taylor <iant@google.com>
12709
12710 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
12711
d9a893b8
ILT
127122009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
12713 Ian Lance Taylor <iant@google.com>
12714
12715 * configure.ac: Check for readv function also.
12716 * fileread.cc (readv): Define if not HAVE_READV.
12717 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
12718 does not exist.
12719 * config.in: Regenerate.
12720 * configure: Regenerate.
12721
c0a62865
DK
127222009-10-09 Doug Kwan <dougkwan@google.com>
12723
12724 * layout.cc (Layout::make_output_section): Call target hook to make
12725 ordinary output section.
12726 (Layout::finalize): Adjust parameter list of call the
12727 Target::may_relax().
12728 * layout.h (class Layout::section_list): New method.
12729 * merge.h (Output_merge_base::entsize): Change visibility to public.
12730 (Output_merge_base::is_string, Output_merge_base::do_is_string):
12731 New methods.
12732 (Output_merge_string::do_is_string): New method.
12733 * object.cc (Sized_relobj::do_setup): renamed from
12734 Sized_relobj::set_up.
12735 * object.h (Sized_relobj::adjust_shndx,
12736 Sized_relobj::initializ_input_to_output_maps,
12737 Sized_relobj::free_input_to_output_maps): Change visibilities to
12738 protected.
12739 (Sized_relobj::setup): Virtualize.
12740 (Sized_relobj::do_setup): New method declaration.
12741 (Sized_relobj::invalidate_section_offset,
12742 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
12743 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
12744 * options.cc (parse_int): New function.
12745 * options.h (parse_int): New declaration.
12746 (DEFINE_int): New macro.
12747 (stub_group_size): New option.
12748 * output.cc (Output_section::Output_section): Initialize memebers
12749 merge_section_map_, merge_section_by_properties_map_,
12750 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
12751 (Output_section::add_input_section): Handled deferred code-fill
12752 generation and remove an old comment.
12753 (Output_section::add_relaxed_input_section): New method definition.
12754 (Output_section::add_merge_input_section): Use merge section by
12755 properties map to speed to search. Update merge section maps
12756 as appropriate.
12757 (Output_section::build_relaxation_map): New method definition.
12758 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
12759 Same.
12760 (Output_section::relax_input_section): Renamed to
12761 Output_section::convert_input_sections_to_relaxed_sections and change
12762 interface to take a vector of pointers to relaxed sections.
12763 (Output_section::find_merge_section,
12764 Output_section::find_relaxed_input_section): New method definitions.
12765 (Output_section::is_input_address_mapped,
12766 Output_section::output_offset, Output_section::output_address):
12767 Use output section data maps to speed up searching.
12768 (Output_section::find_starting_output_address): Add comments.
12769 (Output_section::do_write,
12770 Output_section::write_to_postprocessing_buffer): Do code-fill
12771 generation as appropriate.
12772 (Output_section::get_input_sections): Invalidate relaxed input section
12773 map.
12774 (Output_section::restore_states): Adjust type of checkpoint .
12775 Invalidate relaxed input section map.
12776 * output.h (Output_merge_base): New class declaration.
12777 (Input_section_specifier): New class defintion.
12778 (class Output_relaxed_input_section) Change base class to
12779 Output_section_data_build.
12780 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
12781 base class initializer.
12782 (Output_section::add_relaxed_input_section): New method declaration.
12783 (Output_section::Input_section): Change visibility to protected.
2e702c99 12784 (Output_section::Input_section::relobj,
c0a62865
DK
12785 Output_section::Input_section::shndx): Handle relaxed input sections.
12786 Output_section::input_sections) Change visibility to protected. Also
12787 define overload to return a non-const pointer.
12788 (Output_section::Merge_section_properties): New class defintion.
12789 (Output_section::Merge_section_by_properties_map,
12790 Output_section::Output_section_data_by_input_section_map,
12791 Output_section::Relaxation_map): New types.
12792 (Output_section::relax_input_section): Rename method to
12793 Output_section::convert_input_sections_to_relaxed_sections and change
12794 interface to take a vector of relaxed section pointers.
12795 (Output_section::find_merge_section,
12796 Output_section::find_relaxed_input_section,
12797 Output_section::build_relaxation_map,
12798 Output_section::convert_input_sections_in_list_to_relaxed_sections):
12799 New method declarations.
12800 (Output_section::merge_section_map_
12801 Output_section::merge_section_by_properties_map_,
12802 Output_section::relaxed_input_section_map_,
12803 Output_section::is_relaxed_input_section_map_valid_,
12804 Output_section::generate_code_fills_at_write_): New data members.
12805 * script-sections.cc
12806 (Output_section_element_input::set_section_addresses): Call
12807 current_data_size and addralign methods of relaxed input sections.
12808 (Orphan_output_section::set_section_addresses): Call current_data_size
12809 and addralign methods of relaxed input sections.
12810 * symtab.cc (Symbol_table::compute_final_value): Extract template
12811 from the body of Symbol_table::sized_finalize_symbol.
12812 (Symbol_table::sized_finalized_symbol): Call
12813 Symbol_table::compute_final_value.
12814 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
12815 (Symbol_table::compute_final_value): New templated method declaration.
12816 * target.cc (Target::do_make_output_section): New method defintion.
12817 * target.h (Target::make_output_section): New method declaration.
12818 (Target::relax): Add more parameters for input objects, symbol table
12819 and layout. Adjust call to do_relax.
12820 (Target::do_make_output_section): New method declaration.
12821 (Target::do_relax): Add parameters for input objects, symbol table
12822 and layout.
12823
d446d6c4
ILT
128242009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
12825
12826 * pread.c: Include stdio.h.
12827
bc06c745
ILT
128282009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
12829
12830 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
12831 defined.
12832
75aea3d0
ILT
128332009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
12834
12835 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
12836 Change read_shndx type to unsigned int.
12837 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
12838 int.
12839 (Sized_dwarf_line_info::read_line_mappings): Likewise.
12840 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
12841 Change read_shndx type to unsigned int.
12842 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
12843 int.
12844 (Sized_dwarf_line_info::read_line_mappings): Likewise.
12845 * layout.cc (Layout::create_symtab_sections): Cast the result of
12846 local_symcount * symsize to off_t in the gold_assert.
12847
be8fcb75
ILT
128482009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
12849
12850 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
12851 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
12852 R_ARM_BASE_ABS.
12853 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
12854 (Arm_relocate_functions::thm_abs5): New function.
12855 (Arm_relocate_functions::abs12): New function.
12856 (Arm_relocate_functions::abs16): New function.
12857 (Arm_relocate_functions::base_abs): New function.
12858 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
12859 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
12860 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
12861 R_ARM_BASE_ABS.
12862 (Scan::global): Likewise.
12863 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
12864 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
12865 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
12866 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
12867 R_ARM_BASE_ABS.
12868
c2a122b6
ILT
128692009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
12870
12871 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
12872 (Arm_relocate_functions::movt_prel): New function.
12873 (Arm_relocate_functions::thm_movw_prel_nc): New function.
12874 (Arm_relocate_functions::thm_movt_prel): New function.
12875 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
12876 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
12877 (Scan::global, Relocate::relocate): Likewise.
12878 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
12879
c4aa1e2d
ILT
128802009-10-09 Mikolaj Zalewski <mikolajz@google.com>
12881
12882 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
12883 Incremental_checker.
12884 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
12885 unsigned int.
12886 (class Incremental_inputs_header): New class.
12887 (Incremental_inputs_header_writer): Edit comment.
12888 (Incremental_inputs_entry): New class.
12889 (Incremental_inputs_entry_writer): Edit comment.
12890 (Sized_incremental_binary::do_find_incremental_inputs_section):
12891 Add *strtab_shndx parameter, fill it.
12892 (Sized_incremental_binary::do_check_inputs): New method.
12893 (Incremental_checker::can_incrementally_link_output_file): Use
12894 Sized_incremental_binary::check_inputs.
12895 (Incremental_inputs::report_command_line): Save command line in
12896 command_line_.
12897 * incremental.h:
12898 (Incremental_binary::find_incremental_inputs_section): New
12899 method.
12900 (Incremental_binary::do_find_incremental_inputs_section): Add
12901 strtab_shndx parameter.
12902 (Incremental_binary::do_check_inputs): New pure virtual method.
12903 (Sized_incremental_binary::do_check_inputs): Declare.
12904 (Incremental_checker::Incremental_checker): Add incremental_inputs
12905 parameter, use it to initialize incremental_inputs_.
12906 (Incremental_checker::incremental_inputs_): New field.
12907 (Incremental_checker::command_line): New method.
12908 (Incremental_checker::inputs): New method.
12909 (Incremental_checker::command_line_): New field.
12910
c549a694
ILT
129112009-10-09 Mikolaj Zalewski <mikolajz@google.com>
12912
12913 * incremental.cc: Include <cstdarg> and "target-select.h".
12914 (vexplain_no_incremental): New function.
12915 (explain_no_incremental): New function.
12916 (Incremental_binary::error): New method.
12917 (Sized_incremental_binary::do_find_incremental_inputs_section): New
12918 method.
12919 (make_sized_incremental_binary): New function.
12920 (open_incremental_binary): New function.
12921 (can_incrementally_link_file): Add checks if output is ELF and has
12922 inputs section.
12923 * incremental.h: Include "elfcpp_file.h" and "output.h".
12924 (Incremental_binary): New class.
12925 (Sized_incremental_binary): New class.
12926 (open_incremental_binary): Declare.
12927 * object.cc (is_elf_object): Use
12928 elfcpp::Elf_recognizer::is_elf_file.
12929 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
12930 * output.h (Output_file::filesize): New method.
12931
fd3c5f0b
ILT
129322009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
12933
12934 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
12935 New function.
12936 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
12937 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
12938 function.
12939 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
12940 function.
12941 (Arm_relocate_functions::movw_abs_nc): New function.
12942 (Arm_relocate_functions::movt_abs): New function.
12943 (Arm_relocate_functions::thm_movw_abs_nc): New function.
12944 (Arm_relocate_functions::thm_movt_abs): New function.
12945 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
12946 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
12947 (Scan::global): Likewise.
12948 (Relocate::relocate): Likewise.
12949 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
12950
7f5309a5
ILT
129512009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
12952
12953 * arm.cc (Arm_relocate_functions::got_prel) New function.
12954 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
12955 (Relocate::relocate): Likewise.
12956 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
12957
364c7fa5
ILT
129582009-10-06 Ian Lance Taylor <iant@google.com>
12959
12960 * options.h (class General_options): Define
12961 split_stack_adjust_size parameter.
12962 * object.h (class Object): Add uses_split_stack_ and
12963 has_no_split_stack_ fields. Add uses_split_stack and
12964 has_no_split_stack accessor functions. Declare
12965 handle_split_stack_section.
12966 (class Reloc_symbol_changes): Define.
12967 (class Sized_relobj): Define Function_offsets. Declare
12968 split_stack_adjust, split_stack_adjust_reltype, and
12969 find_functions.
12970 * object.cc (Object::handle_split_stack_section): New function.
12971 (Sized_relobj::do_layout): Call handle_split_stack_section.
12972 * dynobj.cc (Sized_dynobj::do_layout): Call
12973 handle_split_stack_section.
12974 * reloc.cc (Sized_relobj::relocate_sections): Call
12975 split_stack_adjust for executable sections in split_stack
12976 objects. Pass reloc_map to relocate_section.
12977 (Sized_relobj::split_stack_adjust): New function.
12978 (Sized_relobj::split_stack_adjust_reltype): New function.
12979 (Sized_relobj::find_functions): New function.
12980 * target-reloc.h: Include "object.h".
12981 (relocate_section): Add reloc_symbol_changes parameter. Change
12982 all callers.
12983 * target.h (class Target): Add calls_non_split method. Declare
12984 do_calls_non_split virtual method. Declare match_view and
12985 set_view_to_nop.
12986 * target.cc: Include "elfcpp.h".
12987 (Target::do_calls_non_split): New function.
12988 (Target::match_view): New function.
12989 (Target::set_view_to_nop): New function.
12990 * gold.cc (queue_middle_tasks): Give an error if mixing
12991 split-stack and non-split-stack objects with -r.
12992 * i386.cc (Target_i386::relocate_section): Add
12993 reloc_symbol_changes parameter.
12994 (Target_i386::do_calls_non_split): New function.
12995 * x86_64.cc (Target_x86_64::relocate_section): Add
12996 reloc_symbol_changes parameter.
12997 (Target_x86_64::do_calls_non_split): New function.
12998 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
12999 parameter.
13000 * powerpc.cc (Target_powerpc::relocate_section): Add
13001 reloc_symbol_changes parameter.
13002 * sparc.cc (Target_sparc::relocate_section): Add
13003 reloc_symbol_changes parameter.
13004 * configure.ac: Call AM_CONDITIONAL for the default target.
13005 * configure: Rebuild.
13006 * testsuite/Makefile.am (TEST_AS): New variable.
13007 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
13008 (check_DATA): Add split_i386 and split_x86_64 files.
13009 (SPLIT_DEFSYMS): Define.
13010 (split_i386_[1234n].o): New targets.
13011 (split_i386_[124]): New targets.
13012 (split_i386_[1234r].stdout): New targets.
13013 (split_x86_64_[1234n].o): New targets.
13014 (split_x86_64_[124]): New targets.
13015 (split_x86_64_[1234r].stdout): New targets.
13016 (MOSTLYCLEANFILES): Add new executables.
13017 * testsuite/split_i386.sh: New file.
13018 * testsuite/split_x86_64.sh: New file.
13019 * testsuite/split_i386_1.s: New file.
13020 * testsuite/split_i386_2.s: New file.
13021 * testsuite/split_i386_3.s: New file.
13022 * testsuite/split_i386_4.s: New file.
13023 * testsuite/split_i386_n.s: New file.
13024 * testsuite/split_x86_64_1.s: New file.
13025 * testsuite/split_x86_64_2.s: New file.
13026 * testsuite/split_x86_64_3.s: New file.
13027 * testsuite/split_x86_64_4.s: New file.
13028 * testsuite/split_x86_64_n.s: New file.
13029 * testsuite/testfile.cc (Target_test): Update relocation_section
13030 function.
13031 * testsuite/Makefile.in: Rebuild.
13032
e8a9fcda
ILT
130332009-10-06 Ian Lance Taylor <iant@google.com>
13034
13035 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
13036 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
13037 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
13038 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
13039 the address on ldo_addrs_.
13040 (Target_i386::Relocate::fix_up_ldo): New function.
13041
e99daf92
ILT
130422009-10-06 Rafael Espindola <espindola@google.com>
13043
13044 * plugin.cc (add_input_library): New.
13045 (Plugin::load): Add add_input_library to tv.
13046 (Plugin_manager::add_input_file): Add the is_lib argument.
13047 (add_input_file): Update call to Plugin_manager::add_input_file.
13048 (add_input_library): New.
13049 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
13050
966d4097
DK
130512009-09-30 Doug Kwan <dougkwan@google.com>
13052
13053 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
13054 symbol and call Symbol::may_need_copy_reloc to determine if
13055 a copy reloc is needed.
13056 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
13057 nocopyreloc is given in command line.
13058 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
13059 given in command line.
13060 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
13061 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
13062 of the removed Target_i386::may_need_copy_reloc.
13063 * options.h (copyreloc): New option with default value false.
13064 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
13065 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
13066 instead of the removed Target_powerpc::may_need_copy_reloc.
13067 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
13068 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
13069 instead of the removed Target_sparc::may_need_copy_reloc.
13070 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
13071 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
13072 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
13073 instead of the removed Target_x86_64::may_need_copy_reloc.
13074
029ba973
ILT
130752009-09-30 Ian Lance Taylor <iant@google.com>
13076
13077 * object.h (class Object): Remove target_ field, and target,
13078 sized_target, and set_target methods.
13079 (Object::sized_target): Remove.
13080 (class Sized_relobj): Update declarations. Remove sized_target.
13081 * object.cc (Sized_relobj::setup): Remove target parameter.
13082 Change all callers.
13083 (Input_objects::add_object): Don't do anything with the target.
13084 (make_elf_sized_object): Add punconfigured parameter. Change all
13085 callers. Set or test parameter target.
13086 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
13087 Change all callers.
13088 * parameters.cc (Parameters::set_target): Change parameter type to
13089 be non-const.
13090 (Parameters::default_target): Remove.
13091 (set_parameters_target): Change parameter type to be non-const.
13092 (parameters_force_valid_target): New function.
13093 (parameters_clear_target): New function.
13094 * parameters.h (class Parameters): Update declarations. Remove
13095 default_target method. Add sized_target and clear_target
13096 methods. Change target_ to be non-const.
13097 (set_parameters_target): Update declaration.
13098 (parameters_force_valid_target): Declare.
13099 (parameters_clear_target): Declare.
13100 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
13101 as NULL if we aren't searching.
13102 (Add_symbols::run): Don't check for compatible target.
13103 * fileread.cc (Input_file::open_binary): Call
13104 parameters_force_valid_target.
13105 * gold.cc (queue_middle_tasks): Likewise.
13106 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
13107 set_target on object.
13108 * dynobj.h (class Sized_dynobj): Update declarations.
13109 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
13110 make_elf_object returns NULL.
13111 (Archive::include_member): Don't check whether object target is
13112 compatible.
13113 * output.cc (Output_section::add_input_section): Get target from
13114 parameters.
13115 (Output_section::relax_input_section): Likewise.
13116 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
13117 parameters.
13118 (Sized_relobj::do_scan_relocs): Likewise.
13119 (Sized_relobj::relocate_sections): Likewise.
13120 * resolve.cc (Symbol_table::resolve): Likewise.
13121 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
13122 parameter. Change all callers.
13123 (Symbol_table::add_from_object): Get target from parameters.
13124 (Symbol_table::add_from_relobj): Don't check object target.
13125 (Symbol_table::add_from_dynobj): Likewise.
13126 (Symbol_table::define_special_symbol): Get target from
13127 parameters.
13128 * symtab.h (class Symbol_table): Update declaration.
13129 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
13130 parameter. Change all callers. Clear parameter target.
13131 (Binary_test): Test target here.
13132 * testsuite/object_unittest.cc (gold_testsuite): Remove
13133 target_test_pointer parameter. Change all callers.
13134 (Object_test): Test target here.
13135
a6a22b83
ILT
131362009-09-26 Ian Lance Taylor <iant@google.com>
13137
13138 * testsuite/initpri1.c: Don't try to use constructor priorities if
13139 compiling with gcc before 4.3.
13140
6a8f49fe
ILT
131412009-09-22 Mikolaj Zalewski <mikolajz@google.com>
13142
13143 * testsuite/retain_symbols_file_test.sh (check_present): Change
13144 output file name to retain_symbols_file_test.stdout.
13145 (check_absent): Likewise.
13146
8c604651
CS
131472009-09-18 Craig Silverstein <csilvers@google.com>
13148
13149 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
13150 * options.cc: Include <cerrno> and <fstream>.
13151 (General_options::finalize): Parse -retain-symbols-file tag.
13152 * options.h: New flag.
13153 (General_options): New method should_retain_symbol, new
13154 variable symbols_to_retain.
13155 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
13156 should_retain_symbol map.
13157 * testsuite/Makefile.am (retain_symbols_file_test): New test.
13158 * testsuite/Makefile.in: Regenerate.
13159 * testsuite/retain_symbols_file_test.sh: New file.
13160
ca58b19f
NC
131612009-09-18 Nick Clifton <nickc@redhat.com>
13162
13163 * po/es.po: Updated Spanish translation.
13164
20e6d0d6
DK
131652009-09-17 Doug Kwan <dougkwan@google.com>
13166
13167 * debug.h (DEBUG_RELAXATION): New constant.
13168 (DEBUG_ALL): Add DEBUG_RELAXATION.
13169 (debug_string_to_enum): Add relaxation debug option.
13170 * layout.cc
13171 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
13172 Layout::Relaxation_debug_check::read_sections,
13173 Layout::Relaxation_debug_check::read_sections): New method definitions.
13174 (Layout::Layout): Initialize data members
13175 record_output_section_data_from_scrips_,
13176 script_output_section_data_list_ and relaxation_debug_check_.
13177 (Layout::save_segments, Layout::restore_segments,
13178 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
13179 Layout::relaxation_loop_body): New method definitions.
13180 (Layout::finalize): Support relaxation. Move section layout code to
13181 Layout::relaxation_loop_body.
13182 (Layout::set_asection_address_from_script): Move code for orphan
13183 section placement out.
13184 (Layout::place_orphan_sections_in_script): New method definition.
13185 * layout.h (Output_segment_headers, Output_file_header):
13186 New forward class declarations.
13187 (Layout::~Layout): Define.
13188 (Layout::new_output_section_data_from_script): New method definition.
13189 (Layout::place_orphan_sections_in_script): New method declaration.
13190 (Layout::Segment_states): New type declaration.
13191 (Layout::save_segments, Layout::restore_segments,
13192 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
13193 Layout::relaxation_loop_body): New method declarations.
13194 (Layout::Output_section_data_list): New type declaration.
13195 (Layout::Relaxation_debug_check): New class definition.
13196 (Layout::record_output_section_data_from_script_,
13197 Layout::script_output_section_data_list_, Layout::segment_states_,
13198 Layout::relaxation_debug_check_): New data members.
13199 * output.cc: (Output_section_headers::do_size): New method definition.
13200 (Output_section_headers::Output_section_headers): Move size
13201 computation to Output_section_headers::do_size.
13202 (Output_segment_headers::do_size): New method definition.
e1df38aa 13203 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
13204 Output_file_header::do_size and call it.
13205 (Output_file_header::do_size): New method definition.
13206 (Output_data_group::Output_data_group): Adjust call to
13207 Output_section_data.
13208 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
13209 (Output_symtab_xindex::do_write): Add array bound check.
2e702c99 13210 (Output_section::Input_section::print_to_mapfile): Handle
20e6d0d6
DK
13211 RELAXED_INPUT_SECTION_CODE.
13212 (Output_section::Output_section): Initialize data member checkpoint_.
13213 (Output_section::~Output_section): Delete checkpoint object pointed
13214 by checkpoint_.
13215 (Output_section::add_input_section): Always add an Input_section if
13216 relaxing.
13217 (Output_section::add_merge_input_section): Add assert.
13218 (Output_section::relax_input_section): New method definition.
13219 (Output_section::set_final_data_size): Set load address to zero for
13220 an unallocated section.
13221 (Output_section::do_address_and_file_offset_have_reset_values):
13222 New method definition.
13223 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
13224 Handle relaxed input section.
13225 (Output_section::sort_attached_input_sections): Checkpoint input
13226 section list lazily.
13227 (Output_section::get_input_sections): Change type of input_sections to
13228 list of Simple_input_section pointers. Checkpoint input section list
13229 lazily. Also handle relaxed input sections.
13230 (Output_section::add_input_section_for_script): Take a reference to
13231 a Simple_input_section object instead of Relobj pointer and section
13232 index as parameter. Handle relaxed input sections.
13233 (Output_section::save_states, Output_section::restore_states): New
13234 method definitions.
13235 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
13236 (Output_data::is_data_size_fixed): New method definition.
13237 (Output_data::reset_addresss_and_file_offset): Do not reset data size
13238 if it is fixed.
13239 (Output_data::address_and_file_offset_have_reset_values): New method
13240 definition.
13241 (Output_data::do_address_and_file_offset_have_reset_values): New method
13242 definition.
13243 (Output_data::set_data_size): Check that data size is not fixed.
13244 (Output_data::fix_data_size): New method definition.
13245 (Output_data::is_data_size_fixed_): New data member.
13246 (Output_section_headers::set_final_data_size): New method definition.
13247 (Output_section_headers::do_size): New method declaration.
13248 (Output_segment_headers::set_final_data_size): New method definition.
13249 (Output_segment_headers::do_size): New method declaration.
13250 (Output_file_header::set_final_data_size)::New method definition.
13251 (Output_file_header::do_size)::New method declaration.
13252 (Output_section_data::Output_section_data): Add new parameter
13253 is_data_size_fixed and use it to fix data size.
13254 (Output_data_const::Output_data_const): Adjust call to base class
13255 constructor and fix data size.
13256 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
13257 base class constructor and fix data size.
13258 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
13259 base class constructor and fix data size.
13260 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
13261 class constructor and fix data size.
13262 (Output_data_group::set_final_data_size): New method definition.
13263 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
13264 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
13265 class constructor and fix data size.
13266 (Output_relaxed_input_section): New class definition.
13267 (Output_section::Simple_input_section): New class definition.
13268 (Output_section::get_input_sections): Adjust parameter list.
13269 (Output_section::add_input_section_for_script): Same.
13270 (Output_section::save_states, Output_section::restore_states,
13271 Output_section::do_address_and_file_offset_have_reset_values,
13272 (Output_section::Input_section::Input_section): Handle
13273 RELAXED_INPUT_SECTION_CODE. Add new overload for
13274 Output_relaxed_input_section.
13275 (Output_section::Input_section::is_input_section,
13276 Output_section::Input_section::set_output_section): Handle relaxed
13277 input section.
13278 (Output_section::Input_section::is_relaxed_input_section,
13279 Output_section::Input_section::output_section_data,
13280 Output_section::Input_section::relaxed_input_section): New method
13281 definitions.
13282 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
13283 value.
13284 (Output_section::Input_section::u1_): Update comments.
13285 (Output_section::Input_section::u2_): Add new union member poris.
13286 (Output_section::Checkpoint_output_section): New classs definition.
13287 (Output_section::relax_input_section): New method declaration.
13288 (Output_section::checkpoint_): New data member.
13289 (Output_segment): Update comments.
13290 (Output_segment::Output_segment): Un-privatize copy constructor.
13291 (Output_segment::operator=): Un-privatize.
13292 * script-sections.cc (Output_section_element::Input_section_list):
13293 Change element type to Output_section::Simple_input_section.
13294 (Output_section_element_dot_assignment::set_section_addresses):
13295 Register output section data for relaxation clean up.
13296 (Output_data_exression::Output_data_expression): Adjust call to base
13297 constructor to fix data size.
13298 (Output_section_element_data::set_section_addresses): Register
13299 Output_data_expression object for relaxation clean up.
13300 (struct Input_section_info): Replace Relobj pointer and section index
13301 pair with Output_section::Simple_input_section and Convert struct to a
13302 class.
13303 (Input_section_sorter::operator()): Adjust access to
e1df38aa 13304 Input_section_info data member to use accessors.
20e6d0d6
DK
13305 (Output_section_element_input::set_section_addresses): Use layout
13306 parameter. Adjust code to use Output_section::Simple_input_section
13307 and Input_secction_info classes. Register filler for relaxation
13308 clean up.
13309 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
13310 and section index pair with Output_section::Simple_input_section
13311 class. Adjust code accordingly.
13312 (Phdrs_element::release_segment): New method definition.
13313 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
13314 segment list.
13315 (Script_sections::release_segments): New method definition.
13316 * gold/script-sections.h (Script_sections::release_segments): New
13317 method declaration.
13318 * gold/target.h (Target::may_relax, Target::relax,
13319 Target::do_may_relax, Target::do_relax): New method definitions.
13320
5e445df6
ILT
133212009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
13322
13323 * arm.cc (has_signed_unsigned_overflow): New function.
13324 (Arm_relocate_functions::abs8): New function.
13325 (Target_arm::Scan::local): Handle R_ARM_ABS8.
13326 (Target_arm::Scan::global): Likewise.
13327 (Target_arm::relocate::relocate): Likewise.
13328 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
13329 Likewise.
13330
8c604651 133312009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
13332
13333 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
13334 * testsuite/Makefile.in: Regenerate.
13335
1e9cc1c2
NC
133362009-09-11 Nick Clifton <nickc@redhat.com>
13337
13338 * po/gold.pot: Updated by the Translation project.
13339
6a89f575
CC
133402009-09-08 Cary Coutant <ccoutant@google.com>
13341
13342 * output.cc (Output_file::open): Add execute permission to empty file.
13343 * testsuite/Makefile.am (permission_test): New test.
13344 * testsuite/Makefile.in: Regenerate.
13345
fdcac5af
ILT
133462009-09-02 Ian Lance Taylor <iant@google.com>
13347
13348 * output.cc (Output_file::resize): Call map_no_anonymous rather
13349 than map.
13350
44453f85
ILT
133512009-09-01 Mikolaj Zalewski <mikolajz@google.com>
13352
13353 * gold.cc: Include "incremental.h".
13354 (queue_initial_tasks): Call Incremental_checker methods.
13355 * incremental.cc: Include "output.h".
13356 (Incremental_checker::can_incrementally_link_output_file): New
13357 method.
13358 * incremental.h (Incremental_checker): New class.
13359
13360 * output.cc (Output_file::open_for_modification): New method.
13361 (Output_file::map_anonymous): Changed return type to bool. Record
13362 map in base_ field.
13363 (Output_file::map_no_anonymous): New method, broken out of map.
13364 (Output_file::map): Use map_no_anonymous and map_anonymous.
13365 * output.h (class Output_file): Update declarations.
13366
293c1386
CC
133672009-08-24 Cary Coutant <ccoutant@google.com>
13368
13369 * options.h (Command_line::Pre_options): New class.
13370 (Command_line::pre_options): New member.
13371 * options.cc (gold::options::ready_to_register): New variable.
13372 (One_option::register_option): Do nothing if not registering options.
13373 Assert if same short option registered twice.
13374 (General_options::General_options): Turn off option registration when
13375 done constructing.
13376 (Command_line::Pre_options::Pre_options): New constructor.
13377
f773f3d2
CC
133782009-08-24 Cary Coutant <ccoutant@google.com>
13379
06a73cfe
CC
13380 * options.h (General_options::no_keep_memory): Remove incorrect
13381 short option.
f773f3d2 13382
a15af8e2
RW
133832009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
13384
13385 * Makefile.am (am__skiplex, am__skipyacc): New.
13386 * Makefile.in: Regenerate.
13387
c462b41b
RW
133882009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
13389
14ec8efd
RW
13390 * Makefile.am (AM_CPPFLAGS): Renamed from ...
13391 (INCLUDES): ... this.
13392 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
13393 (AM_CPPFLAGS): Renamed from ...
13394 (INCLUDE): ... this.
13395 * Makefile.in, testsuite/Makefile.in: Regenerate.
13396
81ecdfbb
RW
13397 * Makefile.in: Regenerate.
13398 * aclocal.m4: Likewise.
13399 * config.in: Likewise.
13400 * configure: Likewise.
13401 * testsuite/Makefile.in: Likewise.
13402
c462b41b
RW
13403 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
13404 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
13405 * Makefile.in: Regenerate.
13406 * testsuite/Makefile.in: Regenerate.
13407
2da73f13
CC
134082009-08-19 Cary Coutant <ccoutant@google.com>
13409
13410 * resolve.cc (Symbol_table::resolve): Don't complain about defined
13411 symbols in shared libraries overridden by hidden or internal symbols
13412 in the main program.
13413
2db70501
CD
134142009-08-19 Chris Demetriou <cgd@google.com>
13415
13416 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
13417 checking source file names in error messages.
13418
f733487b
DK
134192009-08-18 Doug Kwan <dougkwan@google.com>
13420
13421 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
13422 an elcpp::Ehdr as parameter. Adjust call to set_target.
13423 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
13424 an elfcpp::Ehdr as parameter.
13425 * object.cc (Object::set_target): Remove the version that looks up
13426 a target and sets it.
13427 (Sized_relobj::setup): Take a Target object instead of
13428 an elfcpp::Ehdr as parameter. Adjust call to set_target.
13429 (make_elf_sized_object): Find target and ask target to
13430 make an ELF object.
13431 * object.h: (Object::set_target): Remove the version that looks up
13432 a target and sets it.
13433 (Sized_relobj::setup): Take a Target object instead of
13434 an elfcpp:Ehdr as parameter.
13435 * target.cc: Include dynobj.h.
13436 (Target::do_make_elf_object_implementation): New.
2e702c99 13437 (Target::do_make_elf_object): New.
f733487b
DK
13438 * target.h (Target::make_elf_object): New template declaration.
13439 (Target::do_make_elf_object): New method declarations.
13440 (Target::do_make_elf_object_implementation): New template declaration.
13441
cc70f101
ILT
134422009-08-14 Ian Lance Taylor <iant@google.com>
13443
13444 * gold.h (FUNCTION_NAME): Define.
13445 (gold_unreachable): Use FUNCTION_NAME.
13446
ef5e0cb1
ST
134472009-08-12 Sriraman Tallam <tmsriram@google.com>
13448
13449 * icf.cc (Icf::find_identical_sections): Issue a warning when a
13450 symbol in the --keep-unique list is not found.
13451
48c187ce
ST
134522009-08-12 Sriraman Tallam <tmsriram@google.com>
13453
13454 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
13455 been maked as --keep-unique.
13456 (Icf::unfold_section): New function.
13457 * icf.h (Icf::unfold_section): New function.
13458 * options.h (General_options::keep_unique): New option.
13459 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
13460 * testsuite/Makefile.in: Regenerate.
13461 * testsuite/icf_keep_unique_test.sh: New file.
13462 * testsuite/icf_keep_unique_test.cc: New file.
13463
645afe0c
CC
134642009-08-12 Cary Coutant <ccoutant@google.com>
13465
13466 PR 10471
13467 * resolve.cc (Symbol_table::resolve): Check for references from
13468 dynamic objects to hidden and internal symbols.
13469 * testsuite/Makefile.am (hidden_test.sh): New test.
13470 * testsuite/Makefile.in: Regenerate.
13471 * testsuite/hidden_test.sh: New script.
13472 * testsuite/hidden_test_1.c: New test source.
13473 * testsuite/hidden_test_main.c: New test source.
13474
11af873f
DK
134752009-08-11 Doug Kwan <dougkwan@google.com>
13476
13477 * arm.cc: Update comments.
13478 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
13479 segment to locate the .ARM.exidx section if present.
13480
b9f7d72d
DK
134812009-08-09 Doug Kwan <dougkwan@google.com>
13482
13483 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
13484 patch.
13485
ddd3c53c
ST
134862009-08-07 Sriraman Tallam <tmsriram@google.com>
13487 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
13488 compiler warnings.
13489
27721062
ST
134902009-08-06 Sriraman Tallam <tmsriram@google.com>
13491
13492 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
13493 valid tls_segment only for non-debug-section relocations.
13494 * testsuite/Makefile.am: Add gc_tls_test.
13495 * testsuite/Makefile.in: Regenerate.
13496 * testsuite/gc_tls_test.cc: New file.
13497 * testsuite/gc_tls_test.sh: New file.
13498
ef15dade 134992009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 13500
ef15dade
ST
13501 * icf.cc: New file.
13502 * icf.h: New file.
13503 * Makefile.am (CCFILES): Add icf.cc.
13504 (HFILES): Add icf.h
13505 * Makefile.in: Regenerate.
13506 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
13507 * gc.h (gc_process_relocs): Populate lists used by icf to contain
13508 section, symbol and addend information for the relocs.
13509 * gold.cc (queue_middle_tasks): Call identical code folding.
13510 * gold.h: Add defines for multimap.
13511 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
13512 to the call of finalize_local_symbols.
13513 * main.cc (main): Create object of class Icf.
13514 * object.cc (Sized_relobj::do_layout): Allow this function to be
13515 called twice during icf.
13516 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
13517 to sections marked as identical by icf.
13518 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
13519 when available.
13520 (Sized_relobj::do_section_entsize): New function.
13521 * object.h (Object::section_entsize): New function.
13522 (Object::do_section_entsize): New pure virtual function.
13523 (Relobj::finalize_local_symbols): Add new parameter.
13524 (Relobj::do_section_entsize): New function.
13525 * options.h (General_options::icf): New option.
13526 (General_options::icf_iterations): New option.
13527 (General_options::print_icf_sections): New option.
13528 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
13529 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
13530 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
13531 icf.
13532 * symtab.cc (Symbol_table::is_section_folded): New function.
13533 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
13534 to sections marked as identical by icf.
13535 * symtab.h (Symbol_table::set_icf): New function.
13536 (Symbol_table::icf): New function.
13537 (Symbol_table::is_section_folded): New function.
13538 (Symbol_table::icf_): New data member.
13539 * target-reloc.h (relocate_section): Ignore sections folded by icf.
13540 * testsuite/Makefile.am: Add commands to build icf_test.
13541 * testsuite/Makefile.in: Regenerate.
13542 * testsuite/icf_test.sh: New file.
13543 * testsuite/icf_test.cc: New file.
13544
c3b65ac4
CD
135452009-07-24 Chris Demetriou <cgd@google.com>
13546
13547 * layout.cc (is_compressible_debug_section): Fix incorrect
13548 comment about compressed section names.
13549
1caf2c51
ILT
135502009-07-20 Ian Lance Taylor <ian@airs.com>
13551
13552 PR 10419
13553 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
13554
1ef4d87f
ILT
135552009-07-16 Ian Lance Taylor <iant@google.com>
13556
13557 PR 10400
13558 * layout.h: #include <map>.
13559 (class Kept_section): Change from struct to class. Add accessors
13560 and setters. Add section size to Comdat_group mapping. Change
13561 Comdat_group to std::map. Add is_comdat_ field. Add
13562 linkonce_size field in union.
13563 (class Layout): Update declaration of find_or_add_kept_section.
13564 Don't declare find_kept_object.
13565 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
13566 parameter. Add object, shndx, is_comdat, and is_group_name
13567 parameters. Change all callers. Adjust for new Kept_section.
13568 (Layout::find_kept_object): Remove.
13569 * object.cc (Sized_relobj::include_section_group): Update use of
13570 Kept_section. Rename secnum to shndx. Only record
13571 Kept_comdat_section if sections are the same size.
13572 (Sized_relobj::include_linkonce_section): Update use of
13573 Kept_section. Only record Kept_comdat_section if sections are the
13574 same size. Set size of linkonce section.
13575 (Sized_relobj::map_to_kept_section): Update call to
13576 get_kept_comdat_section.
13577 * object.h (class Sized_relobj): Rename fields in
13578 Kept_comdat_section to drop trailing underscores; change object
13579 field to Relobj*. Change Kept_comdat_section_table to store
13580 struct rather than pointer.
13581 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
13582 Add kept_object and kept_shndx parameters. Change all callers.
13583 (Sized_relobj::get_kept_comdat_section): Change return type to
13584 bool. Add kept_object and kept_shndx parameters. Change all
13585 callers.
13586 * plugin.cc (Pluginobj::include_comdat_group): Update call to
13587 Layout::find_or_add_kept_section.
13588
37c3b7b0
ILT
135892009-07-09 Ian Lance Taylor <iant@google.com>
13590
13591 * merge.cc (Object_merge_map::initialize_input_to_output_map):
13592 Reserve space in the hash table.
13593
98fa85cb
ILT
135942009-07-06 Mikolaj Zalewski <mikolajz@google.com>
13595
13596 * fileread.cc (File_read::get_mtime): New method.
13597 * fileread.h (Timespec): New structure.
13598 (File_read::get_mtime): New method.
13599 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
13600 Renamed from timestamp_nsec.
13601 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
13602 Elf_Xword.
e1df38aa 13603 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 13604 timestamp_nsec.
e1df38aa 13605 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
13606 (Incremental_inputs::report_obejct): Save mtime; style fix.
13607 (Incremental_inputs::report_script): Save mtime; style fix.
13608 (Incremental_inputs::finalize_inputs): Style fix.
13609 (Incremental_inputs::finalize): Style fix.
13610 (Incremental_inputs::create_input_section_data): Store inputs
13611 mtime.
13612 * incremental.h (Incremental_inputs::report_script): Add mtime
13613 argument.
13614 (Incremental_inputs::Input_info::Input_info): Intialize only one
13615 union member.
13616 (Incremental_inputs::Input_info::archive): Move to nameless
13617 union.
13618 (Incremental_inputs::Input_info::obejct): Move to nameless union.
13619 (Incremental_inputs::Input_info::script): Move to nameless union.
13620 (Incremental_inputs::mtime): New field.
13621 * script.cc (read_input_script): Pass file mtime to
13622 Incremental_input.
13623 * script.h (Script_info::inputs): Style fix.
13624
c9d70757
ILT
136252009-07-01 Ian Lance Taylor <ian@airs.com>
13626
13627 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
13628 instead of 32.
13629
9c547ec3
ILT
136302009-06-24 Ian Lance Taylor <iant@google.com>
13631
13632 PR 10156
13633 * layout.cc (Layout::choose_output_section): If we find an
13634 existing section, update the flags.
13635 (Layout::create_notes): New function, broken out of
13636 Layout::finalize.
13637 (Layout::finalize): Don't create note sections.
13638 (Layout::create_note): Don't crash if linker script discards
13639 section.
13640 (Layout::create_gold_note): Likewise.
13641 (Layout::create_build_id): Likewise. Don't set
13642 after_input_sections on the section.
13643 (Layout::create_executable_stack_info): Remove target parameter.
13644 Change caller.
13645 * layout.h (class Layout): Declare create_notes. Update
13646 declaration of create_executable_stack_info.
13647 * gold.cc (queue_middle_tasks): Call create_notes.
13648 * output.cc (Output_section::update_flags_for_input_section): Move
13649 here from output.h. If SHF_ALLOC flag is newly set, mark address
13650 invalid.
13651 * output.h (Output_data::mark_address_invalid): New function.
13652 (class Output_section): Only declare, not define,
13653 update_flags_for_input_section. Remove set_flags.
13654
55458500
ILT
136552009-06-24 Ian Lance Taylor <iant@google.com>
13656
13657 * script-sections.cc (Output_section_definition::
13658 set_section_addresses): Rename shadowing local load_address to
13659 laddr.
13660
1307d6cd
ILT
136612009-06-24 Ian Lance Taylor <iant@google.com>
13662
13663 PR 10244
13664 * reloc.cc (relocate_sections): Skip empty relocation sections.
13665
ec3f783e
ILT
136662009-06-23 Ian Lance Taylor <iant@google.com>
13667
13668 PR 10156
13669 * layout.cc (Layout::create_note): Use choose_output_section
13670 rather than make_output_section.
13671
459c9f1c
ILT
136722009-06-23 Ian Lance Taylor <iant@google.com>
13673
13674 PR 10237
13675 * options.cc (General_options::parse_V): Set printed_version_.
13676 (General_options::General_options): Initialize printed_version_.
13677 * options.h (class General_options): Add printed_version_ field.
13678 * gold.cc (queue_initial_tasks): If there are no input files,
13679 don't give a fatal error if we printed the version information.
13680 (queue_middle_tasks): If using -r with a shared object, give a
13681 fatal error rather than an ordinary error.
13682
1518dc8f
ILT
136832009-06-23 Ian Lance Taylor <iant@google.com>
13684
13685 PR 10219
13686 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
13687 (Layout::make_output_section): Set have_stabstr_section_ if we see
13688 a .stab*str section.
13689 (Layout::finalize): Call link_stabs_sections.
13690 (Layout::link_stabs_sections): New file.
13691 * layout.h (class Layout): Add have_stabstr_section_ field.
13692 Declare link_stabs_sections.
13693
3d857b98
DK
136942009-06-23 Doug Kwan <dougkwan@google.com>
13695
13696 * Makefile.am (libgold_a_LIBADD): New.
13697 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
2e702c99 13698 * Makefile.in: Regenerate.
3d857b98
DK
13699 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
13700 * configure: Regenerate.
13701 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
13702 * fileread.cc: Include sys/state.h
13703 * gold.h: Declare memmem and strndup if found missing.
13704 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
13705
0639a6f6
ILT
137062009-06-23 Ian Lance Taylor <iant@google.com>
13707
13708 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
13709 * configure: Rebuild.
13710
8d63875c
ILT
137112009-06-23 Ian Lance Taylor <iant@google.com>
13712
13713 PR 10147
13714 * object.cc (Object::section_contents): Don't try to get a view if
13715 the section has length zero.
13716 (Object::handle_gnu_warning_section): If the section is empty, use
13717 the name of the section as the warning.
13718
f7c8a183
ILT
137192009-06-23 Ian Lance Taylor <iant@google.com>
13720
13721 PR 10133
13722 * stringpool.h (class Stringpool_template): Add optimize_ field.
13723 (Stringpool_template::set_optimize): New function.
13724 * stringpool.cc (Stringpool_template::Stringpool_template):
13725 Initialize optimize_ field.
13726 (Stringpool_template::set_string_offsets): Test local optimize
13727 fild rather than parameter.
13728 * layout.cc (Layout::Layout): Call set_optimize on the section
13729 name stringpool.
13730
e6a307ba
ILT
137312009-06-22 Ian Lance Taylor <iant@google.com>
13732
13733 PR 10030
13734 * yyscript.y: Parse TARGET.
13735 * script.cc (script_set_target): New function.
13736 * script-c.h (script_set_target): Declare.
13737 * options.cc (General_options::string_to_object_format): Rename
13738 from string_to_object_format in anonymous namespace. Change
13739 callers.
13740 * options.h (class General_options): Declare
13741 string_to_object_format.
13742
3ee173de
ILT
137432009-06-22 Ian Lance Taylor <iant@google.com>
13744
13745 * script-sections.cc (Script_sections::create_segments): Don't put
13746 program headers in a PT_LOAD segment if -n or -N.
13747
137482009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
13749
13750 PR 10141
13751 * options.h (class General_options): Add -z lazy and -z now. Sort
13752 -z options into alphabetical order.
13753 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
13754
cd6739a1 137552009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
13756
13757 * layout.cc (Layout::make_output_section): Call
13758 Target::new_output_section.
13759 (Layout::attach_allocated_section_to_segment): Put large section
13760 sections in a separate load segment with the large segment flag
13761 set.
13762 (Layout::segment_precedes): Sort large data segments after other
13763 load segments.
13764 (align_file_offset): New static function.
13765 (Layout::set_segment_offsets): Use align_file_offset.
13766 * output.h (class Output_section): Add is_small_section_ and
13767 is_large_section_ fields.
13768 (Output_section::is_small_section): New function.
13769 (Output_section::set_is_small_section): New function.
13770 (Output_section::is_large_section): New function.
13771 (Output_section::set_is_large_section): New function.
13772 (Output_section::is_large_data_section): New function.
13773 (class Output_segment): Add is_large_data_segment_ field.
13774 (Output_segment::is_large_data_segment): New function.
13775 (Output_segment::set_is_large_data_segment): New function.
13776 * output.cc (Output_section::Output_section): Initialize new
13777 fields.
13778 (Output_segment::Output_segment): Likewise.
13779 (Output_segment::add_output_section): Add assertion that large
13780 data sections always go in large data segments. Force small data
13781 sections to the end of the list of data sections. Force small BSS
13782 sections to the start of the list of BSS sections. For large BSS
13783 sections to the end of the list of BSS sections.
13784 * symtab.h (class Symbol): Declare is_common_shndx.
13785 (Symbol::is_defined): Check Symbol::is_common_shndx.
13786 (Symbol::is_common): Likewise.
13787 (class Symbol_table): Define enum Commons_section_type. Update
13788 declarations. Add small_commons_ and large_commons_ fields.
13789 * symtab.cc (Symbol::is_common_shndx): New function.
13790 (Symbol_table::Symbol_table): Initialize new fields.
13791 (Symbol_table::add_from_object): Put small and large common
13792 symbols in the right list.
13793 (Symbol_table::sized_finalized_symbol): Check
13794 Symbol::is_common_shndx.
13795 (Symbol_table::sized_write_globals): Likewise.
13796 * common.cc (Symbol_table::do_allocate_commons): Allocate new
13797 common symbol lists. Don't call do_allocate_commons_list if the
13798 list is empty.
13799 (Symbol_table::do_allocate_commons_list): Remove is_tls
13800 parameter. Add comons_section_type parameter. Change all
13801 callers. Handle small and large common symbols.
13802 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
13803 Symbol::is_common_shndx.
13804 * resolve.cc (symbol_to_bits): Likewise.
13805 * target.h (Target::small_common_shndx): New function.
13806 (Target::small_common_section_flags): New function.
13807 (Target::large_common_shndx): New function.
13808 (Target::large_common_section_flags): New function.
13809 (Target::new_output_section): New function.
13810 (Target::Target_info): Add small_common_shndx, large_common_shndx,
13811 small_common_section_flags, and large_common_section_flags
13812 fields.
13813 (Target::do_new_output_section): New virtual function.
13814 * arm.cc (Target_arm::arm_info): Initialize new fields.
13815 * i386.cc (Target_i386::i386_info): Likewise.
13816 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
13817 Likewise.
13818 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
13819 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
13820 (Target_x86_64::do_new_output_section): New function.
13821 * configure.ac: Define conditional MCMODEL_MEDIUM.
13822 * testsuite/Makefile.am (check_PROGRAMS): Add large.
13823 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
13824 (large_LDFLAGS): Define.
13825 * testsuite/large.c: New file.
13826 * testsuite/testfile.cc (Target_test::test_target_info):
13827 Initialize new fields.
13828 * configure, testsuite/Makefile.in: Rebuild.
13829
bb04269c
DK
138302009-06-05 Doug Kwan <dougkwan@google.com>
13831
13832 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 13833 * Makefile.in: Regenerate.
bb04269c
DK
13834 * i386.cc (class Target_i386): Define new virtual method to
13835 override do_is_local_label_name in parent.
13836 * object.cc (Sized_relobj::do_count_local_symbols): Discard
13837 local symbols if --discard-locals or -X is given.
13838 * options.h (class General_options): Declare new options
13839 '--discard-locals' and '-X' for discarding locals.
13840 * target.h (class Target): Define new methods is_local_label_name.
13841 Declare new virtual method do_is_local_label_name.
13842 * target.cc: New file.
13843 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
13844 (check_SCRIPTS): Add discard_locals_test.sh.
13845 (check_DATA): Add discard_local_tests.syms.
13846 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
13847 (discard_local_tests.syms, discard_locals_test.o): New make rules.
13848 * testsuite/Makefile.in: Regenerate.
13849 * testsuite/discard_locals_test.c: New file.
13850 * testsuite/discard_locals_test.sh: Same.
13851
805bb01c
DK
138522009-06-05 Doug Kwan <dougkwan@google.com>
13853
13854 * object.cc (Sized_relobj::Sized_relobj): Initialize
13855 discarded_eh_frame_shndx_ to -1U.
13856 (Sized_relobj::do_layout): Record index of a discard .eh_frame
13857 section.
13858 (Sized_relobj::do_count_local_symbols): Skip local symbols in
13859 a discarded .eh_frame section.
13860 (Sized_relobj::do_finalize_local_symbols): Ditto.
13861 * object.h (class Sized_relobj): Declare new member
13862 discarded_eh_frame_shndx_.
13863 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
13864 (local_labels_test.o, local_labels_test): New rules.
13865 * testsuite/Makefile.in: Regenerate.
13866
1dcd334d
DK
138672009-06-04 Doug Kwan <dougkwan@google.com>
13868
13869 * layout.cc (Layout::section_name_mapping): Add mapping for
13870 special ARM sections.
13871
96d49306
DK
138722009-06-03 Doug Kwan <dougkwan@google.com>
13873
13874 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
13875 (utils::has_overflow): Same.
13876
dff16297
ILT
138772009-06-03 Ian Lance Taylor <iant@google.com>
13878
13879 * layout.cc (Layout::section_name_mapping): New array, replacing
13880 Layout::linkonce_mapping.
13881 (Layout::section_name_mapping_count): New variable, replacing
13882 Layout::linkonce_mapping_count.
13883 (Layout::linkonce_output_name): Remove.
13884 (Layout::output_section_name): Rewrite.
13885 * layout.h (class Layout): Rename Linkonce_mapping to
13886 Section_name_mapping, linkonce_mapping to section_name_mapping,
13887 linkonce_mapping_count to section_name_mapping_count. Don't
13888 declare linkonce_output_name.
13889
c121c671
DK
138902009-06-03 Doug Kwan <dougkwan@google.com>
13891
13892 * gold/arm.cc (namespace utils): New.
13893 (Target_arm::reloc_is_non_pic): Define new method.
13894 (class Arm_relocate_functions): New.
13895 (Target_arm::Relocate::relocate): Handle relocation types used by
13896 Android.
13897
07800fab
ILT
138982009-06-03 Ian Lance Taylor <iant@google.com>
13899
13900 * arm.cc (Target_arm::scan::global): Use || instead of |.
13901
c121c671
DK
139022009-06-02 Doug Kwan <dougkwan@google.com>
13903
13904 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
13905 issued_non_pic_error_.
13906 (class Target_arm::Scan): Declare new method check_non_pic.
13907 Define new method symbol_needs_plt_entry.
13908 Declare new data member issued_non_pic_error_.
13909 (class Target_arm::Relocate): Declare new method
13910 should_apply_static_reloc.
13911 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
13912 (Target_arm::Scan::check_non_pic): Define new method.
13913 (Target_arm::Scan::local): Handle a small subset of reloc types used
13914 by Android.
13915 (Target_arm::Scan::local): Same.
13916 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
13917
b19b0c6d
ILT
139182009-05-31 Mikolaj Zalewski <mikolajz@google.com>
13919
13920 * incremental.cc (Incremental_inputs::report_command_line): Filter
13921 out --incremental-* options.
13922
94cdfcff
DK
139232009-05-29 Doug Kwan <dougkwan@google.com>
13924
13925 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
13926 template class.
13927 (class Target_arm): Update comment.
13928 (Target_arm::Target_arm): Initialize new data members GOT_,
13929 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
13930 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
13931 and Target_arm::rel_dyn_section.
13932 Declare new_enum Target_arm::Got_type.
13933 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
13934 and DYNBSS_.
13935 Update commments for member do_dynsym_value.
13936 (Target_arm::got_size, Target_arm::plt_section,
13937 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
13938 new methods inside class defintion.
13939 (Target_arm::got_section): Define new method.
13940 (Target_arm::rel_dyn_section): Same.
13941 (Output_data_plt_arm): New template class.
13942 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
13943 (Output_data_plt_arm:do_adjust_output_section): Define new method.
13944 (Output_data_plt_arm::add_entry): Same.
13945 (Output_data_plt_arm::first_plt_entry): Define new
13946 static data member for PLT instruction template.
13947 (Output_data_plt_arm::plt_entry): Same.
13948 (Output_data_plt_arm::do_write): Define new method.
13949 (Target_arm::make_plt_entry): Same.
13950 (Target_arm::do_finalize_sections): Same.
13951 (Target_arm::do_dynsym_value): Same.
13952
4a657b0d
DK
139532009-05-28 Doug Kwan <dougkwan@google.com>
13954
13955 * Makefile.am (TARGETSOURCES): Add arm.cc.
13956 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
13957 * Makefile.in: Regenerate.
13958 * arm.cc: New file.
13959 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
13960
e7ae8c36
DK
139612009-05-26 Doug Kwan <dougkwan@google.com>
13962
13963 * options.cc (General_options::parse_exclude_libs). Fix a comment.
13964 (General_options::check_excluded_libs): Strip off directories in
13965 archive name before matching like GNU ld does.
13966 * testsuite/Makefile.am (MOSTLYCLEANFILES,
13967 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
13968 (exclude_libs_test_LDFLAGS): Add linker option
13969 -Wl,--exclude-libs,libexclude_libs_test_3
13970 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
13971 an explicit archive without using -l.
13972 (alt/libexclude_libs_test_3.a): New make rule.
13973 * testsuite/Makefile.in: Regenerate.
13974 * testsuite/exclude_libs_test.c : Declare lib3_default().
13975 (main): Call it.
13976 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
13977 * exclude_libs_test_3.c: New file.
13978
f12e7348
NC
139792009-05-26 Nick Clifton <nickc@redhat.com>
13980
13981 * po/id.po: New Indonesian translation.
13982 * po/gold.pot: Updated template file.
13983
4daadc0d
ST
139842009-05-22 Sriraman Tallam <tmsriram@google.com>
13985
e1df38aa 13986 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
13987 gc_comdat_test files. Add -Wl,--gc-sections to build
13988 gc_comdat_test.
13989 * testsuite/Makefile.in: Regenerate.
13990 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
13991
531813ad
ST
139922009-05-21 Sriraman Tallam <tmsriram@google.com>
13993
13994 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
13995 kept comdat section was garbage collected.
13996 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
13997 * testsuite/Makefile.in: Regenerate.
13998 * testsuite/gc_comdat_test.sh: New file.
13999 * testsuite/gc_comdat_test_1.cc: New file.
14000 * testsuite/gc_comdat_test_2.cc: New file.
14001
65514900
CC
140022009-05-19 Doug Kwan <dougkwan@google.com>
14003
14004 * archive.cc (Archive::Archive): Move constructor from archive.h
14005 to here. Initialize no_export_.
14006 (Archive::get_elf_object_for_member): Set no_export flag of object.
14007 * archive.h (Archive::Archive): Move constructor body to
14008 archive.cc.
14009 (Archive::no_export): New method.
14010 (Archive::no_export_): New field.
14011 * object.h (Object::Object): Initialize no_export_ to false.
14012 (Object::no_export, Object::set_no_export): New methods.
14013 (Object::no_export_): New field.
14014 * options.cc (General_options::parse_exclude_libs): New method.
14015 (General_options::check_excluded_libs) Same.
14016 * options.h (exclude_libs): New option.
14017 (General_options::check_excluded_libs): New method declaration.
14018 (General_options::excluded_libs_): New field.
14019 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
14020 default or protected visibility if an object has no-export flag set.
14021 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
14022 (check_SCRIPTS): Add exclude_libs_test.sh.
14023 (check_DATA): Add exclude_libs_test.syms.
14024 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
14025 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
14026 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
14027 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
14028 (exclude_libs_test.syms, libexclude_libs_test_1.a,
14029 libexclude_libs_test_2.a): New rules.
14030 * testsuite/Makefile.in: Regenerate.
14031 * testsuite/exclude_libs_test.c: New file.
14032 * testsuite/exclude_libs_test.sh: Ditto.
14033 * testsuite/exclude_libs_test_1.c: Ditto.
14034 * testsuite/exclude_libs_test_2.c: Ditto.
14035
1b77ea50
ILT
140362009-05-15 Ian Lance Taylor <iant@google.com>
14037
14038 * configure.ac: Check for declarations for cases where libiberty.h
14039 checks HAVE_DECL_xxx.
14040 * configure, config.in: Rebuild.
14041
072fe7ce
ILT
140422009-05-15 Mikolaj Zalewski <mikolajz@google.com>
14043
14044 * gold.h (Incremental_argument_list): Remove (invalid) forward
14045 declaration.
14046 * incremental.cc (Incremental_inputs::report_achive): New method.
14047 (Incremental_inputs::report_object): New method.
14048 (Incremental_inputs::report_script): New method.
14049 (Incremental_inputs::finalize_inputs): New method.
14050 (Incremental_inputs::finalize): Call finalize_inputs().
14051 (Incremental_inputs::sized_create_incremental_inputs_section_data):
14052 Create inputs entries.
14053 * incremental.h (Incremental_input_type): New enum.
14054 (Incremental_inputs::Incremental_input): Initialize new fields.
14055 (Incremental_inputs::report_inputs): New method.
14056 (Incremental_inputs::report_achive): New method.
14057 (Incremental_inputs::report_object): New method.
14058 (Incremental_inputs::report_script): New method.
14059 (Incremental_inputs::finalize_inputs): New method.
14060 (Incremental_inputs::Input_info): New struct.
14061 (Incremental_inputs::Input_info_map): New typedef.
14062 (Incremental_inputs::lock_): New field.
14063 (Incremental_inputs::Inputs_): New field.
14064 (Incremental_inputs::Inputs_map): New field.
14065 * main.cc (main): Call Incremental_input::report_inputs.
14066 * options.h (Input_argument_list): Typedef moved from
14067 Input_arguments.
14068 (Input_file_group::Files): Remove, use ::Input_argument_list.
14069 (Input_file_group::Input_argument_list): Remove, use
14070 ::Input_argument_list.
14071 * plugin.cc (Plugin_manager::add_input_file): Add error in
14072 incremental build.
14073 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
14074 functions.
14075 * script.cc (read_input_script): Call
14076 Incremental_input::report_script.
14077 * script.h (Script_info): New class.
14078
b0481b0b
ILT
140792009-04-27 Ian Lance Taylor <iant@google.com>
14080
14081 * x86_64.cc (do_adjust_output_section): Set entsize to
14082 plt_entry_size.
14083
b22a5a41 140842009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
14085
14086 * output.cc (Output_file::close): After short writes, continue
14087 writing from the correct offset in the buffer being written.
14088
40fde488
CD
140892009-04-23 Chris Demetriou <cgd@google.com>
14090
14091 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
14092 * configure: Regenerate.
14093 * config.in: Regenerate.
14094 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
14095 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
14096
3ce2c28e
ILT
140972009-04-21 Mikolaj Zalewski <mikolajz@google.com>
14098
14099 * incremental.cc (Incremental_inputs_header_data): Renamed from
14100 Incremental_input_header_data.
14101 (Incremental_inputs_header_data::data_size): New field.
14102 (Incremental_inputs_header_data::put_input_file_count): Renamed
14103 from input_file_count.
14104 (Incremental_inputs_header_data::put_command_line_offset): Renamed
14105 from command_line_offset.
14106 (Incremental_inputs_header_data::put_reserved): Renamed from
14107 put_reserved.
14108 (Incremental_inputs_entry_data): Renamed from
14109 Incremental_input_entry_data.
14110 (Incremental_inputs_entry_data::data_size): New field.
14111 (Incremental_inputs::report_command_line): New method.
14112 (Incremental_inputs::finalize): New method.
14113 (Incremental_inputs::create_incremental_inputs_data): New method.
14114 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
14115 * incremental.h: New file.
14116 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
703d02da 14117 (Layout::finalize): Create incremental inputs section in
3ce2c28e 14118 incremental builds.
703d02da 14119 (Layout::create_incremental_info_sections): New method.
3ce2c28e 14120 * layout.h (Layout::incremental_inputs): New method.
703d02da
AM
14121 (Layout::create_incremental_info_sections): New method.
14122 (Layout::incremental_inputs_): New field.
3ce2c28e
ILT
14123 * main.cc (main): Notify Incremental_input of the command line.
14124
e55bde5e
ILT
141252009-04-01 Ian Lance Taylor <iant@google.com>
14126 Mikolaj Zalewski <mikolajz@google.com>
14127
14128 * gold.h (reserve_unordered_map): Define, three versions, one for
14129 each version of Unordered_map.
14130 * layout.cc (Layout::Layout): Remove options parameter. Add
14131 number_of_input_files parameter. Don't initialize options_.
14132 Initialize number_of_input_files_ and resized_signatures_. Move
14133 sections_are_attached_.
14134 (Layout::layout_group): Reserve space for group_signatures_.
14135 (Layout::find_or_add_kept_section): Change name parameter to be a
14136 reference. Resize signatures_ map when it gets large enough.
14137 (Layout::layout_eh_frame): Use parameters->options() instead of
14138 this->options_.
14139 (Layout::make_output_section): Likewise.
14140 (Layout::attach_allocated_section_to_segment): Likewise.
14141 (Layout::finalize, Layout::create_executable_stack): Likewise.
14142 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
14143 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
14144 * layout.h (class Layout): Update declarations. Remove options_
14145 field. Add number_of_input_files_ and resized_signatures_
14146 fields. Move sections_are_attached_ field.
14147 * main.cc (main): Pass number of input files to Layout
14148 constructor. Don't pass options.
14149
154b857c
ILT
141502009-03-30 Ian Lance Taylor <iant@google.com>
14151
14152 * ffsll.c (ffsll): Correct implementation.
14153
2f35ab9b
ILT
141542009-03-27 Ian Lance Taylor <iant@google.com>
14155
fd03461a
ILT
14156 * ffsll.c: New file.
14157 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
14158 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
14159 * ftruncate.c (ftruncate): Declare before definition.
14160 * mremap.c (mremap): Likewise.
14161 * pread.c (pread): Likewise.
14162 * configure, Makefile.in, config.in: Rebuild.
14163
2f35ab9b
ILT
14164 * mremap.c: New file.
14165 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
14166 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
14167 (mremap): Declare if HAVE_MREMAP is not defined.
14168 * configure, Makefile.in, config.in: Rebuild.
14169
33aea2fd
CC
141702009-03-27 Cary Coutant <ccoutant@google.com>
14171
14172 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
14173 position independent.
14174 * sparc.cc (Target_sparc::check_non_pic): Likewise.
14175 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
14176
6d479619
CC
141772009-03-24 Cary Coutant <ccoutant@google.com>
14178
14179 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
14180 an executable.
14181 (needs_dynamic_reloc): Likewise.
14182
afc06bb8
ILT
141832009-03-24 Ian Lance Taylor <iant@google.com>
14184
14185 * yyscript.y (file_cmd): Recognize EXTERN.
14186 (extern_name_list, extern_name_list_body): New nonterminals.
14187 * script.cc (script_add_extern): Define.
14188 * script-c.h (script_add_extern): Declare.
14189
f6060a4d
ILT
141902009-03-24 Rafael Avila de Espindola <espindola@google.com>
14191
14192 * object.cc (is_elf_object): Define.
14193 * object.h (is_elf_object): Declare.
14194 * archive.cc (Archive::get_elf_object_for_member): Call
14195 is_elf_object.
33aea2fd 14196 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 14197
26736d8e
ILT
141982009-03-24 Elliott Hughes <enh@google.com>
14199
14200 * output.cc (Output_file::map_anonymous): Define.
14201 (Output_file::map): Use map_anonymous. If the regular mmap fails,
14202 try an anonymous one. Report the size if the mmap fails.
14203 * output.h (class Output_file): Declare map_anonymous.
14204
22fd9730
ILT
142052009-03-24 Ian Lance Taylor <iant@google.com>
14206
14207 * target-select.cc (instantiate_target): Don't acquire the lock if
14208 the instantiated_target_ field has already been set.
14209
cb010894
ILT
142102009-03-23 Ian Lance Taylor <iant@google.com>
14211
7f055c20
ILT
14212 * gold-threads.h (class Initialize_lock): Define.
14213 * gold-threads.cc (class Initialize_lock_once): Define.
14214 (initialize_lock_control): New static variable.
14215 (initialize_lock_pointer): New static variable.
14216 (initialize_lock_once): New static function.
14217 (Initialize_lock::Initialize_lock): Define.
14218 (Initialize_lock::initialize): Define.
14219 * target-select.h: Include "gold-threads.h".
14220 (class Target_selector): Add lock_ and initialize_lock_ fields.
14221 Don't define instantiate_target, just declare it.
14222 * target-select.cc (Target_selector::Target_selector): Initialize
14223 new fields.
14224 (Target_selector::instantiate_target): Define.
14225 * descriptors.h: Include "gold-threads.h".
14226 (class Descriptors): Add initialize_lock_ field.
14227 * descriptors.cc (Descriptors::Descriptors): Initialize new
14228 field.
14229 (Descriptors::open): Use initialize_lock_ field
14230 * errors.h (class Errors): Add initialize_lock_ field.
14231 * errors.cc (Errors::Errors): Initialize new field.
14232 (Errors::initialize_lock): Use initialize_lock_ field.
14233 * powerpc.cc (class Target_selector_powerpc): Remove
14234 instantiated_target_ field. In do_recognize call
14235 instantiate_target rather than do_instantiate_target. In
14236 do_instantiate_target just allocate a new target.
14237 * sparc.cc (class Target_selector_sparc): Likewise.
14238
36959681
ILT
14239 * freebsd.h: New file.
14240 * i386.cc: Include "freebsd.h".
14241 (Target_i386): Derive from Target_freebsd rather than
14242 Sized_target.
14243 (Target_selector_i386): Derive from Target_selector_freebsd rather
14244 than Target_selector.
14245 * x86_64.cc: Include "freebsd.h".
14246 (Target_x86_64): Derive from Target_freebsd rather than
14247 Sized_target.
14248 (Target_selector_x86_64): Derive from Target_selector_freebsd
14249 rather than Target_selector.
14250 * target.h (class Target): Add adjust_elf_header and
14251 do_adjust_elf_header.
14252 * output.cc (Output_file_header:: do_sized_write): Call target
14253 adjust_elf_header routine.
14254 * configure.tgt: Set targ_osabi.
14255 * configure.ac: Define GOLD_DEFAULT_OSABI.
14256 * parameters.cc (Parameters::default_target): Pass
14257 GOLD_DEFAULT_OSABI to select_target.
14258 * target-select.h (class Target_selector): Make instantiate_target
14259 protected rather than private.
14260 * Makefile.am (HFILES): Add freebsd.h.
14261 * configure, Makefile.in, config.in: Rebuild.
14262
cb010894
ILT
14263 * merge.cc (do_add_input_section): Correct pend value. Change
14264 message about last entry not being null terminated from error to
14265 warning.
14266
0e879927
ILT
142672009-03-20 Mikolaj Zalewski <mikolajz@google.com>
14268
14269 * incremental.cc: New file.
14270 * Makefile.am (CCFILES): Add incremental.cc.
14271 * Makefile.in: Rebuild.
14272
41105937
PP
142732009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
14274
14275 * layout.cc (Layout::output_section_name): Preserve names
14276 of '.note.' sections.
e1df38aa 14277
60439920
ILT
142782009-03-19 Ian Lance Taylor <iant@google.com>
14279
14280 * descriptors.cc (Descriptors::open): Check that the options are
14281 valid before using them.
14282
0d371ad3
ILT
142832009-03-18 Ian Lance Taylor <iant@google.com>
14284
14285 * script-sections.h: Include <list>.
14286 (class Script_sections): Change Sections_elements from std::vector
14287 to std::list. Typedef public Elements_iterator. Add
14288 orphan_section_placement_, data_segment_align_start_, and
14289 saw_data_segment_align_ fields. Remove data_segment_align_index_
14290 field.
14291 * script-sections.cc (class Orphan_section_placement): New class.
14292 (class Sections_element): Add virtual functions is_relro and
14293 orphan_section_init. Remove virtual function place_orphan_here.
14294 (class Output_section_definition): Add is_relro and
14295 orphan_section_init. Remove place_orphan_here.
14296 (class Orphan_output_section): Likewise.
14297 (Script_sections::Script_sections): Update for field changes.
14298 (Script_sections::data_segment_align): Set saw_data_segment_align_
14299 and data_segment_align_start_, not data_segment_align_index.
14300 (Script_sections::data_segment_relro_end): Check
14301 saw_data_segment_align_. Use data_segment_align_start_ rather
14302 than data_segment_align_index_.
14303 (Script_sections::place_orphan): Rewrite to use
14304 Orphan_section_placement.
14305
9201d894
ILT
143062009-03-17 Ian Lance Taylor <iant@google.com>
14307
9c5b8369
ILT
14308 * archive.cc (Archive::add_symbols): Check for a version attached
14309 to the symbol name in the archive map.
14310 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
14311 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
14312 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
14313 (ver_test_11.a): New target.
14314 * testsuite/Makefile.in: Rebuild.
14315
9201d894
ILT
14316 * configure.ac: Check for chsize and posix_fallocate. Replace
14317 ftruncate.
14318 * ftruncate.c: New file, from gnulib.
14319 * output.cc (posix_fallocate): Define dummy version if not
14320 HAVE_POSIX_FALLOCATE.
14321 (Output_file::map): Call posix_fallocate rather than lseek and
14322 write.
14323 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
14324 * configure, Makefile.in, config.in: Rebuild.
14325
ef4ab7a8 143262009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 14327
ef4ab7a8
PP
14328 * layout.h (Layout::create_note): Add section_name parameter.
14329 * layout.cc (Layout::create_note): Likewise.
14330 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 14331
8c500701
ILT
143322009-03-17 Ian Lance Taylor <iant@google.com>
14333
e85b18e1
ILT
14334 * descriptors.cc: Include "options.h".
14335 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
14336 (Descriptors::open): Always use O_CLOEXEC when opening a new
14337 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
14338 then set FD_CLOEXEC.
14339
9efe6174
ILT
14340 * sparc.cc (class Target_sparc): Add has_got_section.
14341 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
14342 make sure we have a GOT section.
14343
14344 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
14345 (Target_sparc::Scan::local): Likewise.
14346 (Target_sparc::Scan::global): Likewise.
14347 (Target_sparc::Relocate::relocate): Likewise.
14348 (Target_sparc::Relocate::relocate_tls): Likewise.
14349
8c500701
ILT
14350 * symtab.cc (Symbol_table::define_default_version): New function,
14351 broken out of add_from_object.
14352 (Symbol_table::add_from_object): Call define_default_version.
14353 (Symbol_table::define_special_symbol): Add resolve_oldsym
14354 parameter. Change all callers. If the version for a symbol comes
14355 from a version script, resolve it with the symbol with the same
14356 name with no version. Also add the symbol without a version if
14357 appropriate.
14358 (do_define_in_output_data): If resolving with oldsym, don't delete
14359 sym.
14360 (do_define_in_output_segment): Likewise.
14361 (do_define_as_constant): Likewise.
14362 * symtab.h (class Symbol_table): Update declarations.
14363
f1ed28fb
ILT
143642009-03-13 Ian Lance Taylor <iant@google.com>
14365
15f8229b
ILT
14366 * readsyms.cc (Read_symbols::incompatible_warning): New function.
14367 (Read_symbols::requeue): New function.
14368 (Read_symbols::do_read_symbols): If make_elf_object fails because
14369 the target type is not configured, and the file was searched for,
14370 issue a warning and retry with the next directory.
14371 (Add_symbols::run): If the file has an incompatible format, and
14372 it was searched for, requeue the Read_symbols task. On error,
14373 release the object.
14374 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
14375 dirindex parameter to constructor. Change all callers. Declare
14376 incompatible_warning and requeue.
14377 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
14378 input_argument_ and input_group_ fields. Add them to
14379 constructor. Change all callers.
14380 (class Read_script): Add dirindex_ field. Add it to constructor.
14381 Change all callers.
14382 * archive.cc (Archive::setup): Remove input_objects parameter.
14383 Change all callers.
14384 (Archive::get_file_and_offset): Likewise.
14385 (Archive::read_all_symbols): Likewise.
14386 (Archive::read_symbols): Likewise.
14387 (Archive::get_elf_object_for_member): Remove input_objects
14388 parameter. Add punconfigured parameter. Change all callers.
14389 (Archive::add_symbols): Change return type to bool. Check return
14390 value of include_member.
14391 (Archive::include_all_members): Likewise.
14392 (Archive::include_member): Change return type to bool. Return
14393 false if first included object has incompatible target. Set
14394 included_member_ field.
14395 (Add_archive_symbols::run): If add_symbols returns false, requeue
14396 Read_symbols task.
14397 * archive.h (class Archive): Add included_member_ field.
14398 Initialize it in constructor. Add input_file and searched_for
14399 methods. Update declarations.
14400 (class Add_archive_symbols): Add dirpath_, dirindex_, and
14401 input_argument_ fields. Add them to constructor. Change all
14402 callers.
14403 * script.cc: Include "target-select.h".
14404 (class Parser_closure): Add skip_on_incompatible_target_ and
14405 found_incompatible_target_ fields. Add
14406 skip_on_incompatible_target parameter to constructor. Change all
14407 callers. Add methods skip_on_incompatible_target,
14408 clear_skip_on_incompatible_target, found_incompatible_target, and
14409 set_found_incompatible_target.
14410 (read_input_script): Add dirindex parameter. Change all callers.
14411 If parser finds an incompatible target, requeue Read_symbols
14412 task.
14413 (script_set_symbol): Clear skip_on_incompatible_target in
14414 closure.
14415 (script_add_assertion, script_parse_option): Likewise.
14416 (script_start_sections, script_add_phdr): Likewise.
14417 (script_check_output_format): New function.
14418 * script.h (read_input_script): Update declaration.
14419 * script-c.h (script_check_output_format): Declare.
14420 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
14421 (ignore_cmd): Remove OUTPUT_FORMAT.
14422 * fileread.cc (Input_file::Input_file): Add explicit this.
14423 (Input_file::will_search_for): New function.
14424 (Input_file::open): Add pindex parameter. Change all callers.
14425 * fileread.h (class Input_file): Add input_file_argument method.
14426 Declare will_search_for. Update declarations.
14427 * object.cc (make_elf_object): Add punconfigured parameter.
14428 Change all callers.
14429 * object.h (class Object): Make input_file public. Add
14430 searched_for method.
14431 (make_elf_object): Update declaration.
14432 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
14433 restart search.
14434 * dirsearch.h (class Dirsearch): Update declaration.
14435 * options.h (class General_options): Add --warn-search-mismatch.
14436 * parameters.cc (Parameters::is_compatible_target): New function.
14437 * parameters.h (class Parameters): Declare is_compatible_target.
14438 * workqueue.cc (Workqueue::add_blocker): New function.
14439 * workqueue.h (class Workqueue): Declare add_blocker.
14440
f1ed28fb
ILT
14441 * fileread.cc (Input_file::open): Remove options parameter.
14442 Change all callers.
14443 (Input_file::open_binary): Likewise.
14444 * script.cc (read_input_script): Likewise.
14445 * readsyms.h (class Read_symbols): Remove options_ field. Remove
14446 options parameter from constructor. Change all callers.
14447 (class Read_script): Likewise.
14448 * fileread.h (class Input_file): Update declarations.
14449 * script.h (read_input_script): Update declaration.
14450
34dd024a
NC
144512009-03-10 Nick Clifton <nickc@redhat.com>
14452
14453 * po/es.po: New Spanish translation.
14454
6d71b17c
CC
144552009-03-06 Cary Coutant <ccoutant@google.com>
14456
14457 * options.cc (parse_short_option): Keep dash_z from registering itself.
14458
031cdbed
ILT
144592009-03-03 Ian Lance Taylor <iant@google.com>
14460
14461 PR 9918
14462 * target-reloc.h (relocate_section): Pass output_section to
14463 relocate.
14464 * i386.cc (Target_i386::should_apply_static_reloc): Add
14465 output_section parameter. Change all callers.
14466 (Target_i386::Relocate::relocate): Add output_section parameter.
14467 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
14468 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
14469 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
14470 * testsuite/two_file_shared.sh: New script.
14471 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
14472 (check_DATA): Add two_file_shared.dbg.
14473 (two_file_shared.dbg): New target.
14474 * testsuite/Makefile.in: Rebuild.
14475
15d5fa16
ILT
144762009-03-01 Ian Lance Taylor <iant@google.com>
14477
14478 * configure.ac: Check for byteswap.h.
14479 * configure: Rebuild.
14480 * config.in: Rebuild.
14481
8a4c0b0d
ILT
144822009-03-01 Mikolaj Zalewski <mikolajz@google.com>
14483
14484 * layout.cc (Layout::find_or_add_kept_section): New function.
14485 (Layout::add_comdat): Removed.
14486 * layout.h (struct Kept_section): Move out of class Layout.
14487 Remove trailing underscores from field names. Add group_sections
14488 field. Rename group_ field to is_group. Change all uses.
14489 (class Layout): Declare find_or_add_kept_section, not add_comdat.
14490 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
14491 comdat_groups_ field.
14492 (Sized_relobj::include_section_group): Use
14493 find_or_add_kept_section and Kept_section::group_sections.
14494 (Sized_relobj::include_linkonce_section): Likewise.
14495 * object.cc (class Sized_relobj): Don't define Comdat_group or
14496 Comdat_group_table. Remove find_comdat_group and
14497 add_comdat_group. Remove comdat_groups_ field.
14498 * plugin.cc (include_comdat_group): Use
14499 Layout::find_or_add_kept_section.
14500
b4ecf66b
ILT
145012009-02-28 Ian Lance Taylor <iant@google.com>
14502
14359ca0
ILT
14503 * README: --gc-sections and map files are now supported. Document
14504 some build requirements.
14505
b4ecf66b
ILT
14506 PR 6992
14507 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
14508 relocatable link set the value of the section symbol to zero.
14509 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
14510 relocatable link don't include the section address in the local
14511 symbol value.
14512
0602e05a
ILT
145132009-02-27 Ian Lance Taylor <iant@google.com>
14514
fd9d194f
ILT
14515 PR 6811
14516 * options.h (class Search_directory): Add is_system_directory.
14517 (class General_options): Declare is_in_system_directory.
14518 * options.cc (get_relative_sysroot): Make static.
14519 (get_default_sysroot): Make static.
14520 (General_optoins::is_in_system_directory): New function.
14521 * fileread.cc (Input_file::is_in_system_directory): New function.
14522 * fileread.h (class Input_file): Declare is_in_system_directory.
14523 * object.h (class Object): Add is_in_system_directory.
14524 (class Input_objects): Remove system_library_directory_ field.
14525 * object.cc (Input_objects::add_object): Don't set
14526 system_library_directory_.
14527 (input_objects::found_in_system_library_directory): Remove.
14528 * symtab.cc (Symbol_table::write_globals): Remove input_objects
14529 parameter. Change all callers.
14530 (Symbol_table::sized_write_globals): Likewise.
14531 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
14532 Call Object::is_in_system_directory.
14533 * symtab.h (class Symbol_table): Update declarations.
14534
61edd21f
ILT
14535 PR 5990
14536 * descriptors.h (Open_descriptor): Add is_on_stack field.
14537 * descriptors.cc (Descriptors::open): If the descriptor is on the
14538 top of the stack, remove it. Initialize is_on_stack field.
14539 (Descriptors::release): Only add pod to stack if it is not on the
14540 stack already.
14541 (Descriptors::close_some_descriptor): Clear stack_next and
14542 is_on_stack fields.
14543
e29e076a
ILT
14544 PR 7091
14545 * output.cc (Output_section::find_starting_output_address): Rename
14546 from starting_output_address; add PADDR parameter; change return
14547 type.
14548 * output.h (class Output_section): Declare
14549 find_starting_output_address instead of starting_output_address.
14550 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
14551 section symbol for which we can't find a merge section.
14552
0602e05a
ILT
14553 PR 9836
14554 * symtab.cc (Symbol_table::add_from_object): If the visibility is
14555 hidden or internal, force the symbol to be local.
14556 * resolve.cc (Symbol::override_visibility): Define.
14557 (Symbol::override_base): Use override_visibility.
14558 (Symbol_table::resolve): Likewise.
14559 (Symbol::override_base_with_special): Likewise.
14560 (Symbol_table::override_with_special): If the visibility is hidden
14561 or internal, force the symbol to be local.
14562 * symtab.h (class Symbol): Add set_visibility and
14563 override_visibility.
14564 * testsuite/ver_test_1.sh: New file.
14565 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
14566 (check_DATA): Add ver_test_1.syms.
14567 (ver_test_1.syms): New target.
14568 * testsuite/Makefile.in: Rebuild.
14569
401a9a73
CC
145702009-02-25 Cary Coutant <ccoutant@google.com>
14571
14572 * layout.cc (Layout::choose_output_section): Don't rename sections
14573 when using a linker script that has a SECTIONS clause.
14574 * Makefile.in: Regenerate.
14575
14576 * testsuite/Makefile.am (script_test_5.sh): New test case.
14577 * testsuite/Makefile.in: Regenerate.
14578 * testsuite/script_test_5.cc: New file.
14579 * testsuite/script_test_5.sh: New file.
14580 * testsuite/script_test_5.t: New file.
14581
f488e4b0
CC
145822009-02-13 Rafael Avila de Espindola <espindola@google.com>
14583
14584 * archive.cc (Archive::include_member): Update calls to add_symbols.
14585 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
14586 the Layout argument.
14587 * dynobj.h (do_add_symbols): Add the Layout argument.
14588 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
14589 Layout argument.
14590 * object.h (Object::add_symbols): Add the Layout argument.
14591 (Object::do_add_symbols): Add the Layout argument.
14592 (Sized_relobj::do_add_symbols): Add the Layout argument.
14593 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
14594 Unify the two versions.
14595 (Add_plugin_symbols): Remove.
14596 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
14597 (Sized_pluginobj::do_add_symbols): Unify the two versions.
14598 (Add_plugin_symbols): Remove.
14599 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
14600 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
14601 (Add_symbols::run): Make it work with Pulginobj.
14602
89dd1680
ILT
146032009-02-06 Ian Lance Taylor <iant@google.com>
14604
14605 * object.cc (Sized_relobj::do_layout): Make info message start
14606 with lower case letter.
14607
266d0a74
ILT
146082009-02-06 Mikolaj Zalewski <mikolajz@google.com>
14609
602b464e
ILT
14610 * binary.cc: Fix file comment.
14611
266d0a74
ILT
14612 * options.h (enum Incremental_disposition): Define.
14613 (class General_options): Add new options: --incremental,
14614 --incremental_changed, --incremental_unchanged,
14615 --incremental_unknown. Add incremental_disposition_ and
14616 implicit_incremental_ fields.
14617 (General_options::incremental_disposition): New function.
14618 (class Position_dependent_options): Add incremental_disposition
14619 option.
14620 (Position_dependent_options::copy_from_options): Set incremental
14621 dispositions.
14622 * options.cc (General_options::parse_incremental_changed): New
14623 function.
2e702c99
RM
14624 (General_options::parse_incremental_unchanged): New function.
14625 (General_options::parse_incremental_unknown): New function.
14626 (General_options::General_options): Initialize new fields
266d0a74 14627 incremental_disposition_ and implicit_incremental_.
2e702c99 14628 (General_options::finalize): Check for uasge of --incremental-*
266d0a74
ILT
14629 without --incremental.
14630
f073bbf7
CD
146312009-02-06 Chris Demetriou <cgd@google.com>
14632
14633 * gold.h (gold_undefined_symbol): Change to take only a Symbol
14634 pointer and to report location as the file name associated with
14635 the symbol.
14636 (gold_undefined_symbol_at_location): New function to replace the
14637 old gold_undefined_symbol functionality.
14638 * target-reloc.h (relocate_section): Update to use
14639 gold_undefined_symbol_at_location.
14640 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
14641 Call gold_undefined_symbol function rather than gold_error.
14642 * errors.h (Errors::undefined_symbol): Take location as a
14643 string, rather than calculating it from a relocation.
14644 * errors.cc (Errors::fatal): Print "fatal error:" before the
14645 formatted message.
14646 (Errors::error, Errors::error_at_location): Print "error: "
14647 before the formatted message.
14648 (Errors::undefined_symbol): Take location as a string, rather
14649 than calculating it from a relocation.
14650 (gold_undefined_symbol_at_location): New function akin to
14651 old gold_undefined_symbol, calculates location from relocation.
14652 (gold_undefined_symbol): Change to take only a Symbol pointer
14653 and to report location as the file name associated with the symbol.
14654 * testsuite/debug_msg.sh: Update for changed error messages.
14655 * testsuite/undef_symbol.sh: Likewise.
14656
8e94a90c
ILT
146572009-02-04 Duncan Sands <baldrick@free.fr>
14658
14659 PR 9812
14660 * reduced_debug_output.h
14661 (Output_reduced_debug_abbrev_section::failed): Use format for
14662 gold_warning.
14663 (Output_reduced_debug_info_section::faild): Likewise.
14664
88a0e15b
ILT
146652009-01-31 Mikolaj Zalewski <mikolajz@google.com>
14666
14667 * script.cc (Lazy_demangler): New class.
2e702c99 14668 (Version_script_info::get_symbol_version_helper): Demangle a
88a0e15b
ILT
14669 symbol only once.
14670
5efc7cd2
CC
146712009-01-29 Cary Coutant <ccoutant@google.com>
14672
14673 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
14674 to __tls_get_addr.
14675 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
14676
e0ebcf42
ILT
146772009-01-28 Ian Lance Taylor <iant@google.com>
14678
5efc7cd2 14679 * version.cc (version_string): Bump to 1.9.
75fe7426 14680
e0ebcf42
ILT
14681 * gold.h: Include <cstring> and <stdint.h>.
14682 * version.cc: Include <cstdio>.
14683 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
14684 warning.
14685 * reduced_debug_output.cc (insert_into_vector): Rename from
14686 Insert_into_vector; change all callers. Use Swap_unaligned to
14687 avoid aliasing issue; remove union since it is unnecessary.
14688
8e2813be 146892009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
14690
14691 * Makefile.am (CCFILES): Add gc.cc.
14692 (HFILES): Add gc.h.
14693 * Makefile.in: Regenerate.
14694 * gold.cc (Gc_runner): New class.
14695 (queue_initial_tasks): Call garbage collection related tasks
14696 when corresponding options are invoked.
14697 (queue_middle_gc_tasks): New function.
14698 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
14699 processed early before laying out sections during garbage collection.
14700 * gold.h (queue_middle_gc_tasks): New function.
14701 (is_prefix_of): Move from "layout.cc".
14702 * i386.cc (Target_i386::gc_process_relocs): New function.
14703 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
14704 * main.cc (main): Create object of class "Garbage_collection".
14705 * object.cc (Relobj::copy_symbols_data): New function.
14706 (Relobj::is_section_name_included): New function.
e1df38aa
NC
14707 (Sized_relobj::do_layout): Allow this function to be called twice
14708 during garbage collection and defer layout of section during the
6d03d481
ST
14709 first call.
14710 * object.h (Relobj::get_symbols_data): New function.
14711 (Relobj::is_section_name_included): New function.
14712 (Relobj::copy_symbols_data): New function.
14713 (Relobj::set_symbols_data): New function.
14714 (Relobj::get_relocs_data): New function.
14715 (Relobj::set_relocs_data): New function.
14716 (Relobj::is_output_section_offset_invalid): New pure virtual function.
14717 (Relobj::gc_process_relocs): New function.
14718 (Relobj::do_gc_process_relocs): New pure virtual function.
14719 (Relobj::sd_): New data member.
14720 (Sized_relobj::is_output_section_offset_invalid): New function.
14721 (Sized_relobj::do_gc_process_relocs): New function.
14722 * options.h (General_options::gc_sections): Modify to not be a no-op.
14723 (General_options::print_gc_sections): New option.
14724 * plugin.cc (Plugin_finish::run): Remove function call to
14725 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
14726 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
14727 * reloc.cc (Read_relocs::run): Add task to process relocs and
14728 determine unreferenced sections when doing garbage collection.
14729 (Gc_process_relocs): New class.
14730 (Sized_relobj::do_gc_process_relocs): New function.
14731 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
14732 sections that are garbage collected.
14733 * reloc.h (Gc_process_relocs): New class.
14734 * sparc.cc (Target_sparc::gc_process_relocs): New function.
14735 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
14736 symbols whose corresponding sections are garbage collected.
14737 (Symbol_table::Symbol_table): Add new parameter for the garbage
14738 collection object.
14739 (Symbol_table::gc_mark_undef_symbols): New function.
14740 (Symbol_table::gc_mark_symbol_for_shlib): New function.
14741 (Symbol_table::gc_mark_dyn_syms): New function.
14742 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
14743 as garbage.
14744 (Symbol_table::add_from_object): Likewise.
14745 (Symbol_table::add_from_relobj): When building shared objects, do not
14746 treat externally visible symbols as garbage.
14747 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
14748 table information for static and relocatable links.
14749 * symtab.h (Symbol_table::set_gc): New function.
14750 (Symbol_table::gc): New function.
14751 (Symbol_table::gc_mark_undef_symbols): New function.
14752 (Symbol_table::gc_mark_symbol_for_shlib): New function.
14753 (Symbol_table::gc_mark_dyn_syms): New function.
14754 (Symbol_table::gc_): New data member.
e1df38aa 14755 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
14756 function.
14757 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
14758 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
14759
3b293544
CF
147602009-01-20 Chris Faylor <me.sourceware@sourceware.org>
14761
14762 * options.h (General_options::gc_sections): Define as a no-op for now.
14763 (General_options::no_keep_memory): Ditto.
14764 (General_options::Bshareable): Define.
14765 * options.cc (General_options::finalize): Honor -Bshareable.
14766
83d22aa8
AS
147672009-01-20 Andreas Schwab <schwab@suse.de>
14768
14769 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
14770 read the value in the contents, since we don't use it. Use the
14771 template endianness when writing.
14772 (Relocate::relocate): Use it for R_PPC_REL16_HA.
14773
cd536b21
AS
147742009-01-19 Andreas Schwab <schwab@suse.de>
14775
14776 * configure.tgt (powerpc64-*): Fix targ_obj.
14777
99e9a495
ILT
147782009-01-15 Ian Lance Taylor <iant@google.com>
14779
14780 * object.cc (Sized_relobj::write_local_symbols): Don't write out
14781 local symbols when stripping all symbols.
14782
bbbfea06
CC
147832009-01-14 Cary Coutant <ccoutant@google.com>
14784
99e9a495 14785 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 14786
0f7c0701
CC
147872009-01-14 Cary Coutant <ccoutant@google.com>
14788
14789 * archive.cc (Archive::get_elf_object_for_member): Remove call
14790 to File_read::claim_for_plugin.
14791 * descriptors.cc (Descriptors::open): Remove reference to
14792 is_claimed.
14793 (Descriptors::claim_for_plugin): Remove.
14794 * descriptors.h (Descriptors::claim_for_plugin): Remove.
14795 (Descriptors::is_claimed): Remove.
14796 (claim_descriptor_for_plugin): Remove.
14797 * fileread.cc (File_read::claim_for_plugin): Remove.
14798 * fileread.h (File_read::claim_for_plugin): Remove.
14799 (File_read::descriptor): Reopen descriptor if necessary.
14800 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
14801 (Plugin_manager::all_symbols_read): Add task parameter. Change
14802 all callers.
14803 (Plugin_manager::get_input_file): New function.
14804 (Plugin_manager::release_input_file): New function.
14805 (Pluginobj::Pluginobj): Add filesize parameter and initialize
14806 corresponding data member.
14807 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
14808 and pass to base constructor. Change all callers.
14809 (get_input_file, release_input_file): New functions.
14810 (make_sized_plugin_object): Add filesize parameter. Change all callers.
14811 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
14812 (Plugin_manager::all_symbols_read): Add task parameter.
14813 (Plugin_manager::get_input_file): New function.
14814 (Plugin_manager::release_input_file): New function.
14815 (Plugin_manager::task_): New data member.
14816 (Pluginobj::Pluginobj): Add filesize parameter.
14817 (Pluginobj::filename): New function.
14818 (Pluginobj::descriptor): New function.
14819 (Pluginobj::filesize): New function.
14820 (Pluginobj::filesize_): New data member.
14821 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
14822 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
14823 File_read::claim_for_plugin; use Object::unlock to unlock the file.
14824
14825 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
14826 with archive libraries.
14827 * testsuite/Makefile.in: Regenerate.
14828 * testsuite/plugin_test.c (struct sym_info): New type.
14829 (get_input_file, release_input_file): New static variables.
14830 (onload): Capture new transfer vector entries.
14831 (claim_file_hook): Stop reading at end of file according to filesize.
14832 Factor out parsing of readelf output into separate function.
14833 (all_symbols_read_hook): Exercise get_input_file and release_input_file
14834 APIs and get the source file name from the symbol table. Convert
14835 source file name to corresponding object file name. Print info
14836 message when adding new input files.
14837 (parse_readelf_line): New function.
14838 * testsuite/plugin_test_1.sh: Add checks for new info messages.
14839 * testsuite/plugin_test_2.sh: Likewise.
14840 * testsuite/plugin_test_3.sh: Likewise.
14841 * testsuite/plugin_test_4.sh: New test case.
14842
62a6d109
ILT
148432009-01-07 Ian Lance Taylor <iant@google.com>
14844
14845 * version.cc (version_string): Bump to 1.8.
14846
483620e8
CC
148472008-12-23 Cary Coutant <ccoutant@google.com>
14848
14849 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
14850 * plugin.cc (Plugin_manager::finish): Rename as
14851 layout_deferred_objects. Move cleanup to separate function.
14852 (Plugin_manager::cleanup): New function.
14853 (Plugin_finish::run): Call layout_deferred_objects and cleanup
14854 separately.
14855 * plugin.h (Plugin_manager::finish): Rename as
14856 layout_deferred_objects.
14857 (Plugin_manager::cleanup): New function.
14858 (Plugin_manager::cleanup_done): New field.
14859
d66a9eb3
CC
148602008-12-23 Cary Coutant <ccoutant@google.com>
14861
14862 * plugin.cc (is_visible_from_outside): New function.
14863 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
14864 so we don't return "IR only" status for exported symbols or -r links.
14865
14866 * testsuite/Makefile.am (plugin_test_3): New test case.
14867 * testsuite/Makefile.in: Regenerate.
14868 * testsuite/plugin_test_3.sh: New file.
14869
5995b570
CC
148702008-12-22 Cary Coutant <ccoutant@google.com>
14871
14872 * object.cc (Sized_relobj::layout_section): New function.
14873 (Sized_relobj::do_layout): Defer layout of input sections until after
14874 plugin has provided replacement files.
14875 (Sized_relobj::do_layout_deferred_sections): New function.
14876 * object.h (Relobj::set_section_offset): Remove virtual keyword.
14877 (Relobj::layout_deferred_sections): New function.
14878 (Relobj::do_layout_deferred_sections): New function.
14879 (Sized_relobj::do_layout_deferred_sections): New function.
14880 (Sized_relobj::layout_section): New function.
14881 (Sized_relobj::Deferred_layout): New structure.
14882 (Sized_relobj::deferred_layout_): New field.
14883 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
14884 Change all callers. Layout deferred sections.
14885 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
14886 references.
14887 (Plugin_hook::run): Move code from do_plugin_hook inline.
14888 (Plugin_hook::do_plugin_hook): Remove.
14889 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
14890 (Plugin_manager::finish): Renamed, was cleanup.
14891 (Plugin_manager::should_defer_layout): New function.
14892 (Plugin_manager::add_deferred_layout_object): New function.
14893 (Plugin_manager::Deferred_layout_list): New type.
14894 (Plugin_manager::deferred_layout_objects_): New field.
14895 (Plugin_hook::do_plugin_hook): Remove.
14896
ee769c88
ILT
148972008-12-17 Ian Lance Taylor <iant@google.com>
14898
14899 * options.h (class General_options): Add --no case for
14900 --export-dynamic.
14901
abc8dcba
CC
149022008-12-16 Cary Coutant <ccoutant@google.com>
14903
14904 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
14905 vector.
14906 (Plugin_manager::claim_file): Create plugin object even if
14907 plugin did not call the add_symbols callback.
14908 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
14909 asking for more symbols than were added.
14910 * testsuite/Makefile.am (plugin_test_1): Add test case with
14911 no global symbols.
14912 (empty.syms): New target.
14913 * testsuite/Makefile.in: Regenerate.
14914 * testsuite/plugin_test.c (claim_file_hook): Add new debug
14915 message. Don't call add_symbols if no globals.
14916 (all_symbols_read_hook): Don't provide replacement for empty
14917 claimed file.
14918
b0074644
ILT
149192008-12-12 Ian Lance Taylor <iant@google.com>
14920
68943102
ILT
14921 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
14922 r_type == 0 for a local symbol with r_sym == 0.
14923 (scan_relocatable_relocs): Pass r_sym to
14924 local_non_section_strategy.
14925 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
14926 r_sym parameter.
14927
b0074644
ILT
14928 * configure.ac: Update test for TLS descriptors: they are
14929 supported as of glibc 2.9.
14930 * configure: Rebuild.
14931
c2508178
ILT
149322008-12-11 Ian Lance Taylor <iant@google.com>
14933
14934 PR 7091
14935 * target-reloc.h (Default_scan_relocatable_relocs): For each
14936 function, map r_type == 0 to RELOC_DISCARD.
14937
2756a258
CC
149382008-12-10 Cary Coutant <ccoutant@google.com>
14939
14940 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
14941 object to override a kept COMDAT group from a plugin object.
14942
bb6f53d3
ILT
149432008-12-09 Ian Lance Taylor <iant@google.com>
14944
fbc558e1
ILT
14945 PR 7088
14946 * yyscript.y (file_cmd): Handle INPUT.
14947
bb6f53d3
ILT
14948 * testsuite/initpri1.c: Change all declarations to be full
14949 prototypes by adding void, to avoid compiler warnings.
14950
4674ecfc
CC
149512008-12-05 Rafael Avila de Espindola <espindola@google.com>
14952
14953 * options.cc (General_options::parse_plugin_opt): New.
14954 (General_options::add_plugin): The argument now is just the filename.
14955 (General_options::add_plugin_option): New.
14956 * options.h (plugin_opt): New.
14957 (add_plugin): Change argument name.
14958 (add_plugin_option): New.
14959 * plugin.cc (Plugin::load): Don't parse the plugin option.
14960 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
14961 (Plugin::add_option): New.
14962 (Plugin::args_): Change type.
14963 (Plugin::filename_): New.
14964 (Plugin_manager::add_plugin_option): New.
14965 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
14966 * testsuite/Makefile.in: Regenerate.
14967
fd06b4aa
CC
149682008-12-05 Cary Coutant <ccoutant@google.com>
14969
14970 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
14971 Handle --strip-lto-sections option.
14972 * options.h (strip_lto_sections): New option.
14973
6c52134c
CC
149742008-12-01 Cary Coutant <ccoutant@google.com>
14975
14976 * plugin.cc (ld_plugin_message): Change format parameter to const.
14977 Fix mismatch between new[] and delete.
14978
a45248e0
CC
149792008-11-14 Cary Coutant <ccoutant@google.com>
14980
14981 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
14982 instead of -1U.
14983
c82fbeee
CS
149842008-11-05 Craig Silverstein <csilvers@google.com>
14985
14986 * options.cc (General_options::parse_dynamic_list): New function.
14987 * options.h (General_options): New flags dynamic_list,
14988 dynamic_list_data, dynamic_list_cpp_new, and
14989 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
14990 (General_options::in_dynamic_list): New function.
14991 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
14992 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
14993 (Lex::can_continue_name): Likewise.
14994 (yylex): Likewise.
14995 (read_script_file): New parameter script_options.
14996 (read_dynamic_list): New function.
14997 (Script_options::define_dynamic_list): New function.
14998 (dynamic_list_keyword_parsecodes): New variable.
14999 (dynamic_list_keywords): New variable.
15000 * script.h (Script_options::define_dynamic_list): New function
15001 prototype.
15002 (read_dynamic_list): New function prototype.
15003 * symtab.cc (strprefix): New macro.
15004 (Symbol::should_add_dynsym_entry): Support dynamic_list,
15005 dynamic_list_data, dynamic_list_cpp_new, and
15006 dynamic_list_cpp_typeinfo.
15007 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
15008 (dynamic_list_expr): New rule.
15009 (dynamic_list_nodes): Likewise.
15010 (dynamic_list_node): Likewise.
15011 * testsuite/Makefile.am (dynamic_list): New test.
15012 * testsuite/Makefile.in: Regenerated.
15013 * testsuite/dynamic_list.t: New file.
15014 * testsuite/dynamic_list.sh: New file.
15015
e0bb29a5
CS
150162008-11-05 Craig Silverstein <csilvers@google.com>
15017
15018 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
15019 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
15020 (t11_last): Likewise.
15021 * testsuite/ver_test_6.c (main): Likewise.
15022
4e1e25e0
CC
150232008-10-07 Cary Coutant <ccoutant@google.com>
15024
15025 * options.c (General_options::finalize): Add check for -static and
15026 -shared.
15027 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
15028 is not empty.
15029
92f03fcb
CC
150302008-10-02 Cary Coutant <ccoutant@google.com>
15031
15032 * plugin.cc (make_sized_plugin_object): Fix conditional
15033 compilation to work when not all targets are enabled.
15034
fbd8a257
CC
150352008-09-29 Cary Coutant <ccoutant@google.com>
15036
15037 * archive.cc (Archive::get_file_and_offset): Use filename instead
15038 of name to get library path.
15039 (Archive::include_member): Unlock external member of a thin archive.
15040
15041 * testsuite/Makefile.am (TEST_AR): New variable.
15042 (thin_archive_test_1): New test.
15043 (thin_archive_test_2): New test.
81636b3f
CC
15044 * testsuite/Makefile.in: Regenerate.
15045 * testsuite/thin_archive_main.cc: New file.
15046 * testsuite/thin_archive_test_1.cc: New file.
15047 * testsuite/thin_archive_test_2.cc: New file.
15048 * testsuite/thin_archive_test_3.cc: New file.
15049 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 15050
eff45813
CC
150512008-09-29 Cary Coutant <ccoutant@google.com>
15052
15053 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
15054 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
15055 instead of -1U.
15056 (Sized_relobj::do_finalize_local_symbols): Likewise.
15057 (Sized_relobj::map_to_kept_section): Likewise.
15058 * object.h (Sized_relobj::invalid_address): New constant.
15059 (Sized_relobj::do_output_section_offset): Check for invalid_address
15060 and return -1ULL.
15061 * output.cc (Output_reloc::local_section_offset): Use constant
15062 invalid_address instead of -1U.
15063 (Output_reloc::get_address): Likewise.
15064 (Output_section::output_address): Change -1U to -1ULL.
15065 * output.h (Output_reloc::invalid_address): New constant.
15066 * reloc.cc (Sized_relobj::write_sections): Use constant
15067 invalid_address instead of -1U.
15068 (Sized_relobj::relocate_sections): Likewise.
15069 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
15070 values for merge sections.
15071 * target-reloc.h (relocate_for_relocatable): Use constant
15072 invalid_address instead of -1U.
15073
89fc3421
CC
150742008-09-19 Cary Coutant <ccoutant@google.com>
15075
15076 Add plugin functionality for link-time optimization (LTO).
15077 * configure.ac (plugins): Add --enable-plugins option.
15078 * configure: Regenerate.
15079 * config.in: Regenerate.
15080 * Makefile.am (LIBDL): New variable.
15081 (CCFILES): Add plugin.cc.
15082 (HFILES): Add plugin.h.
15083 (ldadd_var): Add LIBDL.
15084 * Makefile.in: Regenerate.
15085
15086 * archive.cc: Include "plugin.h".
15087 (Archive::setup): Don't preread archive symbols when using a plugin.
15088 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
15089 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
15090 files.
15091 (Archive::include_member): Add symbols from plugin objects.
15092 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
15093 * descriptors.cc (Descriptors::open): Check for file descriptors
15094 abandoned by plugins.
15095 (Descriptors::claim_for_plugin): New function.
15096 * descriptors.h (Descriptors::claim_for_plugin): New function.
15097 (Open_descriptor::is_claimed): New field.
15098 (claim_descriptor_for_plugin): New function.
15099 * fileread.cc (File_read::claim_for_plugin): New function.
15100 * fileread.h (File_read::claim_for_plugin): New function.
15101 (File_read::descriptor): New function.
15102 * gold.cc: Include "plugin.h".
15103 (queue_initial_tasks): Add task to call plugin hooks for generating
15104 new object files.
15105 * main.cc: Include "plugin.h".
15106 (main): Load plugin libraries.
15107 * object.h (Pluginobj): Declare.
15108 (Object::pluginobj): New function.
15109 (Object::do_pluginobj): New function.
15110 (Object::set_target): New function.
15111 * options.cc: Include "plugin.h".
15112 (General_options::parse_plugin): New function.
15113 (General_options::General_options): Initialize plugins_ field.
15114 (General_options::add_plugin): New function.
15115 * options.h (Plugin_manager): Declare.
15116 (General_options): Add --plugin option.
15117 (General_options::has_plugins): New function.
15118 (General_options::plugins): New function.
15119 (General_options::add_plugin): New function.
15120 (General_options::plugins_): New field.
15121 * plugin.cc: New file.
15122 * plugin.h: New file.
15123 * readsyms.cc: Include "plugin.h".
15124 (Read_symbols::do_read_symbols): Check for archive before checking
15125 for ELF file. Call plugin hooks to claim files.
15126 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
15127 from a real object file; force override when processing replacement
15128 files.
15129 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
15130 (Symbol::init_base_object): Likewise.
15131 (Symbol::init_base_output_data): Likewise.
15132 (Symbol::init_base_output_segment): Likewise.
15133 (Symbol::init_base_constant): Likewise.
15134 (Symbol::init_base_undefined): Likewise.
15135 (Symbol::output_section): Assert that object is not a plugin.
15136 (Symbol_table::add_from_pluginobj): New function.
15137 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
15138 undefined.
15139 (Symbol_table::sized_write_globals): Likewise.
15140 (Symbol_table::add_from_pluginobj): Instantiate template.
15141 * symtab.h (Sized_pluginobj): Declare.
15142 (Symbol::in_real_elf): New function.
15143 (Symbol::set_in_real_elf): New function.
15144 (Symbol::in_real_elf_): New field.
15145 (Symbol_table::add_from_pluginobj): New function.
15146
15147 * testsuite/Makefile.am (AM_CFLAGS): New variable.
15148 (LIBDL): New variable.
15149 (LDADD): Add LIBDL.
15150 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
15151 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
15152 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
15153 (MOSTLYCLEANFILES): Likewise.
15154 * testsuite/Makefile.in: Regenerate.
15155 * testsuite/plugin_test.c: New file.
15156 * testsuite/plugin_test_1.sh: New file.
15157 * testsuite/plugin_test_2.sh: New file.
15158
de31bda5
ILT
151592008-09-16 Ian Lance Taylor <iant@google.com>
15160
9c2d0ef9
ILT
15161 * target-reloc.h (relocate_section): Check whether a symbol is
15162 defined by the ABI before reporting an undefined symbol error.
15163 * target.h (Target::is_defined_by_abi): Make parameter const.
15164 (Target::do_is_defined_by_abi): Likewise.
15165 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
15166 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
15167 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
15168 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
15169 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
15170 * testsuite/Makefile.in: Rebuild.
15171
de31bda5
ILT
15172 * fileread.cc (make_view): Add casts to avoid warning.
15173
9fa33bee
AO
151742008-09-16 Alexandre Oliva <aoliva@redhat.com>
15175
15176 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
15177 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
15178
183fd0e3
AO
151792008-09-16 Alexandre Oliva <aoliva@redhat.com>
15180
15181 * options.h (General_options::output_is_executable): New.
15182 (General_options::output_is_pie): New.
15183 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
15184 for shared libraries.
15185 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
15186
7be8330a
CD
151872008-09-11 Chris Demetriou <cgd@google.com>
15188
15189 * options.h (origin): New -z option.
15190 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
15191 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
15192 in DT_FLAGS_1.
15193
a9caad02
CC
151942008-09-05 Cary Coutant <ccoutant@google.com>
15195
15196 * fileread.cc (File_read::make_view): Add check for attempt to map
15197 beyond end of file.
15198
ae6dce4d
CC
151992008-09-05 Cary Coutant <ccoutant@google.com>
15200
15201 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
15202 explicit instantiations.
15203
d7ab2a47
KVH
152042008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
15205
15206 PR gold/6858
15207 * options.cc (General_options::finalize): Allow undefined symbols
15208 in shlibs if linking -shared.
15209
15210 PR gold/6859
15211 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
15212 symbols as not needing a dynsym entry.
15213
1e52a9c1
CS
152142008-08-20 Craig Silverstein <csilvers@google.com>
15215
15216 * fileread.cc (File_read::open): Do not lock the file unless it
15217 was successfully opened.
15218
d85c80a3
CC
152192008-08-14 Cary Coutant <ccoutant@google.com>
15220
15221 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
15222 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
15223 * testsuite/tls_test.cc (struct int128): 128-bit struct
15224 for testing TLS relocs with non-zero addend.
15225 (v12): New TLS variable.
15226 (t12): New test.
15227 (t_last): Add check for v12.
15228 * testsuite/tls_test.h (t12): New function.
15229 * testsuite/tls_test_main.cc (thread_routine): Call new test.
15230
2d924fd9
ILT
152312008-08-13 Ian Lance Taylor <iant@google.com>
15232
15233 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
15234 set tls_segment_ or relro_segment_.
15235 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
15236 when appropriate.
15237 * output.h (Output_section::clear_is_relro): New function.
15238 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
15239 sections specially even when output_data_ is empty.
15240 (Output_segment::maximum_alignment): When first section is relro,
15241 only force alignment for PT_LOAD segments.
15242 * script.cc (script_data_segment_align): New function.
15243 (script_data_segment_relro_end): New function.
15244 * script-c.h (script_data_segment_align): Declare.
15245 (script_data_segment_relro_end): Declare.
15246 * script-sections.h (class Script_sections): Declare
15247 data_segment_align and data_segment_relro_end. Add fields
15248 segment_align_index_ and saw_relro_end_.
15249 * script-sections.cc (class Sections_element): Add set_is_relro
15250 virtual function. Add new bool* parameter to place_orphan_here.
15251 Add get_output_section virtual function.
15252 (class Output_section_definition): Add set_is_relro. Add new
15253 bool* parameter to place_orphan_here. Add get_output_section.
15254 Add is_relro_ field.
15255 (Output_section_definition::Output_section_definition): Initialize
15256 evaluated_address_, evaluated_load_address, evaluated_addralign_,
15257 and is_relro_ fields.
15258 (Output_section_definition::place_orphan_here): Add is_relro
15259 parameter.
15260 (Output_section_definition::set_section_addresses): Set relro for
15261 output section.
15262 (Output_section_definition::alternate_constraint): Likewise.
15263 (class Orphan_output_section): Add new bool* parameter to
15264 place_orphan_here. Add get_output_section.
15265 (Orphan_output_section::place_orphan_here): Add is_relro
15266 parameter.
15267 (Script_sections::Script_sections): Initialize
15268 data_segment_align_index_ and saw_relro_end_.
15269 (Script_sections::data_segment_align): New function.
15270 (Script_sections::data_segment_relro_end): New function.
15271 (Script_sections::place_orphan): Set or clear is_relro.
15272 (Script_sections::set_section_addresses): Force alignment of first
15273 TLS section.
15274 * yyscript.y (exp): Call script_data_segment_align and
15275 script_data_segment_relro_end.
15276 * testsuite/relro_script_test.t: New file.
15277 * testsuite/relro_test.cc (using_script): Declare.
15278 (t1, t2): Test using_script.
15279 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
15280 (relro_script_test_SOURCES): Define.
15281 (relro_script_test_DEPENDENCIES): Define.
15282 (relro_script_test_LDFLAGS): Define.
15283 (relro_script_test_LDADD): Define.
15284 (relro_script_test.so): New target.
15285 * testsuite/Makefile.in: Rebuild.
15286
f827c9a9
CC
152872008-08-06 Cary Coutant <ccoutant@google.com>
15288
15289 * archive.cc (Archive::total_archives, Archive::total_members)
15290 (Archive::total_members_loaded): New variables.
15291 (Archive::setup): Add parameter. Add option to preread
15292 archive symbols.
15293 (Archive::read_armap): Add counter.
15294 (Archive::get_file_and_offset): New function.
15295 (Archive::get_elf_object_for_member): New function.
15296 (Archive::read_all_symbols): New function.
15297 (Archive::read_symbols): New function.
15298 (Archive::add_symbols): Add counters.
15299 (Archive::include_all_members): Use armap to find members if it's
15300 already built.
15301 (Archive::include_member): Skip reading symbols if already read.
15302 Factored code into Archive::get_file_and_offset and
15303 Archive::get_elf_object_for_member. Changed call to
15304 Mapfile::report_include_archive_member.
15305 (Archive::print_stats): New function.
15306 * archive.h: Declare Object and Read_symbols_data classes.
15307 (Archive::Archive): Add initializers for new members.
15308 (Archive::setup): Add parameter.
15309 (Archive::print_stats): New function.
15310 (Archive::total_archives, Archive::total_members)
15311 (Archive::total_members_loaded): New variables.
15312 (Archive::get_file_and_offset): New function.
15313 (Archive::get_elf_object_for_member): New function.
15314 (Archive::read_all_symbols): New function.
15315 (Archive::read_symbols): New function.
15316 (Archive::Archive_member): New class.
15317 (Archive::members_): New member.
15318 (Archive::num_members_): New member.
15319 * main.cc: Include archive.h.
15320 (main): Call Archive::print_stats.
15321 * mapfile.cc (Mapfile::report_include_archive_member): Delete
15322 archive parameter; member_name is now the fully-decorated name.
15323 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
15324 * options.h: (General_options): Add --preread-archive-symbols option.
15325 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
15326 Archive::setup.
15327
de4c45bd
ILT
153282008-08-04 Ian Lance Taylor <iant@google.com>
15329
15330 * symtab.h (Symbol::use_plt_offset): New function.
15331 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
15332 * powerpc.cc (Relocate::relocate): Likewise.
15333 * sparc.cc (Relocate::relocate): Likewise.
15334 * x86_64.cc (Relocate::relocate): Likewise.
15335 * testsuite/weak_plt.sh: New test.
15336 * testsuite/weak_plt_main.cc: New test.
15337 * testsuite/weak_plt_shared.cc: New test.
15338 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
15339 (check_PROGRAMS): Add weak_plt.
15340 (check_DATA): Add weak_plt_shared.so.
15341 (weak_plt_main_pic.o, weak_plt): New targets.
15342 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
15343 * testsuite/Makefile.in: Rebuild.
15344
15345 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
15346 gcctestdir/ld.
15347 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
15348 * testsuite/Makefile.in: Rebuild.
15349
323ee3f4
AM
153502008-08-04 Alan Modra <amodra@bigpond.net.au>
15351
15352 * Makefile.am (POTFILES.in): Set LC_ALL=C.
15353 * Makefile.in: Regenerate.
15354 * po/POTFILES.in: Regenerate.
15355
7c07ecec
ILT
153562008-07-29 Ian Lance Taylor <iant@google.com>
15357
15358 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
15359 symbols before other symbols.
15360 * testsuite/script_test_2.cc (test_addr): Declare.
15361 (test_addr_alias): Declare.
15362 (main): Check that test_addr and test_addr_alias have the right
cd536b21 15363 values.
7c07ecec
ILT
15364 * testsuite/script_test_2.t: Define test_addr_alias and
15365 test_addr.
15366
5778530e
ILT
153672008-07-24 Ian Lance Taylor <iant@google.com>
15368
2a00e4fb
ILT
15369 PR 5990
15370 * descriptors.cc: New file.
15371 * descriptors.h: New file.
15372 * gold-threads.h (class Hold_optional_lock): New class.
15373 * fileread.cc: Include "descriptors.h".
15374 (File_read::~File_read): Release descriptor rather than closing
15375 it.
15376 (File_read::open) [file]: Call open_descriptor rather than open.
15377 Set is_descriptor_opened_.
15378 (File_read::open) [memory]: Assert that descriptor is not open.
15379 (File_read::reopen_descriptor): New function.
15380 (File_read::release): Release descriptor.
15381 (File_read::do_read): Make non-const. Reopen descriptor.
15382 (File_read::read): Make non-const.
15383 (File_read::make_view): Reopen descriptor.
15384 (File_read::do_readv): Likewise.
15385 * fileread.h (class File_read): Add is_descriptor_opened_ field.
15386 Update declarations.
15387 * layout.cc: Include "descriptors.h".
15388 (Layout::create_build_id): Use open_descriptor rather than open.
15389 * output.cc: Include "descriptors.h".
15390 (Output_file::open): Use open_descriptor rather than open.
15391 * archive.cc (Archive::const_iterator): Change Archive to be
15392 non-const.
15393 (Archive::begin, Archive::end): Make non-const.
15394 (Archive::count_members): Likewise.
15395 * archive.h (class Archive): Update declarations.
15396 * object.h (Object::read): Make non-const.
15397 * Makefile.am (CCFILES): Add descriptors.cc.
15398 (HFILES): Add descriptors.h.
15399 * Makefile.in: Rebuild.
15400
801647d1
ILT
15401 PR 6716
15402 * gold.h: Always include <clocale>. Add Solaris workarounds
15403 following code in binutils/sysdep.h.
15404
5edd166e
ILT
15405 PR 6048
15406 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
15407 this->eh_frame_hdr_ is NULL before using it.
15408
c89ad728
ILT
15409 * dynobj.cc (Versions::Versions): Update comment.
15410
aa86f06b
ILT
15411 * dynobj.cc (Versions::Versions): If there is an soname, use it as
15412 the base version name.
15413
5778530e
ILT
15414 * stringpool.cc (Stringpool_template::add_with_length): Set key to
15415 array size plus one.
15416 (Stringpool_template::set_string_offsets): Subtract one from key
15417 before using it as an array index.
15418 (Stringpool_template::get_offset_with_length): Likewise.
15419 (Stringpool_template::write_to_buffer): Likewise.
15420 * stringpool.h (Stringpool_template::get_offset_from_key):
15421 Likewise.
15422
057ead22
ILT
154232008-07-23 Ian Lance Taylor <iant@google.com>
15424
7f649c59
ILT
15425 PR 6658
15426 * object.h (Merged_symbol_value::value): Do our best to handle a
15427 negative addend.
15428
057ead22
ILT
15429 PR 6647
15430 * script.cc (Version_script_info::get_versions): Don't add empty
15431 version tag to return value.
15432 (Version_script_info::get_symbol_version_helper): Change return
15433 type to bool. Add pversion parameter. Change all callers.
15434 (script_register_vers_node): Don't require a non-NULL tag.
15435 * script.h (class Version_script_info): Update declarations.
15436 (Version_script_info::get_symbol_version): Change return type to
15437 bool. Add version parameter. Change all callers.
15438 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
15439 handling. Handle an empty version from a version script.
15440 (Symbol_table::define_special_symbol): Likewise.
15441 * testsuite/ver_test_10.script: New file.
15442 * testsuite/ver_test_10.sh: New file.
15443 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
15444 (check_DATA): Add ver_test_10.syms.
15445 (ver_test_10.syms, ver_test_10.so): New target.
15446 * testsuite/Makefile.in: Rebuild.
15447
58e54ac2
CD
154482008-07-23 Simon Baldwin <simonb@google.com>
15449
15450 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
15451 to zero for undefined symbols from dynamic libraries.
15452
95d14cd3
ILT
154532008-07-23 Ian Lance Taylor <iant@google.com>
15454
15455 * symtab.cc (Symbol_table::resolve): Remove version parameter.
15456 Change all callers.
15457 * symtab.h (class Symbol_table): Update declaration.
15458 * testsuite/ver_test_9.cc: New file.
15459 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
15460 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
15461 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
15462 (ver_test_9.so, ver_test_9.o): New targets.
15463 * testsuite/Makefile.in: Rebuild.
15464
92de84a6
ILT
154652008-07-22 Ian Lance Taylor <iant@google.com>
15466
34810851
ILT
15467 * options.h (class General_options): Define --check-sections.
15468 * layout.cc (Layout::set_segment_offsets): Handle
15469 --check-sections.
15470
af6156ef
ILT
15471 * options.h (class General_options): Define -n/--nmagic and
15472 -N/--omagic.
15473 * options.cc (General_options::finalize): For -n/--nmagic or
15474 -N/--omagic, set -static.
15475 * layout.cc (Layout::attach_allocated_section_to_segment): If
15476 -N/--omagic, don't put read-only and read-write sections in
15477 different segments.
15478 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
15479 finding a read-only segment.
15480 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
15481 don't set the minimum segment alignment to the common page size,
15482 and don't set the file offset to the address modulo the page size.
15483 * script-sections.cc (Script_sections::create_segments): If
15484 -n/--omagic, don't put read-only and read-write sections in
15485 different segments.
15486
92de84a6
ILT
15487 * cref.cc: New file.
15488 * cref.h: New file.
15489 * options.h (class General_options): Add --print-symbol-counts.
15490 * main.cc (main): Issue defined symbol report if requested.
15491 * archive.cc (Archive::interpret_header): Make into a const member
15492 function.
15493 (Archive::add_symbols): Call Input_objects::archive_start and
15494 archive_stop.
15495 (Archive::const_iterator): Define new class.
15496 (Archive::begin, Archive::end): New functions.
15497 (Archive::include_all_members): Rewrite to use iterator.
15498 (Archive::count_members): New function.
15499 * archive.h (class Archive): Update declarations.
15500 (Archive::filename): New function.
15501 * object.cc: Include "cref.h".
15502 (Sized_relobj::Sized_relobj): Initialize defined_count_.
15503 (Sized_relobj::do_get_global_symbol_counts): New function.
15504 (Input_objects::add_object): Add object to cross-referencer.
15505 (Input_objects::archive_start): New function.
15506 (Input_objects::archive_stop): New function.
15507 (Input_objects::print_symbol_counts): New function.
15508 * object.h: Declare Cref and Archive.
15509 (Object::get_global_symbol_counts): New function.
15510 (Object::do_get_global_symbol_counts): New pure virtual function.
15511 (class Sized_relobj): Add defined_count_ field. Update
15512 declarations.
15513 (class Input_objects): Add cref_ field. Update constructor.
15514 Update declarations.
15515 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
15516 defined_count_.
15517 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
15518 symbol counts.
15519 (Sized_dynobj::do_get_global_symbol_counts): New function.
15520 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
15521 defined_count_. Update declarations. Define Symbols typedef.
15522 * symtab.cc (Symbol_table::add_from_relobj): Add defined
15523 parameter. Change all callers.
15524 (Symbol_table::add_from_dynobj): Add sympointers and defined
15525 parameters. Change all callers.
15526 * symtab.h (class Symbol_table): Update declarations.
15527 * Makefile.am (CCFILES): Add cref.cc.
15528 (HFILES): Add cref.h.
15529 * Makefile.in: Rebuild.
15530
3f7c5e1d
CD
155312008-07-22 Simon Baldwin <simonb@google.com>
15532
15533 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
15534 to zero when writing undefined symbols.
15535
e0b64032
ILT
155362008-07-22 Ian Lance Taylor <iant@google.com>
15537
15538 * output.cc (Output_section::add_input_section): Don't try to
15539 merge empty merge sections.
15540
096b02cf
CS
155412008-07-21 Craig Silverstein <csilvers@google.com>
15542
15543 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
15544 Include symbol version in error message.
cd536b21 15545
1d1f116d
CD
155462008-07-20 Chris Demetriou <cgd@google.com>
15547
cd536b21 15548 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
15549 (RANDOM_SEED_CFLAGS): New substituted variable.
15550 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
15551 * configure: Rebuild.
15552 * Makefile.in: Likewise.
15553 * testsuite/Makefile.in: Likewise.
15554
a18f591e
ILT
155552008-07-18 Ian Lance Taylor <iant@google.com>
15556
15557 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
15558 where we see NAME/NULL and NAME/VERSION as separate symbols.
15559 * testsuite/ver_test_main.cc (main): Call t4.
15560 (t4, t4_2a): Define.
15561 * testsuite/ver_test_2.cc (t4_2): Define.
15562 * testsuite/ver_test_2.script: Put t4_2a in VER2.
15563 * testsuite/ver_test_4.cc (t4_2a): Define.
15564 * testsuite/ver_test_4.script: Put t4_2a in VER2.
15565 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
15566
c6e3f6ed
ILT
155672008-07-17 Ian Lance Taylor <iant@google.com>
15568
15569 * dynobj.cc (Versions::add_def): If we give an error about a
15570 missing version, go ahead and create the version anyhow.
15571
ef9beddf
ILT
155722008-07-10 Ian Lance Taylor <iant@google.com>
15573
15574 Handle output sections with more than 0x7fffffff bytes.
15575 * object.h (class Relobj): Change map_to_output_ to
15576 output_sections_, and just keep a section pointer. Change all
15577 uses. Move comdat group support to Sized_relobj.
15578 (Relobj::is_section_specially_mapped): Remove.
15579 (Relobj::output_section): Remove poff parameter. Change all
15580 callers.
15581 (Relobj::output_section_offset): New function.
15582 (Relobj::set_section_offset): Rewrite.
15583 (Relobj::map_to_output): Remove.
15584 (Relobj::output_sections): New function.
15585 (Relobj::do_output_section_offset): New pure virtual function.
15586 (Relobj::do_set_section_offset): Likewise.
15587 (class Sized_relobj): Add section_offsets_ field. Add comdat
15588 group support from Relobj. Update declarations.
15589 (Sized_relobj::get_output_section_offset): New function.
15590 (Sized_relobj::do_output_section_offset): New function.
15591 (Sized_relobj::do_set_section_offset): New function.
15592 * object.cc (Relobj::output_section_address): Remove.
15593 (Sized_relobj::Sized_relobj): Initialize new fields.
15594 (Sized_relobj::include_section_group): Cast find_kept_object to
15595 Sized_relobj.
15596 (Sized_relobj::include_linkonce_section): Likewise.
15597 (Sized_relobj::do_layout): Use separate arrays for output section
15598 and output offset.
15599 (Sized_relobj::do_count_local_symbols): Change map_to_output to
15600 output_sections.
15601 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
15602 output_sections and section_offsets.
15603 (Sized_relobj::write_local_symbols): Likewise.
15604 (map_to_kept_section): Compute output address directly.
15605 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
15606 output_sections and section_offsets.
15607 (Sized_relobj::write_sections): Likewise.
15608 (Sized_relobj::relocate_sections): Likewise.
15609 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
15610 * output.h (class Output_reloc): Update declarations. Change
15611 u2_.relobj to Sized_relobj*.
15612 (class Output_data_reloc): Change add functions to use
15613 Sized_relobj*.
15614 * output.cc (Output_reloc::Output_reloc): Change relobj to
15615 Sized_relobj*.
15616 (Output_reloc::local_section_offset): Change return type to
15617 Elf_Addr. Use get_output_section_offset.
15618 (Output_reloc::get_address): Likewise.
15619 (Output_section::is_input_address_mapped): Don't call
15620 is_section_specially_mapped.
15621 (Output_section::output_offset): Likewise.
15622 (Output_section::output_address): Likewise.
15623 (Output_section::starting_output_address): Likewise.
15624 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
15625 parameter to Sized_relobj*.
15626 (Copy_relocs::need_copy_reloc): Likewise.
15627 (Copy_relocs::save): Likewise.
15628 * copy-relocs.h (class Copy_relocs): Update declarations.
15629 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
15630 Sized_relobj*. Change relobj_ field to Sized_relobj*.
15631 * target-reloc.h (relocate_for_relocatable): Change
15632 offset_in_output_section type to Elf_Addr. Change code that uses
15633 it as well.
15634 * layout.cc (Layout::layout): Always set *off.
15635 * mapfile.cc (Mapfile::print_input_section): Use
15636 output_section_offset.
15637 * i386.cc (Target_i386::copy_reloc): Change object parameter to
15638 Sized_relobj*.
15639 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
15640 * sparc.cc (Target_sparc::copy_reloc): Likewise.
15641 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
15642
5cb66f97
ILT
156432008-07-03 Ian Lance Taylor <iant@google.com>
15644
15645 * layout.cc (Layout::include_section): Do not discard unrecognized
15646 SHT_STRTAB sections.
15647
afe47622
CS
156482008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
15649
15650 * script.cc (Lex::can_continue_name): Make '?' allowable in
15651 version-script names.
15652 * testsuite/version_script.map: Change glob pattern to use '?'
15653
5adf9721
ILT
156542008-06-30 Manish Singh <yosh@gimp.org>
15655
15656 PR 6585
15657 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
15658 Correct typo.
15659
e6fde208
ILT
156602008-06-30 Ian Lance Taylor <iant@google.com>
15661
15662 PR 6660
15663 PR 6682
15664 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
15665 versions]: Don't try to read the value in the contents, since we
15666 don't use it. Use the template endianness when writing.
15667
3f2e6a2d
CC
156682008-06-25 Cary Coutant <ccoutant@google.com>
15669
15670 * fileread.cc (File_read::make_view): Assert on zero-length view.
15671 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
15672 symbol table when there are no symbols to read.
15673
c43d3a48
CS
156742008-06-23 Craig Silverstein <csilvers@google.com>
15675
15676 * version.cc (version_string): Bump to 1.7
15677
5f494ea0
CS
156782008-06-18 Craig Silverstein <csilvers@google.com>
15679
15680 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
15681 constant 0xFFFF to type Valtype.
15682 (Powerpc_relocate_functions::rel16_ha): Likewise.
15683
c42e122e
ILT
156842008-06-17 Ian Lance Taylor <iant@google.com>
15685
f34787f8
ILT
15686 * output.h (Output_section::Input_section): Initialize p2align_ to
15687 zero for Output_section_data constructors.
15688 (Output_section::Input_section::addralign): If not an input
15689 section, return the alignment of the Output_section_data.
15690 * testsuite/copy_test.cc: New file.
15691 * testsuite/copy_test_1.cc: New file.
15692 * testsuite/copy_test_2.cc: New file.
15693 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
15694 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
15695 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
15696 (copy_test_1_pic.o, copy_test_1.so): New targets.
15697 (copy_test_2_pic.o, copy_test_2.so): New targets.
15698 * testsuite/Makefile.in: Rebuild.
15699
c42e122e
ILT
15700 * script-sections.cc (Script_sections::place_orphan): Initialize
15701 local variable exact.
15702
ce3ac18a
DE
157032008-06-13 David Edelsohn <edelsohn@gnu.org>
15704
15705 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
15706
42cacb20
DE
157072008-06-12 David Edelsohn <edelsohn@gnu.org>
15708 David S. Miller <davem@davemloft.net>
15709
15710 * powerpc.cc: New file.
15711 * Makefile.am (TARGETSOURCES): Add powerpc.cc
15712 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
15713 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
15714 * Makefile.in: Rebuild.
15715
7b308235
ILT
157162008-06-09 Ian Lance Taylor <iant@google.com>
15717
15718 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
15719 <exception>.
15720 (throwing, orig_terminate): New static variables.
15721 (terminate_handler): New static function.
15722 (t2): Set terminate handler.
15723
f0b886e3
ILT
157242008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
15725
15726 PR 6584
cd536b21 15727 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
15728 alignment.
15729
3e90f135
CC
157302008-05-30 Cary Coutant <ccoutant@google.com>
15731
15732 * archive.cc (Archive::include_all_members) Correct to step
15733 over symbol table and extended name table in thin archives.
15734
e09ad04a
ILT
157352008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
15736
15737 PR 6407
15738 * target-reloc.h (relocate_for_relocatable): Fix new_offset
15739 calculation.
15740
62b01cb5
ILT
157412008-05-28 Caleb Howe <cshowe@google.com>
15742
15743 * reduced_debug_output.cc: New file.
15744 * reduced_debug_output.h: New file.
92de84a6 15745 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
15746 * options.cc (General_options::finalize): Add strip_debug_non_line
15747 to the strip heirarchy.
15748 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
15749 fields.
15750 * layout.cc: Include "reduced_debug_output.h".
15751 (Layout::Layout): Initialize new fields.
15752 (line_only_debug_sections): New static array.
15753 (is_lines_only_debug_sections): New static inline function.
15754 (Layout::include_section): Handle --strip-debug-non-line.
15755 (Layout::make_output_section): If --strip-debug-non-line, build
15756 new output sections for .debug_abbrev and .debug_info.
15757 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
15758 gold. Warn about possible overflow.
15759 (read_signed_LEB_128): Likewise.
15760 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
15761 (read_signed_LEB_128): Declare.
15762 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
15763 (HFILES): Add reduced_debug_output.h.
15764 * Makefile.in: Rebuild.
15765
7d9e3d98
ILT
157662008-05-21 Ian Lance Taylor <iant@google.com>
15767
15768 * mapfile.cc: New file.
15769 * mapfile.h: New file.
15770 * options.h (class General_options): Add -M/--print-map and -Map.
15771 * options.cc (General_options::finalize): Make -M equivalent to
15772 -Map -.
15773 * main.cc: Include <cstdio> and "mapfile.h".
15774 (main): Open mapfile if requested.
15775 * gold.cc (class Middle_runner): Add mapfile_ field. Update
15776 constructor. Change caller.
15777 (queue_initial_tasks): Add mapfile parameter. Change caller.
15778 (queue_middle_tasks): Likewise.
15779 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
15780 declarations.
15781 * archive.cc: Include "mapfile.h".
15782 (Archive::add_symbols): Add mapfile parameter. Change all
15783 callers. Pass mapfile, symbol, and reason to include_member.
15784 (Archive::include_all_members): Add mapfile parameter. Change all
15785 callers.
15786 (Archive::include_member): Add mapfile, sym, and why parameters.
15787 Change all callers. Report inclusion to map file.
15788 * archive.h: Include "fileread.h".
15789 (class Archive): Update declarations.
15790 (Archive::file): New const method.
15791 (class Add_archive_symbols): Add mapfile_ field. Update
15792 constructor. Change all callers.
15793 * readsyms.h (class Read_symbols): Likewise.
15794 (class Finish_group): Likewise.
15795 (class Read_script): Likewise.
15796 * common.cc: Include "mapfile.h".
15797 (Symbol_table::allocate_commons): Add mapfile parameter. Change
15798 all callers.
15799 (Symbol_table::do_allocate_commons): Likewise.
15800 (Symbol_table::do_allocate_commons_list): Likewise. Report common
15801 symbol allocation to mapfile.
15802 * common.h (class Allocate_commons_task): Add mapfile_ field.
15803 Update constructor. Change all callers.
15804 * symtab.h (class Symbol_table): Update declarations.
15805 * layout.cc: Include "mapfile.h".
15806 (Layout_task_runner::run): Print information to mapfile.
15807 (Layout::create_gold_note): Change Output_data_fixed_space to
15808 Output_data_zero_fill.
15809 (Layout::create_build_id): Likewise.
15810 (Layout::print_to_mapfile): New function.
15811 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
15812 constructor. Change caller.
15813 (class Layout): Declare print_to_mapfile.
15814 * output.cc (Output_section::Input_section::print_to_mapfile): New
15815 function.
15816 (Output_section::add_input_section): If producing a map, always
15817 add to input_sections_ list.
15818 (Output_section::do_print_to_mapfile): New function.
15819 (Output_segment::print_sections_to_mapfile): New function.
15820 (Output_segment::print_section_list_to_mapfile): New function.
15821 * output.h: Include "mapfile.h".
15822 (Output_data::print_to_mapfile): New function.
15823 (Output_data::do_print_to_mapfile): New virtual function.
15824 (Output_segment_headers::do_print_to_mapfile): New function.
15825 (Output_file_header::do_print_to_mapfile): New function.
15826 (Output_data_const::do_print_to_mapfile): New function.
15827 (class Output_data_const_buffer): Add map_name_ field. Update
15828 constructor. Change all callers. Add do_print_to_mapfile
15829 function.
15830 (class Output_data_fixed_space): Likewise.
15831 (class Output_data_space): Likewise.
15832 (class Output_data_zero_fill): New class.
15833 (Output_data_strtab::do_print_to_mapfile): New function.
15834 (Output_data_reloc_base::do_print_to_mapfile): New function.
15835 (Output_relocatable_relocs::do_print_to_mapfile): New function.
15836 (Output_data_group::do_print_to_mapfile): New function.
15837 (Output_data_got::do_print_to_mapfile): New function.
15838 (Output_data_dynamic::do_print_to_mapfile): New function.
15839 (Output_symtab_xindex::do_print_to_mapfile): New function.
15840 (class Output_section): Declare do_print_to_mapflie. Declare
15841 print_to_mapfile in Input_section.
15842 (class Output_segment): Declare new functions.
15843 * object.h (Sized_relobj::symbol_count): New function.
15844 * script-sections.cc
15845 (Output_section_element_dot_assignment::set_section_addresses):
15846 Change Output_data_fixed_space to Output_data_zero_fill.
15847 (Output_data_expression::do_print_to_mapfile): New function.
15848 * script.cc (read_input_script): Add mapfile parameter. Change
15849 all callers.
15850 * script.h (read_input_script): Update declaration.
15851 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
15852 (Eh_frame::do_print_to_mapfile): New function.
15853 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
15854 (Output_merge_string::do_print_to_mapfile): New function.
15855 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
15856 function.
15857 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
15858 function.
15859 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
15860 function.
15861 * Makefile.am (CCFILES): Add mapfile.cc.
15862 (HFILES): Add mapfile.h.
15863 * Makefile.in: Rebuild.
15864
9f1d377b
ILT
158652008-05-19 Ian Lance Taylor <iant@google.com>
15866
15867 * options.h (class General_options): Add -z relro.
15868 * layout.cc (Layout::Layout): Initialize relro_segment_.
15869 (Layout::add_output_section_data): Return the output section.
15870 (Layout::make_output_section): Rcognize relro sections and mark
15871 them appropriately.
15872 (Layout::attach_allocated_section_to_segment): Put relro sections
15873 in a PT_GNU_RELRO segment.
15874 (Layout::create_initial_dynamic_sections): Mark the .dynamic
15875 section as relro.
15876 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
15877 PT_TLS segments.
15878 (Layout::linkonce_mapping): Map d.rel.ro.local to
15879 .data.rel.ro.local.
15880 (Layout::output_section_name): Us .data.rel.ro.local for any
15881 section which begins with that.
15882 * layout.h (class Layout): Update add_output_section_data
15883 declaration. Add relro_segment_ field.
15884 * output.cc (Output_section::Output_section): Initialize is_relro_
15885 and is_relro_local_ fields.
15886 (Output_segment::add_output_section): Group relro sections.
15887 (Output_segment::is_first_section_relro): New function.
15888 (Output_segment::maximum_alignment): If there is a relro section,
15889 align the segment to the common page size.
15890 (Output_segment::set_section_addresses): Track whether we are
15891 looking at relro sections. If the last section is a relro
15892 section, align to the common page size.
15893 (Output_segment::set_section_list_addresses): Add in_relro
15894 parameter. Change all callers. Align to the page size when
15895 moving from relro to non-relro section.
15896 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
15897 segment.
15898 * output.h (class Output_section): Add is_relro_ and
15899 is_relro_local_ fields.
15900 (Output_section::is_relro): New function.
15901 (Output_section::set_is_relro): New function.
15902 (Output_section::is_relro_local): New function.
15903 (Output_section::set_is_relro_local): New function.
15904 (class Output_segment): Update declarations.
15905 * i386.cc (Target_i386::got_section): Mark .got section as relro.
15906 * sparc.cc (Target_sparc::got_section): Likewise.
15907 * x86_64.cc (Target_x86_64::got_section): Likewise.
15908 * testsuite/relro_test_main.cc: New file.
15909 * testsuite/relro_test.cc: New file.
15910 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
15911 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
15912 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
15913 (relro_test.so, relro_test_pic.o): New targets.
15914 * testsuite/Makefile.in: Rebuild.
15915
a984ee1d
ILT
159162008-05-16 Ian Lance Taylor <iant@google.com>
15917
01676dcd
ILT
15918 * output.cc (Output_segment::add_output_section): Remove front
15919 parameter.
15920 * output.h (class Output_segment): Remove
15921 add_initial_output_section and overloaded add_output_section.
15922 Update declaration of remaining add_output_section.
15923 * layout.cc (Layout::create_interp): Call add_output_section
15924 rather than add_initial_output_section.
15925 (Layout::finish_dynamic_section): Likewise.
15926
497897f9
ILT
15927 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
15928 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
15929 know the dynamic type.
15930 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
15931 field. Initialize it in constructor.
15932 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
15933 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
15934 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
15935 reloc.
15936
a984ee1d
ILT
15937 * output.cc (Output_reloc::get_address): Change return type to
15938 Elf_Addr.
15939 * output.h (class Output_reloc): Update get_address declaration.
15940 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
15941 for section addresses.
15942
55ba0940
ILT
159432008-05-09 Ian Lance Taylor <iant@google.com>
15944
15945 PR 6493
15946 * gold.cc (gold_nomem): Use return value of write.
15947
75517b77
ILT
159482008-05-08 Ian Lance Taylor <iant@google.com>
15949
15950 * symtab.c (Symbol::init_base_output_data): Add version
15951 parameter. Change all callers.
15952 (Symbol::init_base_output_segment): Likewise.
15953 (Symbol::init_base_constant): Likewise.
15954 (Symbol::init_base_undefined): Likewise.
15955 (Sized_symbol::init_output_data): Likewise.
15956 (Sized_symbol::init_output_segment): Likewise.
15957 (Sized_symbol::init_constant): Likewise.
15958 (Sized_symbol::init_undefined): Likewise.
15959 (Symbol_table::do_define_in_output_data): If the new symbol has a
15960 version, mark it as the default.
15961 (Symbol_table::do_define_in_output_segment): Likewise.
15962 (Symbol_table::do_define_as_constant): Likewise.
15963 * symtab.h (class Symbol): Update declarations.
15964 (class Sized_symbol): Likewise.
15965 * resolve.cc (Symbol::override_version): New function.
c42e122e 15966 (Symbol::override_base): Call override_version.
75517b77
ILT
15967 (Symbol::override_base_with_special): Likewise.
15968 * testsuite/ver_script_8.script: New file.
15969 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
15970 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
15971 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
15972 (ver_test_8_1.so, ver_test_8_2.so): New targets.
15973
f1f70eae
ILT
159742008-05-06 Ian Lance Taylor <iant@google.com>
15975
f3e9c5c5
ILT
15976 PR 6049
15977 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
15978 functions.
15979 (class General_options): Remove existing --undefined, and add
15980 --no-undefined instead. Add new --undefined as synonym for -u.
15981 * archive.cc (Archive::add_symbols): Check whether symbol was
15982 named with -u.
15983 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
15984 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
15985 all uses. Add IS_UNDEFINED. Update declarations to split
15986 different versions of init_base. Declare init_base_undefined.
15987 (Symbol::is_defined): Handle IS_UNDEFINED.
15988 (Symbol::is_undefined): Likewise.
15989 (Symbol::is_weak_undefined): Call is_undefined.
15990 (Symbol::is_absolute): Handle IS_CONSTANT.
15991 (class Sized_symbol): Update declarations to split different
15992 versions of init. Declare init_undefined.
15993 (class Symbol_table): Declare new functions.
15994 * symtab.cc (Symbol::init_base_object): Rename from init_base.
15995 Change all callers.
15996 (Symbol::init_base_output_data): Likewise.
15997 (Symbol::init_base_output_segment): Likewise.
15998 (Symbol::init_base_constant): Likewise.
15999 (Symbol::init_base_undefined): New function.
16000 (Sized_symbol::init_object): Rename from init. Change all
16001 callers.
16002 (Sized_symbol::init_output_data): Likewise.
16003 (Sized_symbol::init_output_segment): Likewise.
16004 (Sized_symbol::init_constant): Likewise.
16005 (Sized_symbol::init_undefined): New function.
16006 (Symbol_table::add_undefined_symbols_from_command_line): New
16007 function.
16008 (Symbol_table::do_add_undefined_symbols_from_command_line): New
16009 function.
16010 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
16011 (Symbol::output_section): Likewise.
16012 (Symbol::set_output_section): Likewise.
16013 (Symbol_table::sized_finalize_symbol): Likewise.
16014 (Symbol_table::sized_write_globals): Likewise.
16015 * resolve.cc (Symbol_table::should_override): Likewise.
16016 (Symbol::override_base_with_special): Likewise.
16017
8bdcdf2c
ILT
16018 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
16019 symbol, change it to have default visibility.
16020 * testsuite/protected_1.cc: New file.
16021 * testsuite/protected_2.cc: New file.
16022 * testsuite/protected_3.cc: New file.
16023 * testsuite/protected_main_1.cc: New file.
16024 * testsuite/protected_main_2.cc: New file.
16025 * testsuite/protected_main_3.cc: New file.
16026 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
16027 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
16028 (protected_1_LDFLAGS, protected_1_LDADD): Define.
16029 (protected_1.so): New target.
16030 (protected_1_pic.o, protected_2_pic.o): New targets.
16031 (protected_3_pic.o): New target.
16032 (check_PROGRAMS): Add protected_2.
16033 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
16034 (protected_2_LDFLAGS, protected_2_LDADD): Define.
16035 * testsuite/Makefile.in: Rebuild.
16036
2b706932
ILT
16037 * options.h (DEFINE_var): Add set_user_set_##varname__.
16038 (DEFINE_bool_alias): New macro.
16039 (class General_options): Define -Bstatic using DEFINE_bool_alias
16040 rather than DEFINE_special. Add --undefined as an alias for -z
16041 defs.
16042 * options.cc (General_options::parse_Bstatic): Remove.
16043
d82a5bcc
ILT
16044 * options.h (class General_options): Add --fatal-warnings.
16045 * main.cc (main): Implement --fatal-warnings.
16046 * errors.h (Errors::warning_count): New function.
16047
f1f70eae
ILT
16048 * options.h (class General_options): Add -Bsymbolic-functions.
16049 * symtab.h (Symbol::is_preemptible): Check for
16050 -Bsymbolic-functions.
16051
8825ac63
ILT
160522008-05-05 Ian Lance Taylor <iant@google.com>
16053
d98bc257
ILT
16054 * options.h (DEFINE_bool): For DASH_Z, create the negative option
16055 as noVARNAME rather than no-VARNAME.
16056 (class General_options): Add option -z combreloc.
16057 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
16058 get_address.
16059 (Output_reloc::sort_before) [SHT_REL]: New function.
16060 (Output_reloc::sort_before) [SHT_RELA]: New function.
16061 (class Output_data_reloc_base): Add sort_relocs_ field. Define
16062 Sort_relocs_comparison.
16063 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
16064 parameter. Change all callers.
16065 (Output_data_reloc::Output_data_reloc) [both versions]: Add
16066 sort_relocs parameter. Change all callers.
16067 * output.cc (Output_reloc::get_address): New function, broken out
16068 of write_rel.
16069 (Output_reloc::write_rel): Call it.
16070 (Output_reloc::compare): New function.
16071 (Output_data_reloc_base::do_write): Optionally sort relocs.
16072
60b2b4e7
ILT
16073 * configure.ac: If targ_extra_obj is set, link it in.
16074 * configure.tgt: Initialize all variables.
16075 (x86_64*): Set targ_extra_obj and targ_extra_size.
16076 * configure: Rebuild.
16077
8825ac63
ILT
16078 * object.cc (Sized_relobj::include_section_group): Adjust section
16079 indexes read from group data. Build vector to pass to
16080 layout_group.
16081 * layout.cc (Layout::layout_group): Add flags and shndxes
16082 parameters. Remove contents parameter. Change caller. Update
16083 explicit instantiations.
16084 * layout.h (class Layout): Update layout_group declaration.
16085 * output.cc (Output_data_group::Output_data_group): Add flags and
16086 input_shndxes parameters. Remove contents parameter. Change
16087 caller.
16088 (Output_data_group::do_write): Change input_sections_ to
16089 input_shndxes_.
16090 * output.h (class Output_data_group): Update constructor
16091 declaration. Rename input_sections_ to input_shndxes_.
16092 * testsuite/many_sections_test.cc: Add template.
16093
e94cf127
CC
160942008-04-30 Cary Coutant <ccoutant@google.com>
16095
4418b2d5
CC
16096 * target-reloc.h (relocate_section): Fix dead-pointer bug.
16097
e94cf127
CC
16098 * layout.cc (Layout::include_section): Refactored check for debug
16099 info section.
16100 (Layout::add_comdat): Add new parameters. Change type
16101 of signature parameter. Add object and shndx to signatures table.
16102 (Layout::find_kept_object): New function.
16103 * layout.h: Include <cstring>.
16104 (Layout::is_debug_info_section): New function.
16105 (Layout::add_comdat): Add new parameters.
16106 (Layout::find_kept_object): New function.
16107 (Layout::Kept_section): New struct.
16108 (Layout::Signatures): Change type of map range.
16109 * object.cc (Relobj::output_section_address): New function.
16110 (Sized_relobj::include_section_group): Add new parameters. Change
16111 calls to Layout::add_comdat. Change to build table of kept comdat
16112 groups and table mapping discarded sections to kept sections.
16113 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
16114 (Sized_relobj::do_layout): Change calls to include_section_group and
16115 include_linkonce_section.
16116 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
16117 value to zero when section is discarded.
16118 (Sized_relobj::map_to_kept_section): New function.
16119 * object.h (Relobj::output_section_address): New function.
16120 (Relobj::Comdat_group): New type.
16121 (Relobj::find_comdat_group): New function.
16122 (Relobj::Comdat_group_table): New type.
16123 (Relobj::Kept_comdat_section): New type.
16124 (Relobj::Kept_comdat_section_table): New type.
16125 (Relobj::add_comdat_group): New function.
16126 (Relobj::set_kept_comdat_section): New function.
16127 (Relobj::get_kept_comdat_section): New function.
16128 (Relobj::comdat_groups_): New field.
16129 (Relobj::kept_comdat_sections_): New field.
16130 (Symbol_value::input_value): Update comment.
16131 (Sized_relobj::map_to_kept_section) New function.
16132 (Sized_relobj::include_linkonce_section): Add new parameter.
16133 * target-reloc.h (Comdat_behavior): New type.
16134 (get_comdat_behavior): New function.
16135 (relocate_section): Add code to map a discarded section to the
16136 corresponding kept section when applying a relocation.
16137
e4e5049b
CS
161382008-04-30 Craig Silverstein <csilvers@google.com>
16139
16140 * dwarf_reader.cc (next_generation_count): New static var.
16141 (Addr2line_cache_entry): New struct.
16142 (addr2line_cache): New static var.
16143 (Dwarf_line_info::one_addr2line): Added caching.
16144 (Dwarf_line_info::clear_addr2line_cache): New function.
16145 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
16146 cache-size parameter.
16147 (Dwarf_line_info::one_addr2line_cache): New function.
16148 * symtab.cc (Symbol_table::detect_odr_violations): Pass
16149 new cache-size argument to one_addr2line(), and clear cache.
16150
d09e9154
CC
161512008-04-28 Cary Coutant <ccoutant@google.com>
16152
16153 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
16154 R_386_PC8 relocations.
16155
7ef73768
ILT
161562008-04-23 Ian Lance Taylor <iant@google.com>
16157
55438702
ILT
16158 * object.cc (Sized_relobj::include_section_group): Check for
16159 invalid section group.
16160
c165fb93
ILT
16161 * object.cc (make_elf_object): Correct test for 64-bit ELF file
16162 header size.
16163
7ef73768
ILT
16164 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
16165 than read for file header.
16166 * archive.cc (Archive::include_member): Likewise.
16167
6194aaab
L
161682008-04-23 Paolo Bonzini <bonzini@gnu.org>
16169
16170 * aclocal.m4: Regenerate.
16171 * configure: Regenerate.
16172
d491d34e
ILT
161732008-04-19 Ian Lance Taylor <iant@google.com>
16174
5ea2bac6
ILT
16175 * version.cc (version_string): Bump to 1.6.
16176
7bc3e21a
ILT
16177 * testsuite/Makefile.am (many_sections_r_test): New target.
16178 (many_sections_r_test_SOURCES): Remove.
16179 (many_sections_r_test_DEPENDENCIES): Remove.
16180 (many_sections_r_test_LDFLAGS): Remove.
16181 (many_sections_r_test_LDADD): Remove.
16182
7fcd3aa9
ILT
16183 * object.cc (Sized_relobj::do_add_symbols): Always pass
16184 local_symbol_count_ to add_from_relobj.
16185
4c94d6ae
ILT
16186 * testsuite/Makefile.am (many_sections_check.h): Only check one in
16187 every thousand variables.
16188 * testsuite/Makefile.in: Rebuild.
16189
d491d34e
ILT
16190 * object.cc (Xindex::initialize_symtab_xindex): New function.
16191 (Xindex::read_symtab_xindex): New function.
16192 (Xindex::sym_xindex_to_shndx): New function.
16193 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
16194 available.
16195 (Sized_relobj::do_initialize_xindex): New function.
16196 (Sized_relobj::do_read_symbols): Adjust section links.
16197 (Sized_relobj::symbol_section_and_value): Add is_ordinary
16198 parameter. Change all callers.
16199 (Sized_relobj::include_section_group): Adjust section links and
16200 symbol section indexes.
16201 (Sized_relobj::do_layout): Adjust section links.
16202 (Sized_relobj::do_count_local_symbols): Adjust section links and
16203 symbol section indexes.
16204 (Sized_relobj::do_finalize_local_symbols): Distinguish between
16205 ordinary and special symbols.
16206 (Sized_relobj::write_local_symbols): Add symtab_xindex and
16207 dynsym_xindex parameters. Change all callers. Adjust section
16208 links. Use SHN_XINDEX when needed.
16209 (Sized_relobj::get_symbol_location_info): Adjust section links.
16210 Don't get fooled by special symbols.
16211 * object.h (class Xindex): Define.
16212 (class Object): Add xindex_ parameter. Declare virtual functoin
16213 do_initialize_xindex.
16214 (Object::adjust_sym_shndx): New function.
16215 (Object::set_xindex): New protected function.
16216 (class Symbol_value): Add is_ordinary_shndx_ field.
16217 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
16218 (Symbol_value::value): Assert ordinary section.
16219 (Symbol_value::initialize_input_to_output_map): Likewise.
16220 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
16221 Change all callers.
16222 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
16223 all callers.
16224 (class Sized_relobj): Update declarations.
16225 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
16226 parameter. Change all callers.
16227 (Sized_relobj::adjust_shndx): New function.
16228 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
16229 field.
16230 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
16231 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
16232 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
16233 (Sized_dynobj::read_dynsym_section): Adjust section links.
16234 (Sized_dynobj::read_dynamic): Likewise.
16235 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
16236 section links.
16237 (Sized_dynobj::do_initialize_xindex): New function.
16238 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
16239 do_initialize_xindex.
16240 (Sized_dynobj::adjust_shndx): New function.
16241 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
16242 dynsym_xindex_ fields.
16243 (Layout::finalize): Add a call to set_section_indexes before
16244 creating the symtab sections.
16245 (Layout::set_section_indexes): Don't do anything if the section
16246 already has a section index.
16247 (Layout::create_symtab_sections): Add shnum parameter. Change
16248 caller. Create .symtab_shndx section if needed.
16249 (Layout::create_shdrs): Add shstrtab_section parameter. Change
16250 caller.
16251 (Layout::allocated_output_section_count): New function.
16252 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
16253 needed.
16254 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
16255 fields. Update declarations.
16256 (Layout::symtab_xindex): New function.
16257 (Layout::dynsym_xindex): New function.
16258 (class Write_symbols_task): Add layout_ field.
16259 (Write_symbols_task::Write_symbols_task): Add layout parameter.
16260 Change caller.
16261 * output.cc (Output_section_headers::Output_section_headers): Add
16262 shstrtab_section parameter. Change all callers.
16263 (Output_section_headers::do_sized_write): Store overflow values
16264 for section count and section string table section index in
16265 section header zero.
16266 (Output_file_header::do_sized_write): Check for overflow of
16267 section count and section string table section index.
16268 (Output_symtab_xindex::do_write): New function.
16269 (Output_symtab_xindex::endian_do_write): New function.
16270 * output.h (class Output_section_headers): Add shstrtab_section_.
16271 Update declarations.
16272 (class Output_symtab_xindex): Define.
16273 (Output_section::has_out_shndx): New function.
16274 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
16275 field.
16276 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
16277 Change all callers.
16278 (Sized_symbol::init): Likewise.
16279 (Symbol::output_section): Check for ordinary symbol.
16280 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
16281 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
16282 callers.
16283 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
16284 Change all callers. Simplify handling of symbols from sections
16285 not included in the link.
16286 (Symbol_table::add_from_dynobj): Handle ordinary symbol
16287 distinction.
16288 (Weak_alias_sorter::operator()): Assert that symbols are
16289 ordinary.
16290 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
16291 distinction.
16292 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
16293 parameters. Change all callers.
16294 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
16295 symbol distinction. Use SHN_XINDEX when needed.
16296 (Symbol_table::write_section_symbol): Add symtab_xindex
16297 parameter. Change all callers.
16298 (Symbol_table::sized_write_section_symbol): Likewise. Use
16299 SHN_XINDEX when needed.
16300 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
16301 declarations.
16302 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
16303 (Symbol::is_defined): Check is_ordinary.
16304 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
16305 (Symbol::is_absolute, Symbol::is_common): Likewise.
16306 (class Sized_symbol): Update declarations.
16307 (class Symbol_table): Update declarations.
16308 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
16309 parameters. Change all callers.
16310 (Sized_symbol::override): Likewise.
16311 (Symbol_table::override): Likewise.
16312 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
16313 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
16314 is_ordinary, and orig_st_shndx parameters. Change all callers.
16315 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
16316 to be in an ordinary section.
16317 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
16318 object and is_ordinary parameters. Change all callers.
16319 (Sized_dwarf_line_info::read_relocs): Add object parameter.
16320 Change all callers. Don't add undefined or non-ordinary symbols
16321 to reloc_map_.
16322 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
16323 Change all callers.
16324 * dwarf_reader.h (class Sized_dwarf_line_info): Update
16325 declarations.
16326 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
16327 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
16328 (Sized_relobj::relocate_sections): Likewise.
16329 * target-reloc.h (scan_relocs): Adjust section symbol index.
16330 (scan_relocatable_relocs): Likewise.
16331 * i386.cc (Scan::local): Check for ordinary symbols.
16332 * sparc.cc (Scan::local): Likewise.
16333 * x86_64.cc (Scan::local): Likewise.
16334 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
16335 to symbol_section_and_value.
16336 * testsuite/many_sections_test.cc: New file.
16337 * testsuite/Makefile.am (BUILT_SOURCES): Define.
16338 (check_PROGRAMS): Add many_sections_test.
16339 (many_sections_test_SOURCES): Define.
16340 (many_sections_test_DEPENDENCIES): Define.
16341 (many_sections_test_LDFLAGS): Define.
16342 (BUILT_SOURCES): Add many_sections_define.h.
16343 (many_sections_define.h): New target.
16344 (BUILT_SOURCES): Add many_sections_check.h.
16345 (many_sections_check.h): New target.
16346 (check_PROGRAMS): Add many_sections_r_test.
16347 (many_sections_r_test_SOURCES): Define.
16348 (many_sections_r_test_DEPENDENCIES): Define.
16349 (many_sections_r_test_LDFLAGS): Define.
16350 (many_sections_r_test_LDADD): Define.
16351 (many_sections_r_test.o): New target.
16352 * testsuite/Makefile.in: Rebuild.
16353
c5818ff1
CC
163542008-04-17 Cary Coutant <ccoutant@google.com>
16355
16356 * errors.cc (Errors::info): New function.
16357 (gold_info): New function.
16358 * errors.h (Errors::info): New function.
16359 * gold.h (gold_info): New function.
16360 * object.cc (Input_objects::add_object): Print trace output.
16361 * options.cc (options::parse_set): New function.
16362 (General_options::parse_wrap): Deleted.
16363 (General_options::General_options): Deleted initializer.
16364 * options.h (options::String_set): New typedef.
16365 (options::parse_set): New function.
16366 (DEFINE_set): New macro.
16367 (General_options::wrap): Changed to use DEFINE_set. Changed
16368 callers of any_wrap_symbols and is_wrap_symbol.
16369 (General_options::trace, General_options::trace_symbol):
16370 New options.
16371 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
16372 (General_options::wrap_symbols_): Deleted.
16373 * symtab.cc (Symbol_table::add_from_object): Print trace output.
16374
b5be4a7c
DM
163752008-04-17 David S. Miller <davem@davemloft.net>
16376
16377 * options.cc (General_options::parse_V): New function.
16378 * options.h: Add entries for -V and -Qy.
16379
155a0dd7
ILT
163802008-04-17 Ian Lance Taylor <iant@google.com>
16381
16382 * common.cc (Symbol_table::allocate_commons): Remove options
16383 parameter. Change caller.
16384 (Symbol_table::do_allocate_commons): Remove options parameter.
16385 Change caller. Just call do_allocate_commons_list twice.
16386 (Symbol_table::do_allocate_commons_list): New function, broken out
16387 of do_allocate_commons.
16388 * common.h (class Allocate_commons_task): Remove options_ field.
16389 Update constructor.
16390 * symtab.cc (Symbol_table::Symbol_table): Initialize
16391 tls_commons_.
16392 (Symbol_table::add_from_object): Put TLS common symbols on
16393 tls_commons_ list.
16394 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
16395 which are IN_OUTPUT_DATA.
16396 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
16397 allocate_commons and do_allocate_commons declarations. Declare
16398 do_allocate_commons_list.
16399 * gold.cc (queue_middle_tasks): Update creation of
16400 Allocate_commons_task to not pass options.
16401 * testsuite/Makefile.am (INCLUDES): Add -I.. .
16402 (TLS_TEST_C_FLAGS): New variable.
16403 (tls_test_c_pic.o): New target.
16404 (tls_test_shared.so): Link in tls_test_c_pic.o.
16405 (tls_test_c_pic_ie.o): New target.
16406 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
16407 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
16408 (tls_test_c.o): New target.
16409 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
16410 (tls_pic_test_LDADD): Likewise.
16411 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
16412 (tls_shared_gd_to_ie_test_LDADD): Likewise.
16413 (tls_test_c_gnu2.o): New target.
16414 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
16415 tls_test_c_gnu2.o.
16416 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
16417 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
16418 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
16419 * testsuite/tls_test.cc: Include "config.h".
16420 (t_last): Call t11_last.
16421 * testsuite/tls_test.h (t11, t11_last): Declare.
16422 * testsuite/tls_test_c.c: New file.
16423 * testsuite/tls_test_main.cc (thread_routine): Call t11.
16424 * configure.ac: Check for OpenMP support.
16425 * configure, config.in, Makefile.in: Rebuild.
16426 * testsuite/Makefile.in: Rebuild.
16427
edfbb029
CC
164282008-04-16 Cary Coutant <ccoutant@google.com>
16429
16430 * i386.cc (Target_i386::define_tls_base_symbol): New function.
16431 (Target_i386::tls_base_symbol_defined_): New field.
16432 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
16433 (Target_i386::Scan::global): Likewise.
16434 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
16435 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
16436 (Target_x86_64::tls_base_symbol_defined_): New field.
16437 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
16438 (Target_x86_64::Scan::global): Likewise.
16439
f3c69fca
CC
164402008-04-16 Cary Coutant <ccoutant@google.com>
16441
16442 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
16443 (Symbol::needs_plt_entry): Allow weak undefined symbols.
16444 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
16445 building shared libraries.
16446 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
16447 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
16448 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
16449 * testsuite/Makefile.in: Rebuild.
16450 * testsuite/weak_undef.h: New file.
16451 * testsuite/weak_undef_file1.cc: Add extra test cases.
16452 * testsuite/weak_undef_file2.cc: Likewise.
16453 * testsuite/weak_undef_test.cc: Likewise.
16454
7c414435
DM
164552008-04-16 David S. Miller <davem@davemloft.net>
16456
32b769e1
DM
16457 * sparc.cc (Target_sparc::Scan): Change from struct to class.
16458 Add issued_non_pic_error_ field. Declare check_non_pic.
16459 (Target_sparc::Scan::check_non_pic): New function.
16460 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
16461 (Target_sparc::Scan::global): Likewise.
16462
11936fb1
DM
16463 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
16464 * configure: Rebuild.
16465
7c414435
DM
16466 * options.h (DEFINE_enable): New macro.
16467 (new_dtags): New enable option.
16468 (initfirst, interpose, loadfltr, nodefaultlib,
16469 nodelete, nodlopen, nodump): New -z options.
16470 * layout.cc (Layout:finish_dynamic_section): If new
16471 dtags enabled, emit DT_RUNPATH. Also, emit a
16472 DT_FLAGS_1 containing any specified -z flags.
16473
85c7bf8b
ILT
164742008-04-16 Ian Lance Taylor <iant@google.com>
16475
12c0daef
ILT
16476 * copy-relocs.cc: New file.
16477 * copy-relocs.h: New file.
16478 * reloc.cc: Remove Copy_relocs code.
16479 * reloc.h: Likewise.
16480 * reloc-types.h (struct Reloc_types) [both versions]: Add
16481 get_reloc_addend_noerror.
16482 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
16483 variants of add_global which take an addend which must be zero.
16484 * i386.cc: Include "copy-relocs.h".
16485 (class Target_i386): Change type of copy_relocs_ to variable,
16486 update initializer.
16487 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
16488 Change all callers.
16489 (Target_i386::do_finalize_sections): Change handling of
16490 copy_relocs_.
16491 * sparc.cc: Include "copy-relocs.h".
16492 (class Target_sparc): Change type of copy_relocs_ to variable,
16493 update initializer.
16494 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
16495 Change all callers.
16496 (Target_sparc::do_finalize_sections): Change handling of
16497 copy_relocs_.
16498 * x86_64.cc: Include "copy-relocs.h".
16499 (class Target_x86_64): Change type of copy_relocs_ to variable,
16500 update initializer.
16501 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
16502 class. Change all callers.
16503 (Target_x86_64::do_finalize_sections): Change handling of
16504 copy_relocs_.
16505 * Makefile.am (CCFILES): Add copy-relocs.cc.
16506 (HFILES): Add copy-relocs.h.
16507
4f4995b6
ILT
16508 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
16509
85c7bf8b
ILT
16510 * testsuite/script_test_4.sh: Permit leading zeroes.
16511
4f2a9edd
ILT
165122008-04-15 Ian Lance Taylor <iant@google.com>
16513
e6188289
ILT
16514 * script-sections.cc (Script_sections::create_segments): Use
16515 header_size_adjustment even when there is enough room for the
16516 headers.
16517 * testsuite/script_test_4.sh: New file.
16518 * testsuite/script_test_4.t: New file.
16519 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
16520 (check_DATA): Add script_test_4.stdout.
16521 (MOSTLYCLEANFILES): Likewise.
16522 (script_test_4): New target.
16523 (script_test_4.stdout): New target.
16524 * testsuite/Makefile.in: Rebuild.
16525
4f2a9edd
ILT
16526 * sparc.cc: Add definitions for Output_data_plt_sparc class
16527 constants.
16528
f5314dd5
DM
165292008-04-14 David S. Miller <davem@davemloft.net>
16530
16531 * sparc.cc: New file.
16532 * Makefile.am (TARGETSOURCES): Add sparc.cc
16533 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
16534 * configure.tgt: Document targ_extra_size and
16535 targ_extra_big_endian. Add entries for sparc-* and
16536 sparc64-*.
16537 * configure.ac: Handle targ_extra_size and
16538 targ_extra_big_endian.
16539 * Makefile.in: Rebuild.
16540 * configure: Likewise.
16541 * po/POTFILES.in: Likewise.
16542 * po/gold.pot: Likewise.
16543
154e0e9a
ILT
165442008-04-14 Ian Lance Taylor <iant@google.com>
16545
16546 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
16547 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
16548 in the name/type/flags to section mapping. Don't call
16549 allocate_output_section.
16550 (Layout::choose_output_section): Change parameter from adjust_name
16551 to is_input_section. Don't permit input sections after sections
16552 are attached to segments. Don't call allocate_output_section.
16553 (Layout::layout_eh_frame): Call update_flags_for_input_section,
16554 not write_enable_output_section.
16555 (Layout::make_output_section): Don't push to
16556 unattached_section_list_ nor call attach_to_segment. Call
16557 attach_section_to_segment if sections are attached.
16558 (Layout::attach_sections_to_segments): New function.
16559 (Layout::attach_section_to_segment): New function.
16560 (Layout::attach_allocated_section_to_segment): Rename from
16561 attach_to_segment. Remove flags parameter.
16562 (Layout::allocate_output_section): Remove function.
16563 (Layout::write_enable_output_section): Remove function.
16564 * layout.h (class Layout): Update for above changes. Add new
16565 field sections_are_attached_.
16566 * output.h (Output_section::update_flags_for_input_section): New
16567 function.
16568 * output.cc (Output_section::add_input_section): Call
16569 update_flags_for_input_section.
16570 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
16571
009a67a2
CC
165722008-04-11 Cary Coutant <ccoutant@google.com>
16573
16574 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
16575 thought unnecessary.
16576 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
16577
759b1a24
ILT
165782008-04-11 Ian Lance Taylor <iant@google.com>
16579
16580 * output.h (class Output_section_data): Remove inline definition
16581 of set_addralign.
16582 * output.cc (Output_section_data::set_addralign): New function.
16583
c2b45e22
CC
165842008-04-11 Cary Coutant <ccoutant@google.com>
16585
16586 Add support for TLS descriptors for i386 and x86_64.
16587 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
16588 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
16589 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
16590 GOT_TYPE_TLS_DESC.
16591 (Target_i386::got_mod_index_entry): Remove unnecessary code.
16592 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
16593 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
16594 relocations.
16595 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
16596 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
16597 Fix problem with initial-exec relocations.
16598 (Target_i386::Relocate::relocate_tls): Likewise.
16599 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
16600 relaxation.
16601 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
16602 support for section-plus-offset dynamic table entries.
16603 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
16604 (Output_data_dynamic::Dynamic_entry): Add support for
16605 section-plus-offset dynamic table entries.
16606 (Output_data_dynamic::Classification): Likewise.
16607 (Output_data_dynamic::classification_): Renamed offset_.
16608 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
16609 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
16610 (Target_x86_64::make_plt_section): New function.
16611 (Target_x86_64::reserve_tlsdesc_entries): New function.
16612 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
16613 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
16614 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
16615 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
16616 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
16617 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
16618 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
16619 add extra PLT entry for TLS descriptors.
16620 (Output_data_plt_x86_64::got_): New field.
16621 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
16622 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
16623 fields.
16624 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
16625 descriptors.
16626 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
16627 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
16628 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
16629 R_386_TLS_DESC_CALL relocations.
16630 (Target_x86_64::Scan::global): Likewise.
16631 (Target_x86_64::do_finalize_sections): Add dynamic table entries
16632 for TLS descriptors.
16633 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
16634 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
16635 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
16636 GD-to-IE relaxation.
16637 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
16638 and TLS_DESCRIPTORS.
16639 * Makefile.in: Rebuild.
16640 * configure: Rebuild.
16641 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
16642 (tls_test_shared2.so): New target.
16643 (tls_shared_gd_to_ie_test_SOURCES): New variable.
16644 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
16645 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
16646 (tls_shared_gd_to_ie_test_LDADD): New variable.
16647 (tls_shared_gnu2_gd_to_ie_test): New target.
16648 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
16649 New targets.
16650 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
16651 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
16652 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
16653 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
16654 (tls_shared_gnu2_test): New target.
16655 (tls_test_gnu2_shared.so): New target.
16656 (tls_shared_gnu2_test_SOURCES): New variable.
16657 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
16658 (tls_shared_gnu2_test_LDFLAGS): New variable.
16659 (tls_shared_gnu2_test_LDADD): New variable.
16660 * testsuite/Makefile.in: Rebuild.
16661 * testsuite/Makefile.
16662
83bfb6b7
ILT
166632008-04-11 Ian Lance Taylor <iant@google.com>
16664
16665 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
16666 justsyms.t.
16667 * testsuite/Makefile.in: Rebuild.
16668
16669 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
16670 long.
16671 * testsuite/script_test_2.cc (main): Adjust test.
16672
706e1f5e
ILT
166732008-04-11 David S. Miller <davem@davemloft.net>
16674 Ian Lance Taylor <iant@google.com>
16675
16676 * options.h (General_options): Add entries for '-Y' and
16677 '-relax'.
16678 * options.cc (General_options:finalize): If -Y was used, add those
16679 entries to the library path instead of the default "/lib" and
16680 "/usr/lib".
16681
7c98e6bb
DM
166822008-04-11 David S. Miller <davem@davemloft.net>
16683
16684 * testsuite/justsyms.t: Start at 0x100.
16685 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
16686 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
16687 long.
16688 * testsuite/script_test_2.cc: Adjust string and section length
16689 checks.
7c98e6bb 16690
99a37bfd
ILT
166912008-04-09 Ian Lance Taylor <iant@google.com>
16692
2cefc357
ILT
16693 PR gold/5996
16694 * script-sections.cc (Sections_element::allocate_to_segment): Add
16695 orphan parameter.
16696 (Output_section_definition::allocate_to_segment): Likewise.
16697 (Orphan_output_section::allocate_to_segment): Likewise.
16698 (Script_sections::attach_sections_using_phdrs_clause): Don't
16699 propagate non-PT_LOAD segments to orphan sections.
16700 * testsuite/Makefile.am (script_test_3.stdout): Generate using
16701 readelf rather than objdump.
16702 * testsuite/script_test_3.sh: Adjust accordingly. Test that
16703 .interp section and PT_INTERP segment are the same size.
16704 * testsuite/Makefile.in: Rebuild.
16705
99a37bfd
ILT
16706 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
16707 aliases for symbols defined in the same object.
16708 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
16709 (weak_alias_test_SOURCES): New variable.
16710 (weak_alias_test_DEPENDENCIES): New variable.
16711 (weak_alias_test_LDFLAGS): New variable.
16712 (weak_alias_test_LDADD): New variable.
16713 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
16714 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
16715 (weak_alias_test_3.o): New target.
16716 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
16717 * testsuite/weak_alias_test_main.cc: New file.
16718 * testsuite/weak_alias_test_1.cc: New file.
16719 * testsuite/weak_alias_test_2.cc: New file.
16720 * testsuite/weak_alias_test_3.cc: New file.
16721
780e49c5
ILT
167222008-04-08 Ian Lance Taylor <iant@google.com>
16723
cdb0b8f5
ILT
16724 * options.h (class General_options): Add --noinhibit-exec option.
16725 * main.cc (main): Check --noinhibit-exec.
16726
0864d551
ILT
16727 * options.h (class General_options): Define --wrap as a special
16728 option. Add wrap_symbols_ field.
16729 (General_options::any_wrap_symbols): New function.
16730 (General_options::is_wrap_symbol): New function.
16731 * options.cc (General_options::parse_wrap): New function.
16732 (General_options::General_options): Initialize wrap_symbols_.
16733 * symtab.cc (Symbol_table::wrap_symbol): New function.
16734 (Symbol_table::add_from_object): Handle --wrap.
16735 * symtab.h (class Symbol_table): Declare wrap_symbol.
16736 * target.h (Target::wrap_char): New function.
16737 (Target::Target_info): Add wrap_char field.
16738 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
16739 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
16740 * testsuite/testfile.cc (Target_test::test_target_info):
16741 Likewise.
16742
789aa6de
ILT
16743 * errors.cc (Errors::undefined_symbol): Mention symbol version if
16744 there is one.
16745
2c38906f
ILT
16746 * layout.h (class Layout): Add added_eh_frame_data_ field.
16747 * layout.cc (Layout::Layout): Initialize new field.
16748 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
16749 output section until we find a section we merged successfully.
16750 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
16751 that the size be non-zero.
16752
780e49c5
ILT
16753 * merge.cc (Object_merge_map::get_output_offset): Remove inline
16754 qualifier.
16755
7fcd0256
ILT
167562008-04-08 Craig Silverstein <csilvers@google.com>
16757
16758 * configure.ac: Export new conditional variable HAVE_ZLIB.
16759 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
16760 on HAVE_ZLIB.
16761 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
16762 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
16763
6835af53
ILT
167642008-04-07 Ian Lance Taylor <iant@google.com>
16765
e24f324c
ILT
16766 * version.cc (version_string): Set to "1.5".
16767
a036edd8
ILT
16768 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
16769 Add issued_non_pic_error_ field. Declare check_non_pic.
16770 (Target_x86_64::Scan::check_non_pic): New function.
16771 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
16772 (Target_x86_64::Scan::global): Likewise.
16773
624f8810
ILT
16774 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
16775 addend parameter. Change caller. Handle merge sections.
16776 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
16777 Address to Addend. Don't add in the result of
16778 local_section_offset, pass down the addend and use the returned
16779 value.
16780 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
16781 Update declarations of local_section_offset and symbol_value.
16782 * testsuite/two_file_test_1.cc (t18): New function.
16783 * testsuite/two_file_test_2.cc (f18): New function.
16784 * testsuite/two_file_test_main.cc (main): Call t18.
16785 * testsuite/two_file_test.h (t18, f18): Declare.
16786
6835af53
ILT
16787 * configure.ac: Don't test for objdump, c++filt, or readelf.
16788 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
16789 conditionals.
16790 (TEST_READELF): New variable.
16791 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
16792 (check_PROGRAMS): Add two_file_strip_test.
16793 (two_file_strip_test): New target.
16794 (check_PROGRAMS): Add two_file_same_shared_strip_test.
16795 (two_file_same_shared_strip_test_SOURCES): New variable.
16796 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
16797 (two_file_same_shared_strip_test_LDFLAGS): New variable.
16798 (two_file_same_shared_strip_test_LDADD): New variable.
16799 (two_file_shared_strip.so): New target.
16800 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
16801 (ver_test_5.syms, ver_test_7.syms): Likewise.
16802 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
16803 (strip_test_3.stdout): Use TEST_OBJDUMP.
16804 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
16805
86925eef
CC
168062008-04-04 Cary Coutant <ccoutant@google.com>
16807
16808 * symtab.h (Symbol::is_weak_undefined): New function.
16809 (Symbol::is_strong_undefined): New function.
16810 (Symbol::is_absolute): New function.
16811 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
16812 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
16813 absolute symbols.
16814 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
16815 (weak_undef_test): New target.
16816 * testsuite/Makefile.in: Rebuild.
16817 * testsuite/weak_undef_file1.cc: New file.
16818 * testsuite/weak_undef_file2.cc: New file.
16819 * testsuite/weak_undef_test.cc: New file.
16820
126f3ece
ILT
168212008-04-03 Craig Silverstein <csilvers@google.com>
16822
16823 * compressed_output.h (class Output_compressed_section): Use
16824 unsigned buffer.
16825 * compressed_output.cc (zlib_compress): Use unsigned buffers,
16826 add zlib header.
16827 (zlib_compressed_suffix): Removed.
16828 (Output_compressed_section::set_final_data_size): Use unsigned
16829 buffers.
16830 * testsuite/Makefile.am (flagstest_compress_debug_sections):
16831 Fix linker invocation.
16832 (flagstest_o_specialfile_and_compress_debug_sections):
16833 Likewise.
16834 * testsuite/Makefile.in: Regenerated.
16835
deae2a14
DM
168362008-04-02 David S. Miller <davem@davemloft.net>
16837
16838 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
16839 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
16840
70752818
ILT
168412008-04-02 Craig Silverstein <csilvers@google.com>
16842
16843 * TODO: New file.
16844
39d0cb0e
ILT
168452008-04-02 Ian Lance Taylor <iant@google.com>
16846
16847 * fileread.cc (File_read::find_view): Add byteshift and vshifted
16848 parameters. Update for new key type to views_. Change all
16849 callers.
16850 (File_read::read): Adjust for byteshift in returned view.
16851 (File_read::add_view): New function, broken out of
16852 find_and_make_view.
16853 (File_read::make_view): New function, broken out of
16854 find_and_make_view.
16855 (File_read::find_or_make_view): Add offset and aligned
16856 parameters. Rewrite accordingly. Change all callers.
16857 (File_read::get_view): Add offset and aligned parameters. Adjust
16858 for byteshift in return value.
16859 (File_read::get_lasting_view): Likewise.
16860 * fileread.h (class File_read): Update declarations.
16861 (class File_read::View): Add byteshift_ field. Add byteshift to
16862 constructor. Add byteshift method.
16863 * archive.h (Archive::clear_uncached_views): New function.
16864 (Archive::get_view): Add aligned parameter. Change all callers.
16865 * object.h (Object::get_view): Add aligned parameter. Change all
16866 callers.
16867 (Object::get_lasting_view): Likewise.
16868
16869 * fileread.cc (File_read::release): Don't call clear_views if
16870 there are multiple objects.
16871 * fileread.h (File_read::clear_uncached_views): New function.
16872 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
16873 on the archive.
16874
a1207466
CC
168752008-03-31 Cary Coutant <ccoutant@google.com>
16876
16877 Add thin archive support.
16878 * archive.cc (Archive::armagt): New const.
16879 (Archive::setup): Remove task parameter and calls to unlock.
16880 (Archive::unlock_nested_archives): New function.
16881 (Archive::read_header): Add nested_off parameter. Change
16882 all callers.
16883 (Archive::interpret_header): Likewise.
16884 (Archive::include_all_members): Change to handle thin
16885 archives.
16886 (Archive::include_member): Likewise.
16887 * archive.h (Archive::Archive): Add new parameters and
16888 initializers.
16889 (Archive::armagt): New const.
16890 (Archive::setup): Remove task parameter.
16891 (Archive::unlock_nested_archives): New function.
16892 (Archive::read_header): Add nested_off parameter.
16893 (Archive::interpret_header): Likewise.
16894 (Archive::Nested_archive_table): New typedef.
16895 (Archive::is_thin_archive_): New field.
16896 (Archive::nested_archives_): New field.
16897 (Archive::options_): New field.
16898 (Archive::dirpath_): New field.
16899 (Archive::task_): New field.
16900 * readsyms.cc (Read_symbols::do_read_symbols): Add check
16901 for thin archives. Pass additional parameters to
16902 Archive::Archive. Unlock the archive file after calling
16903 Archive::setup.
cd536b21 16904
479f6503
ILT
169052008-03-29 Ian Lance Taylor <iant@google.com>
16906
686c8caf
ILT
16907 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
16908 version symbol to be local.
16909 * testsuite/ver_test_4.sh: New file.
16910 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
16911 (check_DATA): Add ver_test_4.syms.
16912 (ver_test_4.syms): New target.
16913 * testsuite/Makefile.in: Rebuild.
16914
ab794b6b
ILT
16915 * output.cc
16916 (Output_section::Input_section_sort_entry::has_priority): New
16917 function.
16918 (Output_section::Input_section_sort_entry::match_file_name): New
16919 function.
16920 (Output_section::Input_section_sort_entry::match_section_name):
16921 Remove.
16922 (Output_section::Input_section_sort_entry::match_section_name_prefix):
16923 Remove.
16924 (Output_section::Input_section_sort_entry::match_section_file):
16925 Remove.
16926 (Output_section::Input_section_sort_compare::operator()): Rewrite
16927 using new Input_section_sort_entry functions. Sort crtbegin and
16928 crtend first. Sort sections with no priority before sections with
16929 a priority.
16930 * testsuite/initpri1.c (d3): Check j != 4.
16931 (cd5): New constructor/destructor function.
16932 (main): Check j != 2.
16933
479f6503
ILT
16934 * symtab.cc (Symbol_table::add_from_object): If we don't use the
16935 new symbol when resolving, don't call set_is_default.
16936 * testsuite/ver_test_7.cc: New file.
16937 * testsuite/ver_test_7.sh: New file.
16938 * testsuite/Makefile.am (ver_test_7.so): New target.
16939 (ver_test_7.o): New target.
16940 (check_SCRIPTS): Add ver_test_7.sh.
16941 (check_DATA): Add ver_test_7.syms.
16942 (ver_test_7.syms): New target.
16943
2fd32231
ILT
169442008-03-28 Ian Lance Taylor <iant@google.com>
16945
16946 * layout.cc (Layout::layout): If we see an input section with a
16947 name that needs sorting, set the must_sort flag for the output
16948 section.
16949 (Layout::make_output_section): If the name of the output section
16950 indicates that it might require sorting, set the may_sort flag.
16951 * output.h (Output_section::may_sort_attached_input_sections): New
16952 function.
16953 (Output_section::set_may_sort_attached_input_sections): New
16954 function.
16955 (Output_section::must_sort_attached_input_sections): New
16956 function.
16957 (Output_section::set_must_sort_attached_input_sections): New
16958 function.
16959 (class Output_section): Declare Input_section_sort_entry. Define
16960 Input_section_sort_compare. Declare
16961 sort_attached_input_sections. Add new fields:
16962 may_sort_attached_input_sections_,
16963 must_sort_attached_input_sections_,
16964 attached_input_sections_are_sorted_.
16965 * output.cc (Output_section::Output_section): Initialize new
16966 fields.
16967 (Output_section::add_input_section): Add an entry to
16968 input_sections_ if may_sort or must_sort are true.
16969 (Output_section::set_final_data_size): Call
16970 sort_attached_input_sections if necessary.
16971 (Output_section::Input_section_sort_entry): Define new class.
16972 (Output_section::Input_section_sort_compare::operator()): New
16973 function.
16974 (Output_section::sort_attached_input_sections): New function.
16975 * configure.ac: Check whether the compiler supports constructor
16976 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
16977 * testsuite/initpri1.c: New file.
16978 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
16979 CONSTRUCTOR_PRIORITY.
16980 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
16981 (initpri1_LDFLAGS): New variable.
16982 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
16983
18e6b24e
ILT
169842008-03-27 Ian Lance Taylor <iant@google.com>
16985
49bdd526
ILT
16986 * common.cc (Sort_commons::operator): Correct sorting algorithm.
16987 * testsuite/common_test_1.c: New file.
16988 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
16989 (common_test_1_SOURCES): New variable.
16990 (common_test_1_DEPENDENCIES): New variable.
16991 (common_test_1_LDFLAGS): New variable.
16992
18e6b24e
ILT
16993 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
16994 and commons_ correctly when NAME/VERSION does not override
16995 NAME/NULL.
16996 * testsuite/ver_test_6.c: New file.
16997 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
16998 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
16999 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
17000
04bf7072
ILT
170012008-03-26 Ian Lance Taylor <iant@google.com>
17002
5871526f
ILT
17003 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
17004 of an undefined symbol from a version script.
17005 * testsuite/Makefile.am (ver_test_5.so): New target.
17006 (ver_test_5.o): New target.
17007 (check_SCRIPTS): Add ver_test_5.sh.
17008 (check_DATA): Add ver_test_5.syms.
17009 (ver_test_5.syms): New target.
17010 * testsuite/ver_test_5.cc: New file.
17011 * testsuite/ver_test_5.script: New file.
17012 * testsuite/ver_test_5.sh: New file.
17013 * Makefile.in, testsuite/Makefile.in: Rebuild.
17014
04bf7072
ILT
17015 PR gold/5986
17016 Fix problems building gold with gcc 4.3.0.
17017 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
17018 (gold_error_at_location, gold_warning_at_location): Use it.
17019 * configure.ac: Check whether we can compile and use a template
17020 function with a printf attribute.
17021 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
17022 when jumping over bytes.
17023 * object.cc: Instantiate Object::read_section_data.
17024 * debug.h: Include <cstring>
17025 * dwarf_reader.cc: Include <algorithm>
17026 * main.cc: Include <cstring>.
17027 * options.cc: Include <cstring>.
17028 * output.cc: Include <cstring>.
17029 * script.cc: Include <cstring>.
17030 * script.h: Include <string>.
17031 * symtab.cc: Include <cstring> and <algorithm>.
17032 * target-select.cc: Include <cstring>.
17033 * version.cc: Include <string>.
17034 * testsuite/testmain.cc: Include <cstdlib>.
17035 * configure, config.in: Rebuild.
17036
874c5b28
ILT
170372008-03-25 Ian Lance Taylor <iant@google.com>
17038
819d6c3a
ILT
17039 * options.cc: Include "../bfd/bfdver.h".
17040 (options::help): Print bug reporting address.
17041
f4b2c6f5
ILT
17042 * version.cc (print_version): Adjust output for current value of
17043 BFD_VERSION_STRING.
17044
17045 * NEWS: New file.
17046
e96caa79
ILT
17047 * options.cc (options::help): Print list of supported targets.
17048 * target-select.h: Include <vector>.
17049 (class Target_selector): Make machine_, size_, and is_big_endian_
17050 fields const. Add bfd_name_ and instantiated_target_ fields.
17051 (Target_selector::Target_selector): Add bfd_name parameter.
17052 (Target_selector::recognize): Make non-virtual, call
17053 do_recognize.
17054 (Target_selector::recognize_by_name): Make non-virtual, call
17055 do_recognize_by_name.
17056 (Target_selector::supported_names): New function.
17057 (Target_selector::bfd_name): New function.
17058 (Target_selector::do_instantiate_target): New pure virtual
17059 function.
17060 (Target_selector::do_recognize): New virtual function.
17061 (Target_selector::do_recognize_by_name): New virtual function.
17062 (Target_selector::instantiate_target): New private function.
17063 (supported_target_names): Declare.
17064 * target-select.cc (Target_selector::Target_selector): Update for
17065 new parameter and fields.
17066 (select_target_by_name): Check that the name matches before
17067 calling recognize_by_name.
17068 (supported_target_names): New function.
17069 * i386.cc (class Target_selector_i386): Update Target_selector
17070 constructor call. Remove recognize and recognize_by_name. Add
17071 do_instantiate_target.
17072 * x86_64.cc (class Target_selector_x86_64): Likewise.
17073 * testsuite/testfile.cc (class Target_selector_test): Update for
17074 changes to Target_selector.
17075
874c5b28
ILT
17076 * README: Rewrite, with some notes on unsupported features.
17077
0a65a3a7
CC
170782008-03-24 Cary Coutant <ccoutant@google.com>
17079
17080 * i386.cc (Target_i386::Got_type): New enum declaration.
17081 (Target_i386::Scan::local): Updated callers of Output_data_got
17082 member functions.
17083 (Target_i386::Scan::global): Likewise.
17084 (Target_i386::Relocate::relocate): Likewise.
17085 (Target_i386::Relocate::relocate_tls): Likewise.
17086 * object.h (Got_offset_list): New class.
17087 (Sized_relobj::local_has_got_offset): Added got_type parameter.
17088 (Sized_relobj::local_got_offset): Likewise.
17089 (Sized_relobj::set_local_got_offset): Likewise.
17090 (Sized_relobj::local_has_tls_got_offset): Removed.
17091 (Sized_relobj::local_tls_got_offset): Removed.
17092 (Sized_relobj::set_local_tls_got_offset): Removed.
17093 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
17094 * output.cc (Output_data_got::add_global): Added got_type parameter.
17095 (Output_data_got::add_global_with_rel): Likewise.
17096 (Output_data_got::add_global_with_rela): Likewise.
17097 (Output_data_got::add_global_pair_with_rel): New function.
17098 (Output_data_got::add_global_pair_with_rela): New function.
17099 (Output_data_got::add_local): Added got_type parameter.
17100 (Output_data_got::add_local_with_rel): Likewise.
17101 (Output_data_got::add_local_with_rela): Likewise.
17102 (Output_data_got::add_local_pair_with_rel): New function.
17103 (Output_data_got::add_local_pair_with_rela): New function.
17104 (Output_data_got::add_global_tls): Removed.
17105 (Output_data_got::add_global_tls_with_rel): Removed.
17106 (Output_data_got::add_global_tls_with_rela): Removed.
17107 (Output_data_got::add_local_tls): Removed.
17108 (Output_data_got::add_local_tls_with_rel): Removed.
17109 (Output_data_got::add_local_tls_with_rela): Removed.
17110 * output.h (Output_data_got::add_global): Added got_type parameter.
17111 (Output_data_got::add_global_with_rel): Likewise.
17112 (Output_data_got::add_global_with_rela): Likewise.
17113 (Output_data_got::add_global_pair_with_rel): New function.
17114 (Output_data_got::add_global_pair_with_rela): New function.
17115 (Output_data_got::add_local): Added got_type parameter.
17116 (Output_data_got::add_local_with_rel): Likewise.
17117 (Output_data_got::add_local_with_rela): Likewise.
17118 (Output_data_got::add_local_pair_with_rel): New function.
17119 (Output_data_got::add_local_pair_with_rela): New function.
17120 (Output_data_got::add_global_tls): Removed.
17121 (Output_data_got::add_global_tls_with_rel): Removed.
17122 (Output_data_got::add_global_tls_with_rela): Removed.
17123 (Output_data_got::add_local_tls): Removed.
17124 (Output_data_got::add_local_tls_with_rel): Removed.
17125 (Output_data_got::add_local_tls_with_rela): Removed.
17126 * resolve.cc (Symbol::override_base_with_special): Removed
17127 reference to has_got_offset_ field.
17128 * symtab.cc (Symbol::init_fields): Replaced initialization
17129 of got_offset_ with got_offsets_. Removed initialization
17130 of has_got_offset_
53fcba31 17131 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
17132 (Symbol::got_offset): Likewise.
17133 (Symbol::set_got_offset): Likewise.
17134 (Symbol::has_tls_got_offset): Removed.
17135 (Symbol::tls_got_offset): Removed.
17136 (Symbol::set_tls_got_offset): Removed.
17137 (Symbol::got_offset_): Removed.
17138 (Symbol::tls_mod_got_offset_): Removed.
17139 (Symbol::tls_pair_got_offset_): Removed.
17140 (Symbol::got_offsets_): New field.
17141 (Symbol::has_got_offset): Removed.
17142 (Symbol::has_tls_mod_got_offset): Removed.
17143 (Symbol::has_tls_pair_got_offset): Removed.
17144 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
17145 (Target_x86_64::Scan::local): Updated callers of Output_data_got
17146 member functions.
17147 (Target_x86_64::Scan::global): Likewise.
17148 (Target_x86_64::Relocate::relocate): Likewise.
17149 (Target_x86_64::Relocate::relocate_tls): Likewise.
17150
bd52eafb
BE
171512008-03-25 Ben Elliston <bje@au.ibm.com>
17152
17153 * yyscript.y: Fix spelling error in comment.
17154
8b105e34
ILT
171552008-03-24 Ian Lance Taylor <iant@google.com>
17156
8ed814a9
ILT
17157 * options.h (class General_options): Define build_id option.
17158 * layout.h (class Layout): Declare write_build_id, create_note,
17159 create_build_id. Add build_id_note_ member.
17160 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
17161 "libiberty.h", "md5.h", "sha1.h".
17162 (Layout::Layout): Initialize eh_frame_data_,
17163 eh_frame_hdr_section_, and build_id_note_.
17164 (Layout::finalize): Call create_build_id.
17165 (Layout::create_note): New function, broken out of
17166 Layout::create_gold_note.
17167 (Layout::create_gold_note): Call create_note.
17168 (Layout::create_build_id): New function.
17169 (Layout::write_build_id): New function.
17170 (Close_task_runner::run): Call write_build_id.
17171
8b105e34
ILT
17172 * x86_64.cc: Correct license to GPLv3.
17173
086a1841
ILT
171742008-03-23 Ian Lance Taylor <iant@google.com>
17175
17176 * options.cc: Include "demangle.h".
17177 (parse_optional_string): New function.
17178 (parse_long_option): Handle takes_optional_argument.
17179 (parse_short_option): Update dash_z initializer. Handle
17180 takes_optional_argument.
17181 (General_options::General_options): Initialize do_demangle_.
17182 (General_options::finalize): Set do_demangle_. Handle demangling
17183 style.
17184 * options.h (parse_optional_string): Declare.
17185 (struct One_option): Add optional_arg field. Update constructor.
17186 Update call constructor calls. Add takes_optional_argument
17187 function.
17188 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
17189 (DEFINE_optional_string): Define.
17190 (General_options::demangle): Change from DEFINE_bool to
17191 DEFINE_optional_string.
17192 (General_options::no_demangle): New function.
17193 (General_options::do_demangle): New function.
17194 (General_options::set_do_demangle): New function.
17195 (General_options::execstack_status_): Move definition to end of
17196 class definition.
17197 (General_options::static_): Likewise.
17198 (General_options::do_demangle_): New field.
17199 * object.cc (big_endian>::get_symbol_location_info): Call
17200 Options::do_demangle, not Options::demangle.
17201 * symtab.cc (demangle): Likewise.
17202
cbb93e63
ILT
172032008-03-22 Ian Lance Taylor <iant@google.com>
17204
17205 * gold.h: Include <cstddef> and <sys/types.h>
17206 * options.h: Include <cstring>.
17207
ec531623
ILT
172082008-03-21 Ian Lance Taylor <iant@google.com>
17209
17210 * Added source code to GNU binutils.
752937aa 17211\f
b90efa5b 17212Copyright (C) 2008-2015 Free Software Foundation, Inc.
752937aa
NC
17213
17214Copying and distribution of this file, with or without modification,
17215are permitted in any medium without royalty provided the copyright
17216notice and this notice are preserved.
17217
17218Local Variables:
17219mode: change-log
17220left-margin: 8
17221fill-column: 74
17222version-control: never
17223End:
This page took 1.138311 seconds and 4 git commands to generate.