* elfcpp.h (enum SHT): Add SHT_GNU_INCREMENTAL_GOT_PLT.
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
0e70b911
CC
12010-08-12 Cary Coutant <ccoutant@google.com>
2
3 * arm.cc (Target_arm::got_size): Add const.
4 (Target_arm::got_entry_count): New function.
5 (Target_arm::plt_entry_count): New function.
6 (Target_arm::first_plt_entry_offset): New function.
7 (Target_arm::plt_entry_size): New function.
8 (Output_data_plt_arm::entry_count): New function.
9 (Output_data_plt_arm::first_plt_entry_offset): New function.
10 (Output_data_plt_arm::get_plt_entry_size): New function.
11 * i386.cc (Target_i386::got_size): Add const.
12 (Target_i386::got_entry_count): New function.
13 (Target_i386::plt_entry_count): New function.
14 (Target_i386::first_plt_entry_offset): New function.
15 (Target_i386::plt_entry_size): New function.
16 (Output_data_plt_i386::entry_count): New function.
17 (Output_data_plt_i386::first_plt_entry_offset): New function.
18 (Output_data_plt_i386::get_plt_entry_size): New function.
19 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
20 find_incremental_inputs_sections. Dump incremental_got_plt section.
21 * incremental.cc: Include target.h.
22 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
23 parameter. Adjust all callers. Find incremental_got_plt section.
24 (Incremental_inputs::create_data_sections): Create incremental_got_plt
25 section.
26 (Output_section_incremental_inputs::set_final_data_size): Calculate
27 size of incremental_got_plt section.
28 (Output_section_incremental_inputs::do_write): Write the
29 incremental_got_plt section.
30 (Got_plt_view_info): New struct.
31 (Local_got_offset_visitor): New class.
32 (Global_got_offset_visitor): New class.
33 (Global_symbol_visitor_got_plt): New class.
34 (Output_section_incremental_inputs::write_got_plt): New function.
35 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
36 Add parameter. Adjust all callers.
37 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
38 (Incremental_inputs::got_plt_section): New function.
39 (Incremental_inputs::got_plt_section_): New data member.
40 (Incremental_got_plt_reader): New class.
41 * layout.cc (Layout::create_incremental_info_sections): Add the
42 incremental_got_plt section.
43 * object.h (Got_offset_list::get_list): New function.
44 (Got offset_list::for_all_got_offsets): New function.
45 (Sized_relobj::local_got_offset_list): New function.
46 * powerpc.cc (Target_powerpc::got_size): Add const.
47 (Target_powerpc::got_entry_count): New function.
48 (Target_powerpc::plt_entry_count): New function.
49 (Target_powerpc::first_plt_entry_offset): New function.
50 (Target_powerpc::plt_entry_size): New function.
51 (Output_data_plt_powerpc::entry_count): New function.
52 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
53 (Output_data_plt_powerpc::get_plt_entry_size): New function.
54 * sparc.cc (Target_sparc::got_size): Add const.
55 (Target_sparc::got_entry_count): New function.
56 (Target_sparc::plt_entry_count): New function.
57 (Target_sparc::first_plt_entry_offset): New function.
58 (Target_sparc::plt_entry_size): New function.
59 (Output_data_plt_sparc::entry_count): New function.
60 (Output_data_plt_sparc::first_plt_entry_offset): New function.
61 (Output_data_plt_sparc::get_plt_entry_size): New function.
62 * symtab.h (Symbol::got_offset_list): New function.
63 (Symbol_table::for_all_symbols): New function.
64 * target.h (Sized_target::got_entry_count): New function.
65 (Sized_target::plt_entry_count): New function.
66 (Sized_target::plt_entry_size): New function.
67 * x86_64.cc (Target_x86_64::got_size): Add const.
68 (Target_x86_64::got_entry_count): New function.
69 (Target_x86_64::plt_entry_count): New function.
70 (Target_x86_64::first_plt_entry_offset): New function.
71 (Target_x86_64::plt_entry_size): New function.
72 (Output_data_plt_x86_64::entry_count): New function.
73 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
74 (Output_data_plt_x86_64::get_plt_entry_size): New function.
75
09ec0418
CC
762010-08-12 Cary Coutant <ccoutant@google.com>
77
78 * archive.cc: Include incremental.h.
79 (Archive::Archive): Initialize incremental_info_.
80 (Archive::include_member): Record archive members in incremental info.
81 (Add_archive_symbols::run): Record begin and end of an archive in
82 incremental info.
83 (Lib_group::include_member): Record objects in incremental info.
84 * archive.h (Incremental_archive_entry): Forward declaration.
85 (Archive::set_incremental_info): New member function.
86 (Archive::incremental_info): New member function.
87 (Archive::Unused_symbol_iterator): New class.
88 (Archive::unused_symbols_begin): New member function.
89 (Archive::unused_symbols_end): New member function.
90 (Archive::incremental_info_): New data member.
91 * incremental-dump.cc (find_input_containing_global): New function.
92 (dump_incremental_inputs): Dump new incremental info sections.
93 * incremental.cc: Include symtab.h.
94 (Output_section_incremental_inputs): New class.
95 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
96 new incremental info sections.
97 (Sized_incremental_binary::do_check_inputs): Likewise.
98 (Incremental_inputs::report_archive): Remove.
99 (Incremental_inputs::report_archive_begin): New function.
100 (Incremental_inputs::report_archive_end): New function.
101 (Incremental_inputs::report_object): New function.
102 (Incremental_inputs::finalize_inputs): Remove.
103 (Incremental_inputs::report_input_section): New function.
104 (Incremental_inputs::report_script): Rewrite.
105 (Incremental_inputs::finalize): Do nothing but finalize string table.
106 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
107 (Incremental_inputs::sized_create_inputs_section_data): Remove.
108 (Incremental_inputs::create_data_sections): New function.
109 (Incremental_inputs::relocs_entsize): New function.
110 (Output_section_incremental_inputs::set_final_data_size): New function.
111 (Output_section_incremental_inputs::do_write): New function.
112 (Output_section_incremental_inputs::write_header): New function.
113 (Output_section_incremental_inputs::write_input_files): New function.
114 (Output_section_incremental_inputs::write_info_blocks): New function.
115 (Output_section_incremental_inputs::write_symtab): New function.
116 * incremental.h (Incremental_script_entry): Forward declaration.
117 (Incremental_object_entry): Forward declaration.
118 (Incremental_archive_entry): Forward declaration.
119 (Incremental_inputs): Forward declaration.
120 (Incremental_inputs_header_data): Remove.
121 (Incremental_inputs_header): Remove.
122 (Incremental_inputs_header_write): Remove.
123 (Incremental_inputs_entry_data): Remove.
124 (Incremental_inputs_entry): Remove.
125 (Incremental_inputs_entry_write): Remove.
126 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
127 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
128 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
129 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
130 Likewise.
131 (Incremental_input_entry): New class.
132 (Incremental_script_entry): New class.
133 (Incremental_object_entry): New class.
134 (Incremental_archive_entry): New class.
135 (Incremental_inputs::Incremental_inputs): Initialize new data members.
136 (Incremental_inputs::report_inputs): Remove.
137 (Incremental_inputs::report_archive): Remove.
138 (Incremental_inputs::report_archive_begin): New function.
139 (Incremental_inputs::report_archive_end): New function.
140 (Incremental_inputs::report_object): Change prototype.
141 (Incremental_inputs::report_input_section): New function.
142 (Incremental_inputs::report_script): Change prototype.
143 (Incremental_inputs::get_reloc_count): New function.
144 (Incremental_inputs::set_reloc_count): New function.
145 (Incremental_inputs::create_data_sections): New function.
146 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
147 (Incremental_inputs::inputs_section): New function.
148 (Incremental_inputs::symtab_section): New function.
149 (Incremental_inputs::relocs_section): New function.
150 (Incremental_inputs::get_stringpool): Add const.
151 (Incremental_inputs::command_line): Add const.
152 (Incremental_inputs::inputs): Remove.
153 (Incremental_inputs::command_line_key): New function.
154 (Incremental_inputs::input_file_count): New function.
155 (Incremental_inputs::input_files): New function.
156 (Incremental_inputs::relocs_entsize): New function.
157 (Incremental_inputs::sized_create_inputs_section_data): Remove.
158 (Incremental_inputs::finalize_inputs): Remove.
159 (Incremental_inputs::Input_info): Remove.
160 (Incremental_inputs::lock_): Remove.
161 (Incremental_inputs::inputs_): Change type.
162 (Incremental_inputs::inputs_map_): Remove.
163 (Incremental_inputs::current_object_entry_): New data member.
164 (Incremental_inputs::inputs_section_): New data member.
165 (Incremental_inputs::symtab_section_): New data member.
166 (Incremental_inputs::relocs_section_): New data member.
167 (Incremental_inputs::reloc_count_): New data member.
168 (Incremental_inputs_reader): New class.
169 (Incremental_symtab_reader): New class.
170 (Incremental_relocs_reader): New class.
171 * layout.cc (Layout::finalize): Move finalization of incremental info
172 and creation of incremental info sections to follow finalization of
173 symbol table. Set offsets for postprocessing sections.
174 (Layout::create_incremental_info_sections): Call
175 Incremental_inputs::create_data_sections. Add incremental symtab
176 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
177 sections to layout after input sections.
178 * layout.h (struct Timespec): Forward declaration.
179 (Layout::incremental_inputs): Add const.
180 (Layout::create_incremental_info_sections): Add parameter.
181 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
182 * object.cc: Include incremental.h.
183 (Relobj::finalize_incremental_relocs): New function.
184 (Sized_relobj::do_layout): Record input sections in incremental info.
185 * object.h (Object::output_section): New function.
186 (Object::output_section_offset): Moved from Relobj.
187 (Object::get_incremental_reloc_base): New function.
188 (Object::get_incremental_reloc_count): New function.
189 (Object::do_output_section): New function.
190 (Object::do_output_section_offset): Moved from Relobj.
191 (Object::do_get_incremental_reloc_base): New function.
192 (Object::do_get_incremental_reloc_count): New function.
193 (Object::Object): Initialize new data members.
194 (Relobj::output_section): Renamed do_output_section and moved to
195 protected.
196 (Relobj::output_section_offset): Moved to Object.
197 (Relobj::do_get_incremental_reloc_base): New function.
198 (Relobj::do_get_incremental_reloc_count): New function.
199 (Relobj::allocate_incremental_reloc_counts): New function.
200 (Relobj::count_incremental_reloc): New function.
201 (Relobj::finalize_incremental_relocs): New function.
202 (Relobj::next_incremental_reloc_index): New function.
203 (Relobj::reloc_counts_): New data member.
204 (Relobj::reloc_bases_): New data member.
205 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
206 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
207 (Sized_relobj::incremental_relocs_scan): New function.
208 (Sized_relobj::incremental_relocs_scan_reltype): New function.
209 (Sized_relobj::incremental_relocs_write): New function.
210 (Sized_relobj::incremental_relocs_write_reltype): New function.
211 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
212 incremental link.
213 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
214 archives and object files elsewhere.
215 (Add_symbols::run): Report object files here.
216 (Finish_group::run): Report end of archive at end of group.
217 * reloc.cc: Include layout.h, incremental.h.
218 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
219 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
220 (Sized_relobj::incremental_relocs_scan): New function.
221 (Sized_relobj::incremental_relocs_scan_reltype): New function.
222 (Sized_relobj::do_relocate_sections): Write incremental relocations.
223 (Sized_relobj::incremental_relocs_write): New function.
224 (Sized_relobj::incremental_relocs_write_reltype): New function.
225 * script.cc (read_input_script): Rewrite test for incremental link.
226 Change call to Incremental_inputs::report_script.
227 * symtab.h (Symbol_table::first_global_index): New function.
228 (Symbol_table::output_count): New function.
229
ce0d1972
DK
2302010-08-12 Doug Kwan <dougkwan@google.com>
231
232 * arm.cc (Target_arm::merge_object_attributes): Check command line
233 options --no-wchar-size-warning and --no-enum-size-warning.
234 * options.h (General_options): Add ld-compatible options
235 --no-enum-size-warning and --no-wchar-size-warning.
236
6e5710ce
ILT
2372010-08-04 Ian Lance Taylor <iant@google.com>
238
239 * x86_64.cc (Target_x86_64::Scan::local): Use
240 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
241 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
242 (Target_x86_64::Scan::global): Likewise.
243 (Target_x86_64::Relocate::relocate): Likewise.
244 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
245 Likewise.
246
fef830db
CC
2472010-08-03 Cary Coutant <ccoutant@google.com>
248
249 * merge.cc (Output_merge_string::do_add_input_section): Count strings
250 to reserve space in merged_strings vector. Keep total input size
251 for stats.
252 (Output_merge_string::do_print_merge_stats): Print total input size.
253 * merge.h (Output_merge_string): Add input_size_ field.
254 * stringpool.cc (Stringpool_template::string_length): Move
255 implementations out of Stringpool_template class and place in
256 stringpool.h.
257 * stringpool.h (string_length): Move out of Stringpool_template.
258
1e3811b0
ILT
2592010-08-03 Ian Lance Taylor <iant@google.com>
260
261 PR 11712
262 * layout.cc (relaxation_loop_body): If address of load segment is
263 set, adjust address to include headers if possible.
264
7af0c620
ILT
2652010-08-03 Ian Lance Taylor <iant@google.com>
266
267 * version.cc (version_string): Bump to 1.10.
268
22f0da72
ILT
2692010-08-03 Ian Lance Taylor <iant@google.com>
270
271 PR 11805
272 * layout.h (enum Output_section_order): Define.
273 (class Layout): Update declarations.
274 * layout.cc (Layout::get_output_section): Add order parameter.
275 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
276 is_first_non_relro parameters. Change all callers.
277 (Layout::choose_output_section): Likewise.
278 (Layout::add_output_section_data): Likewise.
279 (Layout::make_output_section): Likewise. Set order.
280 (Layout::default_section_order): New function.
281 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
282 * output.cc (Output_section::Output_section): Initialize order_.
283 Don't initialize deleted fields.
284 (Output_segment::Output_segment): Don't initialize deleted
285 fields.
286 (Output_segment::add_output_section_to_load): New function
287 replacing add_output_section. Change all callers to call this or
288 add_output_section_to_nonload.
289 (Output_segment::add_output_section_to_nonload): New function.
290 (Output_segment::remove_output_section): Rewrite.
291 (Output_segment::add_initial_output_data): Likewise.
292 (Output_segment::has_any_data_sections): Likewise.
293 (Output_segment::is_first_section_relro): Likewise.
294 (Output_segment::maximum_alignment): Likewise.
295 (Output_segment::has_dynamic_reloc): New function replacing
296 dynamic_reloc_count. Change all callers.
297 (Output_segment::has_dynamic_reloc_list): New function replacing
298 dynamic_reloc_count_list. Change all callers.
299 (Output_segment::set_section_addresses): Rewrite.
300 (Output_segment::set_offset): Rewrite.
301 (Output_segment::find_first_and_last_list): Remove.
302 (Output_segment::set_tls_offsets): Rewrite.
303 (Output_segment::first_section_load_address): Likewise.
304 (Output_segment::output_section_count): Likewise.
305 (Output_segment::section_with_lowest_load_address): Likewise.
306 (Output_segment::write_section_headers): Likewise.
307 (Output_segment::print_sections_to_map): Likewise.
308 * output.h (class Output_data): Remove dynamic_reloc_count_
309 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
310 (Output_data::add_dynamic_reloc): Rewrite.
311 (Output_data::has_dynamic_reloc): New function.
312 (Output_data::dynamic_reloc_count): Remove.
313 (class Output_section): Add order_ field. Remvoe is_relro_local_,
314 is_last_relro_, is_first_non_relro_, is_interp_,
315 is_dynamic_linker_section_ fields. Add order and set_order
316 functions. Remove is_relro_local, set_is_relro_local,
317 is_last_relro, set_is_last_relro, is_first_non_relro,
318 set_is_first_non_relro functions, is_interp, set_is_interp,
319 is_dynamic_linker_section, and set_is_dynamic_linker_section
320 functions.
321 (class Output_segment): Change Output_data_list from std::list to
322 std:;vector. Add output_lists_ field. Remove output_data_ and
323 output_bss_ fields. Update declarations.
324
3ff2ccb0
ILT
3252010-08-02 Ian Lance Taylor <iant@google.com>
326
327 * arm.cc (Target_arm::gc_process_relocs): Use typename.
328 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
329 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
330
88a4108b
ILT
3312010-08-02 Ian Lance Taylor <iant@google.com>
332
333 PR 11855
334 * script.cc (Script_options::Script_options): Initialize
335 symbol_definitions_ and symbol_references_.
336 (Script_options::add_symbol_assignment): Update
337 symbol_definitions_ and symbol_references_.
338 (Script_options::add_symbol_reference): New function.
339 (script_symbol): New function.
340 * script.h (class Script_options): Add symbol_definitions_ and
341 symbol_references_ fields.
342 (Script_options::referenced_const_iterator): New type.
343 (Script_options::referenced_begin): New function.
344 (Script_options::referenced_end): New function.
345 (Script_options::is_referenced): New function.
346 (Script_options::any_unreferenced): New function.
347 * script-c.h (script_symbol): Declare.
348 * yyscript.y (exp): Call script_symbol.
349 * symtab.cc: Include "script.h".
350 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
351 Change all callers. Check symbols referenced by scripts.
352 (Symbol_table::add_undefined_symbols_from_command_line): Add
353 layout parameter. Change all callers.
354 (Symbol_table::do_add_undefined_symbols_from_command_line):
355 Likewise. Break out loop body. Check symbols referenced by
356 scripts.
357 (Symbol_table::add_undefined_symbol_from_command_line): New
358 function broken out of
359 do_add_undefined_symbols_from_command_line.
360 * symtab.h (class Symbol_table): Update declarations.
361 * archive.cc: Include "layout.h".
362 (Archive::should_include_member): Add layout parameter. Change
363 all callers. Check for symbol mentioned in expression.
364 * archive.h (class Archive): Update declaration.
365 * object.cc (Sized_relobj::do_should_include_member): Add layout
366 parameter.
367 * object.h (Object::should_include_member): Add layout parameter.
368 Change all callers.
369 (Object::do_should_include_member): Add layout parameter.
370 (class Sized_relobj): Update declaration.
371 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
372 parameter.
373 * dynobj.h (class Sized_dynobj): Update declaration.
374 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
375 layout parameter.
376 * plugin.h (class Sized_pluginobj): Update declaration.
377
5f1ab67a
ILT
3782010-08-02 Ian Lance Taylor <iant@google.com>
379
380 PR 11866
381 * output.cc (Output_segment::set_offset): Search for the first and
382 last sections rather than assuming that the list is in order.
383 (Output_segment::find_first_and_last_list): New function.
384 * output.h (class Output_segment): Update declarations.
385 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
386 (relro_strip_test_SOURCES): New variable.
387 (relro_strip_test_DEPENDENCIES): New variable.
388 (relro_strip_test_LDFLAGS): New variable.
389 (relro_strip_test_LDADD): New variable.
390 (relro_strip_test.so): New target.
391
a8df5856
ILT
3922010-08-02 Ian Lance Taylor <iant@google.com>
393
394 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
395 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
396 (Target_i386::got_tlsdesc_section): New function.
397 (Target_i386::got_section): Create space for GOT entries for
398 TLSDESC relocations.
399 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
400 R_386_TLS_GOTDESC.
401 (Target_i386::Scan::global): Likewise.
402 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
403 using TLSDESC GOT.
404 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
405 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
406 (Target_x86_64::got_tlsdesc_section): New function.
407 (Target_x86_64::got_section): Create space for GOT entries for
408 TLSDESC relocations.
409 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
410 R_386_TLS_GOTDESC.
411 (Target_x86_64::Scan::global): Likewise.
412 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
413 using TLSDESC GOT.
414
0c10a0a6
ILT
4152010-08-02 Ian Lance Taylor <iant@google.com>
416
417 * testsuite/final_layout.sh: Use dc to convert from hex to
418 decimal.
419
41cbeecc
ST
4202010-07-29 Sriraman Tallam <tmsriram@google.com>
421
422 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
423 paramter to the call to gold::gc_process_relocs.
424 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
425 paramter to the call to gold::gc_process_relocs.
426 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
427 parameter to the call to gold::gc_process_relocs.
428 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
429 template parameter to the call to gold::gc_process_relocs.
430 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
431 paramter to the call to gold::gc_process_relocs.
432 * gc.h (get_embedded_addend_size): New function.
433 (gc_process_relocs): Save the size of the reloc for use by ICF.
434 * icf.cc (get_section_contents): Get the addend from the text section
435 for SHT_REL relocation sections.
436 * icf.h (Icf::Reloc_addend_size_info): New typedef.
437 (Icf::Reloc_info): Add new member reloc_addend_size_info.
438 * int_encoding.h (read_from_pointer): New overloaded function.
439 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
440 * testsuite/icf_sht_rel_addend_test.sh: New file.
441 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
442 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
443
6ea55b82
RW
4442010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
445
446 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
447 * Makefile.in: Regenerate.
448 * testsuite/Makefile.in: Regenerate.
449
9691462b
ILT
4502010-07-27 Jeffrey Yasskin <jyasskin@google.com>
451
452 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
453 * gold/testsuite/debug_msg.cc: Likewise.
454 * gold/testsuite/odr_violation1.cc
455 * gold/testsuite/odr_violation2.cc
456
76897331
CC
4572010-07-21 Cary Coutant <ccoutant@google.com>
458
459 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
460 string, and length fields.
461 (Output_merge_string::Merged_strings_list): New type.
462 (Output_merge_string::Merged_strings_lists): New typedef.
463 (Output_merge_string): Replace merged_strings_ with
464 merged_strings_lists_.
465 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
466 Merged_strings_list per input object and section. Don't store pointer
467 to the string. Don't store length with each merged string entry.
468 (Output_merge_string::finalize_merged_data): Loop over list of merged
469 strings lists. Recompute length of each merged string.
470
78384e8f
CC
4712010-07-15 Cary Coutant <ccoutant@google.com>
472
473 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
474 here.
475
783659f9
ILT
4762010-07-14 Ian Lance Taylor <iant@google.com>
477
478 * descriptors.cc (Descriptors::open): Report correct name in error
479 message.
480
131687b4
DK
4812010-07-13 Doug Kwan <dougkwan@google.com>
482
483 * arm.cc (Arm_input_section::Arm_input_section): For a
484 SHT_ARM_EXIDX section, always keeps the input sections.
485 (Arm_input_section::set_exidx_section_link): New method.
486 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
487 has_errors_ to false.
488 (Arm_exidx_input_section::has_errors,
489 Arm_exidx_input_section::set_has_errors): New methods.
490 (Arm_exidx_input_section::has_errors_): New data member.
491 (Arm_relobj::get_exidx_shndx_list): New method.
492 (Arm_output_section::append_text_sections_to_list): Do not skip
493 section without SHF_EXECINSTR.
494 (Arm_output_section::fix_exidx_coverage): Skip input sections with
495 errors.
496 (Arm_relobj::make_exidx_input_section): Add new parameter for text
497 section header. Make error messages more verbose. Check for
498 a non-executable section linked to an EXIDX section.
499 (Arm_relobj::do_read_symbols): Remove error checking, which has been
500 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
501 check that there is no deferred EXIDX section if we exit early.
502 Instead of not making an EXIDX section in case of an error, make one
503 and set the has_errors flag of it.
504 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
505 in a relocatable link.
506 (Target_arm::do_relax): Look for the EXIDX output section instead of
507 assuming that it is called .ARM.exidx.
508 (Target_arm::fix_exidx_coverage): Add a new parameter for input
509 section list. Do not check for SHF_EXECINSTR section flags but
510 skip any input section with errors.
511 * output.cc (Output_section::Output_section): Initialize
512 always_keeps_input_sections_ to false.
513 (Output_section::add_input_section): Check for
514 always_keeps_input_sections_.
515 * output.h (Output_section::always_keeps_input_sections,
516 Output_section::set_always_keeps_input_sections): New methods.
517 (Output_section::always_keeps_input_sections): New data member.
518
69517287
RÁE
5192010-07-13 Rafael Espindola <espindola@google.com>
520
521 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
522 * fileread.h (Input_file): Add try_extra_search_path and find_file.
523
82742395
ILT
5242010-07-13 Philip Herron <herron.philip@googlemail.com>
525 Ian Lance Taylor <iant@google.com>
526
527 * output.h (Output_section_lookup_maps::add_merge_section):
528 Correct check of whether value was inserted.
529 (Output_section_lookup_maps::add_merge_input_section): Likewise.
530 (Output_section_lookup_maps::add_relaxed_input_section):
531 Likewise.
532 * arm.cc (Target_arm::got_section): Remove used local os.
533 * i386.cc (Target_i386::got_section): Likewise.
534 * x86_64.cc (Target_x86_64::got_section): Likewise.
535 * sparc.cc (Target_sparc::got_section): Likewise.
536 (Target_sparc::relocate): Remove unused local have_got_offset.
537 * powerpc.cc (Target_powerpc::relocate): Likewise.
538
f2d707b5
ILT
5392010-07-13 Ian Lance Taylor <iant@google.com>
540
241531d6
ILT
541 * compressed_output.cc (zlib_decompress): Fix signature in
542 !HAVE_ZLIB_H case.
543
f2d707b5
ILT
544 * archive.cc (Archive::include_member): Unlock an external member
545 of a thin archive. Don't bother to delete an object we know is
546 NULL.
547
a2e47362
CC
5482010-07-12 Cary Coutant <ccoutant@google.com>
549
550 * compressed_output.cc (zlib_decompress): New function.
551 (get_uncompressed_size): New function.
552 (decompress_input_section): New function.
553 * compressed_output.h (get_uncompressed_size): New function.
554 (decompress_input_section): New function.
555 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
556 Handle compressed debug sections.
557 * layout.cc (is_compressed_debug_section): New function.
558 (Layout::output_section_name): Map compressed section names to
559 canonical names.
560 * layout.h (is_compressed_debug_section): New function.
561 (is_debug_info_section): Recognize compressed debug sections.
562 * merge.cc: Include compressed_output.h.
563 (Output_merge_data::do_add_input_section): Handle compressed
564 debug sections.
565 (Output_merge_string::do_add_input_section): Handle compressed
566 debug sections.
567 * object.cc: Include compressed_output.h.
568 (Sized_relobj::Sized_relobj): Initialize new data members.
569 (build_compressed_section_map): New function.
570 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
571 * object.h (Object::section_is_compressed): New method.
572 (Object::do_section_is_compressed): New method.
573 (Sized_relobj::Compressed_section_map): New type.
574 (Sized_relobj::do_section_is_compressed): New method.
575 (Sized_relobj::compressed_sections_): New data member.
576 * output.cc (Output_section::add_input_section): Handle compressed
577 debug sections.
578 * reloc.cc: Include compressed_output.h.
579 (Sized_relobj::write_sections): Handle compressed debug sections.
580
ce279a62
CC
5812010-07-08 Cary Coutant <ccoutant@google.com>
582
583 * resolve.cc (Symbol_table::resolve): Remember whether undef was
584 weak when resolving to a dynamic def.
585 (Symbol_table::should_override): Add adjust_dyndef flag; set it
586 for weak undef/dynamic def cases. Adjust callers.
587 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
588 undef_binding_weak_.
589 (Symbol_table::sized_write_globals): Adjust symbol binding.
590 (Symbol_table::sized_write_symbol): Add binding parameter.
591 * symtab.h (Symbol::set_undef_binding): New method.
592 (Symbol::is_undef_binding_weak): New method.
593 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
594 (Symbol_table::should_override): Add new parameter.
595 (Symbol_table::sized_write_symbol): Add new parameter.
596
597 * testsuite/weak_undef_file1.cc: Add new test case.
598 * testsuite/weak_undef_file2.cc: Fix header comment.
599 * testsuite/weak_undef_test.cc: Add new test case.
600
b2286c10
DK
6012010-06-29 Doug Kwan <dougkwan@google.com>
602
603 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
604 Initialize USE_SYMBOL_.
605 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
606 definition.
607 (Arm_reloc_property::uses_symbol_): New data member declaration.
608 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
609 uses symbol value and symbol is undefined but not weakly undefined.
610
4802450a
RÁE
6112010-06-28 Rafael Espindola <espindola@google.com>
612
613 * plugin.cc (Plugin::load): Use dlerror.
614
e5ca47ba
ILT
6152010-06-26 Jeffrey Yaskin <jyasskin@google.com>
616
617 * symtab.cc (detect_odr_violations): When reporting an ODR
618 violation, report an object where the symbol is defined.
619
8a75a161
DK
6202010-06-25 Doug Kwan <dougkwan@google.com>
621
622 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
623 (Target_arm::section_may_have_icf_unsafe_pointers): New method
624 definition.
625 (Target_arm::Scan::local_reloc_may_be_function_pointer,
626 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
627 target hook to detect function points.
628 (Target_arm::Scan::possible_function_pointer_reloc): New method.
629 * icf.h (Icf::check_section_for_function_pointers): Change type of
630 parameter SECTION_NAME to const reference to std::string. Use
631 target hook to determine if section may have unsafe pointers.
632 * target.h (Target::section_may_have_icf_unsafe_pointers): New
633 method definition.
634
42218b9f
RÁE
6352010-06-21 Rafael Espindola <espindola@google.com>
636
637 * fileread.cc (Input_file::find_fie): New
638 (Input_file::open): Use Input_file::find_fie.
639 * fileread.h (Input_file::find_fie): New
640 * plugin.cc (set_extra_library_path): New.
641 (Plugin::load): Add set_extra_library_path to the transfer vector.
642 (Plugin_manager::set_extra_library_path): New.
643 (Plugin_manager::add_input_file): Use the extra search path if set.
644 (set_extra_library_path(): New.
645 * plugin.h (Plugin_manager): Add set_extra_library_path and
646 extra_search_path_.
647
a0506cca
CC
6482010-06-19 Cary Coutant <ccoutant@google.com>
649
650 * layout.cc (gdb_sections): Add .debug_types.
651 (lines_only_debug_sections): Likewise.
652
6508b958
RÁE
6532010-06-18 Rafael Espindola <espindola@google.com>
654
655 * plugin.cc (add_input_file,add_input_library)
656 (Plugin_manager::add_input_file): Make filename arguments const.
657 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
658 const.
659
3e235302
DK
6602010-06-16 Doug Kwan <dougkwan@google.com>
661
662 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
663 .ARM.attributes section if we have not merged any input
664 attributes sections.
665
106e8a6c
DK
6662010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
667
668 * arm.cc: Allow combining objects with no EABI version
669 information.
670
91ff43fe
RÁE
6712010-06-15 Rafael Espindola <espindola@google.com>
672
673 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
674
68ed838c
ILT
6752010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
676
677 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
678 (struct iovec): Correct !HAVE_READV definition.
679
f3a2388f
CC
6802010-06-10 Cary Coutant <ccoutant@google.com>
681
682 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
683 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
684 reloc sections.
685 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
686
687 PR 11683
688 * symtab.h (Symbol::is_placeholder): New member function.
689 * target-reloc.h (relocate_section): Check for placeholder symbols.
690
691 * testsuite/Makefile.am (plugin_test_8): New test.
692 (plugin_test_9): New test.
693 * testsuite/Makefile.in: Regenerate.
694
e1df38aa
NC
6952010-06-09 Nick Clifton <nickc@redhat.com>
696
697 * yyscript.y (input_list_element): Allow strings prefixed with
698 the '-' character. Treat these as libraries.
699 * script.cc (script_add_library): New function. Adds a library
700 specified by "-l<name>" found in an input script.
701 * script-c.h: Add prototype for script_add_library.
702
25bbe950
DK
7032010-06-07 Doug Kwan <dougkwan@google.com>
704
705 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
706 Restrict stub-group size to be within long conditional branch
707 range when working around cortex-A8 erratum.
708
0f32ea4c
ILT
7092010-06-07 Damien Diederen <dd@crosstwine.com>
710
711 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
712 #ifdef typo.
713
8fe2a369
ST
7142010-06-03 Sriraman Tallam <tmsriram@google.com>
715
716 PR gold/11658
717 * output.cc
718 (Output_section::Input_section_sort_entry::compare_section_ordering):
719 Change to return non-zero correctly.
720 (Output_section::Input_section_sort_section_order_index_compare
721 ::operator()): Change to fix ambiguity in comparisons.
722
6e9ba2ca
ST
7232010-06-01 Sriraman Tallam <tmsriram@google.com>
724
725 * gold.h (is_wildcard_string): New function.
726 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
727 (Layout::layout_eh_frame): Ditto.
728 (Layout::find_section_order_index): New method.
729 (Layout::read_layout_from_file): New method.
730 * layout.h (Layout::find_section_order_index): New method.
731 (Layout::read_layout_from_file): New method.
732 (Layout::input_section_position_): New private member.
733 (Layout::input_section_glob_): New private member.
734 * main.cc (main): Call read_layout_from_file here.
735 * options.h (--section-ordering-file): New option.
736 * output.cc (Output_section::input_section_order_specified_): New
737 member.
738 (Output_section::Output_section): Initialize new member.
739 (Output_section::add_input_section): Add new parameter.
740 Keep input sections when --section-ordering-file is used.
741 (Output_section::set_final_data_size): Sort input sections when
742 section ordering file is specified.
743 (Output_section::Input_section_sort_entry): Add new parameter.
744 Check sorting type.
745 (Output_section::Input_section_sort_entry::compare_section_ordering):
746 New method.
747 (Output_section::Input_section_sort_compare::operator()): Change to
748 consider section_order_index.
749 (Output_section::Input_section_sort_init_fini_compare::operator()):
750 Change to consider section_order_index.
751 (Output_section::Input_section_sort_section_order_index_compare
752 ::operator()): New method.
753 (Output_section::sort_attached_input_sections): Change to sort
754 according to section order when specified.
e1df38aa
NC
755 (Output_section::add_input_section<32, true>): Add new parameter.
756 (Output_section::add_input_section<64, true>): Add new parameter.
757 (Output_section::add_input_section<32, false>): Add new parameter.
758 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
759 * output.h (Output_section::add_input_section): Add new parameter.
760 (Output_section::input_section_order_specified): New
761 method.
762 (Output_section::set_input_section_order_specified): New method.
763 (Input_section::Input_section): Initialize section_order_index_.
764 (Input_section::section_order_index): New method.
765 (Input_section::set_section_order_index): New method.
766 (Input_section::section_order_index_): New member.
767 (Input_section::Input_section_sort_section_order_index_compare): New
768 struct.
769 (Output_section::input_section_order_specified_): New member.
770 * script-sections.cc (is_wildcard_string): Delete and move modified
771 method to gold.h.
772 (Output_section_element_input::Output_section_element_input): Modify
773 call to is_wildcard_string.
774 (Output_section_element_input::Input_section_pattern
775 ::Input_section_pattern): Ditto.
776 (Output_section_element_input::Output_section_element_input): Ditto.
777 * testsuite/Makefile.am (final_layout): New test case.
778 * testsuite/Makefile.in: Regenerate.
779 * testsuite/final_layout.cc: New file.
780 * testsuite/final_layout.sh: New file.
781
3537c84b
RÁE
7822010-06-01 Rafael Espindola <espindola@google.com>
783
784 * plugin.cc (Plugin::load): Pass the output name to the plugin.
785
105b6afd
RÁE
7862010-06-01 Rafael Espindola <espindola@google.com>
787
788 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
789 visibility of symbols.
790
29e11421
DK
7912010-05-27 Doug Kwan <dougkwan@google.com>
792
793 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
794 from start of output section instead of address for a local symbol
795 in a merged or relaxed section when doing a relocatable link.
796
5e0f337e
RÁE
7972010-05-26 Rafael Espindola <espindola@google.com>
798
799 PR 11604
800 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
801 adding sections the garbage collector removed.
802 * gold/testsuite/Makefile.am: Add test.
803 * gold/testsuite/Makefile.in: Regenerate.
804 * gold/testsuite/plugin_test_7.sh: New.
805 * gold/testsuite/plugin_test_7_1.c: New.
806 * gold/testsuite/plugin_test_7_2.c: New.
807
f4187277
RÁE
8082010-05-26 Rafael Espindola <espindola@google.com>
809
810 * script-sections.cc (Output_section_definition::set_section_addresses):
811 Check for --section-start.
812
5c388529
DK
8132010-05-26 Doug Kwan <dougkwan@google.com>
814
815 * arm.cc (Arm_scan_relocatable_relocs): New class.
816 (Target_arm::relocate_special_relocatable): New method.
817 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
818 (Arm_relocate_functions::thumb_branch_common): Same.
819 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
820 instead of Default_scan_relocatable_relocs.
821 * target-reloc.h (relocate_for_relocatable): Let target handle
822 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
823 * target.h (Sized_target::relocate_special_relocatable): New method.
824
bca1c3ae
ILT
8252010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
826
827 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
828
0439c796
DK
8292010-05-23 Doug Kwan <dougkwan@google.com>
830
831 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
832 instead of a cast.
833 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
834 with a direct branch, not a conditional branch, to a stub.
835 * merge.cc (Output_merge_base::record_input_section): New method
836 defintion.
837 (Output_merge_data::do_add_input_section): Record input section if
838 keeps-input-sections flag is set.
839 (Output_merge_string::do_add_input_section): Ditto.
840 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
841 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
842 INPUT_SECTIONS_.
843 (Output_merge_base::keeps_input_sections,
844 Output_merge_base::set_keeps_input_sections,
845 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
846 method definitions.
847 (Output_merge_base::Input_sections): New type declaration.
848 (Output_merge_base::input_sections_begin,
849 Output_merge_base::input_sections_end,
850 Output_merge_base::do_set_keeps_input_sections): New method definitions.
851 (Output_merge_base::bool keeps_input_sections_,
852 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
853 Output_merge_base::input_sections_): New data members.
854 (Output_merge_data::do_set_keeps_input_sections): New method
855 defintion.
856 (Output_merge_string::do_set_keeps_input_sections): Ditto.
857 * output.cc (Output_section::Input_section::relobj): Move method
858 defintion from class declaration to here and handle merge sections.
859 (Output_section::Input_section::shndx): Ditto.
860 (Output_section::Output_section): Remove initializations of removed
861 data members and initialize new data member LOOKUP_MAPS_.
862 (Output_section::add_input_section): Set keeps-input-sections flag
863 for a newly created merge output section as appropriate. Adjust code
864 to use Output_section_lookup_maps class.
865 (Output_section::add_relaxed_input_section): Adjst code for lookup
866 maps code refactoring.
867 (Output_section::add_merge_input_section): Add a new parameter
868 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
869 class. If adding input section to a newly created merge output
870 section fails, remove the new merge section.
871 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 872 Adjust code for use of the Output_section_lookup_maps class.
0439c796
DK
873 (Output_section::find_merge_section): Ditto.
874 (Output_section::build_lookup_maps): New method defintion.
875 (Output_section::find_relaxed_input_section): Adjust code to use
876 Output_section_lookup_maps class.
877 (Output_section::get_input_sections): Export merge sections. Adjust
878 code to use Output_section_lookup_maps class.
879 (Output_section:::add_script_input_section): Adjust code to use
880 Output_section_lookup_maps class. Update lookup maps for merge
881 sections also.
882 (Output_section::discard_states): Use Output_section_lookup_maps.
883 (Output_section::restore_states): Same.
884 * output.h (Merge_section_properties): Move class defintion out of
885 Output_section.
886 (Output_section_lookup_maps): New class.
887 (Output_section::Input_section::is_merge_section): New method
888 defintion.
889 (Output_section::Input_section::relobj): Move defintion out of class
890 defintion. Declare method only.
891 (Output_section::Input_section::shndx): Ditto.
892 (Output_section::Input_section::output_merge_base): New method defintion.
893 (Output_section::Input_section::u2_.pomb): New union field.
894 (Output_section::Merge_section_by_properties_map,
895 Output_section::Output_section_data_by_input_section_map,
896 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
897 Remove types.
898 (Output_section::add_merge_input_section): Add new parameter
899 KEEPS_INPUT_SECTIONS.
900 (Output_section::build_lookup_maps): New method declaration.
901 (Output_section::merge_section_map_,
902 Output_section::merge_section_by_properties_map_,
903 Output_section::relaxed_input_section_map_,
904 Output_section::is_relaxed_input_section_map_valid_): Remove data
905 members.
906 (Output_section::lookup_maps_): New data member.
907
76295588
L
9082010-05-21 Doug Kwan <dougkwan@google.com>
909
910 PR gold/11619
911 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
912 avoid a compilation error.
913
d103a984
RÁE
9142010-05-19 Rafael Espindola <espindola@google.com>
915
916 * script-sections.cc (Output_section_definition::allocate_to_segment):
917 Update the phdrs_list even when the output section is NULL.
918 * testsuite/Makefile.am: Add test.
919 * testsuite/Makefile.in: Regenerate.
920 * testsuite/script_test_9.cc: New.
921 * testsuite/script_test_9.sh: New.
922 * testsuite/script_test_9.t: New.
923
6625d24e
DK
9242010-05-19 Doug Kwan <dougkwan@google.com>
925
926 * arm.cc (Arm_input_section::original_size): New method.
927 (Arm_input_section::do_addralign): Add a cast.
928 (Arm_input_section::do_output_offset): Remove static cast.
929 (Arm_input_section::original_addralign,
930 Arm_input_section::original_size_): Change type to uint32_t.
931 (Arm_input_section::init): Add safe casts for section alignment
932 and size.
933 (Arm_input_section::set_final_data_size): Do not set address and
934 offset of stub table.
935 (Arm_output_section::fix_exidx_coverage): Change use of of
936 Output_section::Simple_input_section to that of
937 Output_section::Input_section.
938 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
939 except for the first pass.
940 * output.cc (Output_section::get_input_sections): Change type of
941 input_sections to std::list<Input_section>.
942 (Output_section::add_script_input_section): Rename from
943 Output_section::add_simple_input_section. Change type of SIS
944 parameter from Simple_input_section to Input_section.
945 * output.h (Output_section::Simple_input_section): Remove class.
946 (Output_section::Input_section): Change class visibility to public.
947 (Output_section::Input_section::addralign): Use stored alignments
948 for special input sections if set.
949 (Output_section::Input_section::set_addralign): New method.
950 (Output_section::get_input_sections): Change parameter type from
951 list of Simple_input_section to list of Input_section.
952 (Output_section::add_script_input_section): Rename from
953 Output_section::add_simple_input_section. Change first parameter's
954 type from Simple_input_section to Input_section and remove the
955 second and third parameters.
956 * script-sections.cc (Input_section::Input_section_list): Change
957 type to list of Output_section::Input_section/
958 (Input_section_info::Input_section_info): Change parameter type of
959 INPUT_SECTION to Output_section::Input_section.
960 (Input_section_info::input_section): Change return type.
961 (Input_section_info::input_section_): Change type to
962 Output_section::Input_section.
963 (Output_section_element_input::set_section_addresses): Adjust code
964 to use Output_section::Input_section instead of
965 Output_section::Simple_input_section. Adjust code for renaming
966 of Output_section::add_simple_input_section.
967 (Orphan_output_section::set_section_addresses): Ditto.
968
e1e82ea4
RW
9692010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
970
971 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
972 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
973
91e75c8a
RÁE
9742010-05-18 Rafael Espindola <espindola@google.com>
975
976 * options.cc (General_options::finalize): Handle -nostdlib.
977 * options.h (nostdlib): New option.
978 * script.cc (script_add_search_dir): Handle -nostdlib.
979
da59ad79
DK
9802010-05-12 Doug Kwan <dougkwan@google.com>
981
982 * arm.cc (Target_arm::do_finalize_sections): Create an empty
983 attributes section only if there no attributes section after merging.
984 (Target_arm::merge_object_attributes): Move value of
e1df38aa 985 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
986 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
987 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
988 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
989 and arm_attr_merge_7.stdout.
990 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
991 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
992 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
993 arm_attr_merge_7b.o): New rules.
994 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
995 arm_attr_merge_7
996 * testsuite/Makefile.in: Regenerate.
997 * testsuite/arm_attr_merge.sh: New file.
998 * testsuite/arm_attr_merge_[67][ab].s: Same.
999
3e01a7fd
NC
10002010-05-05 Nick Clifton <nickc@redhat.com>
1001
1002 * po/es.po: Updated Spanish translation.
1003
7ad2014a
L
10042010-04-27 H.J. Lu <hongjiu.lu@intel.com>
1005
1006 * Makefile.am (install-exec-local): Properly install gold as
1007 default cross linker.
1008 * Makefile.in: Regenerated.
1009
4fda8867
NC
10102010-04-27 H.J. Lu <hongjiu.lu@intel.com>
1011 Nick Clifton <nickc@redhat.com>
1012
1013 * configure.ac (install_as_default): Define and set to false
1014 unless --enable-gold or --enable-gold=both/gold has been
1015 specified.
1016 * configure: Regenerate.
1017
1018 * Makefile.am (install-exec-local): Install the executable as
1019 'ld.gold'. If install_as_default is true then also install it as
1020 'ld'.
1021 * Makefile.in: Regenerated.
1022
bd288ea2
ILT
10232010-04-24 Ian Lance Taylor <iant@google.com>
1024
1025 * layout.cc (Layout::layout_reloc): In relocatable link don't
1026 combine reloc sections for grouped sections.
1027
ef38fd8a
ST
10282010-04-23 Sriraman Tallam <tmsriram@google.com>
1029
1030 * gc.h (gc_process_relocs): Pass information on relocs pointing to
1031 sections that are not ordinary to icf.
1032 * icf.cc (get_section_contents): Handle relocation pointing to section
1033 with no object or shndx information.
1034 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
1035 * testsuite/Makefile.in: Regenerate.
1036 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
1037 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
1038
f6973bdc
ILT
10392010-04-22 Ian Lance Taylor <iant@google.com>
1040
1041 * expression.cc (Expression::Expression_eval_info): Add
1042 result_alignment_pointer field.
1043 (Expression::eval_with_dot): Add result_alignment_pointer
1044 parameter. Change all callers.
1045 (Expression::eval_maybe_dot): Likewise.
1046 (class Binary_expression): Add alignment_pointer parameter to
1047 left_value and right_value. Change all callers.
1048 (BINARY_EXPRESSION): Set result alignment.
1049 (class Trinary_expression): Add alignment_pointer parameter to
1050 arg2_value and arg3_value. Change all callers.
1051 (Trinary_cond::value): Set result alignment.
1052 (Max_expression::value, Min_expression::value): Likewise.
1053 (Align_expression::value): Likewise.
1054 * script-sections.cc (class Sections_element): Add dot_alignment
1055 parameter to set_section_addresses virtual function. Update
1056 instantiations.
1057 (class Output_section_element): Likewise.
1058 (Script_sections::create_segments): Add dot_alignment parameter.
1059 Change all callers.
1060 (Script_sections::create_segments_from_phdrs_clause): Likewise.
1061 (Script_sections::set_phdrs_clause_addresses): Likewise.
1062 * script-sections.h: Update declarations.
1063 * script.h: Update declarations.
1064 * output.h (Output_segment::set_minimum_p_align): Don't decrease
1065 min_p_align.
1066 * testsuite/script_test_3.t: Set large alignment.
1067 * testsuite/script_test_3.sh: Make sure that at least one LOAD
1068 segment has expected alignment.
1069
9c9c98a5
NC
10702010-04-22 Nick Clifton <nickc@redhat.com>
1071
1072 * po/gold.pot: Updated by the Translation project.
1073 * po/vi.po: Updated Vietnamese translation.
1074
2253bfba
L
10752010-04-22 H.J. Lu <hongjiu.lu@intel.com>
1076
1077 * testsuite/Makefile.am (check_PROGRAMS): Add
1078 icf_virtual_function_folding_test.
1079 * testsuite/Makefile.in: Regenerated.
1080
85fdf906
AH
10812010-04-15 Andrew Haley <aph@redhat.com>
1082
1083 * options.h (merge_exidx_entries): New option.
1084 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
1085 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
1086 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
1087 (Target_arm::merge_exidx_entries): New function.
1088 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
1089 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
1090 to Arm_exidx_fixup constructor.
1091 Add new arg, merge_exidx_entries.
1092 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
1093 Arm_output_section::fix_exidx_coverage.
1094
ce97fa81
ST
10952010-04-18 Sriraman Tallam <tmsriram@google.com>
1096
1097 * icf.cc (get_section_contents): Check for preemptible functions.
1098 Ignore addend when appropriate.
1099 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
1100 section folded.
1101 (add_from_relobj): Check for section folded.
1102 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
1103 * symtab.h (should_add_dynsym_entry): Add new parameter.
1104 * target-reloc.h (scan_relocs): Check for section folded.
1105 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
1106 Check reloc types for function pointers in shared objects.
1107 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
1108 case.
1109 (icf_preemptible_functions_test): New test case.
1110 (icf_string_merge_test): New test case.
1111 * testsuite.Makefile.in: Regenerate.
1112 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
1113 bar_glob. Refactor code.
1114 * testsuite/icf_preemptible_functions_test.cc: New file.
1115 * testsuite/icf_preemptible_functions_test.sh: New file.
1116 * testsuite/icf_string_merge_test.cc: New file.
1117 * testsuite/icf_string_merge_test.sh: New file.
1118 * testsuite/icf_virtual_function_folding_test.cc: New file.
1119 * testsuite/icf_virtual_function_folding_test.sh: New file.
1120
04ceb17c
DK
11212010-04-14 Doug Kwan <dougkwan@google.com>
1122
1123 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
1124 for local symbol recounting if we remove a section due to ICF.
1125 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
1126 there are no regular objects in input.
1127
153e7da4
DK
11282010-04-13 Doug Kwan <dougkwan@google.com>
1129
1130 * arm.cc (Arm_input_section::set_final_data_size): Compute
1131 accurate final data size instead of using current data size.
1132
4dbd9faf
DK
11332010-04-09 Doug Kwan <dougkwan@google.com>
1134
1135 * layout.cc (Layout::choose_output_section): Handle script section
1136 types.
1137 (Layout::make_output_section_for_script): Add section type parameter.
1138 Handle script section types.
1139 * layout.h (Layout::make_output_section_for_script): Add section
1140 type parameter.
1141 * output.cc (Output_section::Output_section): Initialize data member
1142 is_noload_.
1143 (Output_section::do_reset_address_and_file_offset): Do not set address
1144 to 0 if section is a NOLOAD section.
1145 * output.h (Output_section::is_noload): New method.
1146 (Output_section::set_is_noload): Ditto.
1147 (Output_section::is_noload_): New data member.
1148 * script-c.h (Script_section_type): New enum type.
1149 (struct Parser_output_section_header): Add new file section_type.
1150 * script-sections.cc (Sections_element::output_section_name): Add
1151 parameter for returning script section type.
1152 (Output_section_definition::output_section_name): Ditto.
1153 (Output_section_definition::section_type)P; New method.
1154 (Output_section_definiton::script_section_type_name): Ditto.
1155 (Output_section_definition::script_section_type_): New data member.
1156 (Output_section_definition::Output_section_definition): Initialize
1157 data member Output_section_definition::script_section_type_.
1158 (Output_section_definition::create_sections): Pass script section type
1159 to Layout::make_output_section_for_script.
1160 (Output_section_definition::output_section_name): Return script
1161 section type to caller.
1162 (Output_section_definition::set_section_address): Do not advance
1163 dot value and load address if section type is NOLOAD. Set address
1164 of NOLOAD sections regardless of section flags.
1165 (Output_section_definition::print): Print section type if it is
1166 not SCRIPT_SECTION_TYPE_NONE.
1167 (Output_section_definition::section_type): New method.
1168 (Output_section_definition::script_section_type_name): Ditto.
1169 (Script_sections::output_section_name): Add new parameter
1170 PSECTION_TYPE for returning script section type. Pass it to
1171 section elements. Handle discard sections.
1172 (Sort_output_sections::operator()): Handle NOLOAD sections.
1173 * script-sections.h (Script_sections::Section_type): New enum type.
1174 (Script_sections::output_section_name): Add a new parameter for
1175 returning script section type.
1176 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
1177 INFO and NOLOAD.
1178 * yyscript.y (union): Add new field SECTION_TYPE.
1179 (COPY, DSECT, INFO, NOLOAD): New tokens.
1180 (opt_address_and_section_type): Change type to output_section_header.
1181 (section_type): New non-terminal
1182 (section_header): Handle section type.
2253bfba 1183 (opt_address_and_section_type): Return section type value.
4dbd9faf 1184
721ea635
L
11852010-04-09 H.J. Lu <hongjiu.lu@intel.com>
1186
1187 * testsuite/plugin_common_test_1.c (foo): Add prototype.
1188 * testsuite/plugin_common_test_2.c (foo): Likewise.
1189
6bf924b0
DK
11902010-04-08 Doug Kwan <dougkwan@google.com>
1191
1192 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
1193 Output_merge_data.
1194 * output.cc (Output_section::add_merge_input_section): Simplify
1195 code and return status of Output_merge_base::add_input_section.
e1df38aa 1196 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
1197 returns true.
1198
24af6f92
DK
11992010-04-07 Doug Kwan <dougkwan@google.com>
1200
1201 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
1202 if section is marked as containing instructions but has no mapping
1203 symbols.
1204 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
1205 correct section index.
1206 (Arm_relobj::find_linked_text_section): Ditto.
1207
00698fc5
CC
12082010-04-07 Cary Coutant <ccoutant@google.com>
1209
1210 * archive.cc (include_member): Destroy Read_symbols_data object before
1211 releasing file.
1212 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
1213 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
1214 (Read_symbols_data::~Read_symbols_data) New destructor.
1215 (Section_relocs::Section_relocs) New constructor.
1216 (Section_relocs::~Section_relocs) New destructor.
1217 (Read_relocs_data::Read_relocs_data) New constructor.
1218 (Read_relocs_data::~Read_relocs_data) New destructor.
1219 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
1220 pointers to NULL after deleting.
1221
7296d933
DK
12222010-04-07 Doug Kwan <dougkwan@google.com>
1223
1224 * arm.cc: Replace "endianity" with "endianness" in comments.
1225 (Arm_exidx_cantunwind): Ditto.
1226 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
1227 (Arm_relobj::merge_flags_and_attributes): New method.
1228 (Arm_relobj::merge_flags_and_attributes_): New data member.
1229 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
1230 (Arm_relobj::scan_sections_for_stubs): Ditto.
1231 (Arm_relobj::do_read_symbols): Check to see if we really want to
1232 merge processor-specific flags and attributes. Exit early if
1233 an object is empty except for section names and the undefined symbol.
1234 (Target_arm::do_finalize_sections): Move check for ELF format to
1235 Arm_relobj::do_read_symbols. Merge processor specific flags and
1236 attributes from a regular object only when we have determined that
1237 it is aapropriate. Do not create an .ARM.attributes section in
1238 output if there is no regular input object.
1239 (Target_arm::merge_processor_specific_flags): Check
1240 --warn-mismatch before printing any error.
1241 (Target_arm::merge_object_attributes): Ditto.
1242 * gold.cc (queue_middle_tasks): Handle the case in which there is
1243 no regular object in input.
1244 * options.cc (General_options::parse_EB): New method.
1245 (General_options::parse_EL): Same.
1246 (General_options::General_options): Initialize endianness_.
1247 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
1248 New options.
1249 (General_options::Endianness): New enum.
1250 (General_options::endianness): New method.
1251 (General_options::endianness_): New data member.
1252 * parameters.cc (Parameters::set_options): Check target endianness.
1253 (Parameters::set_target_once): Ditto.
1254 (Parameters::check_target_endianness): New method.
1255 (parameters_force_valid_target): If either -EL or -EB is specified,
1256 use it to define endianness of default target.
1257 * parameters.h (Parameters::check_target_endianness): New method
1258 declaration.
1259 * target.h (class Target): Change "endianity" to "endianness"
1260 in comments.
1261
efc8d4f2
RW
12622010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1263
1264 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
1265 * configure: Regenerate.
1266 * Makefile.in: Regenerate.
1267 * testsuite/Makefile.in: Regenerate.
1268
be234d88
CC
12692010-04-06 Cary Coutant <ccoutant@google.com>
1270
1271 gcc PR lto/42757
1272 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
1273 prevailing definitions of common symbols.
1274 * testsuite/plugin_test_6.sh: New test case.
1275 * testsuite/plugin_common_test_1.c: New test case.
1276 * testsuite/plugin_common_test_2.c: New test case.
1277 * testsuite/Makefile.am (plugin_test_6): New test case.
1278 * testsuite/Makefile.in: Regenerate.
1279
bd32c6bd
NC
12802010-04-06 Nick Clifton <nickc@redhat.com>
1281
1282 * po/vi.po: New Vietnamese translation.
1283
323c532f
DK
12842010-03-30 Doug Kwan <dougkwan@google.com>
1285
1286 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
1287
4fcd97eb
DK
12882010-03-25 Doug Kwan <dougkwan@google.com>
1289
1290 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
1291 to avoid a conversion warning on a 32-bit host.
1292
4ebf39db
ILT
12932010-03-24 Ian Lance Taylor <iant@google.com>
1294
1295 * testsuite/script_test_3.t: Add a TLS segment.
1296 * testsuite/Makefile.am (check_PROGRAMS): Add
1297 tls_phdrs_script_test.
1298 (tls_phdrs_script_test_SOURCES): Define.
1299 (tls_phdrs_script_test_DEPENDENCIES): Define.
1300 (tls_phdrs_script_test_LDFLAGS): Define.
1301 (tls_phdrs_script_test_LDADD): Define.
1302 * testsuite/Makefile.in: Rebuild.
1303
4a599bdd
CC
13042010-03-23 Cary Coutant <ccoutant@google.com>
1305
1306 * fileread.cc (find_or_make_view): Fix comment.
1307
6c93b22c
ILT
13082010-03-23 Ian Lance Taylor <iant@google.com>
1309
1310 * script-sections.cc (class Orphan_section_placement): Define
1311 PLACE_TLS and PLACE_TLS_BSS.
1312 (Orphan_section_placement::Orphan_section_placement): Initialize
1313 new places.
1314 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
1315 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
1316 (tls_script_test_SOURCES): Define.
1317 (tls_script_test_DEPENDENCIES): Define.
1318 (tls_script_test_LDFLAGS): Define.
1319 (tls_script_test_LDADD): Define.
1320 * testsuite/Makefile.in: Rebuild.
1321
a2c7281b
DK
13222010-03-22 Doug Kwan <dougkwan@google.com>
1323
1324 * arm.cc (Arm_relocate_functions::abs8,
1325 Arm_relocate_functions::abs16): Use correct check for overflow
1326 specified in the ARM ELF specs.
1327 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
1328 target of a BLX instruction specially.
1329 (Reloc_stub::stub_type_for_reloc): Ditto.
1330 (Relocate::relocate): Use symbolic names instead of numeric relocation
1331 codes to report error.
1332 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
1333 workaround.
1334 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
1335 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
1336 thumb2_blx_out_of_range.stdout
1337 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
1338 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
1339 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
1340 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
1341 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
1342 thumb2_blx_in_range, thumb2_blx_in_range.o,
1343 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
1344 thumb2_blx_out_of_range.o): New rules.
1345 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
1346 thumb2_blx_in_range and thumb2_blx_out_of_range.
1347 * testsuite/Makefile.in: Regenerate.
1348 * arm_branch_in_range.sh: Add tests for THUMB BLX.
1349 * testsuite/thumb_blx_in_range.s: New file.
1350 * testsuite/thumb_blx_out_of_range.s: New file.
1351
b0193076
RÁE
13522010-03-22 Rafael Espindola <espindola@google.com>
1353
1354 * archive.cc (Should_include): Move to archive.h.
1355 (should_include_member): Make it a member of Archive.
1356 (Lib_group): New.
1357 (Add_lib_group_symbols): New.
1358 * archive.h: Include options.h.
1359 (Archive_member): Moved from Archive.
1360 (Should_include): Moved from archive.cc.
1361 (Lib_group): New.
1362 (Add_lib_group_symbols): New.
1363 * dynobj.cc (do_should_include_member): New.
1364 * dynobj.h (do_should_include_member): New.
1365 * gold.cc (queue_initial_tasks): Update call to queue.
1366 * main.cc (main): Print lib group stats.
1367 * object.cc (do_should_include_member): New.
1368 * object.h: Include archive.h.
1369 (Object::should_include_member): New.
1370 (Object::do_should_include_member): New.
1371 (Sized_relobj::do_should_include_member): New.
1372 * options.cc (General_options::parse_start_lib): New.
1373 (General_options::parse_end_lib): New.
1374 (Input_arguments::add_file): Handle lib groups.
1375 (Input_arguments::start_group): Check we are not in a lib.
1376 (Input_arguments::start_lib): New.
1377 (Input_arguments::end_lib): New.
1378 * options.h (General_options): Add start_lib and end_lib.
1379 (Input_argument::lib_): New.
1380 (Input_argument::lib): New.
1381 (Input_argument::is_lib): New.
1382 (Input_file_lib): New.
1383 (Input_arguments::in_lib_): New.
1384 (Input_arguments::in_lib): New.
1385 (Input_arguments::start_lib): New.
1386 (Input_arguments::end_lib_): New.
1387 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
1388 in unused members as preempted.
1389 (Sized_pluginobj::do_should_include_member): New.
1390 * plugin.h (Sized_pluginobj::do_should_include_member): New.
1391 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
1392 return the blocker.
1393 (Read_symbols::do_whole_lib_group): New.
1394 (Read_symbols::do_lib_group): New.
1395 (Read_symbols::do_read_symbols): Handle lib groups.
1396 (Read_symbols::get_name): Handle lib groups.
1397 * readsyms.h (Read_symbols): Add an archive member pointer.
1398 (Read_symbols::do_whole_lib_group): New.
1399 (Read_symbols::do_lib_group): New.
1400 (Read_symbols::member_): New.
1401 * script.cc (read_input_script): Update call to queue_soon.
1402
d099120c
DK
14032010-03-19 Doug Kwan <dougkwan@google.com>
1404
1405 * arm.cc (Stub_table::Stub_table): Initialize new data members
1406 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
1407 (Stub_table::add_reloc_stub): Assign stub offset and update
1408 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
1409 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
1410 New data members.
1411 (Stub_table::update_data_size_and_addralign): Use
1412 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
1413 instead of going over all reloc stubs.
1414 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
1415 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
1416 Stringpool_template::offset_ to size of Stringpool_char.
1417 (Stringpool_template::new_key_offset): Remove code to initialize
1418 Stringpool_template::offset_.
1419 * stringpool.h (Stringpool_template::set_no_zero_null): Set
1420 Stringpool_template::offset_ to zero.
1421
1aa37384
DK
14222010-03-15 Doug Kwan <dougkwan@google.com>
1423
1424 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
1425 offset_.
1426 (Stringpool_template::new_key_offset): New method.
1427 (Stringpool_template::add_string): Assign offsets when adding new
1428 strings.
1429 (Stringpool_template::set_string_offsets): Do not set string offsets
1430 when not optimizing.
1431 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
1432 member size_.
1433 (Chunked_vector::clear): Clear size_.
1434 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
1435 (Chunked_vector::size): Return size_.
1436 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 1437 (Chunked_vector::size_): New data member.
1aa37384
DK
1438 (Stringpool_template::set_no_zero_null): Assert string set is empty.
1439 (Stringpool_template::new_key_offset): New method declaration.
1440 (Stringpool_template::offset_): New data member.
1441
b672b057
RÁE
14422010-03-15 Rafael Espindola <espindola@google.com>
1443
1444 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
1445 Add_symbols' constructor.
1446 * readsyms.h (Add_symbols): Remove the input_group member.
1447
b6848d3c
ILT
14482010-03-10 Ian Lance Taylor <iant@google.com>
1449
1450 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
1451 target to ask whether a reference to a symbol requires a stack
1452 split.
1453 * target.h (Target::is_call_to_non_split): New function.
1454 (Target::do_is_call_to_non_split): Declare virtual function.
1455 * target.cc: Include "symtab.h".
1456 (Target::do_is_call_to_non_split): New function.
1457 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
1458
a2a5469e
CC
14592010-03-10 Cary Coutant <ccoutant@google.com>
1460
1461 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
1462 (File_read::open[1]): Remove initial mapping of whole_file_view_.
1463 (File_read::open[2]): Add whole_file_view_ to list of views.
1464 (File_read::make_view): Remove test of whole_file_view_.
1465 (File_read::find_or_make_view): Create whole_file_view_ if
1466 necessary.
1467 (File_read::clear_views): Replace bool parameter with enum;
1468 adjust all callers. Don't delete views with permanent data;
1469 do delete cached views and views from archives if
1470 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
1471 if clearing the corresponding view.
1472 * fileread.h (File_read::Clear_views_mode): New enum.
1473 (File_read::View::is_permanent_view): New method.
1474 (File_read::clear_views): Replace bool parameter
1475 with enum; adjust all callers.
1476 * options.h (General_options): Change keep_files_mapped option;
1477 add map_whole_files.
1478 * readsyms.cc (Add_symbols::run): Delete sd_ object before
1479 releasing the file.
1480 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
1481 the file.
1482
8861f32b
DM
14832010-03-10 David S. Miller <davem@davemloft.net>
1484
1485 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
1486
d62d0f5f
ST
14872010-03-09 Sriraman Tallam <tmsriram@google.com>
1488
1489 * icf.cc (get_section_contents): Add '@' marker after processing the
1490 merge reloc.
1491
9177756d
DK
14922010-03-08 Doug Kwan <dougkwan@google.com>
1493
1494 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
1495 due to a conversion warning.
1496 (Arm_relobj::update_output_local_symbol_count): Check for local
1497 symbol with unset output index.
1498
9e9e071b
ILT
14992010-03-05 Ian Lance Taylor <iant@google.com>
1500
1501 * options.h (class General_options): Add --spare-dynamic-tags.
1502 * output.cc (Output_data_dynamic::set_final_data_size): Implement
1503 --spare-dynamic-tags.
1504
a81ee015
ILT
15052010-03-05 Ian Lance Taylor <iant@google.com>
1506
1507 * incremental.cc: Include "libiberty.h".
1508
44ec90b9
RO
15092010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1510
1511 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
1512 function, is_info_ member.
1513 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
1514 (Versions::Versions): Update caller.
1515 (Versions::define_base_version): Likewise.
1516 (Versions::add_def): Likewise.
1517
0897ed3b
ST
15182010-03-03 Sriraman Tallam <tmsriram@google.com>
1519
1520 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
1521 (Scan::possible_function_pointer_reloc): New function.
1522 (Scan::local_reloc_may_be_function_pointer): Change to call
1523 possible_function_pointer_reloc.
1524 (Scan::global_reloc_may_be_function_pointer): Ditto.
1525 * icf.h (Icf::check_section_for_function_pointers): Change to reject
1526 relocations in ".data.rel.ro._ZTV" section.
1527 * testsuite/icf_safe_so_test.sh: Change to pass i386.
1528 * testsuite/icf_safe_so_test.cc: Ditto.
1529 * testsuite/icf_safe_test.cc: Ditto.
1530 * testsuite/icf_safe_test.sh: Ditto.
1531
d3bbad62
ILT
15322010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1533 Ian Lance Taylor <iant@google.com>
1534
1535 * target-reloc.h (relocate_section): Check the symbol table index
1536 for -1U before setting the local symbol index.
1537 (scan_relocatable_relocs): If copying the relocation, record that
1538 the local symbol is required.
1539 * object.h (Symbol_value::is_output_symtab_index_set): New
1540 function.
1541 (Symbol_value::may_be_discarded_from_output_symtab): New
1542 function.
1543 (Symbol_value::has_output_symtab_entry): New function.
1544 (Symbol_value::needs_output_symtab_entry): Remove.
1545 (Symbol_value::output_symtab_index): Make sure the symbol index is
1546 set.
1547 (Symbol_value::set_output_symtab_index): Make sure the symbol
1548 index is not set. Make sure the new index is valid.
1549 (Symbol_value::set_must_have_output_symtab_entry): New function.
1550 (Symbol_value::has_output_dynsym_entry): New function.
1551 (Symbol_value::set_output_dynsym_index): Make sure the new index
1552 is valid.
1553 (Sized_relobj::set_must_have_output_symtab_entry): New function.
1554 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
1555 local symbol if permitted.
1556 (Sized_relobj::do_finalize_local_symbols): Call
1557 is_output_symtab_index_set rather than needs_output_symtab_entry.
1558 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
1559 rather than needs_output_symtab_entry. Call
1560 has_output_dynsym_entry rather than needs_output_dynsym_entry.
1561 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
1562 is_output_symtab_index_set rather than needs_output_symtab_entry.
1563 * testsuite/discard_locals_relocatable_test.c: New file.
1564 * testsuite/discard_locals_test.sh: Test -r.
1565 * testsuite/Makefile.am (check_DATA): Add
1566 discard_locals_relocatable_test1.syms,
1567 discard_local_relocatable_test2.syms.
1568 (MOSTLYCLEANFILES): Likewise. Also add
1569 discard_locals_relocatable_test1.lout and
1570 discard_locals_relocatable_test2.out.
1571 (discard_locals_relocatable_test1.syms): New target.
1572 (discard_locals_relocatable_test.o): New target.
1573 (discard_locals_relocatable_test1.out): New target.
1574 (discard_locals_relocatable_test2.syms): New target.
1575 (discard_locals_relocatable_test2.out): New target.
1576 (various): Add missing ../ld-new dependencies.
1577 * testsuite/Makefile.in: Rebuild.
1578
7e8ccf26
NC
15792010-03-03 Nick Clifton <nickc@redhat.com>
1580
1581 * po/fi.po: New Finnish translation.
1582
2a0ff005
DK
15832010-03-01 Doug Kwan <dougkwan@google.com>
1584
1585 * layout.cc (Layout::Layout): Force section types of .init_array*,
1586 .preinit_array* and .fini_array* sections.
1587 * output.cc (Output_section::Input_section_sort_entry::has_priority):
1588 Fix check of return value of std::string::find.().
1589 (Output_section::Input_section_sort_compare::operator()): Remove
1590 comment about .init_array.
1591 (Output_section::Input_section_sort_init_fini_compare::operator()):
1592 New method.
1593 (Output_section::sort_attached_input_sections): Handle .init_array
1594 and .fini_array specially.
1595 * output.h (Output_section::Inut_section_sort_compare): Update
1596 comment.
1597 (Output_section::Input_section_sort_init_fini_compare): New struct.
1598
c3e4ae29
DK
15992010-02-26 Doug Kwan <dougkwan@google.com>
1600
1601 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
1602 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
1603 * testsuite/debug_msg.sh: Avoid matching source line number for
1604 use of global variable undef_int.
1605
2fd9ae7a
DK
16062010-02-26 Doug Kwan <dougkwan@google.com>
1607
1608 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
1609 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
1610 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
1611 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
1612 * options.cc (General_options::General_options): Initialize member
1613 fix_v4bx_.
1614 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
1615 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
1616 and rm_no_fix_v4bx.stdout
1617 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
1618 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
1619 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
1620 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
1621 and arm_no_fix_v4bx.
1622 * Makefile.in: Regenerate.
1623 * testsuite/arm_fix_v4bx.s: New file.
1624 * testsuite/arm_fix_v4bx.sh: Ditto.
1625
67ec7d0b
DK
16262010-02-24 Doug Kwan <dougkwan@google.com>
1627
1628 * arm.cc (Target_arm::got_section): Make the .got section the first
1629 non RELRO section in the data segment.
1630 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
1631 suffixes of section names.
1632
10165461
DK
16332010-02-24 Doug Kwan <dougkwan@google.com>
1634
1635 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
1636 flags and attributes merging if an input file is a binary file.
1637 * fileread.cc (Input_file::open): Record format of original file.
1638 * fileread.h (Input_file::Format): New enum type.
1639 (Input_file::Input_file): Initialize data member format_.
1640 (Input_file::format): New method definition.
1641 (Input_file::format_):: New data member.
1642
4a54abbb
DK
16432010-02-24 Doug Kwan <dougkwan@google.com>
1644
1645 * arm.cc (Arm_output_data_got): New class.
1646 (ARM_TCB_SIZE): New constant
1647 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
1648 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
1649 If user uses a script with a SECTIONS clause, issue only a warning
1650 for a misplaced EXIDX input section. Otherwise, issue an error.
1651 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
1652 garbage collection.
1653 (Target_arm::got_mode_index_entry): Handle static linking.
1654 (Target_arm::Scan::local): Ditto.
1655 (Target_arm::Scan::global): Ditto.
1656 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
1657 all incorrectly implemented relocations.
e1df38aa 1658 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
1659 Arm_output_section::fix_exidx_coverage.
1660 * layout.cc (Layout::section_name_mapping): Remove trailing dots
1661 from ".ARM.exidx." and ".ARM.extab.".
1662
ca419a6f
ILT
16632010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1664
1665 * arm.cc (Target_arm::do_finalize_sections): Create attribute
1666 section if it does not already exist.
1667 * attributes.cc (Attributes_section_data::Attributes_section_data):
1668 Don't crash if size is zero.
1669
135b9c78
ILT
16702010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1671 Ian Lance Taylor <iant@google.com>
1672
1673 * gold.cc (queue_middle_tasks): If no input files were opened,
1674 exit.
1675 * workqueue.h (Task_function::Task_function): Assert that there is
1676 a blocker.
1677
bb0bfe4f
DK
16782010-02-22 Doug Kwan <dougkwan@google.com>
1679
1680 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
1681 * icf.cc (get_section_contents): Cast snprintf arguments to long long
1682 types to avoid warnings due to different uint64_t implementations
1683 on different hosts.
1684
2a2b6d42
DK
16852010-02-21 Doug Kwan <dougkwan@google.com>
1686
1687 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
1688 handling of the maximum backward branch offset.
1689 (Arm_relocate_functions::thumb_branch_common): Ditto.
1690 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
1691 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 1692 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
1693 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
1694 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
1695 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
1696 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
1697 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
1698 thumb_bl_out_of_range thumb_bl_out_of_range.o,
1699 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
1700 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
1701 thumb2_bl_out_of_range.o): New rules.
1702 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
1703 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
1704 thumb2_bl_out_of_range
1705 * testsuite/Makefile.in: Regenerate.
1706 * testsuite/arm_bl_in_range.s: New file.
1707 * testsuite/arm_bl_out_of_range.s: Ditto.
1708 * testsuite/arm_branch_in_range.sh: Ditto.
1709 * testsuite/arm_branch_range.t: Ditto.
1710 * testsuite/thumb2_branch_range.t: Ditto.
1711 * testsuite/thumb_bl_in_range.s: Ditto.
1712 * testsuite/thumb_bl_out_of_range.s: Ditto.
1713 * testsuite/thumb_branch_range.t: Ditto.
1714
b487ad64
ST
17152010-02-20 Sriraman Tallam <tmsriram@google.com>
1716
1717 * gc.h (gc_process_relocs): Change vectors to point to the new list.
1718 Add reloc offset information.
1719 * icf.cc (get_section_contents): Change iterators to point to the new
1720 vectors. Add reloc offset information to the contents.
1721 * icf.h (Icf::Sections_reachable_info): New typedef.
1722 (Icf::Sections_reachable_list): New typedef.
1723 (Icf::Offset_info): New typedef.
1724 (Icf::Reloc_info): New struct typedef.
1725 (Icf::Reloc_info_list): New typedef.
1726 (Icf::symbol_reloc_list): Delete method.
1727 (Icf::addend_reloc_list): Delete method.
1728 (Icf::section_reloc_list): Delete method.
1729 (Icf::reloc_info_list): New method.
1730 (Icf::reloc_info_list_): New member.
1731
f96accdf
DK
17322010-02-19 Doug Kwan <dougkwan@google.com>
1733
1734 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
1735 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
1736 * arm.cc (Arm_relocation_functions): New forward declaration.
1737 (Target_arm::Target_arm): Initialize new data members
1738 got_mod_index_offset_ and tls_base_symbol_defined_.
1739 (Target_arm::Relocate::relocate_tls): New method.
1740 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
1741 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
1742 New methods.
1743 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
1744 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
1745 (Target_arm::got_mod_index_offset_,
1746 Target_arm::tls_base_symbol_defined_): New data members.
1747 (Target_arm::Scan::local, Target::Scan::global,
1748 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
1749 relocations.
1750
c8761b9a
DK
17512010-02-18 Doug Kwan <dougkwan@google.com>
1752
1753 * arm.cc (Arm_relobj::find_linked_text_section): New method.
1754 (Arm_relobj::make_exidx_input_section): Pass section index of linked
1755 text section as a parameter becuase some broken tools may not set
1756 the link in section header.
1757 (Target_arm::has_got_section): New method.
1758 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
1759 without any mapping symbol as data only. Remove warning.
1760 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
1761 link in its section header, try to discover the link by inspecting the
1762 REL31 relocation at the beginning of the section.
1763 (Target_arm::Scan::check_non_pic): Report name of offending relocation
1764 in error message.
1765 (Target_arm::Scan::global): Treat any reference to the symbol
1766 _GLOBAL_OFFSET_TABLE_ as a GOT access.
1767
21bb3914
ST
17682010-02-12 Sriraman Tallam <tmsriram@google.com>
1769
1770 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
1771 (Scan::global_reloc_may_be_function_pointer): New function.
1772 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
1773 (Scan::global_reloc_may_be_function_pointer): New function.
1774 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
1775 (Scan::global_reloc_may_be_function_pointer): New function.
1776 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
1777 (Scan::global_reloc_may_be_function_pointer): New function.
1778 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
1779 (Scan::global_reloc_may_be_function_pointer): New function.
1780 (Scan::possible_function_pointer_reloc): New function.
1781 (Target_x86_64::can_check_for_function_pointers): New function.
1782 * gc.h (gc_process_relocs): Scan relocation types to determine if
1783 function pointers were taken for targets that support it.
1784 * icf.cc (Icf::find_identical_sections): Include functions for
1785 folding in safe ICF whose pointer is not taken.
1786 * icf.h (Secn_fptr_taken_set): New typedef.
1787 (fptr_section_id_): New member.
1788 (section_has_function_pointers): New function.
1789 (set_section_has_function_pointers): New function.
1790 (check_section_for_function_pointers): New function.
1791 * options.h: Fix comment for safe ICF option.
1792 * target.h (can_check_for_function_pointers): New function.
1793 * testsuite/Makefile.am: Add icf_safe_so_test test case.
1794 Modify icf_safe_test for X86-64.
1795 * testsuite/Makefile.in: Regenerate.
1796 * testsuite/icf_safe_so_test.cc: New file.
1797 * testsuite/icf_safe_so_test.sh: New file.
1798 * testsuite/icf_safe_test.cc (kept_func_3): New function.
1799 (main): Change to take pointer to function kept_func_3.
1800 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
1801 folding is done correctly for X86-64.
1802
0da6fa6c
DM
18032010-02-12 David S. Miller <davem@davemloft.net>
1804
1805 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
1806 is_symbolless parameter.
1807 (Output_reloc<SHT_REL>::is_symbolless): New.
1808 (Output_reloc<SHT_REL>::is_symbolless_): New.
1809 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
1810 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
1811 (Output_reloc<SHT_RELA>::is_symbolless): New.
1812 (Output_data_reloc::add_global): Handle is_symbolless.
1813 (Output_data_reloc::add_global_relative): Likewise.
1814 (Output_data_reloc::add_local): Likewise.
1815 (Output_data_reloc::add_local_relative): Likewise.
1816 (Output_data_reloc::add_symbolless_global_addend): New.
1817 (Output_data_reloc::add_symbolless_local_addend): New.
1818 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
1819 is_symbolless.
1820 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
1821 instead of ->is_relative_
1822 (Output_reloc::write): Likewise.
1823 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
1824 (Output_reloc::write_rel): Simplify.
1825
1826 * sparc.cc (Target_sparc::Scan::local): Use
1827 ->add_symbolless_local_addend as needed.
1828 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
1829 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
1830 based upon relocation offset.
1831
e4782e83
DK
18322010-02-11 Doug Kwan <dougkwan@google.com>
1833
1834 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
1835 (Target_arm::Scan::global): Ditto. Also remove a comment before the
1836 beginning of function.
1837 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
1838 and MOVT_ABS relocations. Those are non issued in scanning. Fix
1839 parameter is_32bit in calls to should_apply_static_reloc.
1840 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
1841 (check_DATA): Add arm_abs_global.stdout.
1842 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
1843 arm_abs_global.stdout): New rules.
1844 (MOSTLLYCLEANFILES): Add arm_abs_global
1845 * Makefile.in: Regenerate.
1846 * testsuite/arm_abs_global.s: New file.
1847 * testsuite/arm_abs_global.sh: Ditto.
1848 * testsuite/arm_abs_lib.s: Ditto.
1849
93ceb764
ILT
18502010-02-11 Ian Lance Taylor <iant@google.com>
1851
1852 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
1853 Read_relocs task.
1854 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
1855 Allocate_commons_task first.
1856 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
1857 task, rather than symtab_lock_.
1858 (Gc_process_relocs::~Gc_process_relocs): New function.
1859 (Gc_process_relocs::is_runnable): Check this_blocker_.
1860 (Gc_process_relocs::locks): Use next_blocker_ rather than
1861 blocker_.
1862 (Scan_relocs::~Scan_relocs): New function.
1863 (Scan_relocs::is_runnable): Check this_blocker_ rather than
1864 symtab_lock_.
1865 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
1866 next_blocker_.
1867 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
1868 fields. Add this_blocker_ and next_blocker_ fields. Adjust
1869 constructor accordingly.
1870 (class Gc_process_relocs): Likewise.
1871 (class Scan_relocs): Likewise.
1872 * common.h (class Allocate_commons_task): Remove symtab_lock_
1873 field, and corresponding constructor parameter.
1874 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
1875 symtab_lock_.
1876 (Allocate_commons_task::locks): Likewise.
1877
114dfbe1
ILT
18782010-02-11 Ian Lance Taylor <iant@google.com>
1879
1880 * gold-threads.h (class Once): Define.
1881 (class Initialize_lock): Rewrite as child of Once.
1882 * gold-threads.cc (class Once_initialize): Define.
1883 (once_pointer_control): New static variable.
1884 (once_pointer, once_arg): New static variables.
1885 (c_run_once): New static function.
1886 (Once::Once, Once::run_once, Once::internal_run): New functions.
1887 (class Initialize_lock_once): Remove.
1888 (initialize_lock_control): Remove.
1889 (initialize_lock_pointer): Remove.
1890 (initialize_lock_once): Remove.
1891 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
1892 (Initialize_lock::initialize): Rewrite.
1893 (Initialize_lock::do_run_once): New function.
1894 * archive.cc (Archive::interpret_header): Only clear name if it is
1895 not already empty.
1896 * fileread.cc: Include "gold-threads.h"
1897 (file_counts_lock): New static variable.
1898 (file_counts_initialize_lock): Likewise.
1899 (File_read::release): Only increment counts when using --stats.
1900 Use a lock around the increment.
1901 * parameters.cc (class Set_parameters_target_once): Define.
1902 (set_parameters_target_once): New static variable.
1903 (Parameters::Parameters): Move here from parameters.h.
1904 (Parameters::set_target): Rewrite.
1905 (Parameters::set_target_once): New function.
1906 (Parameters::clear_target): Move here and rewrite.
1907 * parameters.h (class Parameters): Update declarations. Add
1908 set_parameters_target_once_ field.
1909 (Parameters::Parameters): Move to parameters.cc.
1910 (Parameters::clear_target): Likewise.
1911 * readsyms.cc (Read_symbols::do_group): Create a Start_group
1912 task.
1913 (Start_group::~Start_group): New function.
1914 (Start_group::is_runnable): New function.
1915 (Start_group::locks, Start_group::run): New functions.
1916 (Finish_group::run): Change saw_undefined to size_t.
1917 * readsyms.h (class Start_group): Define.
1918 (class Finish_group): Change saw_undefined_ field to size_t.
1919 (Finish_group::Finish_group): Remove saw_undefined and
1920 this_blocker parameters. Change all callers.
1921 (Finish_group::set_saw_undefined): New function.
1922 (Finish_group::set_blocker): New function.
1923 * symtab.h (class Symbol_table): Change saw_undefined to return
1924 size_t. Change saw_undefined_ field to size_t.
1925 * target-select.cc (Set_target_once::do_run_once): New function.
1926 (Target_selector::Target_selector): Initialize set_target_once_
1927 field. Don't initialize lock_ and initialize_lock_ fields.
1928 (Target_selector::instantiate_target): Rewrite.
1929 (Target_selector::set_target): New function.
1930 * target-select.h (class Set_target_once): Define.
1931 (class Target_selector): Update declarations. Make
1932 Set_target_once a friend. Remove lock_ and initialize_lock_
1933 fields. Add set_target_once_ field.
1934
fa17a3f4
ILT
19352010-02-10 Ian Lance Taylor <iant@google.com>
1936
1937 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
1938 queueing any tasks.
1939 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
1940 (queue_middle_tasks): Add all blockers before queueing any tasks.
1941 (queue_final_tasks): Likewise.
1942 * token.h (Task_token::add_blockers): New function.
1943 * object.h (Input_objects::number_of_relobjs): New function.
1944
c7177d31
ILT
19452010-02-10 Ian Lance Taylor <iant@google.com>
1946
5de0e392
ILT
1947 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
1948 shared, not if not position independent.
1949 * x86_64.cc (Relocate::relocate_tls): Likewise.
1950 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
1951 (tls_pie_pic_test): New target.
1952 * testsuite/Makefile.in: Rebuild.
1953
c7177d31
ILT
1954 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
1955 (tls_test_main_pie.o, tls_test_pie.o): New targets.
1956 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
1957 * testsuite/Makefile.in: Rebuild.
1958
684b268a
DM
19592010-02-09 David S. Miller <davem@davemloft.net>
1960
1961 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
1962 R_SPARC_RELATIVE using ->add_local_relative().
1963 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
1964
612a8d3d
DM
1965 * output.h (Output_data_dynamic::add_section_size): New method
1966 that takes two Output_data objects.
1967 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
1968 entry param. Handle it in initializers.
1969 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
1970 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
1971 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
1972 arg.
1973 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
1974 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
1975 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
1976 for dynrel_includes_plt.
1977 * i386.cc (Target_i386::do_finalize_sections): Likewise.
1978 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
1979 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
1980 before .rela.plt
1981 (Target_sparc::do_finalize_sections): Update to pass true for
1982 dynrel_includes_plt.
1983 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
1984 output before .rela.plt
1985 (Target_powerpc::do_finalize_sections): Update to pass true for
1986 dynrel_includes_plt when 32-bit.
1987
cb1be87e
DK
19882010-02-08 Doug Kwan <dougkwan@google.com>
1989
1990 * arm.cc (Arm_relobj::simple_input_section_output_address): New
1991 method.
1992 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
1993 Arm_relobj::scan_section_for_cortex_a8_stubs,
1994 Arm_relobj::do_relocation_section): Instead of calling
1995 Output_section::output_address, use faster
1996 Arm_relobj::simple_input_section_output_address.
1997
705b5121
DM
19982010-02-08 David S. Miller <davem@davemloft.net>
1999
2000 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
2001 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
2002 relocation helper function.
2003
024c4466
DM
2004 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
2005 just like R_SPARC_GOT{10,13,22}.
2006 (Target_sparc::Scan::local): Likewise.
2007 (Target_sparc::Relocate:relocate): Likewise.
2008
9109c078
ILT
20092010-02-06 Ian Lance Taylor <iant@google.com>
2010
2011 * configure.ac: Rewrite targetobjs duplicate removal code to use
2012 only shell constructs.
2013 * configure: Rebuild.
2014
cf846138
DK
20152010-02-05 Doug Kwan <dougkwan@google.com>
2016
2017 PR 11247
2018 * arm.cc (Arm_relobj::section_is_scannable): New method.
2019 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
2020 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
2021
6cfaf60b
DK
20222010-02-04 Doug Kwan <dougkwan@google.com>
2023
2024 PR 11247
2025 * arm-reloc-property.cc (cstdio): Include.
2026 * configure.ac (targetobjs): Remove duplicates.
2027 * configure: Regenerate.
2028 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
2029 big and little endian version for a given address size.
2030
5c57f1be
DK
20312010-02-03 Doug Kwan <dougkwan@google.com>
2032
2033 * arm-reloc-property.cc
2034 (Arm_reloc_property_table::reloc_name_in_error_message): New method
2035 definition.
2036 * arm-reloc-property.h
2037 (Arm_reloc_property_table::get_implemented_static_reloc_property):
2038 New method definition.
2039 (Arm_reloc_property_table::reloc_name_in_error_message): New method
2040 declaration.
2041 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
2042 overflow to N.
2043 (GOT_PREL): Change implemented to Y.
2044 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
2045 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
2046 (Arm_relocate_functions::movw_abs_nc): Remove method.
2047 (Arm_relocate_functions::movt_abs): Ditto.
2048 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
2049 (Arm_relocate_functions::thm_movt_abs): Ditto.
2050 (Arm_relocate_functions::movw_rel_nc): Ditto.
2051 (Arm_relocate_functions::movw_rel): Ditto.
2052 (Arm_relocate_functions::movt_rel): Ditto.
2053 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
2054 (Arm_relocate_functions:thm_movw_rel): Ditto.
2055 (Arm_relocate_functions:thm_movt_rel): Ditto.
2056 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
2057 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
2058 New method definitions.
2059 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
2060 (Arm_relocation_functions::arm_grp_ldr): Ditto.
2061 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
2062 (Arm_relocation_functions::arm_grp_ldc): Ditto.
2063 (Target_arm::Relocate::relocate): Check for non-static or
2064 unimplemented relocation code and exit early. Change calls to
2065 Target_arm::reloc_uses_thumb_bit and
2066 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
2067 instead. Refactor code to handle similar relocations to increase
2068 code sharing. Remove check for unsupported relocation code in switch
2069 statement.
2070 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
2071 relocation property table to find out size. Change error message to
2072 print out the name of a relocation code instead of the numeric value.
2073 (Target_arm::scan_reloc_for_stub): Use relocation property table
2074 instead of calling Target_arm::reloc_uses_thumb_bit().
2075
218c5831
DK
20762010-02-02 Doug Kwan <dougkwan@google.com>
2077
2078 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
2079 types of relaxed input section.
2080
0d31c79d
DK
20812010-02-02 Doug Kwan <dougkwan@google.com>
2082
2083 * Makefile.am (HFILES): Add arm-reloc-property.h.
2084 (DEFFILES): New.
2085 (TARGETSOURCES): Add arm-reloc-property.cc
2086 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
2087 (libgold_a_SOURCES): $(DEFFILES)
2088 * Makefile.in: Regenerate.
2089 * arm-reloc-property.cc: New file.
2090 * arm-reloc-property.h: New file.
2091 * arm-reloc.def: New file.
2092 * arm.cc: Update comments.
2093 (arm-reloc-property.h): New included header.
2094 (arm_reloc_property_table): New global variable.
2095 (Target_arm::do_select_as_default_target): New method definition.
2096 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
2097 arm-reloc-property to targ_extra_obj.
2098 * parameters.cc (set_parameters_target): Call
2099 Target::select_as_default_target().
2100 * target.h (Target::select_as_default_target): New method definition.
2101 (Target::do_select_as_default_target): Same.
2102
546c7457
DK
21032010-02-01 Doug Kwan <dougkwan@google.com>
2104
2105 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
2106 first_output_text_section_.
2107 (Arm_exidx_fixup::first_output_text_section): New method definition.
2108 (Arm_exidx_fixup::first_output_text_section_): New data member.
2109 (Arm_exidx_fixup::process_exidx_section): Record the first text
2110 output section seen.
2111 (Arm_output_section::fix_exidx_coverage): Set correct linked section
2112 and entsize in output section header.
2113
11b861d5
DK
21142010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2115
2116 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
2117 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
2118 (Arm_relocate_functions::thm_alu11): New Method.
2119 (Arm_relocate_functions::thm_pc8): New Method.
2120 (Arm_relocate_functions::thm_pc12): New Method.
2121 (Target_arm::Scan::local): Handle the relocations.
2122 (Target_arm::Scan::global): Likewise.
2123 (Target_arm::Relocate::relocate): Likewise.
2124 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
2125
c9a2c125
DK
21262010-01-29 Doug Kwan <dougkwan@google.com>
2127
2128 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
2129 of relocation types as ld.
2130
1521477a
DK
21312010-01-29 Doug Kwan <dougkwan@google.com>
2132
2133 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
2134 to public.
2135 (Arm_relocate_functions::thumb_branch_common): Ditto.
2136 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
2137 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
2138 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
2139 Arm_relocate_functions::jump24): Remove.
2140 (Target_arm::Relocate::relocate): Adjust code to call
2141 Arm_relocation_functions::arm_branch_common and
2142 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 2143 wrappers. Merge switch-cases together to reduce source code size.
1521477a 2144
e7eca48c
DK
21452010-01-29 Doug Kwan <dougkwan@google.com>
2146
2147 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
2148 output_local_symbol_count_needs_update_.
2149 (Arm_relobj::output_local_symbol_count_needs_update,
2150 Arm_relobj::set_output_local_symbol_count_needs_update,
2151 Arm_relobj::update_output_local_symbol_count): New methods.
2152 (Arm_relobj::output_local_symbol_count_needs_update_): New data
2153 member.
2154 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
2155 of pointed function as in a R_ARM_PREL31 relocation.
2156 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
2157 for output local symbol count updating.
2158 (Target_arm::do_relax): Update output local symbol counts in objects
2159 if necessary.
2160 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
2161
02961d7e
ILT
21622010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2163
2164 * arm.cc: Added support for the ARM relocations:
2165 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
2166 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
2167 (Arm_relocate_functions::movw_rel_nc): Renamed (was
2168 movw_prel_nc).
2169 (Arm_relocate_functions::movw_rel): New method.
2170 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
2171 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
2172 thm_movw_prel_nc).
2173 (Arm_relocate_functions::thm_movw_rel): New method.
2174 (Arm_relocate_functions::thm_movt_rel): Renamed (was
2175 thm_movt_prel).
2176 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
2177 relocations.
2178 (Target_arm::Scan::global): Likewise.
2179 (Target_arm::Relocate::relocate): Likewise.
2180 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
2181 Likewise.
2182
b10d2873
ILT
21832010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2184
2185 * arm.cc: Added support for ARM group relocations.
2186 (Target_arm::reloc_needs_sym_origin): New method.
2187 (Arm_relocate_functions::calc_grp_kn): New method.
2188 (Arm_relocate_functions::calc_grp_residual): New method.
2189 (Arm_relocate_functions::calc_grp_gn): New method.
2190 (Arm_relocate_functions::arm_grp_alu): New Method.
2191 (Arm_relocate_functions::arm_grp_ldr): New Method.
2192 (Arm_relocate_functions::arm_grp_ldrs): New Method.
2193 (Arm_relocate_functions::arm_grp_ldc): New Method.
2194 (Target_arm::Scan::local): Handle the ARM group relocations.
2195 (Target_arm::Scan::global): Likewise.
2196 (Target_arm::Relocate::relocate): Likewise.
2197 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
2198 Likewise.
2199
2b328d4e
DK
22002010-01-26 Doug Kwan <dougkwan@google.com>
2201
2202 * arm.cc (set): Include.
2203 (class Arm_exidx_fixup): Change type of last_input_section_ to const
2204 pointer type.
2205 (Arm_output_section::Text_section_list): New type.
2206 (Arm_output_section::append_text_sections_to_list): New method.
2207 (Arm_output_section::fix_exidx_coverage): Ditto.
2208 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
2209 (Arm_relobj::convert_input_section_to_relaxed_section): Use
2210 Relobj::set_section_offset() instead of
2211 Sized_relobj::invalidate_section_offset().
2212 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
2213 parameter for section headers. Ignore relocation sections for
2214 unallocated sections and EXIDX sections.
2215 (Target_arm::fix_exidx_coverage): New method.
2216 (Target_arm::output_section_address_less_than): New type.
2217 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
2218 linked text section instead of the EXIDX section.
2219 (Arm_output_section::create_stub_group): Add an assertion to check
2220 that this is not an EXIDX output section.
2221 (Arm_output_section::append_text_sections_to_list): New method.
2222 (Arm_output_section::fix_exidx_coverage): Ditto.
2223 (Arm_relobj::scan_sections_for_stubs): Adjust call to
2224 Arm_relobj::section_needs_reloc_stub_scanning.
2225 (Target_arm::do_relax): Fix EXIDX output section coverage in the
2226 first pass.
2227 (Target_arm::fix_exidx_coverage): New method.
2228 * object.h (Relobj::set_output_section): New method.
2229 (Sized_relobj::invalidate_section_offset): Remove method.
2230 (Sized_relobj::do_invalidate_section_offset): Remove method.
2231 (Sized_relobj::do_set_section_offset): Handle offset value -1.
2232
c7f3c371
DK
22332010-01-25 Doug Kwan <dougkwan@google.com>
2234
2235 * arm.cc (Arm_exidx_merged_section::do_output_offset):
2236 Fix warning due to signed and unsigned comparison on a 32-bit host.
2237
8923b24c
DK
22382010-01-22 Doug Kwan <dougkwan@google.com>
2239
2240 * arm.cc (Target_arm::do_relax): Record an output section for section
2241 offset adjustment it contains any stub table that has changed.
2242 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
2243 offsets in an output section if necessary.
2244 * output.cc (Output_section::Output_section): Initialize
2245 section_offsets_need_adjustments_.
2246 (Output_section::add_input_section_for_script): Renamed to
2247 Output_section::add_simple_input_section.
2248 (Output_section::save_states): Add a comment.
2249 (Output_section::discard_states): New method defintion.
2250 (Output_section::adjust_section_offsets): Same.
2251 * output.h (Output_section::add_input_section_for_script): Renamed to
2252 Output_section::add_simple_input_section.
2253 (Output_section::discard_states): New method declaration.
2254 (Output_section::adjust_section_offsets): Same.
2255 (Output_section::section_offsets_need_adjustment,
2256 Output_section::set_section_offsets_need_adjustment): New method
2257 definitions.
2258 (Output_section::section_offsets_need_adjustment_): New data member.
2259 * script-sections.cc
2260 (Output_section_element_input::set_section_address): Adjust code for
2261 renaming of Output_section::add_input_section_for_script.
2262 (Orphan_output_section::set_section_address): Same.
2263
9b2fd367
DK
22642010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2265
2266 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
2267 Fix_v4bx enum values .
2268 * gold/options.h (General_options): New option definitions.
2269 (General_options::fix_v4bx): New method.
2270 (General_options::Fix_v4bx): New enum.
2271 * gold/options.cc (General_options::parse_fix_v4bx): New method.
2272 (General_options::parse_fix_v4bx_interworking): New method.
2273
80d0d023
DK
22742010-01-22 Doug Kwan <dougkwan@google.com>
2275
2276 * arm.cc (Arm_exidx_fixup): New class.
2277
af2cdeae
DK
22782010-01-21 Doug Kwan <dougkwan@google.com>
2279
2280 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
2281 classes.
2282 (Arm_exidx_section_offset_map): New type.
2283
993d07c1
DK
22842010-01-21 Doug Kwan <dougkwan@google.com>
2285
2286 * arm.cc (Arm_exidx_input_section): New class.
2287 (Arm_relobj::exidx_input_section_by_link,
2288 Arm_relobj::exidx_input_section_by_shndx,
2289 Arm_relobj::make_exidx_input_section): New methods.
2290 (read_arm_attributes_section): Remove.
2291 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
2292 information about them.
2293 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
2294 to here.
2295
5ac169d4
DK
22962010-01-20 Doug Kwan <dougkwan@google.com>
2297
2298 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
2299 Input_section_specifier to Section_id.
2300 (Target_arm::new_arm_input_section: Adjust code for change of key
2301 type.
2302 (Target_arm::find_arm_input_section): Ditto.
2303 * gc.h (object.h): Include for Section_id nand Section_id_hash.
2304 (Section_id): Remove.
2305 (Garbage_collection::Section_id_hash): Remove.
2306 * icf.h (object.h): Include for Section_id nand Section_id_hash.
2307 (Section_id): Remove.
2308 (Icf::Section_id_hash): Remove.
2309 * object.h (Section_id, Const_section_id, Section_id_hash,
2310 Const_section_id_hash): New type definitions.
2311 * output.cc (Output_section::add_relaxed_input_section): Change to
2312 use Const_section_id instead of Input_section_specifier as key type.
2313 (Output_section::add_merge_input_section): Ditto.
2314 (Output_section::build_relaxation_map): Change to use Section_id
2315 instead of Input_section_specifier as key type.
2316 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
2317 Ditto.
2318 (Output_section::convert_input_sections_to_relaxed_sections): Change
2319 to use Const_section_id instead of Input_section_specifier as key type.
2320 (Output_section::find_merge_section): Ditto.
2321 (Output_section::find_relaxed_input_section): Ditto.
2322 * output.h (Input_section_specifier): Remove class.
2323 (Output_section::Output_section_data_by_input_section_map): Change
2324 key type to Const_section_id.
2325 (Output_section::Output_relaxed_input_section_by_input_section_map):
2326 Ditto.
2327 (Output_section::Relaxation_map): Change key type to Section_id.
2328
a2162063
ILT
23292010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2330
2331 * gold/arm.cc: Added support for R_ARM_V4BX relocation
2332 (class Arm_v4bx_stub): New class.
2333 (DEF_STUBS): Updated definition to support v4_veneer_bx.
2334 (Stub_factory::make_arm_v4bx_stub): New method.
2335 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
2336 (Stub_table::empty): Handle v4bx stubs.
2337 (Stub_table::add_arm_v4bx_stub): New method.
2338 (Stub_table::find_arm_v4bx_stub): New method.
2339 (Arm_relocate_functions::v4bx): New method.
2340 (Target_arm::fix_v4bx): New method.
2341 (Target_arm::Target_arm): Handle R_ARM_V4BX.
2342 (Stub_table::relocate_stubs): Likewise.
2343 (Stub_table::do_write): Likewise.
2344 (Stub_table::update_data_size_and_addralign): Likewise.
2345 (Stub_table::finalize_stubs): Likewise.
2346 (Target_arm::Scan::local): Likewise.
2347 (Target_arm::Scan::global): Likewise.
2348 (Target_arm::do_finalize_sections): Likewise.
2349 (Target_arm::Relocate::relocate): Likewise.
2350 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
2351 Likewise.
2352 (Target_arm::scan_reloc_for_stub): Likewise.
2353 (Target_arm::scan_reloc_section_for_stubs): Likewise.
2354
5696ab0b
ILT
23552010-01-19 Ian Lance Taylor <iant@google.com>
2356
2357 * output.cc (Output_section_headers::do_sized_write): Write large
2358 segment count to sh_info field.
2359 (Output_file_header::do_sized_write): For large segment count,
2360 write PN_XNUM to e_phnum field.
2361
800d0f56
ILT
23622010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2363
2364 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
2365 (Arm_relocate_functions::thm_jump8): New function.
2366 (Arm_relocate_functions::thm_jump11): New function.
2367 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
2368 R_ARM_THM_JUMP11.
2369 (Target_arm::Scan::global): Likewise.
2370 (Target_arm::Relocate::relocate): Likewise.
2371 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
2372 Likewise.
2373
41263c05
DK
23742010-01-14 Doug Kwan <dougkwan@google.com>
2375
2376 * arm.cc (map, utility): Include headers.
2377 (Target_arm::apply_cortex_a8_workaround): New method.
2378 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
2379 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
2380 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
2381 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
2382 the --[no-]fix-cortex-a8 command line options.
2383 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
2384 (Target_arm::relocate_stub): Use addend in instruction template.
2385 * options.h (DEFINE_bool): Set the user-set flag.
2386 (General_options): Add --[no-]-fix-cortex options.
2387 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 2388 : Update fast look-up map after conversion.
41263c05 2389
459e9b03
ST
23902010-01-14 Sriraman Tallam <tmsriram@google.com>
2391
2392 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
2393 in the first pass of do_layout.
2394
b521dfe4
DK
23952010-01-13 Doug Kwan <dougkwan@google.com>
2396
2397 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
2398 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
2399 apparent compiler problem of not folding static constant integral
2400 data members of elfcpp::Elf_sizes<32>.
2401
44272192
DK
24022010-01-13 Doug Kwan <dougkwan@google.com>
2403
2404 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
2405 Arm_relobj::section_needs_cortex_a8_stub_scanning,
2406 Arm_relobj::scan_section_for_cortex_a8_erratum,
2407 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
2408 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
2409 sections to scan for relocation stubs into a new method
2410 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
2411 relocation and Cortex-A8 stub scanning.
2412 (Target_arm::do_relax): Force stubs to be after stubbed sections
2413 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 2414 the beginning of a new relaxation pass. Update a comment.
44272192
DK
2415 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
2416
44b71ece
ILT
24172010-01-12 Ian Lance Taylor <iant@google.com>
2418
2419 * target-reloc.h (visibility_error): New inline function.
2420 (relocate_section): Call visibility_error.
2421 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
2422 (MOSTLYCLEANFILES): Likewise.
2423 (protected_4_pic.o, protected_3.err): New targets.
2424 * testsuite/protected_4.cc: New file.
2425
a120bc7f
DK
24262010-01-12 Doug Kwan <dougkwan@google.com>
2427
2428 * arm.cc (Cortex_a8_reloc): New class.
2429 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
2430 and cortex_a8_relocs_info_.
2431 (Target_arm::fix_cortex_a8): New method definition.
2432 (Target_arm::Cortex_a8_relocs_info): New type.
2433 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
2434 New data member declarations.
2435 (Target_arm::scan_reloc_for_stub): Record information about
2436 relocations for THUMB branches that might be exempted from the
2437 Cortex-A8 workaround.
2438 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
2439 at the beginning of a relaxation pass.
2440
20138696
DK
24412010-01-12 Doug Kwan <dougkwan@google.com>
2442
2443 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
2444 (Arm_relobj::Mapping_symbol_position,
2445 Arm_reloj::Mapping_symbol_position_less,
2446 Arm_relobj::Mapping_symbols_info): New types.
2447 (Target_arm::is_mapping_symbol_name): New method definition.
2448 (Arm_relobj::do_count_local_symbols): Save information about mapping
2449 symbols.
2450
089d69dc
DK
24512010-01-11 Doug Kwan <dougkwan@google.com>
2452
2453 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
2454 Arm_relocate_functions::thumb32_branch_upper,
2455 Arm_relocate_functions::thumb32_branch_lower,
2456 Arm_relocate_functions::thumb32_cond_branch_offset,
2457 Arm_relocate_functions::thumb32_cond_branch_upper,
2458 Arm_relocate_functions::thumb32_cond_branch_lower,
2459 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
2460 branch offset encoding.
2461 (Arm_relocate_functions::thumb_branch_common): Use new branch
2462 offset encoding methods to avoid code duplication.
2463 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
2464 (Stub_addend_reader::operator()): Use new branch encoding method
2465 to avoid code duplication.
2466
99e5bff2
DK
24672010-01-11 Doug Kwan <dougkwan@google.com>
2468
2469 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
2470 (Target_arm::do_finalize_sections): Define special EXIDX section
2471 symbols only if referenced.
2472 * gc.h (Garbage_collection::add_reference): New method.
2473 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
2474 code duplication.
2475
98e090bd
ILT
24762010-01-11 Ian Lance Taylor <iant@google.com>
2477
d0a91bd8
ILT
2478 * script.cc (Version_script_info::build_expression_list_lookup):
2479 Change complaing about duplicate wildcard match from error to
2480 warning.
2481
98e090bd
ILT
2482 * script.cc (class Lazy_demangler): Recreate--revert part of patch
2483 of 2009-12-30.
2484 (Version_script_info::Version_script_info): Initialize globs_,
2485 default_version_, default_is_global_, and exact_. Don't
2486 initialize globals_ or locals_.
2487 (Version_script_info::build_lookup_tables): Build local symbols
2488 first.
2489 (Version_script_info::unquote): New function.
2490 (Version_script_info::add_exact_match): New function.
2491 (Version_script_info::build_expression_list_lookup): Remove lookup
2492 parameter. Add is_global parameter. Change all callers. Handle
2493 wildcard pattern specially. Unquote pattern. Call
2494 add_exact_match.
2495 (Version_script_info::get_name_to_match): New function.
2496 (Version_script_info::get_symbol_version): New function.
2497 (Version_script_info::get_symbol_version_helper): Remove.
2498 (Version_script_info::check_unmatched_names): Call unquote.
2499 * script.h (class Version_script_info): Change get_symbol_version
2500 to be non-inline and add is_global parameter; change all callers.
2501 Rewrite symbol_is_local. Update declarations. Define struct
2502 Version_tree_match, Exact, Globs. Don't define struct Lookup.
2503 Remove globals_ and locals_ members. Add exact_, globs_,
2504 default_version_, is_global_.
2505 (Version_script_info::Glob): Remove pattern, add expression and
2506 is_global. Update constructor. Change all callers.
2507 * dynobj.cc (Versions::finalize): Mark the version symbol as the
2508 default version.
2509 (Versions::symbol_section_contents): If a symbol is undefined, or
2510 defined in a dynamic object, set the version index to
2511 VER_NDX_LOCAL.
2512 * symtab.cc (Symbol_table::add_from_relobj): Don't call
2513 symbol_is_local.
2514 (Symbol_table::add_from_pluginobj): Likewise.
2515 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
2516
d56962d3
DK
25172010-01-11 Doug Kwan <dougkwan@google.com>
2518
2519 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
2520 (incremental_dump_LDADD): Add linking option for libintl.
2521 * Makefile.in: Regenerate.
2522
94e6ee91
L
25232010-01-11 H.J. Lu <hongjiu.lu@intel.com>
2524
2525 PR gold/11144
2526 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
2527 instead of -Ds.
2528 * testsuite/Makefile.in: Regenerated.
2529
e96c574b
DK
25302010-01-10 Doug Kwan <dougkwan@google.com>
2531
2532 * options.h (DEFINE_var): Use parentheses around argument varname__
2533 in macro body to avoid any unintended subsequent substitutions.
2534
7198066b
ILT
25352010-01-10 Ian Lance Taylor <iant@google.com>
2536
ba4d53bf
ILT
2537 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
2538 candidates before doing symbol resolution.
2539
7198066b
ILT
2540 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
2541 ODR candidates if only one is weak.
2542
a2beed37
ILT
25432010-01-08 Ian Lance Taylor <iant@google.com>
2544
2545 * script.cc (Version_script_info::build_expression_list_lookup):
2546 Don't warn about ambiguous version, just record the ambiguity.
2547 (Version_script_info::get_symbol_version_helper): Give error if
2548 version is ambiguous.
2549
2fb7225c
DK
25502010-01-08 Doug Kwan <dougkwan@google.com>
2551
2552 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
2553 prev_data_size_ and prev_addralign_. Remove initializer for
2554 deleted data member has_been_changed_.
2555 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
2556 to determine if the table is empty.
2557 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
2558 Remove.
2559 (Stub_table::add_reloc_stub): Define method in class definition
2560 instead of just declaring it there.
2561 (Stub_table::add_cortex_a8_stub): New method definition.
2562 (Stub_table::update_data_size_and_addralign): Ditto.
2563 (Stub_table::finalize_stubs): Ditto.
2564 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
2565 (Stub_table::do_addralign_): Return address alignment in the
2566 (Stub_table::do_reset_address_and_file_offset): Define method in
2567 class definition instead of declaring it there. Set current data
2568 size to be the data size of the previous pass.
2569 (Stub_table::set_final_data_size): Use current data size as the
2570 final data size.
2571 (Stub_table::relocate_stub): Change parameter type of stub from
2572 Reloc_stub pointer to Stub pointer.
2573 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
2574 (Stub_table::Cortex_a8_stub_list): New typedef.
2575 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
2576 Stub_table::prev_addralign_): New data member.
2577 (Arm_relobj::Arm_relobj): Initialize data member
2578 section_has_cortex_a8_workaround_.
2579 (Arm_relobj::section_has_cortex_a8_workaround,
2580 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
2581 definitions.
2582 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
2583 declarations.
2584 (Target_arm::relocate_stub): Change parameter type of stub from
2585 Reloc_stub pointer to Stub pointer.
2586 (Insn_template::size, Insn_template::alignment): Handle
2587 THUMB16_SPECIAL_TYPE.
2588 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
2589 Stub_table::update_data_size_and_addralign,
2590 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
2591 definitions.
2592 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
2593 (Stub_table::do_write): Ditto.
2594 (Target_arm::do_relax): Adjust code for changes in Stub_table.
2595
880cd20d
ILT
25962010-01-08 Ian Lance Taylor <iant@google.com>
2597
2598 PR 11108
2599 * symtab.h (class Symbol): Remove fields is_target_special_ and
2600 has_plt_offset_. Add field is_defined_in_discarded_section_.
2601 (Symbol::is_defined_in_discarded_section): New function.
2602 (Symbol::set_is_defined_in_discarded_section): New function.
2603 (Symbol::has_plt_offset): Rewrite.
2604 (Symbol::set_plt_offset): Verify that new offset is not -1U.
2605 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
2606 Don't initialize is_target_special_ or has_plt_offset_.
2607 Initialize is_defined_in_discarded_section_.
2608 (Symbol_table::add_from_relobj): If appropriate, set
2609 is_defined_in_discarded_section.
2610 * resolve.cc (Symbol::override_base_with_special): Don't test
2611 is_target_special_. Change has_plt_offset_ to has_plt_offset().
2612 * target-reloc.h (relocate_section): Do special handling for
2613 symbols defined in discarded sections for global symbols as well
2614 as local symbols.
2615
2703e3eb
ILT
26162010-01-08 Ian Lance Taylor <iant@google.com>
2617
2618 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
2619 the SHT_SYMTAB case.
2620
339d40a3
ILT
26212010-01-08 Ian Lance Taylor <iant@google.com>
2622
2623 * object.cc (Sized_relobj::do_layout): Don't get confused if
2624 layout_eh_frame returns NULL.
2625
abecea76
ILT
26262010-01-08 Ian Lance Taylor <iant@google.com>
2627
2628 PR 11084
2629 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
2630 dynamic symbol table, use the normal symbol table.
2631 (Sized_dynobj::do_read_symbols): Remove assertion about type of
2632 symbol table.
2633
6b7dd3f3
ILT
26342010-01-08 Ian Lance Taylor <iant@google.com>
2635
2636 PR 11072
2637 * layout.cc (Layout::include_section): Remove .gnu_debuglink
2638 sections.
2639
36c50e63
L
26402010-01-08 H.J. Lu <hongjiu.lu@intel.com>
2641
2642 * version.cc (print_version): Change to "Copyright 2010".
2643
e291e7b9
ILT
26442010-01-08 Ian Lance Taylor <iant@google.com>
2645
2646 PR 10287
2647 PR 11063
2648 * i386.cc (class Target_i386): Change return type of plt_section
2649 to be non-const.
2650 (class Output_data_plt_i386): Add tls_desc_rel_ field.
2651 (Output_data_plt_i386::Output_data_plt_i386): Initialize
2652 tls_desc_rel_ field.
2653 (Output_data_plt_i386::rel_tls_desc): New function.
2654 (Target_i386::rel_tls_desc_section): New function.
2655 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
2656 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
2657 R_386_TLS_DESC reloc in rel_tls_desc_section.
2658 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
2659 Define struct Tlsdesc_info.
2660 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
2661 (Target_x86_64::do_reloc_symbol_index): New function.
2662 (Target_x86_64::add_tlsdesc_info): New function.
2663 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
2664 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
2665 tlsdesc_rel_ field.
2666 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
2667 all callers.
2668 (Output_data_plt_x86_64::rela_tlsdesc): New function.
2669 (Target_x86_64::rela_tlsdesc_section): New function.
2670 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
2671 handling.
2672 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
2673 (Target_x86_64::do_reloc_addend): New function.
2674 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
2675 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
2676 declarations. Define TARGET_CODE. Add arg field to u1_ union.
2677 (Output_reloc::type): New function.
2678 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
2679 (Output_reloc::is_target_specific): New function.
2680 (Output_reloc::target_arg): New function.
2681 (class Output_reloc) [SHT_RELA]: Add four new constructors for
2682 absolute relocs and target specific relocs.
2683 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
2684 add_target_specific.
2685 (class Output_data_reloc) [SHT_RELA]: Likewise.
2686 * output.cc (Output_reloc::Output_reloc): Add four new versions
2687 for absolute relocs and target specific relocs.
2688 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
2689 (Output_reloc::get_symbol_index): Likewise.
2690 (Output_reloc::local_section_offset): Check that local_sym_index_
2691 is not TARGET_CODE or 0.
2692 (Output_reloc::symbol_value): Likewise.
2693 (Output_reloc::write) [SHT_RELA]: Call target for target specific
2694 reloc.
2695 * target.h (class Target): Add reloc_symbol_index and reloc_addend
2696 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
2697 functions.
2698 * layout.cc (add_target_dynamic_tags): Use output section for
2699 DT_PLTRELSZ and DT_JMPREL.
2700
3a44184e
ILT
27012010-01-07 Ian Lance Taylor <iant@google.com>
2702
2703 PR 11061
2704 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
2705 function.
2706 (class Output_data_reloc_generic): Define.
2707 (class Output_data_reloc_base): Change base class to
2708 Output_data_reloc_generic. Change add() method to call
2709 bump_relative_reloc_count for a relative reloc. Remove
2710 sort_relocs_ field.
2711 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
2712 to sort_relocs().
2713 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
2714 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
2715 appropriate.
2716 * layout.h (class Layout): Update declaration.
2717
ea715a34
ILT
27182010-01-07 Ian Lance Taylor <iant@google.com>
2719
2720 * output.h (class Output_data): Add const version of
2721 output_section and do_output_section.
2722 (class Output_section_data): Add const version of
2723 do_output_section.
2724 (class Output_section): Likewise.
2725 * layout.cc (Layout::add_target_dynamic_tags): New function.
2726 * layout.h (class Layout): Update declarations.
2727 * arm.cc (Target_arm::do_finalize_sections): Use
2728 add_target_dynamic_tags.
2729 * i386.cc (Target_i386::do_finalize_sections): Likewise.
2730 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
2731 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
2732 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
2733
659948a4
ILT
27342010-01-07 Ian Lance Taylor <iant@google.com>
2735
2736 PR 11042
2737 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
2738 object as needed.
2739
9d3b86f6
ILT
27402010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
2741 Ian Lance Taylor <iant@google.com>
2742
2743 PR 11019
2744 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
2745 Xindex::read_symtab_xindex.
2746
bb0d3eb0
DK
27472010-01-07 Doug Kwan <dougkwan@google.com>
2748
2749 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
2750 (Insn_template::thumb16_bcond_insn): New method declaration.
2751 (Insn_template): Fix spelling.
2752 (Stub::thumb16_special): New method declaration.
2753 (Stub::do_write): Define virtual method which was previously pure
2754 virtual.
2755 (Stub::do_thumb16_special): New method declaration.
2756 (Stub::do_fixed_endian_write): New template member.
2757 (Reloc_stub::do_write): Remove.
2758 (Reloc_stub::do_fixed_endian_write): Remove.
2759 (Cortex_a8_stub): New class definition.
2760 (Stub_factory::make_cortex_a8_stub): New method definition.
2761 (Stub_factory::Stub_factory): Add missing static storage class
2762 qualifier for elf32_arm_stub_a8_veneer_blx.
2763
ffeef7df
ILT
27642010-01-07 Ian Lance Taylor <iant@google.com>
2765
dc3f80fe
ILT
2766 PR 10980
2767 * options.h (class General_options): Add --warn-unresolved-symbols
2768 and --error-unresolved-symbols.
2769 * errors.cc (Errors::undefined_symbol): Implement
2770 --warn-unresolved-symbols.
2771
ffeef7df
ILT
2772 * options.h (class General_options): Add -z text and -z textoff.
2773 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
2774
f1ec9ded
ST
27752010-01-06 Sriraman Tallam <tmsriram@google.com>
2776
2777 * gc.h (Garbage_collection::Cident_section_map): New typedef.
2778 (Garbage_collection::cident_sections): New function.
2779 (Garbage_collection::add_cident_section): New function.
2780 (Garbage_collection::cident_sections_): New member.
2781 (gc_process_relocs): Add references to sections whose names are C
2782 identifiers.
2783 * gold.h (cident_section_start_prefix): New constant.
2784 (cident_section_stop_prefix): New constant.
2785 (is_cident): New function.
2786 * layout.cc (Layout::define_section_symbols): Replace string constants
2787 with the newly defined constants.
2788 * object.cc (Sized_relobj::do_layout): Track sections whose names are
2789 C identifiers.
2790 * testsuite/Makefile.am: Add gc_orphan_section_test.
2791 * testsuite/Makefile.in: Regenerate.
2792 * testsuite/gc_orphan_section_test.cc: New file.
2793 * testsuite/gc_orphan_section_test.sh: New file.
2794
6eda8c29
ILT
27952010-01-06 Ian Lance Taylor <iant@google.com>
2796
b9674e17
ILT
2797 PR 10980
2798 * options.h (class General_options): Add --warn-shared-textrel.
2799 * layout.cc (Layout::finish_dynamic_section): Implement
2800 --warn-shared-textrel.
2801
6eda8c29
ILT
2802 PR 10980
2803 * options.h (class General_options): Add --warn-multiple-gp.
2804
32dcd44e
ILT
28052010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2806
2807 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
2808 $(THREADSLIB) and $(LIBDL).
2809 * Makefile.in: Rebuild.
2810
a192ba05
ILT
28112010-01-06 Ian Lance Taylor <iant@google.com>
2812
2813 PR 10980
2814 * options.cc (General_options::parse_section_start): New function.
2815 (General_options::section_start): New function.
2816 (General_options::General_options): Initialize all members.
2817 * options.h: Include <map>
2818 (class General_options): Add --section-start. Add section_starts_
2819 member.
2820 * layout.cc (Layout::attach_allocated_section_to_segment): If
2821 --section-start was used, set the address of the segment. Remove
2822 local sort_sections.
2823 (Layout::relaxation_loop_body): If the address of the load segment
2824 has been set by --section-start, don't use it.
2825 * output.h (Output_segment::update_flags_for_output_section): New
2826 function.
2827 * output.cc (Output_segment::add_output_section): Call
2828 update_flags_for_output_section.
2829
dde3f402
ILT
28302010-01-05 Ian Lance Taylor <iant@google.com>
2831
62dfdd4d
ILT
2832 PR 10980
2833 * options.h (class General_options): Add --undefined-version.
2834 * script.cc (struct Version_expression): Add was_matched_by_symbol
2835 field.
2836 (Version_script_info::matched_symbol): New function.
2837 (Version_script_info::get_symbol_version_helper): Call
2838 matched_symbol.
2839 (Version_script_info::check_unmatched_names): New function.
2840 * script.h (class Version_script_info): Update declarations.
2841 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
2842
9c4ae156
ILT
2843 * options.h (class General_options): Use DEFINE_bool_alias for
2844 allow_multiple_definition.
2845 * resolve.cc (Symbol_table::should_override): Don't test
2846 allow_multiple_definition.
2847
dde3f402
ILT
2848 PR 10980
2849 * options.h (class General_options): Add --cref.
2850 * main.cc (main): Print cref table if --cref. Don't close mapfile
2851 until after printing cref table.
2852 * cref.cc: Include "symtab.h".
2853 (class Cref_inputs): Define Cref_table_compare and Cref_table.
2854 (Cref_table_compare::operator()): New function.
2855 (Cref_inputs::gather_cref): New function.
2856 (filecol): New static const.
2857 (Cref_inputs::print_cref): New function.
2858 (Cref::print_cref): New function.
2859 * cref.h: Include <cstdio>.
2860 (class Cref): Update declarations.
2861 * mapfile.h (Mapfile::file): New function.
2862 * object.h (class Object): Define Symbols. Declare virtual
2863 do_get_global_symbols.
2864 (Object::get_global_symbols): New function.
2865 * object.cc (Input_objects::add_object): Pass object to cref_ if
2866 --cref.
2867 (Input_objects::archive_start): Likewise.
2868 (Input_objects::archive_stop): Likewise.
2869 (Input_objects::print_cref): New function.
2870 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
2871 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
2872 --cref.
2873 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
2874 function.
2875 * plugin.h (class Sized_pluginobj): Update declarations.
2876
8781f709
ILT
28772010-01-05 Ian Lance Taylor <iant@google.com>
2878
2879 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
2880 to is_default_version. Rename insdef to insdefault.
2881 (Symbol_table::add_from_relobj): Rename def to is_default_version
2882 and local to is_forced_local.
2883 (Symbol_table::add_from_pluginobj): Likewise.
2884 (Symbol_table::add_from_dynobj): Likewise.
2885 (Symbol_table::define_special_symbol): Rename insdef to
2886 insdefault.
2887
fe35d28d
ILT
28882010-01-04 Ian Lance Taylor <iant@google.com>
2889
30bc8c46
ILT
2890 PR 10980
2891 * options.h (class General_options): Add
2892 --allow-multiple-definition and -z muldefs.
2893 * resolve.cc (Symbol_table::should_override): Don't warn about a
2894 multiple symbol definition if --allow-multiple-definition or -z
2895 muldefs.
2896
7eaea549
ILT
2897 PR 10980
2898 * options.h (class General_options): Add --add-needed and
2899 --copy-dt-needed-entries. Tweak --as-needed help entry.
2900 * object.cc (Input_objects::check_dynamic_dependencies): Give an
2901 error if --copy-dt-needed-entries aka --add-needed is used and
2902 would cause a change in behaviour.
2903
fe35d28d
ILT
2904 PR 10980
2905 * options.h (class General_options): Add -G as a short version of
2906 --shared. Add no-op options -assert, -g, and -i.
2907
55a2bb35
ST
29082010-01-04 Sriraman Tallam <tmsriram@google.com>
2909
2910 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
2911 check for .text or .gnu.linkonce.t sections.
2912 * icf.cc (Icf::find_identical_sections): Ditto.
2913 Change the detection for mangled function name within the section
2914 name.
2915 * icf.h (is_section_foldable_candidate): New function.
2916
719328e1
ILT
29172009-12-30 Ian Lance Taylor <iant@google.com>
2918
2919 PR 10980
2920 * options.h (class General_options): Permit two dashes with
2921 --retain-symbols-file.
2922
d7bb5745
ILT
29232009-12-30 Ian Lance Taylor <iant@google.com>
2924
403a15dd
ILT
2925 PR 10979
2926 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
2927 don't put the file header and segment headers in the text
2928 segment.
2929
eda294df
ILT
2930 PR 10979
2931 * common.cc (Sort_commons::operator()): Stabilize sort when both
2932 entries are NULL.
2933 (Symbol_table::do_allocate_commons_list): When allocating common
2934 symbols, skip a symbol which is no longer common.
2935 * symtab.h (Symbol::is_common): Test whether the symbol comes from
2936 an object before checking its type.
2937 * testsuite/common_test_2.c: New file.
2938 * testsuite/common_test_3.c: New file.
2939 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
2940 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
2941 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
2942 (common_test_2_pic.o, common_test_2.so): New targets.
2943 (common_test_3_pic.o, common_test_3.so): New targets.
2944 * testsuite/Makefile.in: Rebuild.
2945
d7bb5745
ILT
2946 PR 10979
2947 * script.cc (read_input_script): If we see a new SECTIONS clause,
2948 and we have added an input section, give an error.
2949 * layout.h (class Layout): Add have_added_input_section function.
2950 Add have_added_input_section_ field.
2951 * layout.cc (Layout::Layout): Initialize
2952 have_added_input_section_.
2953 (Layout::layout): Set have_added_input_section_.
2954 (Layout::layout_eh_frame): Likewise.
2955
fc59c572
ILT
29562009-12-30 Ian Lance Taylor <iant@google.com>
2957
2958 PR 10931
2959 * options.h (class General_options): Add --sort-common option.
2960 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
2961 * common.cc (Sort_common): Add sort_order parameter to
2962 constructor. Add sort_order_ field.
2963 (Sort_commons::operator): Check sort_order_.
2964 (Symbol_table::allocate_commons): Determine the sort order.
2965 (Symbol_table::do_allocate_commons): Add sort_order parameter.
2966 Change all callers.
2967 (Symbol_table::do_allocate_commons_list): Likewise.
2968
1c74fab0
ILT
29692009-12-30 Ian Lance Taylor <iant@google.com>
2970
2971 PR 10916
2972 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
2973 symbols from this object, don't change the visibility of an
2974 undefined symbol.
2975 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
2976
6affe781
ILT
29772009-12-30 Ian Lance Taylor <iant@google.com>
2978
2979 PR 10861
2980 * script.h (class Version_script_info): Define Language enum.
2981 Update declarations. Define Glob, Exact, and Lookup types. Add
2982 new fields globals_, locals_, and is_finalized_.
2983 * script.cc: Various formatting fixes.
2984 (class Parser_closure): Change language_stack_ from a vector of
2985 std::string to one of Version_script_info::Language. Adjust all
2986 uses accordingly.
2987 (class Lazy_demangler): Remove.
2988 (struct Version_expression): Change language from std::string to
2989 Version_script_info::Language.
2990 (Version_script_info::Version_script_info): New function.
2991 (Version_script_info::~Version_script_info): Don't call clear.
2992 (Version_script_info::finalize): New function.
2993 (Version_script_info::build_lookup_tables): New function.
2994 (Version_script_info::build_expression_list_lookup): New
2995 function.
2996 (Version_script_info::get_symbol_version_helper): Rewrite to use
2997 lookup tables.
2998 (Version_script_info::print_expression_list): Adjust to use
2999 Version_script_info::Language.
3000 (script_push_lex_into_version_mode): Check that the version script
3001 has not been finalized.
3002 (version_script_push_lang): Change language string to
3003 Version_script_info::Language.
3004 * options.cc (Command_line::version_script): New function.
3005 * options.h (class General_options): Add finalize_dynamic_list
3006 function. Change version_script from declaration to definition.
3007 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
3008 * testsuite/version_script.map: Remove duplicate def of foo.
3009 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
3010 version_script.map.
3011 * testsuite/Makefile.in: Rebuild.
3012
818bf354
ILT
30132009-12-30 Ian Lance Taylor <iant@google.com>
3014
3015 PR 10843
3016 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
3017 if the input symbol index is 0, make the output symbol index 0.
3018
ebcc8304
ILT
30192009-12-30 Ian Lance Taylor <iant@google.com>
3020
3021 PR 10670
3022 * options.h (class General_options): Add -x/--discard-all.
3023 * object.cc (Sized_relobj::do_count_local_symbols): Handle
3024 --discard-all. If the local symbol needs a dynamic entry, check
3025 that before handling --discard-locals.
3026
176fe33f
ILT
30272009-12-30 Ian Lance Taylor <iant@google.com>
3028
bb321bb1
ILT
3029 PR 10450
3030 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
3031 flags to PF_R.
3032 (Output_segment::add_output_section): Don't change the flags if
3033 the type is PT_TLS.
3034
176fe33f
ILT
3035 PR 10450
3036 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
3037 GNU hash table if they need a dynamic value. Otherwise, don't add
3038 them if they are defined in a dynamic object or are forced local.
3039
e8cd95c7
ILT
30402009-12-29 Ian Lance Taylor <iant@google.com>
3041
1b81fb71
ILT
3042 PR 10450
3043 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
3044 .gnu.hash table for a 32-bit target.
3045
8d6d383d
ILT
3046 PR 10450
3047 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
3048 regular and a dynamic object only needs a dynamic symbol table
3049 entry if it is externally visible.
3050
e785ec03
ILT
3051 PR 10450
3052 * i386.cc (class Target_i386): Initialize global_offset_table_ in
3053 constructor. Add global_offset_table_ field.
3054 (Target_i386::got_section): Set global_offset_table_.
3055 (Target_i386::do_finalize_sections): Set global_offset_table_
3056 size.
3057 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
3058 in constructor. Add global_offset_table_ field.
3059 (Target_x86_64::got_section): Set global_offset_table_.
3060 (Target_x86_64::do_finalize_sections): Set global_offset_table_
3061 size.
3062
1a2dff53
ILT
3063 * layout.cc (Layout::Layout): Initialize increase_relro_.
3064 (Layout::get_output_section): Add is_relro, is_last_relro, and
3065 is_first_non_relro parameters. Change all callers.
3066 (Layout::choose_output_section): Likewise.
3067 (Layout::add_output_section_data): Likewise.
3068 (Layout::make_output_section): Likewise.
3069 (Layout::set_segment_offsets): Clear increase_relro when using a
3070 linker script.
3071 * layout.h (class Layout): Add increase_relro method. Add
3072 increase_relro_ field. Update declarations.
3073 * output.cc (Output_section::Output_section): Initialize
3074 is_last_relro_ and is_first_non_relro_.
3075 (Output_segment::add_output_section): Group relro sections is
3076 do_sort is true. Handle is_last_relro and is_first_non_relro.
3077 (Output_segment::maximum_alignment): Remove relro handling.
3078 (Output_segment::set_section_addresses): Add increase_relro
3079 parameter. Change all callers. Add initial alignment to align
3080 relro sections on separate page. Remove old relro handling.
3081 (Output_segment::set_section_list_addresses): Remove in_relro
3082 parameter. Change all callers.
3083 (Output_segment::set_offset): Add increase parameter. Change all
3084 callers. Remove old relro handling.
3085 * output.h (class Output_section): Add new methods: is_last_relro,
3086 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
3087 Add is_last_relro_ and is_first_non_relro_ fields.
3088 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
3089 Create separate .got.plt section. Call increase_relro.
3090 * x86_64.cc (Target_x86_64::got_section): Likewise.
3091 * testsuite/relro_script_test.t: Add .got.plt.
3092
f0ba79e2
ILT
3093 PR 10450
3094 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
3095 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
3096 (Layout::finalize): Call set_dynamic_symbol_size.
3097 (Layout::set_dynamic_symbol_size): New function.
3098 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
3099 set_dynamic_symbol_size.
3100
e8cd95c7
ILT
3101 PR 10450
3102 * output.h (class Output_section): Add is_entsize_zero_ field.
3103 * output.cc (Output_section::Output_section): Initialize
3104 is_entsize_zero_.
3105 (Output_section::set_entsize): If two different entsizes are
3106 requested, force it to zero.
3107 (Output_section::add_input_section): Set flags for .debug_str
3108 before updating section flags. Set entsize.
3109 (Output_section::update_flags_for_input_section): Set SHF_MERGE
3110 and SHF_STRING if all input sections have those flags.
3111
3e1b9a8a
RÁE
31122009-12-29 Rafael Espindola <espindola@google.com>
3113
3114 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
3115 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
3116 reporting.
3e1b9a8a 3117
3dcad376
ST
31182009-12-29 Sriraman Tallam <tmsriram@google.com>
3119
3120 * options.cc (General_options::parse_version): Allow -v to exit
3121 without an error if there is nothing to link.
3122
084e2665
ILT
31232009-12-29 Ian Lance Taylor <iant@google.com>
3124
3125 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
3126 using a version of gcc before 4.1.
3127 * configure: Rebuild.
3128
250acde3
CD
31292009-12-28 Chris Demetriou <cgd@google.com>
3130
3131 * attributes.cc (Output_attributes_section_data::do_write): Use
3132 std::vector::front rather than std::vector::data.
3133
99fff23b
ILT
31342009-12-28 Ian Lance Taylor <iant@google.com>
3135
3136 * symtab.h (class Symbol_table): Add enum Defined.
3137 * resolve.cc (Symbol_table::should_override): Add defined
3138 parameter. Change all callers. Test whether object is NULL
3139 before calling a method on it.
3140 (Symbol_table::report_resolve_problem): Add defined parameter.
3141 Change all callers.
3142 (Symbol_table::should_override_with_special): Likewise.
3143 * symtab.cc (Symbol_table::define_in_output_data): Add defined
3144 parameter. Change all callers.
3145 (Symbol_table::do_define_in_output_data): Likewise.
3146 (Symbol_table::define_in_output_segment): Likewise.
3147 (Symbol_table::do_define_in_output_segment): Likewise.
3148 (Symbol_table::define_as_constant): Likewise.
3149 (Symbol_table::do_define_as_constant): Likewise.
3150 * script.h (class Symbol_assignment): Add is_defsym parameter to
3151 constructor; change all callers.
3152 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
3153 parameter. Change all callers. Add is_defsym_ field.
3154 (class Parser_closure): Add parsing_defsym parameter to
3155 constructor; change all callers. Add parsing_defsym accessor
3156 function. Add parsing_defsym_ field.
3157
556bd683
ILT
31582009-12-28 Ian Lance Taylor <iant@google.com>
3159
3160 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 3161 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 3162
1782c879
ILT
31632009-12-23 Ian Lance Taylor <iant@google.com>
3164
3165 * i386.cc (Target_i386::do_calls_non_split): Recognize
3166 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
3167 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
3168 -fsplit-stack prologue when using %r11.
1782c879 3169
329ca2b1
ST
31702009-12-21 Sriraman Tallam <tmsriram@google.com>
3171
3172 * options.cc (General_options::parse_version): Make -v continue and do
3173 the link like GNU ld does.
3174
d675ff46
RÁE
31752009-12-17 Rafael Avila de Espindola <espindola@google.com>
3176
3177 * Makefile.am (CCFILES): Add timer.cc.
3178 (HFILES): Add timer.h.
3179 * configure.ac: Check for sysconf and times.
3180 * main.cc: include timer.h.
3181 (main): Use Timer instead of get_run_time.
3182 * timer.cc: New.
3183 * timer.h: New.
3184 * workqueue.cc: include timer.h.
3185 (Workqueue::find_and_run_task):
3186 Report user, sys and wall time.
3187 * Makefile.in: Regenerate.
3188 * config.in: Regenerate.
3189 * configure: Regenerate.
3190
d6344fb5
DK
31912009-12-16 Doug Kwan <dougkwan@google.com>
3192
3193 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
3194 sections.
3195 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
3196 relaxed input sections.
3197 * output.cc (Output_section::find_relaxed_input_section): Change
3198 return type to Output_relaxed_input_section pointer. Adjust code
3199 for new type of relaxed_input_section_map_.
3200 * output.h (Output_section::find_relaxed_input_section): Change
3201 return type to Output_relaxed_input_section pointer.
3202 (Output_section::Output_relaxed_input_section_by_input_section_map):
3203 New type.
3204 (Output_section::relaxed_input_section_map_): Change type to
3205 Output_section::Output_relaxed_input_section_by_input_section_map.
3206 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
3207 input section.
3208
0e0d5469
ILT
32092009-12-15 Ian Lance Taylor <iant@google.com>
3210
3211 * layout.cc (Layout::create_shstrtab): Only write out after input
3212 sections if we are compressing debug sections.
3213
0649a889
ILT
32142009-12-15 Ian Lance Taylor <iant@google.com>
3215
3216 * archive.cc (Archive::add_symbols): Only look up a symbol without
3217 a version if there is, in fact, a version.
3218
2ea97941
ILT
32192009-12-14 Ian Lance Taylor <iant@google.com>
3220
3221 Revert -Wshadow changes, all changes from:
3222 2009-12-11 Doug Kwan <dougkwan@google.com>
3223 2009-12-11 Nick Clifton <nickc@redhat.com>
3224 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
3225
b0eec2cc
DK
32262009-12-11 Doug Kwan <dougkwan@google.com>
3227
3228 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
3229 due to -Wshadow.
3230 * attributes.cc (Object_attribute::size): Ditto.
3231 (Attributes_section_data::size): Ditto.
3232 (Attributes_section_data::Attributes_section_data): Ditto.
3233 (Output_attributes_section_data::do_write): Ditto.
3234 * attributes.h (Object_attribute::set_type): Ditto.
3235 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
3236
91d6fa6a
NC
32372009-12-11 Nick Clifton <nickc@redhat.com>
3238
3239 * archive.cc: Fix shadowed variable warnings.
3240 * arm.cc: Likewise.
3241 * compressed_output.cc: Likewise.
3242 * compressed_output.h: Likewise.
3243 * configure: Likewise.
3244 * dwarf_reader.cc: Likewise.
3245 * dynobj.cc: Likewise.
3246 * dynobj.h: Likewise.
3247 * ehframe.cc: Likewise.
3248 * ehframe.h: Likewise.
3249 * errors.cc: Likewise.
3250 * expression.cc: Likewise.
3251 * fileread.cc: Likewise.
3252 * fileread.h: Likewise.
3253 * freebsd.h: Likewise.
3254 * i386.cc: Likewise.
3255 * icf.cc: Likewise.
3256 * incremental.h: Likewise.
3257 * layout.cc: Likewise.
3258 * layout.h: Likewise.
3259 * mapfile.cc: Likewise.
3260 * merge.cc: Likewise.
3261 * merge.h: Likewise.
3262 * object.cc: Likewise.
3263 * object.h: Likewise.
3264 * options.h: Likewise.
3265 * output.cc: Likewise.
3266 * output.h: Likewise.
3267 * parameters.cc: Likewise.
3268 * plugin.cc: Likewise.
3269 * powerpc.cc: Likewise.
3270 * reduced_debug_output.cc: Likewise.
3271 * reduced_debug_output.h: Likewise.
3272 * reloc.cc: Likewise.
3273 * reloc.h: Likewise.
3274 * resolve.cc: Likewise.
3275 * script-sections.cc: Likewise.
3276 * script.cc: Likewise.
3277 * script.h: Likewise.
3278 * sparc.cc: Likewise.
3279 * symtab.cc: Likewise.
3280 * symtab.h: Likewise.
3281 * target-select.cc: Likewise.
3282 * target-select.h: Likewise.
3283 * token.h: Likewise.
3284 * workqueue.cc: Likewise.
3285 * workqueue.h: Likewise.
3286 * x86_64.cc: Likewise.
3287
a0351a69
DK
32882009-12-10 Doug Kwan <dougkwan@google.com>
3289
3290 * arm.cc (attributes.h): New include.
3291 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
3292 (Arm_relobj::~Arm_relobj): Delete object pointed by
3293 attributes_section_data_.
3294 (Arm_relobj::attributes_section_data): New method definition.
3295 (Arm_relobj::attributes_section_data_): New data member declaration.
3296 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
3297 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
3298 attributes_section_data_.
3299 (Arm_dynobj::attributes_section_data): New method definition.
3300 (Arm_dynobj::attributes_section_data_): New data member declaration.
3301 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
3302 initialization value of may_use_blx_ to false.
3303 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
3304 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
3305 object attributes to compute results instead of hard-coding.
3306 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
3307 Target_arm::get_secondary_compatible_arch,
3308 Target_arm::set_secondary_compatible_arch
3309 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
3310 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
3311 New method declarations.
3312 (Target_arm::get_aeabi_object_attribute): New method definition.
3313 (Target_arm::attributes_section_data_): New data member declaration.
3314 (read_arm_attributes_section): New template definition.
3315 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
3316 (Arm_dynobj::do_read_symbols): Ditto.
3317 (Target_arm::do_finalize_sections): Merge attributes sections from
3318 input. Check for BLX use after attributes section merging.
3319 Fix __exidx_start and __exidx_end visibility. Create an
3320 .ARM.attributes section if necessary.
3321 (Target_arm::get_secondary_compatible_arch,
3322 Target_arm::set_secondary_compatible_arch,
3323 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
3324 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 3325 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
3326 New method definitions.
3327
b59befec
ILT
33282009-12-09 Ian Lance Taylor <iant@google.com>
3329
3330 * plugin.cc (Plugin::load): Don't cast from void* to a function
3331 pointer.
3332
1276bc89
ILT
33332009-12-09 Ian Lance Taylor <iant@google.com>
3334
3335 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
3336 information fields.
3337
2f2de248
L
33382009-12-09 H.J. Lu <hongjiu.lu@intel.com>
3339
3340 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
3341 Replace two_file_shared_1.so with two_file_shared_2.so.
3342 * testsuite/Makefile.in: Regenerated.
3343
4f787271
DK
33442009-12-08 Doug Kwan <dougkwan@google.com>
3345
3346 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
3347 (HFILES): Add attributes.h and int_encoding.h.
3348 * Makefile.in: Regenerate.
3349 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
3350 function definitions to int_encoding.cc
3351 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
3352 prototypes to int_encoding.h
3353 * reduced_debug_output.cc (int_encoding.h): New include.
3354 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
3355 function definitions to int_encoding.cc
3356 (insert_into_vector, read_from_pointer): Move template definitions to
3357 int_encoding.h
3358 * attributes.cc: New file.
3359 * attributes.h: New file.
3360 * int_encoding.cc: New file.
3361 * int_encoding.h: New file.
3362
20b52f1a
RÁE
33632009-12-07 Rafael Avila de Espindola <espindola@google.com>
3364
3365 PR gold/11055
3366 * incremental-dump.cc (dump_incremental_inputs): New.
3367 (main): Use dump_incremental_inputs.
3368
53d7974c
L
33692009-12-07 H.J. Lu <hongjiu.lu@intel.com>
3370
3371 PR gold/10893
3372 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
3373 checking elfcpp::STT_FUNC.
3374 (Target_i386::Relocate::relocate): Likewise.
3375 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
3376
3377 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
3378 symbols from shared libraries into normal FUNC symbols.
3379
3380 * symtab.h (Symbol): Add is_func and use it.
3381
05a352e6
DK
33822009-12-05 Doug Kwan <dougkwan@google.com>
3383
3384 * arm.cc (Target_arm::arm_info): Initialize new fields
3385 attributes_section and attributes_vendor.
3386 * i386.cc (Target_i386::i386_info): Same.
3387 * object.cc (Sized_relobj::do_layout): Skip attribute section.
3388 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
3389 fields attributes_section and attributes_vendor.
53d7974c 3390 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
3391 * target.h (Target::attributes_section, Target::attributes_vendor,
3392 Target::is_attributes_section, Target::attribute_arg_type,
3393 Target::attributes_order): New method definitions.
3394 (Target::Target_info::attributes_section,
3395 Target::Target_info::attributes_vendor): New fields.
3396 (Target::do_attribute_arg_type, Target::do_attributes_order): New
3397 virtual method definitions.
3398 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
3399 attributes_section and attributes_vendor.
3400 * testsuite/testfile.cc (Target_test::test_target_info): Same.
3401
f4e5969c
DK
34022009-12-05 Doug Kwan <dougkwan@google.com>
3403
3404 * arm.cc: Update comments about interworking and stub generation.
3405 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
3406 considered as non-PIC.
3407 (Arm_relocate_functions::base_abs): Fix formatting.
3408 (Arm_relocate_functions::got_prel): Fix comment. Change interface
3409 of function to use GOT entry address instead of offset.
3410 (Target_arm::Scan::global): Issue an error if a symbol would need a
3411 PLT does not get one because it is untyped. Remove code to create
3412 dynamic symbols for relative branches.
3413 (Target_arm::Relocate::relocate: Use 0 instead of false since function
3414 takes unsigned integer instead of boolean.
3415
1abce4a6
L
34162009-12-05 H.J. Lu <hongjiu.lu@intel.com>
3417
3418 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
3419 (two_file_test_LDADD): Likewise.
3420 (common_test_1_LDADD): Likewise.
3421 (exception_test_LDADD) Likewise.
3422 (weak_test_LDADD): Likewise.
3423 (many_sections_test_LDADD): Likewise.
3424 (initpri1_LDADD): Likewise.
3425 (script_test_1_LDADD): Likewise.
3426 (script_test_2_LDADD): Likewise.
3427 (justsyms_LDADD): Likewise.
3428 (binary_test_LDADD): Likewise.
3429 (large_LDADD): Likewise.
3430 * testsuite/Makefile.in: Regenerated.
3431
adcf2816 34322009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 3433
adcf2816
L
3434 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
3435 (Symbol_table::override_with_special): Likewise.
3436 (Symbol_table::add_from_object): Likewise.
3437
28e67f5d
RÁE
34382009-12-04 Rafael Avila de Espindola <espindola@google.com>
3439
3440 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
3441 Don't set the data_offset twice.
3442
ae10a101
RÁE
34432009-12-04 Rafael Avila de Espindola <espindola@google.com>
3444
3445 * testsuite/Makefile.in: Regenerate.
3446
f59f41f3
DK
34472009-12-03 Doug Kwan <dougkwan@google.com>
3448
3449 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
3450 (Target_arm::do_finalize_sections): Add parameter for symbol table
3451 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
3452 * i386.cc (Target_i386::do_finalize_sections): Add an additional
3453 parameter for symbol table pointer.
3454 * layout.cc (Layout::finalize): Call Target::finalize_sections with
3455 an additional parameter for a pointer to symbol table.
3456 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
3457 parameter for a symbol table pointer.
3458 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
3459 * target.h (Target::finalize_sections, Target::do_finalize_sections):
3460 Ditto.
3461 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
3462 parameter for a symbol table pointer.
3463
ca55d848
RÁE
34642009-12-03 Rafael Avila de Espindola <espindola@google.com>
3465
3466 * incremental.cc (Incremental_inputs_header)
3467 (Incremental_inputs_header_write, Incremental_inputs_entry)
3468 (Incremental_inputs_entry_write): Move ...
3469 * incremental.h (Incremental_inputs_header)
3470 (Incremental_inputs_header_write, Incremental_inputs_entry)
3471 (Incremental_inputs_entry_write): here.
3472
3aec4f9c
RÁE
34732009-12-02 Rafael Avila de Espindola <espindola@google.com>
3474
3475 * incremental.cc (make_sized_incremental_binary): Set the target.
3476 Error if it is incompatible.
3477 * output.h (Output_file): Add filename method.
3478
9c0ae74d
RÁE
34792009-12-02 Rafael Avila de Espindola <espindola@google.com>
3480
3481 * incremental.cc (Incremental_inputs_entry): Remove unused argument
3482 from the get_* methods.
3483
a45500ae
RÁE
34842009-12-02 Rafael Avila de Espindola <espindola@google.com>
3485
3486 * incremental-dump.cc (main): Check that the offeset of a script is 0.
3487 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
3488 Write 0 for the data_offset of scripts.
3489
325e6408
RÁE
34902009-12-02 Rafael Avila de Espindola <espindola@google.com>
3491
3492 * testsuite/Makefile.am: Add the incremental_test.sh test.
3493 * testsuite/incremental_test.sh: New.
3494 * testsuite/incremental_test_1.c: New.
3495 * testsuite/incremental_test_2.c: New.
3496
954c3e2e
RÁE
34972009-12-01 Rafael Avila de Espindola <espindola@google.com>
3498
3499 * incremental-dump.cc (main): Fix typos.
3500
f8086623
RÁE
35012009-11-27 Rafael Avila de Espindola <espindola@google.com>
3502
3503 PR gold/11025
3504 * incremental-dump.cc (main): Use llu to print 64 bit values.
3505
3b0dd6ac
L
35062009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
3507 H.J. Lu <hongjiu.lu@intel.com>
3508
3509 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
3510 $(LIBDL).
3511 (incremental_dump_LDADD): Likewise.
3512 * Makefile.in: Regenerated.
3513
a6d1ef57 35142009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 3515
a6d1ef57
DK
3516 Revert:
3517
3518 2009-11-25 Doug Kwan <dougkwan@google.com>
3519
3520 * arm.cc (Target_arm::Target_arm): Move method definition
3521 outside of class definition. Add code to handle
3522 --target1-rel, --target1-abs and --target2= options.
3523 (Target_arm::get_reloc_reloc_type): Change method to be
3524 non-static and const.
3525 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
3526 New data member declaration.
3527 (Target_arm::Scan::local, Target_arm::Scan::global,
3528 Target_arm::Relocate::relocate,
3529 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
3530 Adjust call to Target_arm::get_real_reloc_type.
3531 (Target_arm::get_real_reloc_type): Use command line options
3532 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
3533 * options.h (--target1-rel, --target1-abs, --target2): New
3534 ARM-only options.
3535
50aeb7d4
DK
35362009-11-25 Doug Kwan <dougkwan@google.com>
3537
3538 * arm.cc (Target_arm::Target_arm): Move method definition outside of
3539 class definition. Add code to handle --target1-rel, --target1-abs
3540 and --target2= options.
3541 (Target_arm::get_reloc_reloc_type): Change method to be non-static
3542 and const.
3543 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
3544 member declaration.
3545 (Target_arm::Scan::local, Target_arm::Scan::global,
3546 Target_arm::Relocate::relocate,
3547 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
3548 call to Target_arm::get_real_reloc_type.
3549 (Target_arm::get_real_reloc_type): Use command line options to
3550 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
3551 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
3552 options.
3553
51938283
DK
35542009-11-25 Doug Kwan <dougkwan@google.com>
3555
3556 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
3557 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
3558 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
3559 formatting.
3560 (Arm_relocate_functions::thm_call): Replace body with a call to
3561 Arm_relocate_functions::thumb_branch_common.
3562 (Arm_relocate_functions::thm_jump24,
3563 Arm_relocate_functions::thm_xpc22): New method definitions.
3564 (Arm_relocate_functions::thumb_branch_common): New method definition.
3565 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
3566 operator.
3567 (Target_arm::Relocate::relocate): Adjust call to thm_call.
3568 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
3569
e2b8f3c4
RÁE
35702009-11-24 Rafael Avila de Espindola <espindola@google.com>
3571
3572 * Makefile.am: Build incremental-dump
3573 * Makefile.in: Regenerate.
3574 * incremental-dump.cc: New.
3575 * incremental.cc (Incremental_inputs_header_data,
3576 Incremental_inputs_entry_data): Move to incremental.h
3577 * incremental.h: (Incremental_inputs_header_data,
3578 Incremental_inputs_entry_data): Move from incremental.cc
3579
bcba9aec
RÁE
35802009-11-24 Rafael Avila de Espindola <espindola@google.com>
3581
3582 * incremental.cc (Incremental_inputs_header,
3583 Incremental_inputs_header_write, Incremental_inputs_entry,
3584 Incremental_inputs_entry_write): Add a typedef with the data type.
3585
7c3afe08
RÁE
35862009-11-24 Rafael Avila de Espindola <espindola@google.com>
3587
3588 * incremental.cc (Incremental_inputs_header,
3589 Incremental_inputs_header_write, Incremental_inputs_entry,
3590 Incremental_inputs_entry_write): Update comment about which
3591 type has the filed descriptions.
3592
d204b6e9
DK
35932009-11-15 Doug Kwan <dougkwan@google.com>
3594
3595 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
3596 (Arm_relocate_functions::arm_branch_common): Change method defintion
3597 in class definition to a method declaration and update list of formal
3598 parameters.
3599 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
3600 Arm_relocation_functions::jump24): Adjust call to
3601 Arm_relocate_functions::arm_branch_common. Update list of formal
3602 parameters.
3603 (Arm_relocate_functions::xpc25): New method definition.
3604 (Arm_relocate_functions::arm_branch_common): Move method defintion
3605 out from class definition. Use stubs for mode-switching and extending
3606 branch ranges.
3607 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
3608 specially. Change code to enable use of stubs in ARM branches.
3609
43d12afe
DK
36102009-11-10 Doug Kwan <dougkwan@google.com>
3611
3612 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
3613 in method declaration.
3614 (Target_arm::relocate_stub): New method declaration.
3615 (Target_arm::default_target): Change to return a pointer instead of
3616 a const reference.
3617 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
3618 Target_arm::default_target.
3619 (Arm_Relobj::do_relocate_sections): Remove options paramater in
3620 method definition.
3621 (Target_arm::relocate_section): Adjust view.
3622 (Target_arm::relocate_stub): New method definition.
3623
ac33a407
DK
36242009-11-10 Doug Kwan <dougkwan@google.com>
3625
3626 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
3627 a format warning.
3628 * incremental.cc (open_incremental_binary): Initialized local
3629 variables to avoid warnings.
3630 * object.cc (make_elf_object): Ditto.
3631 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
3632 a format warning.
e1df38aa 3633
88ee28e9
L
3634009-11-09 H.J. Lu <hongjiu.lu@intel.com>
3635
3636 PR gold/10930
3637 * testsuite/plugin_test.c: Include "config.h".
3638
2daedcd6
DK
36392009-11-09 Doug Kwan <dougkwan@google.com>
3640
3641 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
3642 (arm_symbol_value): Remove.
3643 (Arm_relocate_functions::arm_branch_common,
3644 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
3645 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
3646 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
3647 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
3648 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
3649 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
3650 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
3651 Arm_relocate_functions::thm_mobw_abs_nc,
3652 Arm_relocate_functions::thm_mov_abs,
3653 Arm_relocate_functions::movw_prel_nc,
3654 Arm_relocate_functions::thm_movt_abs,
3655 Arm_relocate_functions::movt_prel,
3656 Arm_relocate_functions::thm_movw_prel_nc,
3657 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
3658 (Target_arm::Relocate::relocate): Only decompose address into two
3659 parts if relocation type uses the thumb-bit and pass the actual
3660 bit instead of a flag indicating that the thumb-bit is used. Adjust
3661 calls to methods in Arm_relocate_functions for this change.
3662
1276bc89 36632009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
3664
3665 PR 10925
3666 * reloc.cc: Instantiate
3667 Sized_relobj::initialize_input_to_output_maps and
3668 Sized_relobj:free_input_to_output_maps.
3669
e53ad1b5
ILT
36702009-11-06 Ian Lance Taylor <iant@google.com>
3671
3672 PR 10876
3673 * defstd.cc (in_segment): Set only_if_ref true for "end".
3674
eb44217c
DK
36752009-11-06 Doug Kwan <dougkwan@google.com>
3676
3677 * arm.cc (class Reloc_stub): Correct a comment.
3678 (Target_arm::Target_arm): Initialize arm_input_section_map_.
3679 (Target_arm::scan_section_for_stubs): New method declaration.
3680 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
3681 Change methods from private to protected.
3682 (Target_arm::do_may_relax): New method definition.
3683 (Target_arm::do_relax, Target_arm::group_sections,
3684 Target_arm::scan_reloc_for_stub,
3685 Target_arm::scan_reloc_section_for_stubs): New method declarations.
3686 (Target_arm::arm_input_section_map_): New data member declaration.
3687 (Target_arm::scan_reloc_for_stub,
3688 Target_arm::scan_reloc_section_for_stubs,
3689 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
3690 Target_arm::do_relax): New method definitions.
3691
5d329b7d
ILT
36922009-11-06 Mikolaj Zalewski <mikolaj@google.com>
3693
3694 * configure.ac: Check for (struct stat)::st_mtim
3695 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
3696 * config.in: Regenerate.
3697 * configure: Regenerate.
3698
96a0d71b
ILT
36992009-11-05 Ian Lance Taylor <iant@google.com>
3700
3701 PR 10910
3702 * output.cc (Output_segment::add_output_section): Add missing
3703 return statement.
3704
594c8e5e
ILT
37052009-11-04 Ian Lance Taylor <iant@google.com>
3706
3707 PR 10880
3708 * object.h (class Object): Add is_needed and set_is_needed
3709 methods. Add is_needed_ field. Make bool fields into bitfields.
3710 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
3711 defined in a dynamic object and referenced by a regular object,
3712 set is_needed for the dynamic object.
3713 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
3714 if the file is marked with as_needed and it is not needed.
3715
22b127cc
ILT
37162009-11-04 Ian Lance Taylor <iant@google.com>
3717
3718 PR 10887
3719 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
3720 tags if data is discarded by linker script.
3721 * i386.cc (Target_i386::do_finalize_sections): Likewise.
3722 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
3723 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
3724 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
3725
f5c870d2
ILT
37262009-11-04 Ian Lance Taylor <iant@google.com>
3727
3728 * layout.cc (Layout::get_output_section): Add is_interp and
3729 is_dynamic_linker_section parameters. Change all callers.
3730 (Layout::choose_output_section): Likewise.
3731 (Layout::make_output_section): Likewise.
3732 (Layout::add_output_section_data): Add is_dynamic_linker_section
3733 parameter. Change all callers.
3734 * layout.h (class Layout): Update declarations.
3735 * output.h (class Output_section): Add is_interp, set_is_interp,
3736 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
3737 Add is_interp_, is_dynamic_linker_section_ fields. Change
3738 generate_code_fills_at_write_ to a bitfield.
3739 * output.cc (Output_section::Output_sections): Initialize new
3740 fields.
3741 (Output_segment::add_output_section): Add do_sort parameter.
3742 Change all callers.
3743
1ae4d23b
ILT
37442009-11-03 Ian Lance Taylor <iant@google.com>
3745
3746 PR 10860
3747 * options.h (class General_options): Add --warn-common.
3748 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
3749 merging two common symbols.
3750 (Symbol_table::should_override): Handle --warn-common when merging
3751 a common symbol with a defined symbol. Use report_resolve_problem
3752 for multiple definitions.
3753 (Symbol_table::report_resolve_problem): New function.
3754 * symtab.h (class Symbol_table): Declare report_resolve_problem.
3755
55da9579
DK
37562009-11-03 Doug Kwan <dougkwan@google.com>
3757
3758 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
3759 stub_factory_.
3760 (Target_arm::stub_factory): New method definition.
3761 (Target_arm::new_arm_input_section,
3762 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
3763 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 3764 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
3765 New type definitions.
3766 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
3767 member declarations.
3768 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
3769 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
3770 New method definitions.
3771
37a9ac43
ILT
37722009-11-03 Ian Lance Taylor <iant@google.com>
3773
3774 * options.h (class General_options): Add --warn_constructors.
3775
b3d6a3d4
ILT
37762009-11-03 Ian Lance Taylor <iant@google.com>
3777
3778 PR 10893
3779 * defstd.cc (in_section): Add entries for __rel_iplt_start,
3780 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
3781
934b01dd
ILT
37822009-11-03 Ian Lance Taylor <iant@google.com>
3783
3784 PR 10895
3785 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
3786 --msgid-bugs-address.
3787 (install-pdf): New target.
3788 (install-data_yes): Look up one directory to find mkinstalldirs.
3789
03c1939b
L
37902009-11-03 H.J. Lu <hongjiu.lu@intel.com>
3791
3792 * po/Make-in (.po.gmo): Don't generate .gmo files in source
3793 tree.
3794
ebd95253
DK
37952009-10-30 Doug Kwan <dougkwan@google.com>
3796
3797 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
3798
e9bbb538
DK
37992009-10-30 Doug Kwan <dougkwan@google.com>
3800
3801 * arm.cc (Stub_addend_reader): New struct template definition
3802 and partial specializations.
3803 (Stub_addend_reader::operator()): New method definition for a
3804 partially specialized template.
3805
d5b40221
DK
38062009-10-30 Doug Kwan <dougkwan@google.com>
3807
3808 * arm.cc (Arm_relobj::processor_specific_flags): New method
3809 definition.
3810 (Arm_relobj::do_read_symbols): New method declaration.
3811 (Arm_relobj::processor_specific_flags_): New data member declaration.
3812 (Arm_dynobj): New class definition.
3813 (Target_arm::do_finalize_sections): Add input_objects parameter.
3814 (Target_arm::do_adjust_elf_header): New method declaration.
3815 (Target_arm::are_eabi_versions_compatible,
3816 (Target_arm::merge_processor_specific_flags): New method declaration.
3817 (Target_arm::do_make_elf_object): New overloaded method definitions
3818 and declaration.
3819 (Arm_relobj::do_read_symbols): New method definition.
3820 (Arm_dynobj::do_read_symbols): Ditto.
3821 (Target_arm::do_finalize_sections): Add input_objects parameters.
3822 Merge processor-specific flags from all input objects.
3823 (Target_arm::are_eabi_versions_compatible,
3824 Target_arm::merge_processor_specific_flags,
3825 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
3826 New method definitions.
3827 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
3828 Input_objects pointer type parameter.
3829 * layout.cc (Layout::finalize): Pass input objects to target's.
3830 finalize_sections function.
3831 * output.cc (Output_file_header::do_sized_write): Set ELF file
3832 header's processor-specific flags.
3833 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
3834 Input_objects pointer type parameter.
3835 * sparc.cc (Target_sparc::do_finalize_sections): Same.
3836 * target.h (Input_objects): New forward class declaration.
3837 (Target::processor_specific_flags,
3838 Target::are_processor_specific_flags_sect): New method definitions.
3839 (Target::finalize_sections): Add input_objects parameter.
3840 (Target::Target): Initialize processor_specific_flags_ and
3841 are_processor_specific_flags_set_.
3842 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
3843 parameter.
3844 (Target::set_processor_specific_flags): New method definition.
3845 (Target::processor_specific_flags_,
3846 Target::are_processor_specific_flags_set_): New data member
3847 declarations.
3848 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
3849 Input_objects pointer type parameter.
3850
ebabffbd
DK
38512009-10-30 Doug Kwan <dougkwan@google.com>
3852
3853 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
3854
ad0f2072
ILT
38552009-10-28 Ian Lance Taylor <iant@google.com>
3856
3857 * object.h (class Relobj): Drop options parameter from
3858 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
3859 do_scan_relocs, do_relocate. Change all callers.
3860 (class Sized_relobj): Drop options parameters from
3861 do_gc_process_relocs, do_scan_relocs, do_relocate,
3862 do_relocate_sections, relocate_sections, emit_relocs_scan,
3863 emit_relocs_scan_reltype. Change all callers.
3864 (struct Relocate_info): Remove options field and all references to
3865 it.
3866 * reloc.h (class Read_relocs): Remove options constructor
3867 parameter and options_ field. Change all callers.
3868 (class Gc_process_relocs, class Scan_relocs): Likewise.
3869 (class Relocate_task): Likewise.
3870 * target-reloc.h (scan_relocs): Remove options parameter. Change
3871 all callers.
3872 (scan_relocatable_relocs): Likewise.
3873 * target.h (class Sized_target): Remove options parameter from
3874 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
3875 all callers.
3876 * gc.h (gc_process_relocs): Remove options parameter. Change all
3877 callers.
3878 * arm.cc: Update functions to remove options parameters.
3879 * i386.cc: Likewise.
3880 * powerpc.cc: Likewise.
3881 * sparc.cc: Likewise.
3882 * x86_64.cc: Likewise.
3883 * testsuite/testfile.cc: Likewise.
3884
8ffa3667
DK
38852009-10-28 Doug Kwan <dougkwan@google.com>
3886
3887 * arm.cc (Arm_relobj): New class definition.
e1df38aa 3888 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
3889 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
3890 New method definitions.
3891
40f36857
CC
38922009-10-28 Cary Coutant <ccoutant@google.com>
3893
3894 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
3895 (Plugin::cleanup_done_): New member.
3896 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
3897 (Plugin_manager::cleanup_done_): Remove.
3898 (Plugin_manager::add_input_file): Edit error message.
3899 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
3900 (Plugin_manager::cleanup): Remove use of cleanup_done_.
3901
2c849493
ILT
39022009-10-27 Mikolaj Zalewski <mikolajz@google.com>
3903
3904 * fileread.cc: (File_read::View::~View): Use the new
3905 data_ownership_ filed.
3906 (File_read::~File_read): Dispose the new whole_file_view_.
3907 (File_read::open): Mmap the whole file if needed.
3908 (File_read::open): Use whole_file_view_ instead of contents_.
3909 (File_read::find_view): Use whole_file_view_ if applicable.
3910 (File_read::do_read): Use whole_file_view_ instead of contents_.
3911 (File_read::make_view): Use whole_file_view_ instead of contents_,
3912 update File_read::View::View call.
3913 (File_read::find_or_make_view): Update File_read::View::View
3914 call.
3915 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
3916 remove contents_
3917 (File_read::View::Data_ownership): New enum.
3918 (File_read::View::View): Replace bool mapped_ with Data_ownership
3919 argument.
3920 (File_read::View::mapped_): Remove (replaced by data_ownership_).
3921 (File_read::View::data_ownership_): New field.
3922 (File_read::contents_): Remove (replaced by whole_file_view_).
3923 (File_read::whole_file_view_): New field.
3924 * options.h (class General_options): Add --keep-files-mapped.
3925
24998053
CC
39262009-10-27 Cary Coutant <ccoutant@google.com>
3927
3928 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
3929 * testsuite/Makefile.am (plugin_test_5): New test case.
3930 * testsuite/Makefile.in: Regenerate.
3931
72adc4fa
DK
39322009-10-25 Doug Kwan <dougkwan@google.com>
3933
3934 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
3935 from private to protected to allow access by child class.
3936 (Sized_relobj::do_relocate_sections): New method declaration.
3937 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 3938 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
3939 Sized_relobj::relocate_sections. Instantiate template explicitly
3940 for different target sizes and endianity.
3941
07f508a2
DK
39422009-10-24 Doug Kwan <dougkwan@google.com>
3943
3944 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
3945 (Arm_input_section::as_arm_input_section): New method.
3946 (Arm_output_section): New class definition.
3947 (Arm_output_section::create_stub_group,
3948 Arm_output_section::group_sections): New method definitions.
3949
10ad9fe5
DK
39502009-10-22 Doug Kwan <dougkwan@google.com>
3951
3952 * arm.cc (Arm_input_section): New class definition.
3953 (Arm_input_section::init, Arm_input_section:do_write,
3954 Arm_input_section::set_final_data_size,
3955 Arm_input_section::do_reset_address_and_file_offset): New method
3956 definitions.
3957
56ee5e00
DK
39582009-10-21 Doug Kwan <dougkwan@google.com>
3959
3960 * arm.cc (Stub_table, Arm_input_section): New forward class
3961 declarations.
3962 (Stub_table): New class defintion.
3963 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
3964 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
3965 New method definition.
3966
b569affa
DK
39672009-10-21 Doug Kwan <dougkwan@google.com>
3968
3969 * arm.cc: Update copyright comments.
3970 (Target_arm): New forward class template declaration.
3971 (Arm_address): New type.
3972 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
3973 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
3974 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
3975 constants.
3976 (Insn_template): Same.
3977 (DEF_STUBS): New macro.
3978 (Stub_type): New enum type.
3979 (Stub_template): New class definition.
3980 (Stub): Same.
3981 (Reloc_stub): Same.
3982 (Stub_factory): Same.
3983 (Target_arm::Target_arm): Initialize may_use_blx_ and
3984 should_force_pic_veneer_.
3985 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
3986 Target_arm::should_force_pic_veneer,
3987 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
3988 Target_arm::using_thumb_only, Target_arm:;default_target): New
3989 method defintions.
3990 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
3991 New data member declarations.
3992 (Insn_template::size, Insn_template::alignment): New method defintions.
3993 (Stub_template::Stub_template): New method definition.
3994 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
3995 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
3996 (Stub_factory::Stub_factory): New method definition.
3997 * gold.h (string_hash): New template.
3998 * output.h (Input_section_specifier::hash_value): Use
3999 gold::string_hash.
4000 (Input_section_specifier::string_hash): Remove.
4001 * stringpool.cc (Stringpool_template::string_hash): Use
4002 gold::string_hash.
4003
6c172549
DK
40042009-10-20 Doug Kwan <dougkwan@google.com>
4005
4006 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
4007 symbols of relaxed input sections.
4008 * output.h (Output_section::find_relaxed_input_section): Make
4009 method public.
4010
c5617f2f
DK
40112009-10-16 Doug Kwan <dougkwan@google.com>
4012
4013 * dynobj.cc (Versions::Versions): Initialize version_script_.
4014 Only insert base version symbol definition for a shared object
4015 if version script defines any version versions.
4016 (Versions::define_base_version): New method definition.
4017 (Versions::add_def): Check that base version is not needed.
4018 (Versions::add_need): Define base version lazily.
4019 * dynobj.h (Versions::define_base_version): New method declaration.
4020 (Versions::needs_base_version_): New data member declaration.
4021 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
4022 (check_DATA): Add no_version_test.stdout.
4023 (libno_version_test.so, no_version_test.o no_version_test.stdout):
4024 New make rules.
4025 * testsuite/Makefile.in: Regenerate.
4026 * testsuite/no_version_test.c: New file.
4027 * testsuite/no_version_test.sh: Ditto.
4028
3c12dcdb
DK
40292009-10-16 Doug Kwan <dougkwan@google.com>
4030
4031 * expression.cc (class Segment_start_expression): New class definition.
4032 (Segment_start_expression::value): New method definition.
4033 (script_exp_function_segment_start): Return a new
4034 Segment_start_expression.
4035 * gold/script-c.h (script_saw_segment_start_expression): New function
4036 prototype.
4037 * script-sections.cc (Script_sections::Script_sections): Initialize
4038 SAW_SEGMENT_START_EXPRESSION_ to false.
4039 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
4040 and -Tbbs options to specify section addresses if given in
4041 command line and no SEGMENT_START expression is seen in a script.
4042 * script-sections.h (Script_sections::saw_segment_start_expression,
4043 Script_sections::set_saw_segment_start_expression): New method
4044 definition.
4045 (Script_sections::saw_segment_start_expression_): New data member
4046 declaration.
4047 * script.cc (script_saw_segment_start_expression): New function.
4048 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
4049 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
4050 script_test_7.sh and script_test_8.sh.
4051 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
4052 script_test_8.stdout.
4053 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
4054 (script_test_6, script_test_6.stdout, script_test_7,
4055 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
4056 * Makefile.in: Regenerate.
4057 * testsuite/script_test_6.sh: New file.
4058 * testsuite/script_test_6.t: Same.
4059 * testsuite/script_test_7.sh: Same.
4060 * testsuite/script_test_7.t: Same.
4061 * testsuite/script_test_8.sh: Same.
4062
64b1ae37
DK
40632009-10-16 Doug Kwan <dougkwan@google.com>
4064
4065 * output.cc (Output_segment::set_section_list_address): Cast
4066 expressions to unsigned long long type to avoid format warnings.
4067
661be1e2
ILT
40682009-10-15 Ian Lance Taylor <iant@google.com>
4069
12edd763 4070 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 4071 dot assignment to script_sections_.
12edd763
ILT
4072 * script-sections.cc (Script_sections::add_dot_assignment):
4073 Initialize if necessary.
4074
68b6574b
ILT
4075 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
4076 program headers with no load segment if there is a linker script.
4077
661be1e2
ILT
4078 * layout.cc (Layout::set_segment_offsets): Align the file offset
4079 to the segment aligment for -N or -n with no load segment.
4080 * output.cc (Output_segment::add_output_section): Don't crash if
4081 the first section is a TLS section.
4082 (Output_segment::set_section_list_addresses): Print an error
4083 message if the address moves backward in a linker script.
4084 * script-sections.cc
4085 (Output_section_element_input::set_section_addresses): Don't
4086 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
4087 (Orphan_output_section::set_section_addresses): Likewise.
4088
f15f61a7
DK
40892009-10-15 Doug Kwan <dougkwan@google.com>
4090
4091 * layout.cc (Layout::finish_dynamic_section): Generate tags
4092 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
4093 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
4094 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
4095
82bb573a
ILT
40962009-10-14 Ian Lance Taylor <iant@google.com>
4097
4098 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
4099 fields.
4100 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
4101 data_shdr fields of relinfo.
4102 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
4103 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
4104 R_386_TLS_LDO_32, adjust based on section flags.
4105 (Target_i386::Relocate::fix_up_ldo): Remove.
4106
374ad285
ILT
41072009-10-13 Ian Lance Taylor <iant@google.com>
4108
4109 Add support for -pie.
4110 * options.h (class General_options): Add -pie and
4111 --pic-executable.
4112 (General_options::output_is_position_independent): Test -pie.
4113 (General_options::output_is_executable): Return true if not shared
4114 and not relocatable.
4115 (General_options::output_is_pie): Remove.
4116 * options.cc (General_options::finalize): Reject incompatible uses
4117 of -pie.
4118 * gold.cc (queue_middle_tasks): A -pie link is not static.
4119 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
4120 * symtab.cc (Symbol::final_value_is_known): Return false if
4121 output_is_position_independent.
4122 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
4123 output_is_position_independent.
4124 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
4125 output_is_position_independent.
4126 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
4127 output_is_position_independent.
4128 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
4129 two_file_pie_test.
4130 (basic_pie_test.o, basic_pie_test): New targets.
4131 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
4132 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
4133 (two_file_pie_test): New target.
4134 * testsuite/Makefile.in: Rebuild.
4135 * README: Remove note saying that -pie is not supported.
4136
c6585162
ILT
41372009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4138
4139 * options.h (class General_options): Add -init and -fini.
4140 * layout.cc (Layout::finish_dynamic_section): Emit
4141 given init and fini functions.
4142
032ce4e9
ST
41432009-10-13 Sriraman Tallam <tmsriram@google.com>
4144
4145 * gc.h (gc_process_relocs): Check if icf is enabled using new
4146 function.
4147 * gold.cc (queue_initial_tasks): Likewise.
4148 (queue_middle_tasks): Likewise.
4149 * object.cc (do_layout): Likewise.
4150 * symtab.cc (is_section_folded): Likewise.
4151 * main.cc (main): Likewise.
4152 * reloc.cc (Read_relocs::run): Likewise.
4153 (Sized_relobj::do_scan_relocs): Likewise.
4154 * icf.cc (is_function_ctor_or_dtor): New function.
4155 (Icf::find_identical_sections): Check if function is ctor or dtor when
4156 safe icf is chosen.
4157 * options.h (General_options::icf): Change option to be an enum.
4158 (Icf_status): New enum.
4159 (icf_enabled): New method.
4160 (icf_safe_folding): New method.
4161 (set_icf_status): New method.
4162 (icf_status_): New variable.
4163 * (options.cc) (General_options::finalize): Set icf_status_.
4164 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
4165 icf_test and icf_keep_unique_test to use the --icf enum flag.
4166 * testsuite/icf_safe_test.sh: New file.
e1df38aa 4167 * testsuite/icf_safe_test.cc: New file.
032ce4e9 4168
f345227a
ST
41692009-10-12 Sriraman Tallam <tmsriram@google.com>
4170
4171 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
4172 includes to gc.h and icf.h.
4173 * arm.cc: Include gc.h.
4174 * gold.cc: Likewise.
4175 * i386.cc: Likewise.
4176 * powerpc.cc: Likewise.
4177 * sparc.cc: Likewise.
4178 * x86_64.cc: Likewise.
4179 * gc.h: Include icf.h.
4180
1c7814ed
ILT
41812009-10-11 Ian Lance Taylor <iant@google.com>
4182
4183 * plugin.cc: Include "gold.h" before other header files.
4184
ae3b5189
CD
41852009-10-10 Chris Demetriou <cgd@google.com>
4186
4187 * options.h (Input_file_argument::Input_file_type): New enum.
4188 (Input_file_argument::is_lib_): Replace with...
4189 (Input_file_argument::type_): New member.
4190 (Input_file_argument::Input_file_argument): Take Input_file_type
4191 'type' rather than boolean 'is_lib' as second argument.
4192 (Input_file_argument::is_lib): Use type_.
4193 (Input_file_argument::is_searched_file): New function.
4194 (Input_file_argument::may_need_search): Handle is_searched_file.
4195 * options.cc (General_options::parse_library): Support -l:filename.
4196 (General_options::parse_just_symbols): Update for Input_file_argument
4197 changes.
4198 (Command_line::process): Likewise.
4199 * archive.cc (Archive::get_file_and_offset): Likewise.
4200 * plugin.cc (Plugin_manager::release_input_file): Likewise.
4201 * script.cc (read_script_file, script_add_file): Likewise.
4202 * fileread.cc (Input_file::Input_file): Likewise.
4203 (Input_file::will_search_for): Handle is_searched_file.
4204 (Input_file::open): Likewise.
4205 * readsyms.cc (Read_symbols::get_name): Likewise.
4206 * testsuite/Makefile.am (searched_file_test): New test.
4207 * testsuite/Makefile.in: Regenerate.
4208 * testsuite/searched_file_test.cc: New file.
4209 * testsuite/searched_file_test_lib.cc: New file.
4210
f3048a1d
ILT
42112009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
4212 Ian Lance Taylor <iant@google.com>
4213
4214 * descriptor.cc: Include <cstdio> and "binary-io.h".
4215 (Descriptors::open): Open the files in binary mode always.
4216 * script.cc (Lex::get_token): Treat \r as whitespace.
4217
d4780e57
ILT
42182009-10-09 Ian Lance Taylor <iant@google.com>
4219
4220 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
4221
d9a893b8
ILT
42222009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
4223 Ian Lance Taylor <iant@google.com>
4224
4225 * configure.ac: Check for readv function also.
4226 * fileread.cc (readv): Define if not HAVE_READV.
4227 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
4228 does not exist.
4229 * config.in: Regenerate.
4230 * configure: Regenerate.
4231
c0a62865
DK
42322009-10-09 Doug Kwan <dougkwan@google.com>
4233
4234 * layout.cc (Layout::make_output_section): Call target hook to make
4235 ordinary output section.
4236 (Layout::finalize): Adjust parameter list of call the
4237 Target::may_relax().
4238 * layout.h (class Layout::section_list): New method.
4239 * merge.h (Output_merge_base::entsize): Change visibility to public.
4240 (Output_merge_base::is_string, Output_merge_base::do_is_string):
4241 New methods.
4242 (Output_merge_string::do_is_string): New method.
4243 * object.cc (Sized_relobj::do_setup): renamed from
4244 Sized_relobj::set_up.
4245 * object.h (Sized_relobj::adjust_shndx,
4246 Sized_relobj::initializ_input_to_output_maps,
4247 Sized_relobj::free_input_to_output_maps): Change visibilities to
4248 protected.
4249 (Sized_relobj::setup): Virtualize.
4250 (Sized_relobj::do_setup): New method declaration.
4251 (Sized_relobj::invalidate_section_offset,
4252 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
4253 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
4254 * options.cc (parse_int): New function.
4255 * options.h (parse_int): New declaration.
4256 (DEFINE_int): New macro.
4257 (stub_group_size): New option.
4258 * output.cc (Output_section::Output_section): Initialize memebers
4259 merge_section_map_, merge_section_by_properties_map_,
4260 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
4261 (Output_section::add_input_section): Handled deferred code-fill
4262 generation and remove an old comment.
4263 (Output_section::add_relaxed_input_section): New method definition.
4264 (Output_section::add_merge_input_section): Use merge section by
4265 properties map to speed to search. Update merge section maps
4266 as appropriate.
4267 (Output_section::build_relaxation_map): New method definition.
4268 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
4269 Same.
4270 (Output_section::relax_input_section): Renamed to
4271 Output_section::convert_input_sections_to_relaxed_sections and change
4272 interface to take a vector of pointers to relaxed sections.
4273 (Output_section::find_merge_section,
4274 Output_section::find_relaxed_input_section): New method definitions.
4275 (Output_section::is_input_address_mapped,
4276 Output_section::output_offset, Output_section::output_address):
4277 Use output section data maps to speed up searching.
4278 (Output_section::find_starting_output_address): Add comments.
4279 (Output_section::do_write,
4280 Output_section::write_to_postprocessing_buffer): Do code-fill
4281 generation as appropriate.
4282 (Output_section::get_input_sections): Invalidate relaxed input section
4283 map.
4284 (Output_section::restore_states): Adjust type of checkpoint .
4285 Invalidate relaxed input section map.
4286 * output.h (Output_merge_base): New class declaration.
4287 (Input_section_specifier): New class defintion.
4288 (class Output_relaxed_input_section) Change base class to
4289 Output_section_data_build.
4290 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
4291 base class initializer.
4292 (Output_section::add_relaxed_input_section): New method declaration.
4293 (Output_section::Input_section): Change visibility to protected.
4294 (Output_section::Input_section::relobj,
4295 Output_section::Input_section::shndx): Handle relaxed input sections.
4296 Output_section::input_sections) Change visibility to protected. Also
4297 define overload to return a non-const pointer.
4298 (Output_section::Merge_section_properties): New class defintion.
4299 (Output_section::Merge_section_by_properties_map,
4300 Output_section::Output_section_data_by_input_section_map,
4301 Output_section::Relaxation_map): New types.
4302 (Output_section::relax_input_section): Rename method to
4303 Output_section::convert_input_sections_to_relaxed_sections and change
4304 interface to take a vector of relaxed section pointers.
4305 (Output_section::find_merge_section,
4306 Output_section::find_relaxed_input_section,
4307 Output_section::build_relaxation_map,
4308 Output_section::convert_input_sections_in_list_to_relaxed_sections):
4309 New method declarations.
4310 (Output_section::merge_section_map_
4311 Output_section::merge_section_by_properties_map_,
4312 Output_section::relaxed_input_section_map_,
4313 Output_section::is_relaxed_input_section_map_valid_,
4314 Output_section::generate_code_fills_at_write_): New data members.
4315 * script-sections.cc
4316 (Output_section_element_input::set_section_addresses): Call
4317 current_data_size and addralign methods of relaxed input sections.
4318 (Orphan_output_section::set_section_addresses): Call current_data_size
4319 and addralign methods of relaxed input sections.
4320 * symtab.cc (Symbol_table::compute_final_value): Extract template
4321 from the body of Symbol_table::sized_finalize_symbol.
4322 (Symbol_table::sized_finalized_symbol): Call
4323 Symbol_table::compute_final_value.
4324 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
4325 (Symbol_table::compute_final_value): New templated method declaration.
4326 * target.cc (Target::do_make_output_section): New method defintion.
4327 * target.h (Target::make_output_section): New method declaration.
4328 (Target::relax): Add more parameters for input objects, symbol table
4329 and layout. Adjust call to do_relax.
4330 (Target::do_make_output_section): New method declaration.
4331 (Target::do_relax): Add parameters for input objects, symbol table
4332 and layout.
4333
d446d6c4
ILT
43342009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
4335
4336 * pread.c: Include stdio.h.
4337
bc06c745
ILT
43382009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
4339
4340 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
4341 defined.
4342
75aea3d0
ILT
43432009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
4344
4345 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
4346 Change read_shndx type to unsigned int.
4347 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
4348 int.
4349 (Sized_dwarf_line_info::read_line_mappings): Likewise.
4350 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
4351 Change read_shndx type to unsigned int.
4352 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
4353 int.
4354 (Sized_dwarf_line_info::read_line_mappings): Likewise.
4355 * layout.cc (Layout::create_symtab_sections): Cast the result of
4356 local_symcount * symsize to off_t in the gold_assert.
4357
be8fcb75
ILT
43582009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4359
4360 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
4361 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
4362 R_ARM_BASE_ABS.
4363 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
4364 (Arm_relocate_functions::thm_abs5): New function.
4365 (Arm_relocate_functions::abs12): New function.
4366 (Arm_relocate_functions::abs16): New function.
4367 (Arm_relocate_functions::base_abs): New function.
4368 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
4369 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
4370 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
4371 R_ARM_BASE_ABS.
4372 (Scan::global): Likewise.
4373 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
4374 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
4375 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
4376 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
4377 R_ARM_BASE_ABS.
4378
c2a122b6
ILT
43792009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4380
4381 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
4382 (Arm_relocate_functions::movt_prel): New function.
4383 (Arm_relocate_functions::thm_movw_prel_nc): New function.
4384 (Arm_relocate_functions::thm_movt_prel): New function.
4385 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
4386 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
4387 (Scan::global, Relocate::relocate): Likewise.
4388 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
4389
c4aa1e2d
ILT
43902009-10-09 Mikolaj Zalewski <mikolajz@google.com>
4391
4392 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
4393 Incremental_checker.
4394 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
4395 unsigned int.
4396 (class Incremental_inputs_header): New class.
4397 (Incremental_inputs_header_writer): Edit comment.
4398 (Incremental_inputs_entry): New class.
4399 (Incremental_inputs_entry_writer): Edit comment.
4400 (Sized_incremental_binary::do_find_incremental_inputs_section):
4401 Add *strtab_shndx parameter, fill it.
4402 (Sized_incremental_binary::do_check_inputs): New method.
4403 (Incremental_checker::can_incrementally_link_output_file): Use
4404 Sized_incremental_binary::check_inputs.
4405 (Incremental_inputs::report_command_line): Save command line in
4406 command_line_.
4407 * incremental.h:
4408 (Incremental_binary::find_incremental_inputs_section): New
4409 method.
4410 (Incremental_binary::do_find_incremental_inputs_section): Add
4411 strtab_shndx parameter.
4412 (Incremental_binary::do_check_inputs): New pure virtual method.
4413 (Sized_incremental_binary::do_check_inputs): Declare.
4414 (Incremental_checker::Incremental_checker): Add incremental_inputs
4415 parameter, use it to initialize incremental_inputs_.
4416 (Incremental_checker::incremental_inputs_): New field.
4417 (Incremental_checker::command_line): New method.
4418 (Incremental_checker::inputs): New method.
4419 (Incremental_checker::command_line_): New field.
4420
c549a694
ILT
44212009-10-09 Mikolaj Zalewski <mikolajz@google.com>
4422
4423 * incremental.cc: Include <cstdarg> and "target-select.h".
4424 (vexplain_no_incremental): New function.
4425 (explain_no_incremental): New function.
4426 (Incremental_binary::error): New method.
4427 (Sized_incremental_binary::do_find_incremental_inputs_section): New
4428 method.
4429 (make_sized_incremental_binary): New function.
4430 (open_incremental_binary): New function.
4431 (can_incrementally_link_file): Add checks if output is ELF and has
4432 inputs section.
4433 * incremental.h: Include "elfcpp_file.h" and "output.h".
4434 (Incremental_binary): New class.
4435 (Sized_incremental_binary): New class.
4436 (open_incremental_binary): Declare.
4437 * object.cc (is_elf_object): Use
4438 elfcpp::Elf_recognizer::is_elf_file.
4439 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
4440 * output.h (Output_file::filesize): New method.
4441
fd3c5f0b
ILT
44422009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4443
4444 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
4445 New function.
4446 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
4447 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
4448 function.
4449 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
4450 function.
4451 (Arm_relocate_functions::movw_abs_nc): New function.
4452 (Arm_relocate_functions::movt_abs): New function.
4453 (Arm_relocate_functions::thm_movw_abs_nc): New function.
4454 (Arm_relocate_functions::thm_movt_abs): New function.
4455 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
4456 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
4457 (Scan::global): Likewise.
4458 (Relocate::relocate): Likewise.
4459 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
4460
7f5309a5
ILT
44612009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4462
4463 * arm.cc (Arm_relocate_functions::got_prel) New function.
4464 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
4465 (Relocate::relocate): Likewise.
4466 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
4467
364c7fa5
ILT
44682009-10-06 Ian Lance Taylor <iant@google.com>
4469
4470 * options.h (class General_options): Define
4471 split_stack_adjust_size parameter.
4472 * object.h (class Object): Add uses_split_stack_ and
4473 has_no_split_stack_ fields. Add uses_split_stack and
4474 has_no_split_stack accessor functions. Declare
4475 handle_split_stack_section.
4476 (class Reloc_symbol_changes): Define.
4477 (class Sized_relobj): Define Function_offsets. Declare
4478 split_stack_adjust, split_stack_adjust_reltype, and
4479 find_functions.
4480 * object.cc (Object::handle_split_stack_section): New function.
4481 (Sized_relobj::do_layout): Call handle_split_stack_section.
4482 * dynobj.cc (Sized_dynobj::do_layout): Call
4483 handle_split_stack_section.
4484 * reloc.cc (Sized_relobj::relocate_sections): Call
4485 split_stack_adjust for executable sections in split_stack
4486 objects. Pass reloc_map to relocate_section.
4487 (Sized_relobj::split_stack_adjust): New function.
4488 (Sized_relobj::split_stack_adjust_reltype): New function.
4489 (Sized_relobj::find_functions): New function.
4490 * target-reloc.h: Include "object.h".
4491 (relocate_section): Add reloc_symbol_changes parameter. Change
4492 all callers.
4493 * target.h (class Target): Add calls_non_split method. Declare
4494 do_calls_non_split virtual method. Declare match_view and
4495 set_view_to_nop.
4496 * target.cc: Include "elfcpp.h".
4497 (Target::do_calls_non_split): New function.
4498 (Target::match_view): New function.
4499 (Target::set_view_to_nop): New function.
4500 * gold.cc (queue_middle_tasks): Give an error if mixing
4501 split-stack and non-split-stack objects with -r.
4502 * i386.cc (Target_i386::relocate_section): Add
4503 reloc_symbol_changes parameter.
4504 (Target_i386::do_calls_non_split): New function.
4505 * x86_64.cc (Target_x86_64::relocate_section): Add
4506 reloc_symbol_changes parameter.
4507 (Target_x86_64::do_calls_non_split): New function.
4508 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
4509 parameter.
4510 * powerpc.cc (Target_powerpc::relocate_section): Add
4511 reloc_symbol_changes parameter.
4512 * sparc.cc (Target_sparc::relocate_section): Add
4513 reloc_symbol_changes parameter.
4514 * configure.ac: Call AM_CONDITIONAL for the default target.
4515 * configure: Rebuild.
4516 * testsuite/Makefile.am (TEST_AS): New variable.
4517 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
4518 (check_DATA): Add split_i386 and split_x86_64 files.
4519 (SPLIT_DEFSYMS): Define.
4520 (split_i386_[1234n].o): New targets.
4521 (split_i386_[124]): New targets.
4522 (split_i386_[1234r].stdout): New targets.
4523 (split_x86_64_[1234n].o): New targets.
4524 (split_x86_64_[124]): New targets.
4525 (split_x86_64_[1234r].stdout): New targets.
4526 (MOSTLYCLEANFILES): Add new executables.
4527 * testsuite/split_i386.sh: New file.
4528 * testsuite/split_x86_64.sh: New file.
4529 * testsuite/split_i386_1.s: New file.
4530 * testsuite/split_i386_2.s: New file.
4531 * testsuite/split_i386_3.s: New file.
4532 * testsuite/split_i386_4.s: New file.
4533 * testsuite/split_i386_n.s: New file.
4534 * testsuite/split_x86_64_1.s: New file.
4535 * testsuite/split_x86_64_2.s: New file.
4536 * testsuite/split_x86_64_3.s: New file.
4537 * testsuite/split_x86_64_4.s: New file.
4538 * testsuite/split_x86_64_n.s: New file.
4539 * testsuite/testfile.cc (Target_test): Update relocation_section
4540 function.
4541 * testsuite/Makefile.in: Rebuild.
4542
e8a9fcda
ILT
45432009-10-06 Ian Lance Taylor <iant@google.com>
4544
4545 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
4546 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
4547 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
4548 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
4549 the address on ldo_addrs_.
4550 (Target_i386::Relocate::fix_up_ldo): New function.
4551
e99daf92
ILT
45522009-10-06 Rafael Espindola <espindola@google.com>
4553
4554 * plugin.cc (add_input_library): New.
4555 (Plugin::load): Add add_input_library to tv.
4556 (Plugin_manager::add_input_file): Add the is_lib argument.
4557 (add_input_file): Update call to Plugin_manager::add_input_file.
4558 (add_input_library): New.
4559 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
4560
966d4097
DK
45612009-09-30 Doug Kwan <dougkwan@google.com>
4562
4563 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
4564 symbol and call Symbol::may_need_copy_reloc to determine if
4565 a copy reloc is needed.
4566 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
4567 nocopyreloc is given in command line.
4568 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
4569 given in command line.
4570 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
4571 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
4572 of the removed Target_i386::may_need_copy_reloc.
4573 * options.h (copyreloc): New option with default value false.
4574 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
4575 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
4576 instead of the removed Target_powerpc::may_need_copy_reloc.
4577 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
4578 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
4579 instead of the removed Target_sparc::may_need_copy_reloc.
4580 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
4581 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
4582 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
4583 instead of the removed Target_x86_64::may_need_copy_reloc.
4584
029ba973
ILT
45852009-09-30 Ian Lance Taylor <iant@google.com>
4586
4587 * object.h (class Object): Remove target_ field, and target,
4588 sized_target, and set_target methods.
4589 (Object::sized_target): Remove.
4590 (class Sized_relobj): Update declarations. Remove sized_target.
4591 * object.cc (Sized_relobj::setup): Remove target parameter.
4592 Change all callers.
4593 (Input_objects::add_object): Don't do anything with the target.
4594 (make_elf_sized_object): Add punconfigured parameter. Change all
4595 callers. Set or test parameter target.
4596 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
4597 Change all callers.
4598 * parameters.cc (Parameters::set_target): Change parameter type to
4599 be non-const.
4600 (Parameters::default_target): Remove.
4601 (set_parameters_target): Change parameter type to be non-const.
4602 (parameters_force_valid_target): New function.
4603 (parameters_clear_target): New function.
4604 * parameters.h (class Parameters): Update declarations. Remove
4605 default_target method. Add sized_target and clear_target
4606 methods. Change target_ to be non-const.
4607 (set_parameters_target): Update declaration.
4608 (parameters_force_valid_target): Declare.
4609 (parameters_clear_target): Declare.
4610 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
4611 as NULL if we aren't searching.
4612 (Add_symbols::run): Don't check for compatible target.
4613 * fileread.cc (Input_file::open_binary): Call
4614 parameters_force_valid_target.
4615 * gold.cc (queue_middle_tasks): Likewise.
4616 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
4617 set_target on object.
4618 * dynobj.h (class Sized_dynobj): Update declarations.
4619 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
4620 make_elf_object returns NULL.
4621 (Archive::include_member): Don't check whether object target is
4622 compatible.
4623 * output.cc (Output_section::add_input_section): Get target from
4624 parameters.
4625 (Output_section::relax_input_section): Likewise.
4626 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
4627 parameters.
4628 (Sized_relobj::do_scan_relocs): Likewise.
4629 (Sized_relobj::relocate_sections): Likewise.
4630 * resolve.cc (Symbol_table::resolve): Likewise.
4631 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
4632 parameter. Change all callers.
4633 (Symbol_table::add_from_object): Get target from parameters.
4634 (Symbol_table::add_from_relobj): Don't check object target.
4635 (Symbol_table::add_from_dynobj): Likewise.
4636 (Symbol_table::define_special_symbol): Get target from
4637 parameters.
4638 * symtab.h (class Symbol_table): Update declaration.
4639 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
4640 parameter. Change all callers. Clear parameter target.
4641 (Binary_test): Test target here.
4642 * testsuite/object_unittest.cc (gold_testsuite): Remove
4643 target_test_pointer parameter. Change all callers.
4644 (Object_test): Test target here.
4645
a6a22b83
ILT
46462009-09-26 Ian Lance Taylor <iant@google.com>
4647
4648 * testsuite/initpri1.c: Don't try to use constructor priorities if
4649 compiling with gcc before 4.3.
4650
6a8f49fe
ILT
46512009-09-22 Mikolaj Zalewski <mikolajz@google.com>
4652
4653 * testsuite/retain_symbols_file_test.sh (check_present): Change
4654 output file name to retain_symbols_file_test.stdout.
4655 (check_absent): Likewise.
4656
8c604651
CS
46572009-09-18 Craig Silverstein <csilvers@google.com>
4658
4659 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
4660 * options.cc: Include <cerrno> and <fstream>.
4661 (General_options::finalize): Parse -retain-symbols-file tag.
4662 * options.h: New flag.
4663 (General_options): New method should_retain_symbol, new
4664 variable symbols_to_retain.
4665 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
4666 should_retain_symbol map.
4667 * testsuite/Makefile.am (retain_symbols_file_test): New test.
4668 * testsuite/Makefile.in: Regenerate.
4669 * testsuite/retain_symbols_file_test.sh: New file.
4670
ca58b19f
NC
46712009-09-18 Nick Clifton <nickc@redhat.com>
4672
4673 * po/es.po: Updated Spanish translation.
4674
20e6d0d6
DK
46752009-09-17 Doug Kwan <dougkwan@google.com>
4676
4677 * debug.h (DEBUG_RELAXATION): New constant.
4678 (DEBUG_ALL): Add DEBUG_RELAXATION.
4679 (debug_string_to_enum): Add relaxation debug option.
4680 * layout.cc
4681 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
4682 Layout::Relaxation_debug_check::read_sections,
4683 Layout::Relaxation_debug_check::read_sections): New method definitions.
4684 (Layout::Layout): Initialize data members
4685 record_output_section_data_from_scrips_,
4686 script_output_section_data_list_ and relaxation_debug_check_.
4687 (Layout::save_segments, Layout::restore_segments,
4688 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
4689 Layout::relaxation_loop_body): New method definitions.
4690 (Layout::finalize): Support relaxation. Move section layout code to
4691 Layout::relaxation_loop_body.
4692 (Layout::set_asection_address_from_script): Move code for orphan
4693 section placement out.
4694 (Layout::place_orphan_sections_in_script): New method definition.
4695 * layout.h (Output_segment_headers, Output_file_header):
4696 New forward class declarations.
4697 (Layout::~Layout): Define.
4698 (Layout::new_output_section_data_from_script): New method definition.
4699 (Layout::place_orphan_sections_in_script): New method declaration.
4700 (Layout::Segment_states): New type declaration.
4701 (Layout::save_segments, Layout::restore_segments,
4702 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
4703 Layout::relaxation_loop_body): New method declarations.
4704 (Layout::Output_section_data_list): New type declaration.
4705 (Layout::Relaxation_debug_check): New class definition.
4706 (Layout::record_output_section_data_from_script_,
4707 Layout::script_output_section_data_list_, Layout::segment_states_,
4708 Layout::relaxation_debug_check_): New data members.
4709 * output.cc: (Output_section_headers::do_size): New method definition.
4710 (Output_section_headers::Output_section_headers): Move size
4711 computation to Output_section_headers::do_size.
4712 (Output_segment_headers::do_size): New method definition.
e1df38aa 4713 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
4714 Output_file_header::do_size and call it.
4715 (Output_file_header::do_size): New method definition.
4716 (Output_data_group::Output_data_group): Adjust call to
4717 Output_section_data.
4718 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
4719 (Output_symtab_xindex::do_write): Add array bound check.
4720 (Output_section::Input_section::print_to_mapfile): Handle
4721 RELAXED_INPUT_SECTION_CODE.
4722 (Output_section::Output_section): Initialize data member checkpoint_.
4723 (Output_section::~Output_section): Delete checkpoint object pointed
4724 by checkpoint_.
4725 (Output_section::add_input_section): Always add an Input_section if
4726 relaxing.
4727 (Output_section::add_merge_input_section): Add assert.
4728 (Output_section::relax_input_section): New method definition.
4729 (Output_section::set_final_data_size): Set load address to zero for
4730 an unallocated section.
4731 (Output_section::do_address_and_file_offset_have_reset_values):
4732 New method definition.
4733 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
4734 Handle relaxed input section.
4735 (Output_section::sort_attached_input_sections): Checkpoint input
4736 section list lazily.
4737 (Output_section::get_input_sections): Change type of input_sections to
4738 list of Simple_input_section pointers. Checkpoint input section list
4739 lazily. Also handle relaxed input sections.
4740 (Output_section::add_input_section_for_script): Take a reference to
4741 a Simple_input_section object instead of Relobj pointer and section
4742 index as parameter. Handle relaxed input sections.
4743 (Output_section::save_states, Output_section::restore_states): New
4744 method definitions.
4745 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
4746 (Output_data::is_data_size_fixed): New method definition.
4747 (Output_data::reset_addresss_and_file_offset): Do not reset data size
4748 if it is fixed.
4749 (Output_data::address_and_file_offset_have_reset_values): New method
4750 definition.
4751 (Output_data::do_address_and_file_offset_have_reset_values): New method
4752 definition.
4753 (Output_data::set_data_size): Check that data size is not fixed.
4754 (Output_data::fix_data_size): New method definition.
4755 (Output_data::is_data_size_fixed_): New data member.
4756 (Output_section_headers::set_final_data_size): New method definition.
4757 (Output_section_headers::do_size): New method declaration.
4758 (Output_segment_headers::set_final_data_size): New method definition.
4759 (Output_segment_headers::do_size): New method declaration.
4760 (Output_file_header::set_final_data_size)::New method definition.
4761 (Output_file_header::do_size)::New method declaration.
4762 (Output_section_data::Output_section_data): Add new parameter
4763 is_data_size_fixed and use it to fix data size.
4764 (Output_data_const::Output_data_const): Adjust call to base class
4765 constructor and fix data size.
4766 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
4767 base class constructor and fix data size.
4768 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
4769 base class constructor and fix data size.
4770 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
4771 class constructor and fix data size.
4772 (Output_data_group::set_final_data_size): New method definition.
4773 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
4774 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
4775 class constructor and fix data size.
4776 (Output_relaxed_input_section): New class definition.
4777 (Output_section::Simple_input_section): New class definition.
4778 (Output_section::get_input_sections): Adjust parameter list.
4779 (Output_section::add_input_section_for_script): Same.
4780 (Output_section::save_states, Output_section::restore_states,
4781 Output_section::do_address_and_file_offset_have_reset_values,
4782 (Output_section::Input_section::Input_section): Handle
4783 RELAXED_INPUT_SECTION_CODE. Add new overload for
4784 Output_relaxed_input_section.
4785 (Output_section::Input_section::is_input_section,
4786 Output_section::Input_section::set_output_section): Handle relaxed
4787 input section.
4788 (Output_section::Input_section::is_relaxed_input_section,
4789 Output_section::Input_section::output_section_data,
4790 Output_section::Input_section::relaxed_input_section): New method
4791 definitions.
4792 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
4793 value.
4794 (Output_section::Input_section::u1_): Update comments.
4795 (Output_section::Input_section::u2_): Add new union member poris.
4796 (Output_section::Checkpoint_output_section): New classs definition.
4797 (Output_section::relax_input_section): New method declaration.
4798 (Output_section::checkpoint_): New data member.
4799 (Output_segment): Update comments.
4800 (Output_segment::Output_segment): Un-privatize copy constructor.
4801 (Output_segment::operator=): Un-privatize.
4802 * script-sections.cc (Output_section_element::Input_section_list):
4803 Change element type to Output_section::Simple_input_section.
4804 (Output_section_element_dot_assignment::set_section_addresses):
4805 Register output section data for relaxation clean up.
4806 (Output_data_exression::Output_data_expression): Adjust call to base
4807 constructor to fix data size.
4808 (Output_section_element_data::set_section_addresses): Register
4809 Output_data_expression object for relaxation clean up.
4810 (struct Input_section_info): Replace Relobj pointer and section index
4811 pair with Output_section::Simple_input_section and Convert struct to a
4812 class.
4813 (Input_section_sorter::operator()): Adjust access to
e1df38aa 4814 Input_section_info data member to use accessors.
20e6d0d6
DK
4815 (Output_section_element_input::set_section_addresses): Use layout
4816 parameter. Adjust code to use Output_section::Simple_input_section
4817 and Input_secction_info classes. Register filler for relaxation
4818 clean up.
4819 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
4820 and section index pair with Output_section::Simple_input_section
4821 class. Adjust code accordingly.
4822 (Phdrs_element::release_segment): New method definition.
4823 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
4824 segment list.
4825 (Script_sections::release_segments): New method definition.
4826 * gold/script-sections.h (Script_sections::release_segments): New
4827 method declaration.
4828 * gold/target.h (Target::may_relax, Target::relax,
4829 Target::do_may_relax, Target::do_relax): New method definitions.
4830
5e445df6
ILT
48312009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4832
4833 * arm.cc (has_signed_unsigned_overflow): New function.
4834 (Arm_relocate_functions::abs8): New function.
4835 (Target_arm::Scan::local): Handle R_ARM_ABS8.
4836 (Target_arm::Scan::global): Likewise.
4837 (Target_arm::relocate::relocate): Likewise.
4838 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4839 Likewise.
4840
8c604651 48412009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
4842
4843 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
4844 * testsuite/Makefile.in: Regenerate.
4845
1e9cc1c2
NC
48462009-09-11 Nick Clifton <nickc@redhat.com>
4847
4848 * po/gold.pot: Updated by the Translation project.
4849
6a89f575
CC
48502009-09-08 Cary Coutant <ccoutant@google.com>
4851
4852 * output.cc (Output_file::open): Add execute permission to empty file.
4853 * testsuite/Makefile.am (permission_test): New test.
4854 * testsuite/Makefile.in: Regenerate.
4855
fdcac5af
ILT
48562009-09-02 Ian Lance Taylor <iant@google.com>
4857
4858 * output.cc (Output_file::resize): Call map_no_anonymous rather
4859 than map.
4860
44453f85
ILT
48612009-09-01 Mikolaj Zalewski <mikolajz@google.com>
4862
4863 * gold.cc: Include "incremental.h".
4864 (queue_initial_tasks): Call Incremental_checker methods.
4865 * incremental.cc: Include "output.h".
4866 (Incremental_checker::can_incrementally_link_output_file): New
4867 method.
4868 * incremental.h (Incremental_checker): New class.
4869
4870 * output.cc (Output_file::open_for_modification): New method.
4871 (Output_file::map_anonymous): Changed return type to bool. Record
4872 map in base_ field.
4873 (Output_file::map_no_anonymous): New method, broken out of map.
4874 (Output_file::map): Use map_no_anonymous and map_anonymous.
4875 * output.h (class Output_file): Update declarations.
4876
293c1386
CC
48772009-08-24 Cary Coutant <ccoutant@google.com>
4878
4879 * options.h (Command_line::Pre_options): New class.
4880 (Command_line::pre_options): New member.
4881 * options.cc (gold::options::ready_to_register): New variable.
4882 (One_option::register_option): Do nothing if not registering options.
4883 Assert if same short option registered twice.
4884 (General_options::General_options): Turn off option registration when
4885 done constructing.
4886 (Command_line::Pre_options::Pre_options): New constructor.
4887
f773f3d2
CC
48882009-08-24 Cary Coutant <ccoutant@google.com>
4889
06a73cfe
CC
4890 * options.h (General_options::no_keep_memory): Remove incorrect
4891 short option.
f773f3d2 4892
a15af8e2
RW
48932009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4894
4895 * Makefile.am (am__skiplex, am__skipyacc): New.
4896 * Makefile.in: Regenerate.
4897
c462b41b
RW
48982009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4899
14ec8efd
RW
4900 * Makefile.am (AM_CPPFLAGS): Renamed from ...
4901 (INCLUDES): ... this.
4902 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
4903 (AM_CPPFLAGS): Renamed from ...
4904 (INCLUDE): ... this.
4905 * Makefile.in, testsuite/Makefile.in: Regenerate.
4906
81ecdfbb
RW
4907 * Makefile.in: Regenerate.
4908 * aclocal.m4: Likewise.
4909 * config.in: Likewise.
4910 * configure: Likewise.
4911 * testsuite/Makefile.in: Likewise.
4912
c462b41b
RW
4913 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
4914 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
4915 * Makefile.in: Regenerate.
4916 * testsuite/Makefile.in: Regenerate.
4917
2da73f13
CC
49182009-08-19 Cary Coutant <ccoutant@google.com>
4919
4920 * resolve.cc (Symbol_table::resolve): Don't complain about defined
4921 symbols in shared libraries overridden by hidden or internal symbols
4922 in the main program.
4923
2db70501
CD
49242009-08-19 Chris Demetriou <cgd@google.com>
4925
4926 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
4927 checking source file names in error messages.
4928
f733487b
DK
49292009-08-18 Doug Kwan <dougkwan@google.com>
4930
4931 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
4932 an elcpp::Ehdr as parameter. Adjust call to set_target.
4933 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
4934 an elfcpp::Ehdr as parameter.
4935 * object.cc (Object::set_target): Remove the version that looks up
4936 a target and sets it.
4937 (Sized_relobj::setup): Take a Target object instead of
4938 an elfcpp::Ehdr as parameter. Adjust call to set_target.
4939 (make_elf_sized_object): Find target and ask target to
4940 make an ELF object.
4941 * object.h: (Object::set_target): Remove the version that looks up
4942 a target and sets it.
4943 (Sized_relobj::setup): Take a Target object instead of
4944 an elfcpp:Ehdr as parameter.
4945 * target.cc: Include dynobj.h.
4946 (Target::do_make_elf_object_implementation): New.
4947 (Target::do_make_elf_object): New.
4948 * target.h (Target::make_elf_object): New template declaration.
4949 (Target::do_make_elf_object): New method declarations.
4950 (Target::do_make_elf_object_implementation): New template declaration.
4951
cc70f101
ILT
49522009-08-14 Ian Lance Taylor <iant@google.com>
4953
4954 * gold.h (FUNCTION_NAME): Define.
4955 (gold_unreachable): Use FUNCTION_NAME.
4956
ef5e0cb1
ST
49572009-08-12 Sriraman Tallam <tmsriram@google.com>
4958
4959 * icf.cc (Icf::find_identical_sections): Issue a warning when a
4960 symbol in the --keep-unique list is not found.
4961
48c187ce
ST
49622009-08-12 Sriraman Tallam <tmsriram@google.com>
4963
4964 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
4965 been maked as --keep-unique.
4966 (Icf::unfold_section): New function.
4967 * icf.h (Icf::unfold_section): New function.
4968 * options.h (General_options::keep_unique): New option.
4969 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
4970 * testsuite/Makefile.in: Regenerate.
4971 * testsuite/icf_keep_unique_test.sh: New file.
4972 * testsuite/icf_keep_unique_test.cc: New file.
4973
645afe0c
CC
49742009-08-12 Cary Coutant <ccoutant@google.com>
4975
4976 PR 10471
4977 * resolve.cc (Symbol_table::resolve): Check for references from
4978 dynamic objects to hidden and internal symbols.
4979 * testsuite/Makefile.am (hidden_test.sh): New test.
4980 * testsuite/Makefile.in: Regenerate.
4981 * testsuite/hidden_test.sh: New script.
4982 * testsuite/hidden_test_1.c: New test source.
4983 * testsuite/hidden_test_main.c: New test source.
4984
11af873f
DK
49852009-08-11 Doug Kwan <dougkwan@google.com>
4986
4987 * arm.cc: Update comments.
4988 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
4989 segment to locate the .ARM.exidx section if present.
4990
b9f7d72d
DK
49912009-08-09 Doug Kwan <dougkwan@google.com>
4992
4993 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
4994 patch.
4995
ddd3c53c
ST
49962009-08-07 Sriraman Tallam <tmsriram@google.com>
4997 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
4998 compiler warnings.
4999
27721062
ST
50002009-08-06 Sriraman Tallam <tmsriram@google.com>
5001
5002 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
5003 valid tls_segment only for non-debug-section relocations.
5004 * testsuite/Makefile.am: Add gc_tls_test.
5005 * testsuite/Makefile.in: Regenerate.
5006 * testsuite/gc_tls_test.cc: New file.
5007 * testsuite/gc_tls_test.sh: New file.
5008
ef15dade 50092009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 5010
ef15dade
ST
5011 * icf.cc: New file.
5012 * icf.h: New file.
5013 * Makefile.am (CCFILES): Add icf.cc.
5014 (HFILES): Add icf.h
5015 * Makefile.in: Regenerate.
5016 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
5017 * gc.h (gc_process_relocs): Populate lists used by icf to contain
5018 section, symbol and addend information for the relocs.
5019 * gold.cc (queue_middle_tasks): Call identical code folding.
5020 * gold.h: Add defines for multimap.
5021 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
5022 to the call of finalize_local_symbols.
5023 * main.cc (main): Create object of class Icf.
5024 * object.cc (Sized_relobj::do_layout): Allow this function to be
5025 called twice during icf.
5026 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
5027 to sections marked as identical by icf.
5028 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
5029 when available.
5030 (Sized_relobj::do_section_entsize): New function.
5031 * object.h (Object::section_entsize): New function.
5032 (Object::do_section_entsize): New pure virtual function.
5033 (Relobj::finalize_local_symbols): Add new parameter.
5034 (Relobj::do_section_entsize): New function.
5035 * options.h (General_options::icf): New option.
5036 (General_options::icf_iterations): New option.
5037 (General_options::print_icf_sections): New option.
5038 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
5039 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
5040 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
5041 icf.
5042 * symtab.cc (Symbol_table::is_section_folded): New function.
5043 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
5044 to sections marked as identical by icf.
5045 * symtab.h (Symbol_table::set_icf): New function.
5046 (Symbol_table::icf): New function.
5047 (Symbol_table::is_section_folded): New function.
5048 (Symbol_table::icf_): New data member.
5049 * target-reloc.h (relocate_section): Ignore sections folded by icf.
5050 * testsuite/Makefile.am: Add commands to build icf_test.
5051 * testsuite/Makefile.in: Regenerate.
5052 * testsuite/icf_test.sh: New file.
5053 * testsuite/icf_test.cc: New file.
5054
c3b65ac4
CD
50552009-07-24 Chris Demetriou <cgd@google.com>
5056
5057 * layout.cc (is_compressible_debug_section): Fix incorrect
5058 comment about compressed section names.
5059
1caf2c51
ILT
50602009-07-20 Ian Lance Taylor <ian@airs.com>
5061
5062 PR 10419
5063 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
5064
1ef4d87f
ILT
50652009-07-16 Ian Lance Taylor <iant@google.com>
5066
5067 PR 10400
5068 * layout.h: #include <map>.
5069 (class Kept_section): Change from struct to class. Add accessors
5070 and setters. Add section size to Comdat_group mapping. Change
5071 Comdat_group to std::map. Add is_comdat_ field. Add
5072 linkonce_size field in union.
5073 (class Layout): Update declaration of find_or_add_kept_section.
5074 Don't declare find_kept_object.
5075 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
5076 parameter. Add object, shndx, is_comdat, and is_group_name
5077 parameters. Change all callers. Adjust for new Kept_section.
5078 (Layout::find_kept_object): Remove.
5079 * object.cc (Sized_relobj::include_section_group): Update use of
5080 Kept_section. Rename secnum to shndx. Only record
5081 Kept_comdat_section if sections are the same size.
5082 (Sized_relobj::include_linkonce_section): Update use of
5083 Kept_section. Only record Kept_comdat_section if sections are the
5084 same size. Set size of linkonce section.
5085 (Sized_relobj::map_to_kept_section): Update call to
5086 get_kept_comdat_section.
5087 * object.h (class Sized_relobj): Rename fields in
5088 Kept_comdat_section to drop trailing underscores; change object
5089 field to Relobj*. Change Kept_comdat_section_table to store
5090 struct rather than pointer.
5091 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
5092 Add kept_object and kept_shndx parameters. Change all callers.
5093 (Sized_relobj::get_kept_comdat_section): Change return type to
5094 bool. Add kept_object and kept_shndx parameters. Change all
5095 callers.
5096 * plugin.cc (Pluginobj::include_comdat_group): Update call to
5097 Layout::find_or_add_kept_section.
5098
37c3b7b0
ILT
50992009-07-09 Ian Lance Taylor <iant@google.com>
5100
5101 * merge.cc (Object_merge_map::initialize_input_to_output_map):
5102 Reserve space in the hash table.
5103
98fa85cb
ILT
51042009-07-06 Mikolaj Zalewski <mikolajz@google.com>
5105
5106 * fileread.cc (File_read::get_mtime): New method.
5107 * fileread.h (Timespec): New structure.
5108 (File_read::get_mtime): New method.
5109 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
5110 Renamed from timestamp_nsec.
5111 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
5112 Elf_Xword.
e1df38aa 5113 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 5114 timestamp_nsec.
e1df38aa 5115 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
5116 (Incremental_inputs::report_obejct): Save mtime; style fix.
5117 (Incremental_inputs::report_script): Save mtime; style fix.
5118 (Incremental_inputs::finalize_inputs): Style fix.
5119 (Incremental_inputs::finalize): Style fix.
5120 (Incremental_inputs::create_input_section_data): Store inputs
5121 mtime.
5122 * incremental.h (Incremental_inputs::report_script): Add mtime
5123 argument.
5124 (Incremental_inputs::Input_info::Input_info): Intialize only one
5125 union member.
5126 (Incremental_inputs::Input_info::archive): Move to nameless
5127 union.
5128 (Incremental_inputs::Input_info::obejct): Move to nameless union.
5129 (Incremental_inputs::Input_info::script): Move to nameless union.
5130 (Incremental_inputs::mtime): New field.
5131 * script.cc (read_input_script): Pass file mtime to
5132 Incremental_input.
5133 * script.h (Script_info::inputs): Style fix.
5134
c9d70757
ILT
51352009-07-01 Ian Lance Taylor <ian@airs.com>
5136
5137 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
5138 instead of 32.
5139
9c547ec3
ILT
51402009-06-24 Ian Lance Taylor <iant@google.com>
5141
5142 PR 10156
5143 * layout.cc (Layout::choose_output_section): If we find an
5144 existing section, update the flags.
5145 (Layout::create_notes): New function, broken out of
5146 Layout::finalize.
5147 (Layout::finalize): Don't create note sections.
5148 (Layout::create_note): Don't crash if linker script discards
5149 section.
5150 (Layout::create_gold_note): Likewise.
5151 (Layout::create_build_id): Likewise. Don't set
5152 after_input_sections on the section.
5153 (Layout::create_executable_stack_info): Remove target parameter.
5154 Change caller.
5155 * layout.h (class Layout): Declare create_notes. Update
5156 declaration of create_executable_stack_info.
5157 * gold.cc (queue_middle_tasks): Call create_notes.
5158 * output.cc (Output_section::update_flags_for_input_section): Move
5159 here from output.h. If SHF_ALLOC flag is newly set, mark address
5160 invalid.
5161 * output.h (Output_data::mark_address_invalid): New function.
5162 (class Output_section): Only declare, not define,
5163 update_flags_for_input_section. Remove set_flags.
5164
55458500
ILT
51652009-06-24 Ian Lance Taylor <iant@google.com>
5166
5167 * script-sections.cc (Output_section_definition::
5168 set_section_addresses): Rename shadowing local load_address to
5169 laddr.
5170
1307d6cd
ILT
51712009-06-24 Ian Lance Taylor <iant@google.com>
5172
5173 PR 10244
5174 * reloc.cc (relocate_sections): Skip empty relocation sections.
5175
ec3f783e
ILT
51762009-06-23 Ian Lance Taylor <iant@google.com>
5177
5178 PR 10156
5179 * layout.cc (Layout::create_note): Use choose_output_section
5180 rather than make_output_section.
5181
459c9f1c
ILT
51822009-06-23 Ian Lance Taylor <iant@google.com>
5183
5184 PR 10237
5185 * options.cc (General_options::parse_V): Set printed_version_.
5186 (General_options::General_options): Initialize printed_version_.
5187 * options.h (class General_options): Add printed_version_ field.
5188 * gold.cc (queue_initial_tasks): If there are no input files,
5189 don't give a fatal error if we printed the version information.
5190 (queue_middle_tasks): If using -r with a shared object, give a
5191 fatal error rather than an ordinary error.
5192
1518dc8f
ILT
51932009-06-23 Ian Lance Taylor <iant@google.com>
5194
5195 PR 10219
5196 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
5197 (Layout::make_output_section): Set have_stabstr_section_ if we see
5198 a .stab*str section.
5199 (Layout::finalize): Call link_stabs_sections.
5200 (Layout::link_stabs_sections): New file.
5201 * layout.h (class Layout): Add have_stabstr_section_ field.
5202 Declare link_stabs_sections.
5203
3d857b98
DK
52042009-06-23 Doug Kwan <dougkwan@google.com>
5205
5206 * Makefile.am (libgold_a_LIBADD): New.
5207 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
5208 * Makefile.in: Regenerate.
5209 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
5210 * configure: Regenerate.
5211 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
5212 * fileread.cc: Include sys/state.h
5213 * gold.h: Declare memmem and strndup if found missing.
5214 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
5215
0639a6f6
ILT
52162009-06-23 Ian Lance Taylor <iant@google.com>
5217
5218 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
5219 * configure: Rebuild.
5220
8d63875c
ILT
52212009-06-23 Ian Lance Taylor <iant@google.com>
5222
5223 PR 10147
5224 * object.cc (Object::section_contents): Don't try to get a view if
5225 the section has length zero.
5226 (Object::handle_gnu_warning_section): If the section is empty, use
5227 the name of the section as the warning.
5228
f7c8a183
ILT
52292009-06-23 Ian Lance Taylor <iant@google.com>
5230
5231 PR 10133
5232 * stringpool.h (class Stringpool_template): Add optimize_ field.
5233 (Stringpool_template::set_optimize): New function.
5234 * stringpool.cc (Stringpool_template::Stringpool_template):
5235 Initialize optimize_ field.
5236 (Stringpool_template::set_string_offsets): Test local optimize
5237 fild rather than parameter.
5238 * layout.cc (Layout::Layout): Call set_optimize on the section
5239 name stringpool.
5240
e6a307ba
ILT
52412009-06-22 Ian Lance Taylor <iant@google.com>
5242
5243 PR 10030
5244 * yyscript.y: Parse TARGET.
5245 * script.cc (script_set_target): New function.
5246 * script-c.h (script_set_target): Declare.
5247 * options.cc (General_options::string_to_object_format): Rename
5248 from string_to_object_format in anonymous namespace. Change
5249 callers.
5250 * options.h (class General_options): Declare
5251 string_to_object_format.
5252
3ee173de
ILT
52532009-06-22 Ian Lance Taylor <iant@google.com>
5254
5255 * script-sections.cc (Script_sections::create_segments): Don't put
5256 program headers in a PT_LOAD segment if -n or -N.
5257
52582009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
5259
5260 PR 10141
5261 * options.h (class General_options): Add -z lazy and -z now. Sort
5262 -z options into alphabetical order.
5263 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
5264
cd6739a1 52652009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
5266
5267 * layout.cc (Layout::make_output_section): Call
5268 Target::new_output_section.
5269 (Layout::attach_allocated_section_to_segment): Put large section
5270 sections in a separate load segment with the large segment flag
5271 set.
5272 (Layout::segment_precedes): Sort large data segments after other
5273 load segments.
5274 (align_file_offset): New static function.
5275 (Layout::set_segment_offsets): Use align_file_offset.
5276 * output.h (class Output_section): Add is_small_section_ and
5277 is_large_section_ fields.
5278 (Output_section::is_small_section): New function.
5279 (Output_section::set_is_small_section): New function.
5280 (Output_section::is_large_section): New function.
5281 (Output_section::set_is_large_section): New function.
5282 (Output_section::is_large_data_section): New function.
5283 (class Output_segment): Add is_large_data_segment_ field.
5284 (Output_segment::is_large_data_segment): New function.
5285 (Output_segment::set_is_large_data_segment): New function.
5286 * output.cc (Output_section::Output_section): Initialize new
5287 fields.
5288 (Output_segment::Output_segment): Likewise.
5289 (Output_segment::add_output_section): Add assertion that large
5290 data sections always go in large data segments. Force small data
5291 sections to the end of the list of data sections. Force small BSS
5292 sections to the start of the list of BSS sections. For large BSS
5293 sections to the end of the list of BSS sections.
5294 * symtab.h (class Symbol): Declare is_common_shndx.
5295 (Symbol::is_defined): Check Symbol::is_common_shndx.
5296 (Symbol::is_common): Likewise.
5297 (class Symbol_table): Define enum Commons_section_type. Update
5298 declarations. Add small_commons_ and large_commons_ fields.
5299 * symtab.cc (Symbol::is_common_shndx): New function.
5300 (Symbol_table::Symbol_table): Initialize new fields.
5301 (Symbol_table::add_from_object): Put small and large common
5302 symbols in the right list.
5303 (Symbol_table::sized_finalized_symbol): Check
5304 Symbol::is_common_shndx.
5305 (Symbol_table::sized_write_globals): Likewise.
5306 * common.cc (Symbol_table::do_allocate_commons): Allocate new
5307 common symbol lists. Don't call do_allocate_commons_list if the
5308 list is empty.
5309 (Symbol_table::do_allocate_commons_list): Remove is_tls
5310 parameter. Add comons_section_type parameter. Change all
5311 callers. Handle small and large common symbols.
5312 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
5313 Symbol::is_common_shndx.
5314 * resolve.cc (symbol_to_bits): Likewise.
5315 * target.h (Target::small_common_shndx): New function.
5316 (Target::small_common_section_flags): New function.
5317 (Target::large_common_shndx): New function.
5318 (Target::large_common_section_flags): New function.
5319 (Target::new_output_section): New function.
5320 (Target::Target_info): Add small_common_shndx, large_common_shndx,
5321 small_common_section_flags, and large_common_section_flags
5322 fields.
5323 (Target::do_new_output_section): New virtual function.
5324 * arm.cc (Target_arm::arm_info): Initialize new fields.
5325 * i386.cc (Target_i386::i386_info): Likewise.
5326 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
5327 Likewise.
5328 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
5329 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
5330 (Target_x86_64::do_new_output_section): New function.
5331 * configure.ac: Define conditional MCMODEL_MEDIUM.
5332 * testsuite/Makefile.am (check_PROGRAMS): Add large.
5333 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
5334 (large_LDFLAGS): Define.
5335 * testsuite/large.c: New file.
5336 * testsuite/testfile.cc (Target_test::test_target_info):
5337 Initialize new fields.
5338 * configure, testsuite/Makefile.in: Rebuild.
5339
bb04269c
DK
53402009-06-05 Doug Kwan <dougkwan@google.com>
5341
5342 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 5343 * Makefile.in: Regenerate.
bb04269c
DK
5344 * i386.cc (class Target_i386): Define new virtual method to
5345 override do_is_local_label_name in parent.
5346 * object.cc (Sized_relobj::do_count_local_symbols): Discard
5347 local symbols if --discard-locals or -X is given.
5348 * options.h (class General_options): Declare new options
5349 '--discard-locals' and '-X' for discarding locals.
5350 * target.h (class Target): Define new methods is_local_label_name.
5351 Declare new virtual method do_is_local_label_name.
5352 * target.cc: New file.
5353 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
5354 (check_SCRIPTS): Add discard_locals_test.sh.
5355 (check_DATA): Add discard_local_tests.syms.
5356 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
5357 (discard_local_tests.syms, discard_locals_test.o): New make rules.
5358 * testsuite/Makefile.in: Regenerate.
5359 * testsuite/discard_locals_test.c: New file.
5360 * testsuite/discard_locals_test.sh: Same.
5361
805bb01c
DK
53622009-06-05 Doug Kwan <dougkwan@google.com>
5363
5364 * object.cc (Sized_relobj::Sized_relobj): Initialize
5365 discarded_eh_frame_shndx_ to -1U.
5366 (Sized_relobj::do_layout): Record index of a discard .eh_frame
5367 section.
5368 (Sized_relobj::do_count_local_symbols): Skip local symbols in
5369 a discarded .eh_frame section.
5370 (Sized_relobj::do_finalize_local_symbols): Ditto.
5371 * object.h (class Sized_relobj): Declare new member
5372 discarded_eh_frame_shndx_.
5373 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
5374 (local_labels_test.o, local_labels_test): New rules.
5375 * testsuite/Makefile.in: Regenerate.
5376
1dcd334d
DK
53772009-06-04 Doug Kwan <dougkwan@google.com>
5378
5379 * layout.cc (Layout::section_name_mapping): Add mapping for
5380 special ARM sections.
5381
96d49306
DK
53822009-06-03 Doug Kwan <dougkwan@google.com>
5383
5384 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
5385 (utils::has_overflow): Same.
5386
dff16297
ILT
53872009-06-03 Ian Lance Taylor <iant@google.com>
5388
5389 * layout.cc (Layout::section_name_mapping): New array, replacing
5390 Layout::linkonce_mapping.
5391 (Layout::section_name_mapping_count): New variable, replacing
5392 Layout::linkonce_mapping_count.
5393 (Layout::linkonce_output_name): Remove.
5394 (Layout::output_section_name): Rewrite.
5395 * layout.h (class Layout): Rename Linkonce_mapping to
5396 Section_name_mapping, linkonce_mapping to section_name_mapping,
5397 linkonce_mapping_count to section_name_mapping_count. Don't
5398 declare linkonce_output_name.
5399
c121c671
DK
54002009-06-03 Doug Kwan <dougkwan@google.com>
5401
5402 * gold/arm.cc (namespace utils): New.
5403 (Target_arm::reloc_is_non_pic): Define new method.
5404 (class Arm_relocate_functions): New.
5405 (Target_arm::Relocate::relocate): Handle relocation types used by
5406 Android.
5407
07800fab
ILT
54082009-06-03 Ian Lance Taylor <iant@google.com>
5409
5410 * arm.cc (Target_arm::scan::global): Use || instead of |.
5411
c121c671
DK
54122009-06-02 Doug Kwan <dougkwan@google.com>
5413
5414 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
5415 issued_non_pic_error_.
5416 (class Target_arm::Scan): Declare new method check_non_pic.
5417 Define new method symbol_needs_plt_entry.
5418 Declare new data member issued_non_pic_error_.
5419 (class Target_arm::Relocate): Declare new method
5420 should_apply_static_reloc.
5421 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
5422 (Target_arm::Scan::check_non_pic): Define new method.
5423 (Target_arm::Scan::local): Handle a small subset of reloc types used
5424 by Android.
5425 (Target_arm::Scan::local): Same.
5426 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
5427
b19b0c6d
ILT
54282009-05-31 Mikolaj Zalewski <mikolajz@google.com>
5429
5430 * incremental.cc (Incremental_inputs::report_command_line): Filter
5431 out --incremental-* options.
5432
94cdfcff
DK
54332009-05-29 Doug Kwan <dougkwan@google.com>
5434
5435 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
5436 template class.
5437 (class Target_arm): Update comment.
5438 (Target_arm::Target_arm): Initialize new data members GOT_,
5439 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
5440 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
5441 and Target_arm::rel_dyn_section.
5442 Declare new_enum Target_arm::Got_type.
5443 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
5444 and DYNBSS_.
5445 Update commments for member do_dynsym_value.
5446 (Target_arm::got_size, Target_arm::plt_section,
5447 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
5448 new methods inside class defintion.
5449 (Target_arm::got_section): Define new method.
5450 (Target_arm::rel_dyn_section): Same.
5451 (Output_data_plt_arm): New template class.
5452 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
5453 (Output_data_plt_arm:do_adjust_output_section): Define new method.
5454 (Output_data_plt_arm::add_entry): Same.
5455 (Output_data_plt_arm::first_plt_entry): Define new
5456 static data member for PLT instruction template.
5457 (Output_data_plt_arm::plt_entry): Same.
5458 (Output_data_plt_arm::do_write): Define new method.
5459 (Target_arm::make_plt_entry): Same.
5460 (Target_arm::do_finalize_sections): Same.
5461 (Target_arm::do_dynsym_value): Same.
5462
4a657b0d
DK
54632009-05-28 Doug Kwan <dougkwan@google.com>
5464
5465 * Makefile.am (TARGETSOURCES): Add arm.cc.
5466 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
5467 * Makefile.in: Regenerate.
5468 * arm.cc: New file.
5469 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
5470
e7ae8c36
DK
54712009-05-26 Doug Kwan <dougkwan@google.com>
5472
5473 * options.cc (General_options::parse_exclude_libs). Fix a comment.
5474 (General_options::check_excluded_libs): Strip off directories in
5475 archive name before matching like GNU ld does.
5476 * testsuite/Makefile.am (MOSTLYCLEANFILES,
5477 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
5478 (exclude_libs_test_LDFLAGS): Add linker option
5479 -Wl,--exclude-libs,libexclude_libs_test_3
5480 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
5481 an explicit archive without using -l.
5482 (alt/libexclude_libs_test_3.a): New make rule.
5483 * testsuite/Makefile.in: Regenerate.
5484 * testsuite/exclude_libs_test.c : Declare lib3_default().
5485 (main): Call it.
5486 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
5487 * exclude_libs_test_3.c: New file.
5488
f12e7348
NC
54892009-05-26 Nick Clifton <nickc@redhat.com>
5490
5491 * po/id.po: New Indonesian translation.
5492 * po/gold.pot: Updated template file.
5493
4daadc0d
ST
54942009-05-22 Sriraman Tallam <tmsriram@google.com>
5495
e1df38aa 5496 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
5497 gc_comdat_test files. Add -Wl,--gc-sections to build
5498 gc_comdat_test.
5499 * testsuite/Makefile.in: Regenerate.
5500 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
5501
531813ad
ST
55022009-05-21 Sriraman Tallam <tmsriram@google.com>
5503
5504 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
5505 kept comdat section was garbage collected.
5506 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
5507 * testsuite/Makefile.in: Regenerate.
5508 * testsuite/gc_comdat_test.sh: New file.
5509 * testsuite/gc_comdat_test_1.cc: New file.
5510 * testsuite/gc_comdat_test_2.cc: New file.
5511
65514900
CC
55122009-05-19 Doug Kwan <dougkwan@google.com>
5513
5514 * archive.cc (Archive::Archive): Move constructor from archive.h
5515 to here. Initialize no_export_.
5516 (Archive::get_elf_object_for_member): Set no_export flag of object.
5517 * archive.h (Archive::Archive): Move constructor body to
5518 archive.cc.
5519 (Archive::no_export): New method.
5520 (Archive::no_export_): New field.
5521 * object.h (Object::Object): Initialize no_export_ to false.
5522 (Object::no_export, Object::set_no_export): New methods.
5523 (Object::no_export_): New field.
5524 * options.cc (General_options::parse_exclude_libs): New method.
5525 (General_options::check_excluded_libs) Same.
5526 * options.h (exclude_libs): New option.
5527 (General_options::check_excluded_libs): New method declaration.
5528 (General_options::excluded_libs_): New field.
5529 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
5530 default or protected visibility if an object has no-export flag set.
5531 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
5532 (check_SCRIPTS): Add exclude_libs_test.sh.
5533 (check_DATA): Add exclude_libs_test.syms.
5534 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
5535 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
5536 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
5537 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
5538 (exclude_libs_test.syms, libexclude_libs_test_1.a,
5539 libexclude_libs_test_2.a): New rules.
5540 * testsuite/Makefile.in: Regenerate.
5541 * testsuite/exclude_libs_test.c: New file.
5542 * testsuite/exclude_libs_test.sh: Ditto.
5543 * testsuite/exclude_libs_test_1.c: Ditto.
5544 * testsuite/exclude_libs_test_2.c: Ditto.
5545
1b77ea50
ILT
55462009-05-15 Ian Lance Taylor <iant@google.com>
5547
5548 * configure.ac: Check for declarations for cases where libiberty.h
5549 checks HAVE_DECL_xxx.
5550 * configure, config.in: Rebuild.
5551
072fe7ce
ILT
55522009-05-15 Mikolaj Zalewski <mikolajz@google.com>
5553
5554 * gold.h (Incremental_argument_list): Remove (invalid) forward
5555 declaration.
5556 * incremental.cc (Incremental_inputs::report_achive): New method.
5557 (Incremental_inputs::report_object): New method.
5558 (Incremental_inputs::report_script): New method.
5559 (Incremental_inputs::finalize_inputs): New method.
5560 (Incremental_inputs::finalize): Call finalize_inputs().
5561 (Incremental_inputs::sized_create_incremental_inputs_section_data):
5562 Create inputs entries.
5563 * incremental.h (Incremental_input_type): New enum.
5564 (Incremental_inputs::Incremental_input): Initialize new fields.
5565 (Incremental_inputs::report_inputs): New method.
5566 (Incremental_inputs::report_achive): New method.
5567 (Incremental_inputs::report_object): New method.
5568 (Incremental_inputs::report_script): New method.
5569 (Incremental_inputs::finalize_inputs): New method.
5570 (Incremental_inputs::Input_info): New struct.
5571 (Incremental_inputs::Input_info_map): New typedef.
5572 (Incremental_inputs::lock_): New field.
5573 (Incremental_inputs::Inputs_): New field.
5574 (Incremental_inputs::Inputs_map): New field.
5575 * main.cc (main): Call Incremental_input::report_inputs.
5576 * options.h (Input_argument_list): Typedef moved from
5577 Input_arguments.
5578 (Input_file_group::Files): Remove, use ::Input_argument_list.
5579 (Input_file_group::Input_argument_list): Remove, use
5580 ::Input_argument_list.
5581 * plugin.cc (Plugin_manager::add_input_file): Add error in
5582 incremental build.
5583 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
5584 functions.
5585 * script.cc (read_input_script): Call
5586 Incremental_input::report_script.
5587 * script.h (Script_info): New class.
5588
b0481b0b
ILT
55892009-04-27 Ian Lance Taylor <iant@google.com>
5590
5591 * x86_64.cc (do_adjust_output_section): Set entsize to
5592 plt_entry_size.
5593
b22a5a41 55942009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
5595
5596 * output.cc (Output_file::close): After short writes, continue
5597 writing from the correct offset in the buffer being written.
5598
40fde488
CD
55992009-04-23 Chris Demetriou <cgd@google.com>
5600
5601 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
5602 * configure: Regenerate.
5603 * config.in: Regenerate.
5604 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
5605 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
5606
3ce2c28e
ILT
56072009-04-21 Mikolaj Zalewski <mikolajz@google.com>
5608
5609 * incremental.cc (Incremental_inputs_header_data): Renamed from
5610 Incremental_input_header_data.
5611 (Incremental_inputs_header_data::data_size): New field.
5612 (Incremental_inputs_header_data::put_input_file_count): Renamed
5613 from input_file_count.
5614 (Incremental_inputs_header_data::put_command_line_offset): Renamed
5615 from command_line_offset.
5616 (Incremental_inputs_header_data::put_reserved): Renamed from
5617 put_reserved.
5618 (Incremental_inputs_entry_data): Renamed from
5619 Incremental_input_entry_data.
5620 (Incremental_inputs_entry_data::data_size): New field.
5621 (Incremental_inputs::report_command_line): New method.
5622 (Incremental_inputs::finalize): New method.
5623 (Incremental_inputs::create_incremental_inputs_data): New method.
5624 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
5625 * incremental.h: New file.
5626 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
5627 (Layout::finalize): Create incremental inputs section in
5628 incremental builds.
5629 (Layout::create_incremental_info_sections): New method.
5630 * layout.h (Layout::incremental_inputs): New method.
5631 (Layout::create_incremental_info_sections): New method.
5632 (Layout::incremental_inputs_): New field.
5633 * main.cc (main): Notify Incremental_input of the command line.
5634
e55bde5e
ILT
56352009-04-01 Ian Lance Taylor <iant@google.com>
5636 Mikolaj Zalewski <mikolajz@google.com>
5637
5638 * gold.h (reserve_unordered_map): Define, three versions, one for
5639 each version of Unordered_map.
5640 * layout.cc (Layout::Layout): Remove options parameter. Add
5641 number_of_input_files parameter. Don't initialize options_.
5642 Initialize number_of_input_files_ and resized_signatures_. Move
5643 sections_are_attached_.
5644 (Layout::layout_group): Reserve space for group_signatures_.
5645 (Layout::find_or_add_kept_section): Change name parameter to be a
5646 reference. Resize signatures_ map when it gets large enough.
5647 (Layout::layout_eh_frame): Use parameters->options() instead of
5648 this->options_.
5649 (Layout::make_output_section): Likewise.
5650 (Layout::attach_allocated_section_to_segment): Likewise.
5651 (Layout::finalize, Layout::create_executable_stack): Likewise.
5652 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
5653 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
5654 * layout.h (class Layout): Update declarations. Remove options_
5655 field. Add number_of_input_files_ and resized_signatures_
5656 fields. Move sections_are_attached_ field.
5657 * main.cc (main): Pass number of input files to Layout
5658 constructor. Don't pass options.
5659
154b857c
ILT
56602009-03-30 Ian Lance Taylor <iant@google.com>
5661
5662 * ffsll.c (ffsll): Correct implementation.
5663
2f35ab9b
ILT
56642009-03-27 Ian Lance Taylor <iant@google.com>
5665
fd03461a
ILT
5666 * ffsll.c: New file.
5667 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
5668 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
5669 * ftruncate.c (ftruncate): Declare before definition.
5670 * mremap.c (mremap): Likewise.
5671 * pread.c (pread): Likewise.
5672 * configure, Makefile.in, config.in: Rebuild.
5673
2f35ab9b
ILT
5674 * mremap.c: New file.
5675 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
5676 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
5677 (mremap): Declare if HAVE_MREMAP is not defined.
5678 * configure, Makefile.in, config.in: Rebuild.
5679
33aea2fd
CC
56802009-03-27 Cary Coutant <ccoutant@google.com>
5681
5682 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
5683 position independent.
5684 * sparc.cc (Target_sparc::check_non_pic): Likewise.
5685 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
5686
6d479619
CC
56872009-03-24 Cary Coutant <ccoutant@google.com>
5688
5689 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
5690 an executable.
5691 (needs_dynamic_reloc): Likewise.
5692
afc06bb8
ILT
56932009-03-24 Ian Lance Taylor <iant@google.com>
5694
5695 * yyscript.y (file_cmd): Recognize EXTERN.
5696 (extern_name_list, extern_name_list_body): New nonterminals.
5697 * script.cc (script_add_extern): Define.
5698 * script-c.h (script_add_extern): Declare.
5699
f6060a4d
ILT
57002009-03-24 Rafael Avila de Espindola <espindola@google.com>
5701
5702 * object.cc (is_elf_object): Define.
5703 * object.h (is_elf_object): Declare.
5704 * archive.cc (Archive::get_elf_object_for_member): Call
5705 is_elf_object.
33aea2fd 5706 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 5707
26736d8e
ILT
57082009-03-24 Elliott Hughes <enh@google.com>
5709
5710 * output.cc (Output_file::map_anonymous): Define.
5711 (Output_file::map): Use map_anonymous. If the regular mmap fails,
5712 try an anonymous one. Report the size if the mmap fails.
5713 * output.h (class Output_file): Declare map_anonymous.
5714
22fd9730
ILT
57152009-03-24 Ian Lance Taylor <iant@google.com>
5716
5717 * target-select.cc (instantiate_target): Don't acquire the lock if
5718 the instantiated_target_ field has already been set.
5719
cb010894
ILT
57202009-03-23 Ian Lance Taylor <iant@google.com>
5721
7f055c20
ILT
5722 * gold-threads.h (class Initialize_lock): Define.
5723 * gold-threads.cc (class Initialize_lock_once): Define.
5724 (initialize_lock_control): New static variable.
5725 (initialize_lock_pointer): New static variable.
5726 (initialize_lock_once): New static function.
5727 (Initialize_lock::Initialize_lock): Define.
5728 (Initialize_lock::initialize): Define.
5729 * target-select.h: Include "gold-threads.h".
5730 (class Target_selector): Add lock_ and initialize_lock_ fields.
5731 Don't define instantiate_target, just declare it.
5732 * target-select.cc (Target_selector::Target_selector): Initialize
5733 new fields.
5734 (Target_selector::instantiate_target): Define.
5735 * descriptors.h: Include "gold-threads.h".
5736 (class Descriptors): Add initialize_lock_ field.
5737 * descriptors.cc (Descriptors::Descriptors): Initialize new
5738 field.
5739 (Descriptors::open): Use initialize_lock_ field
5740 * errors.h (class Errors): Add initialize_lock_ field.
5741 * errors.cc (Errors::Errors): Initialize new field.
5742 (Errors::initialize_lock): Use initialize_lock_ field.
5743 * powerpc.cc (class Target_selector_powerpc): Remove
5744 instantiated_target_ field. In do_recognize call
5745 instantiate_target rather than do_instantiate_target. In
5746 do_instantiate_target just allocate a new target.
5747 * sparc.cc (class Target_selector_sparc): Likewise.
5748
36959681
ILT
5749 * freebsd.h: New file.
5750 * i386.cc: Include "freebsd.h".
5751 (Target_i386): Derive from Target_freebsd rather than
5752 Sized_target.
5753 (Target_selector_i386): Derive from Target_selector_freebsd rather
5754 than Target_selector.
5755 * x86_64.cc: Include "freebsd.h".
5756 (Target_x86_64): Derive from Target_freebsd rather than
5757 Sized_target.
5758 (Target_selector_x86_64): Derive from Target_selector_freebsd
5759 rather than Target_selector.
5760 * target.h (class Target): Add adjust_elf_header and
5761 do_adjust_elf_header.
5762 * output.cc (Output_file_header:: do_sized_write): Call target
5763 adjust_elf_header routine.
5764 * configure.tgt: Set targ_osabi.
5765 * configure.ac: Define GOLD_DEFAULT_OSABI.
5766 * parameters.cc (Parameters::default_target): Pass
5767 GOLD_DEFAULT_OSABI to select_target.
5768 * target-select.h (class Target_selector): Make instantiate_target
5769 protected rather than private.
5770 * Makefile.am (HFILES): Add freebsd.h.
5771 * configure, Makefile.in, config.in: Rebuild.
5772
cb010894
ILT
5773 * merge.cc (do_add_input_section): Correct pend value. Change
5774 message about last entry not being null terminated from error to
5775 warning.
5776
0e879927
ILT
57772009-03-20 Mikolaj Zalewski <mikolajz@google.com>
5778
5779 * incremental.cc: New file.
5780 * Makefile.am (CCFILES): Add incremental.cc.
5781 * Makefile.in: Rebuild.
5782
41105937
PP
57832009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
5784
5785 * layout.cc (Layout::output_section_name): Preserve names
5786 of '.note.' sections.
e1df38aa 5787
60439920
ILT
57882009-03-19 Ian Lance Taylor <iant@google.com>
5789
5790 * descriptors.cc (Descriptors::open): Check that the options are
5791 valid before using them.
5792
0d371ad3
ILT
57932009-03-18 Ian Lance Taylor <iant@google.com>
5794
5795 * script-sections.h: Include <list>.
5796 (class Script_sections): Change Sections_elements from std::vector
5797 to std::list. Typedef public Elements_iterator. Add
5798 orphan_section_placement_, data_segment_align_start_, and
5799 saw_data_segment_align_ fields. Remove data_segment_align_index_
5800 field.
5801 * script-sections.cc (class Orphan_section_placement): New class.
5802 (class Sections_element): Add virtual functions is_relro and
5803 orphan_section_init. Remove virtual function place_orphan_here.
5804 (class Output_section_definition): Add is_relro and
5805 orphan_section_init. Remove place_orphan_here.
5806 (class Orphan_output_section): Likewise.
5807 (Script_sections::Script_sections): Update for field changes.
5808 (Script_sections::data_segment_align): Set saw_data_segment_align_
5809 and data_segment_align_start_, not data_segment_align_index.
5810 (Script_sections::data_segment_relro_end): Check
5811 saw_data_segment_align_. Use data_segment_align_start_ rather
5812 than data_segment_align_index_.
5813 (Script_sections::place_orphan): Rewrite to use
5814 Orphan_section_placement.
5815
9201d894
ILT
58162009-03-17 Ian Lance Taylor <iant@google.com>
5817
9c5b8369
ILT
5818 * archive.cc (Archive::add_symbols): Check for a version attached
5819 to the symbol name in the archive map.
5820 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
5821 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
5822 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
5823 (ver_test_11.a): New target.
5824 * testsuite/Makefile.in: Rebuild.
5825
9201d894
ILT
5826 * configure.ac: Check for chsize and posix_fallocate. Replace
5827 ftruncate.
5828 * ftruncate.c: New file, from gnulib.
5829 * output.cc (posix_fallocate): Define dummy version if not
5830 HAVE_POSIX_FALLOCATE.
5831 (Output_file::map): Call posix_fallocate rather than lseek and
5832 write.
5833 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
5834 * configure, Makefile.in, config.in: Rebuild.
5835
ef4ab7a8 58362009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 5837
ef4ab7a8
PP
5838 * layout.h (Layout::create_note): Add section_name parameter.
5839 * layout.cc (Layout::create_note): Likewise.
5840 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 5841
8c500701
ILT
58422009-03-17 Ian Lance Taylor <iant@google.com>
5843
e85b18e1
ILT
5844 * descriptors.cc: Include "options.h".
5845 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
5846 (Descriptors::open): Always use O_CLOEXEC when opening a new
5847 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
5848 then set FD_CLOEXEC.
5849
9efe6174
ILT
5850 * sparc.cc (class Target_sparc): Add has_got_section.
5851 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
5852 make sure we have a GOT section.
5853
5854 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
5855 (Target_sparc::Scan::local): Likewise.
5856 (Target_sparc::Scan::global): Likewise.
5857 (Target_sparc::Relocate::relocate): Likewise.
5858 (Target_sparc::Relocate::relocate_tls): Likewise.
5859
8c500701
ILT
5860 * symtab.cc (Symbol_table::define_default_version): New function,
5861 broken out of add_from_object.
5862 (Symbol_table::add_from_object): Call define_default_version.
5863 (Symbol_table::define_special_symbol): Add resolve_oldsym
5864 parameter. Change all callers. If the version for a symbol comes
5865 from a version script, resolve it with the symbol with the same
5866 name with no version. Also add the symbol without a version if
5867 appropriate.
5868 (do_define_in_output_data): If resolving with oldsym, don't delete
5869 sym.
5870 (do_define_in_output_segment): Likewise.
5871 (do_define_as_constant): Likewise.
5872 * symtab.h (class Symbol_table): Update declarations.
5873
f1ed28fb
ILT
58742009-03-13 Ian Lance Taylor <iant@google.com>
5875
15f8229b
ILT
5876 * readsyms.cc (Read_symbols::incompatible_warning): New function.
5877 (Read_symbols::requeue): New function.
5878 (Read_symbols::do_read_symbols): If make_elf_object fails because
5879 the target type is not configured, and the file was searched for,
5880 issue a warning and retry with the next directory.
5881 (Add_symbols::run): If the file has an incompatible format, and
5882 it was searched for, requeue the Read_symbols task. On error,
5883 release the object.
5884 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
5885 dirindex parameter to constructor. Change all callers. Declare
5886 incompatible_warning and requeue.
5887 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
5888 input_argument_ and input_group_ fields. Add them to
5889 constructor. Change all callers.
5890 (class Read_script): Add dirindex_ field. Add it to constructor.
5891 Change all callers.
5892 * archive.cc (Archive::setup): Remove input_objects parameter.
5893 Change all callers.
5894 (Archive::get_file_and_offset): Likewise.
5895 (Archive::read_all_symbols): Likewise.
5896 (Archive::read_symbols): Likewise.
5897 (Archive::get_elf_object_for_member): Remove input_objects
5898 parameter. Add punconfigured parameter. Change all callers.
5899 (Archive::add_symbols): Change return type to bool. Check return
5900 value of include_member.
5901 (Archive::include_all_members): Likewise.
5902 (Archive::include_member): Change return type to bool. Return
5903 false if first included object has incompatible target. Set
5904 included_member_ field.
5905 (Add_archive_symbols::run): If add_symbols returns false, requeue
5906 Read_symbols task.
5907 * archive.h (class Archive): Add included_member_ field.
5908 Initialize it in constructor. Add input_file and searched_for
5909 methods. Update declarations.
5910 (class Add_archive_symbols): Add dirpath_, dirindex_, and
5911 input_argument_ fields. Add them to constructor. Change all
5912 callers.
5913 * script.cc: Include "target-select.h".
5914 (class Parser_closure): Add skip_on_incompatible_target_ and
5915 found_incompatible_target_ fields. Add
5916 skip_on_incompatible_target parameter to constructor. Change all
5917 callers. Add methods skip_on_incompatible_target,
5918 clear_skip_on_incompatible_target, found_incompatible_target, and
5919 set_found_incompatible_target.
5920 (read_input_script): Add dirindex parameter. Change all callers.
5921 If parser finds an incompatible target, requeue Read_symbols
5922 task.
5923 (script_set_symbol): Clear skip_on_incompatible_target in
5924 closure.
5925 (script_add_assertion, script_parse_option): Likewise.
5926 (script_start_sections, script_add_phdr): Likewise.
5927 (script_check_output_format): New function.
5928 * script.h (read_input_script): Update declaration.
5929 * script-c.h (script_check_output_format): Declare.
5930 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
5931 (ignore_cmd): Remove OUTPUT_FORMAT.
5932 * fileread.cc (Input_file::Input_file): Add explicit this.
5933 (Input_file::will_search_for): New function.
5934 (Input_file::open): Add pindex parameter. Change all callers.
5935 * fileread.h (class Input_file): Add input_file_argument method.
5936 Declare will_search_for. Update declarations.
5937 * object.cc (make_elf_object): Add punconfigured parameter.
5938 Change all callers.
5939 * object.h (class Object): Make input_file public. Add
5940 searched_for method.
5941 (make_elf_object): Update declaration.
5942 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
5943 restart search.
5944 * dirsearch.h (class Dirsearch): Update declaration.
5945 * options.h (class General_options): Add --warn-search-mismatch.
5946 * parameters.cc (Parameters::is_compatible_target): New function.
5947 * parameters.h (class Parameters): Declare is_compatible_target.
5948 * workqueue.cc (Workqueue::add_blocker): New function.
5949 * workqueue.h (class Workqueue): Declare add_blocker.
5950
f1ed28fb
ILT
5951 * fileread.cc (Input_file::open): Remove options parameter.
5952 Change all callers.
5953 (Input_file::open_binary): Likewise.
5954 * script.cc (read_input_script): Likewise.
5955 * readsyms.h (class Read_symbols): Remove options_ field. Remove
5956 options parameter from constructor. Change all callers.
5957 (class Read_script): Likewise.
5958 * fileread.h (class Input_file): Update declarations.
5959 * script.h (read_input_script): Update declaration.
5960
34dd024a
NC
59612009-03-10 Nick Clifton <nickc@redhat.com>
5962
5963 * po/es.po: New Spanish translation.
5964
6d71b17c
CC
59652009-03-06 Cary Coutant <ccoutant@google.com>
5966
5967 * options.cc (parse_short_option): Keep dash_z from registering itself.
5968
031cdbed
ILT
59692009-03-03 Ian Lance Taylor <iant@google.com>
5970
5971 PR 9918
5972 * target-reloc.h (relocate_section): Pass output_section to
5973 relocate.
5974 * i386.cc (Target_i386::should_apply_static_reloc): Add
5975 output_section parameter. Change all callers.
5976 (Target_i386::Relocate::relocate): Add output_section parameter.
5977 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
5978 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
5979 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
5980 * testsuite/two_file_shared.sh: New script.
5981 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
5982 (check_DATA): Add two_file_shared.dbg.
5983 (two_file_shared.dbg): New target.
5984 * testsuite/Makefile.in: Rebuild.
5985
15d5fa16
ILT
59862009-03-01 Ian Lance Taylor <iant@google.com>
5987
5988 * configure.ac: Check for byteswap.h.
5989 * configure: Rebuild.
5990 * config.in: Rebuild.
5991
8a4c0b0d
ILT
59922009-03-01 Mikolaj Zalewski <mikolajz@google.com>
5993
5994 * layout.cc (Layout::find_or_add_kept_section): New function.
5995 (Layout::add_comdat): Removed.
5996 * layout.h (struct Kept_section): Move out of class Layout.
5997 Remove trailing underscores from field names. Add group_sections
5998 field. Rename group_ field to is_group. Change all uses.
5999 (class Layout): Declare find_or_add_kept_section, not add_comdat.
6000 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
6001 comdat_groups_ field.
6002 (Sized_relobj::include_section_group): Use
6003 find_or_add_kept_section and Kept_section::group_sections.
6004 (Sized_relobj::include_linkonce_section): Likewise.
6005 * object.cc (class Sized_relobj): Don't define Comdat_group or
6006 Comdat_group_table. Remove find_comdat_group and
6007 add_comdat_group. Remove comdat_groups_ field.
6008 * plugin.cc (include_comdat_group): Use
6009 Layout::find_or_add_kept_section.
6010
b4ecf66b
ILT
60112009-02-28 Ian Lance Taylor <iant@google.com>
6012
14359ca0
ILT
6013 * README: --gc-sections and map files are now supported. Document
6014 some build requirements.
6015
b4ecf66b
ILT
6016 PR 6992
6017 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
6018 relocatable link set the value of the section symbol to zero.
6019 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
6020 relocatable link don't include the section address in the local
6021 symbol value.
6022
0602e05a
ILT
60232009-02-27 Ian Lance Taylor <iant@google.com>
6024
fd9d194f
ILT
6025 PR 6811
6026 * options.h (class Search_directory): Add is_system_directory.
6027 (class General_options): Declare is_in_system_directory.
6028 * options.cc (get_relative_sysroot): Make static.
6029 (get_default_sysroot): Make static.
6030 (General_optoins::is_in_system_directory): New function.
6031 * fileread.cc (Input_file::is_in_system_directory): New function.
6032 * fileread.h (class Input_file): Declare is_in_system_directory.
6033 * object.h (class Object): Add is_in_system_directory.
6034 (class Input_objects): Remove system_library_directory_ field.
6035 * object.cc (Input_objects::add_object): Don't set
6036 system_library_directory_.
6037 (input_objects::found_in_system_library_directory): Remove.
6038 * symtab.cc (Symbol_table::write_globals): Remove input_objects
6039 parameter. Change all callers.
6040 (Symbol_table::sized_write_globals): Likewise.
6041 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
6042 Call Object::is_in_system_directory.
6043 * symtab.h (class Symbol_table): Update declarations.
6044
61edd21f
ILT
6045 PR 5990
6046 * descriptors.h (Open_descriptor): Add is_on_stack field.
6047 * descriptors.cc (Descriptors::open): If the descriptor is on the
6048 top of the stack, remove it. Initialize is_on_stack field.
6049 (Descriptors::release): Only add pod to stack if it is not on the
6050 stack already.
6051 (Descriptors::close_some_descriptor): Clear stack_next and
6052 is_on_stack fields.
6053
e29e076a
ILT
6054 PR 7091
6055 * output.cc (Output_section::find_starting_output_address): Rename
6056 from starting_output_address; add PADDR parameter; change return
6057 type.
6058 * output.h (class Output_section): Declare
6059 find_starting_output_address instead of starting_output_address.
6060 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
6061 section symbol for which we can't find a merge section.
6062
0602e05a
ILT
6063 PR 9836
6064 * symtab.cc (Symbol_table::add_from_object): If the visibility is
6065 hidden or internal, force the symbol to be local.
6066 * resolve.cc (Symbol::override_visibility): Define.
6067 (Symbol::override_base): Use override_visibility.
6068 (Symbol_table::resolve): Likewise.
6069 (Symbol::override_base_with_special): Likewise.
6070 (Symbol_table::override_with_special): If the visibility is hidden
6071 or internal, force the symbol to be local.
6072 * symtab.h (class Symbol): Add set_visibility and
6073 override_visibility.
6074 * testsuite/ver_test_1.sh: New file.
6075 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
6076 (check_DATA): Add ver_test_1.syms.
6077 (ver_test_1.syms): New target.
6078 * testsuite/Makefile.in: Rebuild.
6079
401a9a73
CC
60802009-02-25 Cary Coutant <ccoutant@google.com>
6081
6082 * layout.cc (Layout::choose_output_section): Don't rename sections
6083 when using a linker script that has a SECTIONS clause.
6084 * Makefile.in: Regenerate.
6085
6086 * testsuite/Makefile.am (script_test_5.sh): New test case.
6087 * testsuite/Makefile.in: Regenerate.
6088 * testsuite/script_test_5.cc: New file.
6089 * testsuite/script_test_5.sh: New file.
6090 * testsuite/script_test_5.t: New file.
6091
f488e4b0
CC
60922009-02-13 Rafael Avila de Espindola <espindola@google.com>
6093
6094 * archive.cc (Archive::include_member): Update calls to add_symbols.
6095 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
6096 the Layout argument.
6097 * dynobj.h (do_add_symbols): Add the Layout argument.
6098 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
6099 Layout argument.
6100 * object.h (Object::add_symbols): Add the Layout argument.
6101 (Object::do_add_symbols): Add the Layout argument.
6102 (Sized_relobj::do_add_symbols): Add the Layout argument.
6103 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
6104 Unify the two versions.
6105 (Add_plugin_symbols): Remove.
6106 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
6107 (Sized_pluginobj::do_add_symbols): Unify the two versions.
6108 (Add_plugin_symbols): Remove.
6109 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
6110 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
6111 (Add_symbols::run): Make it work with Pulginobj.
6112
89dd1680
ILT
61132009-02-06 Ian Lance Taylor <iant@google.com>
6114
6115 * object.cc (Sized_relobj::do_layout): Make info message start
6116 with lower case letter.
6117
266d0a74
ILT
61182009-02-06 Mikolaj Zalewski <mikolajz@google.com>
6119
602b464e
ILT
6120 * binary.cc: Fix file comment.
6121
266d0a74
ILT
6122 * options.h (enum Incremental_disposition): Define.
6123 (class General_options): Add new options: --incremental,
6124 --incremental_changed, --incremental_unchanged,
6125 --incremental_unknown. Add incremental_disposition_ and
6126 implicit_incremental_ fields.
6127 (General_options::incremental_disposition): New function.
6128 (class Position_dependent_options): Add incremental_disposition
6129 option.
6130 (Position_dependent_options::copy_from_options): Set incremental
6131 dispositions.
6132 * options.cc (General_options::parse_incremental_changed): New
6133 function.
6134 (General_options::parse_incremental_unchanged): New function.
6135 (General_options::parse_incremental_unknown): New function.
6136 (General_options::General_options): Initialize new fields
6137 incremental_disposition_ and implicit_incremental_.
6138 (General_options::finalize): Check for uasge of --incremental-*
6139 without --incremental.
6140
f073bbf7
CD
61412009-02-06 Chris Demetriou <cgd@google.com>
6142
6143 * gold.h (gold_undefined_symbol): Change to take only a Symbol
6144 pointer and to report location as the file name associated with
6145 the symbol.
6146 (gold_undefined_symbol_at_location): New function to replace the
6147 old gold_undefined_symbol functionality.
6148 * target-reloc.h (relocate_section): Update to use
6149 gold_undefined_symbol_at_location.
6150 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
6151 Call gold_undefined_symbol function rather than gold_error.
6152 * errors.h (Errors::undefined_symbol): Take location as a
6153 string, rather than calculating it from a relocation.
6154 * errors.cc (Errors::fatal): Print "fatal error:" before the
6155 formatted message.
6156 (Errors::error, Errors::error_at_location): Print "error: "
6157 before the formatted message.
6158 (Errors::undefined_symbol): Take location as a string, rather
6159 than calculating it from a relocation.
6160 (gold_undefined_symbol_at_location): New function akin to
6161 old gold_undefined_symbol, calculates location from relocation.
6162 (gold_undefined_symbol): Change to take only a Symbol pointer
6163 and to report location as the file name associated with the symbol.
6164 * testsuite/debug_msg.sh: Update for changed error messages.
6165 * testsuite/undef_symbol.sh: Likewise.
6166
8e94a90c
ILT
61672009-02-04 Duncan Sands <baldrick@free.fr>
6168
6169 PR 9812
6170 * reduced_debug_output.h
6171 (Output_reduced_debug_abbrev_section::failed): Use format for
6172 gold_warning.
6173 (Output_reduced_debug_info_section::faild): Likewise.
6174
88a0e15b
ILT
61752009-01-31 Mikolaj Zalewski <mikolajz@google.com>
6176
6177 * script.cc (Lazy_demangler): New class.
6178 (Version_script_info::get_symbol_version_helper): Demangle a
6179 symbol only once.
6180
5efc7cd2
CC
61812009-01-29 Cary Coutant <ccoutant@google.com>
6182
6183 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
6184 to __tls_get_addr.
6185 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
6186
e0ebcf42
ILT
61872009-01-28 Ian Lance Taylor <iant@google.com>
6188
5efc7cd2 6189 * version.cc (version_string): Bump to 1.9.
75fe7426 6190
e0ebcf42
ILT
6191 * gold.h: Include <cstring> and <stdint.h>.
6192 * version.cc: Include <cstdio>.
6193 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
6194 warning.
6195 * reduced_debug_output.cc (insert_into_vector): Rename from
6196 Insert_into_vector; change all callers. Use Swap_unaligned to
6197 avoid aliasing issue; remove union since it is unnecessary.
6198
8e2813be 61992009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
6200
6201 * Makefile.am (CCFILES): Add gc.cc.
6202 (HFILES): Add gc.h.
6203 * Makefile.in: Regenerate.
6204 * gold.cc (Gc_runner): New class.
6205 (queue_initial_tasks): Call garbage collection related tasks
6206 when corresponding options are invoked.
6207 (queue_middle_gc_tasks): New function.
6208 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
6209 processed early before laying out sections during garbage collection.
6210 * gold.h (queue_middle_gc_tasks): New function.
6211 (is_prefix_of): Move from "layout.cc".
6212 * i386.cc (Target_i386::gc_process_relocs): New function.
6213 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
6214 * main.cc (main): Create object of class "Garbage_collection".
6215 * object.cc (Relobj::copy_symbols_data): New function.
6216 (Relobj::is_section_name_included): New function.
e1df38aa
NC
6217 (Sized_relobj::do_layout): Allow this function to be called twice
6218 during garbage collection and defer layout of section during the
6d03d481
ST
6219 first call.
6220 * object.h (Relobj::get_symbols_data): New function.
6221 (Relobj::is_section_name_included): New function.
6222 (Relobj::copy_symbols_data): New function.
6223 (Relobj::set_symbols_data): New function.
6224 (Relobj::get_relocs_data): New function.
6225 (Relobj::set_relocs_data): New function.
6226 (Relobj::is_output_section_offset_invalid): New pure virtual function.
6227 (Relobj::gc_process_relocs): New function.
6228 (Relobj::do_gc_process_relocs): New pure virtual function.
6229 (Relobj::sd_): New data member.
6230 (Sized_relobj::is_output_section_offset_invalid): New function.
6231 (Sized_relobj::do_gc_process_relocs): New function.
6232 * options.h (General_options::gc_sections): Modify to not be a no-op.
6233 (General_options::print_gc_sections): New option.
6234 * plugin.cc (Plugin_finish::run): Remove function call to
6235 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
6236 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
6237 * reloc.cc (Read_relocs::run): Add task to process relocs and
6238 determine unreferenced sections when doing garbage collection.
6239 (Gc_process_relocs): New class.
6240 (Sized_relobj::do_gc_process_relocs): New function.
6241 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
6242 sections that are garbage collected.
6243 * reloc.h (Gc_process_relocs): New class.
6244 * sparc.cc (Target_sparc::gc_process_relocs): New function.
6245 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
6246 symbols whose corresponding sections are garbage collected.
6247 (Symbol_table::Symbol_table): Add new parameter for the garbage
6248 collection object.
6249 (Symbol_table::gc_mark_undef_symbols): New function.
6250 (Symbol_table::gc_mark_symbol_for_shlib): New function.
6251 (Symbol_table::gc_mark_dyn_syms): New function.
6252 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
6253 as garbage.
6254 (Symbol_table::add_from_object): Likewise.
6255 (Symbol_table::add_from_relobj): When building shared objects, do not
6256 treat externally visible symbols as garbage.
6257 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
6258 table information for static and relocatable links.
6259 * symtab.h (Symbol_table::set_gc): New function.
6260 (Symbol_table::gc): New function.
6261 (Symbol_table::gc_mark_undef_symbols): New function.
6262 (Symbol_table::gc_mark_symbol_for_shlib): New function.
6263 (Symbol_table::gc_mark_dyn_syms): New function.
6264 (Symbol_table::gc_): New data member.
e1df38aa 6265 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
6266 function.
6267 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
6268 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
6269
3b293544
CF
62702009-01-20 Chris Faylor <me.sourceware@sourceware.org>
6271
6272 * options.h (General_options::gc_sections): Define as a no-op for now.
6273 (General_options::no_keep_memory): Ditto.
6274 (General_options::Bshareable): Define.
6275 * options.cc (General_options::finalize): Honor -Bshareable.
6276
83d22aa8
AS
62772009-01-20 Andreas Schwab <schwab@suse.de>
6278
6279 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
6280 read the value in the contents, since we don't use it. Use the
6281 template endianness when writing.
6282 (Relocate::relocate): Use it for R_PPC_REL16_HA.
6283
cd536b21
AS
62842009-01-19 Andreas Schwab <schwab@suse.de>
6285
6286 * configure.tgt (powerpc64-*): Fix targ_obj.
6287
99e9a495
ILT
62882009-01-15 Ian Lance Taylor <iant@google.com>
6289
6290 * object.cc (Sized_relobj::write_local_symbols): Don't write out
6291 local symbols when stripping all symbols.
6292
bbbfea06
CC
62932009-01-14 Cary Coutant <ccoutant@google.com>
6294
99e9a495 6295 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 6296
0f7c0701
CC
62972009-01-14 Cary Coutant <ccoutant@google.com>
6298
6299 * archive.cc (Archive::get_elf_object_for_member): Remove call
6300 to File_read::claim_for_plugin.
6301 * descriptors.cc (Descriptors::open): Remove reference to
6302 is_claimed.
6303 (Descriptors::claim_for_plugin): Remove.
6304 * descriptors.h (Descriptors::claim_for_plugin): Remove.
6305 (Descriptors::is_claimed): Remove.
6306 (claim_descriptor_for_plugin): Remove.
6307 * fileread.cc (File_read::claim_for_plugin): Remove.
6308 * fileread.h (File_read::claim_for_plugin): Remove.
6309 (File_read::descriptor): Reopen descriptor if necessary.
6310 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
6311 (Plugin_manager::all_symbols_read): Add task parameter. Change
6312 all callers.
6313 (Plugin_manager::get_input_file): New function.
6314 (Plugin_manager::release_input_file): New function.
6315 (Pluginobj::Pluginobj): Add filesize parameter and initialize
6316 corresponding data member.
6317 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
6318 and pass to base constructor. Change all callers.
6319 (get_input_file, release_input_file): New functions.
6320 (make_sized_plugin_object): Add filesize parameter. Change all callers.
6321 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
6322 (Plugin_manager::all_symbols_read): Add task parameter.
6323 (Plugin_manager::get_input_file): New function.
6324 (Plugin_manager::release_input_file): New function.
6325 (Plugin_manager::task_): New data member.
6326 (Pluginobj::Pluginobj): Add filesize parameter.
6327 (Pluginobj::filename): New function.
6328 (Pluginobj::descriptor): New function.
6329 (Pluginobj::filesize): New function.
6330 (Pluginobj::filesize_): New data member.
6331 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
6332 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
6333 File_read::claim_for_plugin; use Object::unlock to unlock the file.
6334
6335 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
6336 with archive libraries.
6337 * testsuite/Makefile.in: Regenerate.
6338 * testsuite/plugin_test.c (struct sym_info): New type.
6339 (get_input_file, release_input_file): New static variables.
6340 (onload): Capture new transfer vector entries.
6341 (claim_file_hook): Stop reading at end of file according to filesize.
6342 Factor out parsing of readelf output into separate function.
6343 (all_symbols_read_hook): Exercise get_input_file and release_input_file
6344 APIs and get the source file name from the symbol table. Convert
6345 source file name to corresponding object file name. Print info
6346 message when adding new input files.
6347 (parse_readelf_line): New function.
6348 * testsuite/plugin_test_1.sh: Add checks for new info messages.
6349 * testsuite/plugin_test_2.sh: Likewise.
6350 * testsuite/plugin_test_3.sh: Likewise.
6351 * testsuite/plugin_test_4.sh: New test case.
6352
62a6d109
ILT
63532009-01-07 Ian Lance Taylor <iant@google.com>
6354
6355 * version.cc (version_string): Bump to 1.8.
6356
483620e8
CC
63572008-12-23 Cary Coutant <ccoutant@google.com>
6358
6359 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
6360 * plugin.cc (Plugin_manager::finish): Rename as
6361 layout_deferred_objects. Move cleanup to separate function.
6362 (Plugin_manager::cleanup): New function.
6363 (Plugin_finish::run): Call layout_deferred_objects and cleanup
6364 separately.
6365 * plugin.h (Plugin_manager::finish): Rename as
6366 layout_deferred_objects.
6367 (Plugin_manager::cleanup): New function.
6368 (Plugin_manager::cleanup_done): New field.
6369
d66a9eb3
CC
63702008-12-23 Cary Coutant <ccoutant@google.com>
6371
6372 * plugin.cc (is_visible_from_outside): New function.
6373 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
6374 so we don't return "IR only" status for exported symbols or -r links.
6375
6376 * testsuite/Makefile.am (plugin_test_3): New test case.
6377 * testsuite/Makefile.in: Regenerate.
6378 * testsuite/plugin_test_3.sh: New file.
6379
5995b570
CC
63802008-12-22 Cary Coutant <ccoutant@google.com>
6381
6382 * object.cc (Sized_relobj::layout_section): New function.
6383 (Sized_relobj::do_layout): Defer layout of input sections until after
6384 plugin has provided replacement files.
6385 (Sized_relobj::do_layout_deferred_sections): New function.
6386 * object.h (Relobj::set_section_offset): Remove virtual keyword.
6387 (Relobj::layout_deferred_sections): New function.
6388 (Relobj::do_layout_deferred_sections): New function.
6389 (Sized_relobj::do_layout_deferred_sections): New function.
6390 (Sized_relobj::layout_section): New function.
6391 (Sized_relobj::Deferred_layout): New structure.
6392 (Sized_relobj::deferred_layout_): New field.
6393 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
6394 Change all callers. Layout deferred sections.
6395 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
6396 references.
6397 (Plugin_hook::run): Move code from do_plugin_hook inline.
6398 (Plugin_hook::do_plugin_hook): Remove.
6399 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
6400 (Plugin_manager::finish): Renamed, was cleanup.
6401 (Plugin_manager::should_defer_layout): New function.
6402 (Plugin_manager::add_deferred_layout_object): New function.
6403 (Plugin_manager::Deferred_layout_list): New type.
6404 (Plugin_manager::deferred_layout_objects_): New field.
6405 (Plugin_hook::do_plugin_hook): Remove.
6406
ee769c88
ILT
64072008-12-17 Ian Lance Taylor <iant@google.com>
6408
6409 * options.h (class General_options): Add --no case for
6410 --export-dynamic.
6411
abc8dcba
CC
64122008-12-16 Cary Coutant <ccoutant@google.com>
6413
6414 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
6415 vector.
6416 (Plugin_manager::claim_file): Create plugin object even if
6417 plugin did not call the add_symbols callback.
6418 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
6419 asking for more symbols than were added.
6420 * testsuite/Makefile.am (plugin_test_1): Add test case with
6421 no global symbols.
6422 (empty.syms): New target.
6423 * testsuite/Makefile.in: Regenerate.
6424 * testsuite/plugin_test.c (claim_file_hook): Add new debug
6425 message. Don't call add_symbols if no globals.
6426 (all_symbols_read_hook): Don't provide replacement for empty
6427 claimed file.
6428
b0074644
ILT
64292008-12-12 Ian Lance Taylor <iant@google.com>
6430
68943102
ILT
6431 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
6432 r_type == 0 for a local symbol with r_sym == 0.
6433 (scan_relocatable_relocs): Pass r_sym to
6434 local_non_section_strategy.
6435 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
6436 r_sym parameter.
6437
b0074644
ILT
6438 * configure.ac: Update test for TLS descriptors: they are
6439 supported as of glibc 2.9.
6440 * configure: Rebuild.
6441
c2508178
ILT
64422008-12-11 Ian Lance Taylor <iant@google.com>
6443
6444 PR 7091
6445 * target-reloc.h (Default_scan_relocatable_relocs): For each
6446 function, map r_type == 0 to RELOC_DISCARD.
6447
2756a258
CC
64482008-12-10 Cary Coutant <ccoutant@google.com>
6449
6450 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
6451 object to override a kept COMDAT group from a plugin object.
6452
bb6f53d3
ILT
64532008-12-09 Ian Lance Taylor <iant@google.com>
6454
fbc558e1
ILT
6455 PR 7088
6456 * yyscript.y (file_cmd): Handle INPUT.
6457
bb6f53d3
ILT
6458 * testsuite/initpri1.c: Change all declarations to be full
6459 prototypes by adding void, to avoid compiler warnings.
6460
4674ecfc
CC
64612008-12-05 Rafael Avila de Espindola <espindola@google.com>
6462
6463 * options.cc (General_options::parse_plugin_opt): New.
6464 (General_options::add_plugin): The argument now is just the filename.
6465 (General_options::add_plugin_option): New.
6466 * options.h (plugin_opt): New.
6467 (add_plugin): Change argument name.
6468 (add_plugin_option): New.
6469 * plugin.cc (Plugin::load): Don't parse the plugin option.
6470 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
6471 (Plugin::add_option): New.
6472 (Plugin::args_): Change type.
6473 (Plugin::filename_): New.
6474 (Plugin_manager::add_plugin_option): New.
6475 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
6476 * testsuite/Makefile.in: Regenerate.
6477
fd06b4aa
CC
64782008-12-05 Cary Coutant <ccoutant@google.com>
6479
6480 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
6481 Handle --strip-lto-sections option.
6482 * options.h (strip_lto_sections): New option.
6483
6c52134c
CC
64842008-12-01 Cary Coutant <ccoutant@google.com>
6485
6486 * plugin.cc (ld_plugin_message): Change format parameter to const.
6487 Fix mismatch between new[] and delete.
6488
a45248e0
CC
64892008-11-14 Cary Coutant <ccoutant@google.com>
6490
6491 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
6492 instead of -1U.
6493
c82fbeee
CS
64942008-11-05 Craig Silverstein <csilvers@google.com>
6495
6496 * options.cc (General_options::parse_dynamic_list): New function.
6497 * options.h (General_options): New flags dynamic_list,
6498 dynamic_list_data, dynamic_list_cpp_new, and
6499 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
6500 (General_options::in_dynamic_list): New function.
6501 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
6502 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
6503 (Lex::can_continue_name): Likewise.
6504 (yylex): Likewise.
6505 (read_script_file): New parameter script_options.
6506 (read_dynamic_list): New function.
6507 (Script_options::define_dynamic_list): New function.
6508 (dynamic_list_keyword_parsecodes): New variable.
6509 (dynamic_list_keywords): New variable.
6510 * script.h (Script_options::define_dynamic_list): New function
6511 prototype.
6512 (read_dynamic_list): New function prototype.
6513 * symtab.cc (strprefix): New macro.
6514 (Symbol::should_add_dynsym_entry): Support dynamic_list,
6515 dynamic_list_data, dynamic_list_cpp_new, and
6516 dynamic_list_cpp_typeinfo.
6517 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
6518 (dynamic_list_expr): New rule.
6519 (dynamic_list_nodes): Likewise.
6520 (dynamic_list_node): Likewise.
6521 * testsuite/Makefile.am (dynamic_list): New test.
6522 * testsuite/Makefile.in: Regenerated.
6523 * testsuite/dynamic_list.t: New file.
6524 * testsuite/dynamic_list.sh: New file.
6525
e0bb29a5
CS
65262008-11-05 Craig Silverstein <csilvers@google.com>
6527
6528 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
6529 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
6530 (t11_last): Likewise.
6531 * testsuite/ver_test_6.c (main): Likewise.
6532
4e1e25e0
CC
65332008-10-07 Cary Coutant <ccoutant@google.com>
6534
6535 * options.c (General_options::finalize): Add check for -static and
6536 -shared.
6537 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
6538 is not empty.
6539
92f03fcb
CC
65402008-10-02 Cary Coutant <ccoutant@google.com>
6541
6542 * plugin.cc (make_sized_plugin_object): Fix conditional
6543 compilation to work when not all targets are enabled.
6544
fbd8a257
CC
65452008-09-29 Cary Coutant <ccoutant@google.com>
6546
6547 * archive.cc (Archive::get_file_and_offset): Use filename instead
6548 of name to get library path.
6549 (Archive::include_member): Unlock external member of a thin archive.
6550
6551 * testsuite/Makefile.am (TEST_AR): New variable.
6552 (thin_archive_test_1): New test.
6553 (thin_archive_test_2): New test.
81636b3f
CC
6554 * testsuite/Makefile.in: Regenerate.
6555 * testsuite/thin_archive_main.cc: New file.
6556 * testsuite/thin_archive_test_1.cc: New file.
6557 * testsuite/thin_archive_test_2.cc: New file.
6558 * testsuite/thin_archive_test_3.cc: New file.
6559 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 6560
eff45813
CC
65612008-09-29 Cary Coutant <ccoutant@google.com>
6562
6563 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
6564 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
6565 instead of -1U.
6566 (Sized_relobj::do_finalize_local_symbols): Likewise.
6567 (Sized_relobj::map_to_kept_section): Likewise.
6568 * object.h (Sized_relobj::invalid_address): New constant.
6569 (Sized_relobj::do_output_section_offset): Check for invalid_address
6570 and return -1ULL.
6571 * output.cc (Output_reloc::local_section_offset): Use constant
6572 invalid_address instead of -1U.
6573 (Output_reloc::get_address): Likewise.
6574 (Output_section::output_address): Change -1U to -1ULL.
6575 * output.h (Output_reloc::invalid_address): New constant.
6576 * reloc.cc (Sized_relobj::write_sections): Use constant
6577 invalid_address instead of -1U.
6578 (Sized_relobj::relocate_sections): Likewise.
6579 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
6580 values for merge sections.
6581 * target-reloc.h (relocate_for_relocatable): Use constant
6582 invalid_address instead of -1U.
6583
89fc3421
CC
65842008-09-19 Cary Coutant <ccoutant@google.com>
6585
6586 Add plugin functionality for link-time optimization (LTO).
6587 * configure.ac (plugins): Add --enable-plugins option.
6588 * configure: Regenerate.
6589 * config.in: Regenerate.
6590 * Makefile.am (LIBDL): New variable.
6591 (CCFILES): Add plugin.cc.
6592 (HFILES): Add plugin.h.
6593 (ldadd_var): Add LIBDL.
6594 * Makefile.in: Regenerate.
6595
6596 * archive.cc: Include "plugin.h".
6597 (Archive::setup): Don't preread archive symbols when using a plugin.
6598 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
6599 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
6600 files.
6601 (Archive::include_member): Add symbols from plugin objects.
6602 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
6603 * descriptors.cc (Descriptors::open): Check for file descriptors
6604 abandoned by plugins.
6605 (Descriptors::claim_for_plugin): New function.
6606 * descriptors.h (Descriptors::claim_for_plugin): New function.
6607 (Open_descriptor::is_claimed): New field.
6608 (claim_descriptor_for_plugin): New function.
6609 * fileread.cc (File_read::claim_for_plugin): New function.
6610 * fileread.h (File_read::claim_for_plugin): New function.
6611 (File_read::descriptor): New function.
6612 * gold.cc: Include "plugin.h".
6613 (queue_initial_tasks): Add task to call plugin hooks for generating
6614 new object files.
6615 * main.cc: Include "plugin.h".
6616 (main): Load plugin libraries.
6617 * object.h (Pluginobj): Declare.
6618 (Object::pluginobj): New function.
6619 (Object::do_pluginobj): New function.
6620 (Object::set_target): New function.
6621 * options.cc: Include "plugin.h".
6622 (General_options::parse_plugin): New function.
6623 (General_options::General_options): Initialize plugins_ field.
6624 (General_options::add_plugin): New function.
6625 * options.h (Plugin_manager): Declare.
6626 (General_options): Add --plugin option.
6627 (General_options::has_plugins): New function.
6628 (General_options::plugins): New function.
6629 (General_options::add_plugin): New function.
6630 (General_options::plugins_): New field.
6631 * plugin.cc: New file.
6632 * plugin.h: New file.
6633 * readsyms.cc: Include "plugin.h".
6634 (Read_symbols::do_read_symbols): Check for archive before checking
6635 for ELF file. Call plugin hooks to claim files.
6636 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
6637 from a real object file; force override when processing replacement
6638 files.
6639 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
6640 (Symbol::init_base_object): Likewise.
6641 (Symbol::init_base_output_data): Likewise.
6642 (Symbol::init_base_output_segment): Likewise.
6643 (Symbol::init_base_constant): Likewise.
6644 (Symbol::init_base_undefined): Likewise.
6645 (Symbol::output_section): Assert that object is not a plugin.
6646 (Symbol_table::add_from_pluginobj): New function.
6647 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
6648 undefined.
6649 (Symbol_table::sized_write_globals): Likewise.
6650 (Symbol_table::add_from_pluginobj): Instantiate template.
6651 * symtab.h (Sized_pluginobj): Declare.
6652 (Symbol::in_real_elf): New function.
6653 (Symbol::set_in_real_elf): New function.
6654 (Symbol::in_real_elf_): New field.
6655 (Symbol_table::add_from_pluginobj): New function.
6656
6657 * testsuite/Makefile.am (AM_CFLAGS): New variable.
6658 (LIBDL): New variable.
6659 (LDADD): Add LIBDL.
6660 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
6661 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
6662 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
6663 (MOSTLYCLEANFILES): Likewise.
6664 * testsuite/Makefile.in: Regenerate.
6665 * testsuite/plugin_test.c: New file.
6666 * testsuite/plugin_test_1.sh: New file.
6667 * testsuite/plugin_test_2.sh: New file.
6668
de31bda5
ILT
66692008-09-16 Ian Lance Taylor <iant@google.com>
6670
9c2d0ef9
ILT
6671 * target-reloc.h (relocate_section): Check whether a symbol is
6672 defined by the ABI before reporting an undefined symbol error.
6673 * target.h (Target::is_defined_by_abi): Make parameter const.
6674 (Target::do_is_defined_by_abi): Likewise.
6675 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
6676 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
6677 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
6678 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
6679 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
6680 * testsuite/Makefile.in: Rebuild.
6681
de31bda5
ILT
6682 * fileread.cc (make_view): Add casts to avoid warning.
6683
9fa33bee
AO
66842008-09-16 Alexandre Oliva <aoliva@redhat.com>
6685
6686 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
6687 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
6688
183fd0e3
AO
66892008-09-16 Alexandre Oliva <aoliva@redhat.com>
6690
6691 * options.h (General_options::output_is_executable): New.
6692 (General_options::output_is_pie): New.
6693 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
6694 for shared libraries.
6695 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
6696
7be8330a
CD
66972008-09-11 Chris Demetriou <cgd@google.com>
6698
6699 * options.h (origin): New -z option.
6700 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
6701 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
6702 in DT_FLAGS_1.
6703
a9caad02
CC
67042008-09-05 Cary Coutant <ccoutant@google.com>
6705
6706 * fileread.cc (File_read::make_view): Add check for attempt to map
6707 beyond end of file.
6708
ae6dce4d
CC
67092008-09-05 Cary Coutant <ccoutant@google.com>
6710
6711 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
6712 explicit instantiations.
6713
d7ab2a47
KVH
67142008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
6715
6716 PR gold/6858
6717 * options.cc (General_options::finalize): Allow undefined symbols
6718 in shlibs if linking -shared.
6719
6720 PR gold/6859
6721 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
6722 symbols as not needing a dynsym entry.
6723
1e52a9c1
CS
67242008-08-20 Craig Silverstein <csilvers@google.com>
6725
6726 * fileread.cc (File_read::open): Do not lock the file unless it
6727 was successfully opened.
6728
d85c80a3
CC
67292008-08-14 Cary Coutant <ccoutant@google.com>
6730
6731 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
6732 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
6733 * testsuite/tls_test.cc (struct int128): 128-bit struct
6734 for testing TLS relocs with non-zero addend.
6735 (v12): New TLS variable.
6736 (t12): New test.
6737 (t_last): Add check for v12.
6738 * testsuite/tls_test.h (t12): New function.
6739 * testsuite/tls_test_main.cc (thread_routine): Call new test.
6740
2d924fd9
ILT
67412008-08-13 Ian Lance Taylor <iant@google.com>
6742
6743 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
6744 set tls_segment_ or relro_segment_.
6745 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
6746 when appropriate.
6747 * output.h (Output_section::clear_is_relro): New function.
6748 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
6749 sections specially even when output_data_ is empty.
6750 (Output_segment::maximum_alignment): When first section is relro,
6751 only force alignment for PT_LOAD segments.
6752 * script.cc (script_data_segment_align): New function.
6753 (script_data_segment_relro_end): New function.
6754 * script-c.h (script_data_segment_align): Declare.
6755 (script_data_segment_relro_end): Declare.
6756 * script-sections.h (class Script_sections): Declare
6757 data_segment_align and data_segment_relro_end. Add fields
6758 segment_align_index_ and saw_relro_end_.
6759 * script-sections.cc (class Sections_element): Add set_is_relro
6760 virtual function. Add new bool* parameter to place_orphan_here.
6761 Add get_output_section virtual function.
6762 (class Output_section_definition): Add set_is_relro. Add new
6763 bool* parameter to place_orphan_here. Add get_output_section.
6764 Add is_relro_ field.
6765 (Output_section_definition::Output_section_definition): Initialize
6766 evaluated_address_, evaluated_load_address, evaluated_addralign_,
6767 and is_relro_ fields.
6768 (Output_section_definition::place_orphan_here): Add is_relro
6769 parameter.
6770 (Output_section_definition::set_section_addresses): Set relro for
6771 output section.
6772 (Output_section_definition::alternate_constraint): Likewise.
6773 (class Orphan_output_section): Add new bool* parameter to
6774 place_orphan_here. Add get_output_section.
6775 (Orphan_output_section::place_orphan_here): Add is_relro
6776 parameter.
6777 (Script_sections::Script_sections): Initialize
6778 data_segment_align_index_ and saw_relro_end_.
6779 (Script_sections::data_segment_align): New function.
6780 (Script_sections::data_segment_relro_end): New function.
6781 (Script_sections::place_orphan): Set or clear is_relro.
6782 (Script_sections::set_section_addresses): Force alignment of first
6783 TLS section.
6784 * yyscript.y (exp): Call script_data_segment_align and
6785 script_data_segment_relro_end.
6786 * testsuite/relro_script_test.t: New file.
6787 * testsuite/relro_test.cc (using_script): Declare.
6788 (t1, t2): Test using_script.
6789 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
6790 (relro_script_test_SOURCES): Define.
6791 (relro_script_test_DEPENDENCIES): Define.
6792 (relro_script_test_LDFLAGS): Define.
6793 (relro_script_test_LDADD): Define.
6794 (relro_script_test.so): New target.
6795 * testsuite/Makefile.in: Rebuild.
6796
f827c9a9
CC
67972008-08-06 Cary Coutant <ccoutant@google.com>
6798
6799 * archive.cc (Archive::total_archives, Archive::total_members)
6800 (Archive::total_members_loaded): New variables.
6801 (Archive::setup): Add parameter. Add option to preread
6802 archive symbols.
6803 (Archive::read_armap): Add counter.
6804 (Archive::get_file_and_offset): New function.
6805 (Archive::get_elf_object_for_member): New function.
6806 (Archive::read_all_symbols): New function.
6807 (Archive::read_symbols): New function.
6808 (Archive::add_symbols): Add counters.
6809 (Archive::include_all_members): Use armap to find members if it's
6810 already built.
6811 (Archive::include_member): Skip reading symbols if already read.
6812 Factored code into Archive::get_file_and_offset and
6813 Archive::get_elf_object_for_member. Changed call to
6814 Mapfile::report_include_archive_member.
6815 (Archive::print_stats): New function.
6816 * archive.h: Declare Object and Read_symbols_data classes.
6817 (Archive::Archive): Add initializers for new members.
6818 (Archive::setup): Add parameter.
6819 (Archive::print_stats): New function.
6820 (Archive::total_archives, Archive::total_members)
6821 (Archive::total_members_loaded): New variables.
6822 (Archive::get_file_and_offset): New function.
6823 (Archive::get_elf_object_for_member): New function.
6824 (Archive::read_all_symbols): New function.
6825 (Archive::read_symbols): New function.
6826 (Archive::Archive_member): New class.
6827 (Archive::members_): New member.
6828 (Archive::num_members_): New member.
6829 * main.cc: Include archive.h.
6830 (main): Call Archive::print_stats.
6831 * mapfile.cc (Mapfile::report_include_archive_member): Delete
6832 archive parameter; member_name is now the fully-decorated name.
6833 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
6834 * options.h: (General_options): Add --preread-archive-symbols option.
6835 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
6836 Archive::setup.
6837
de4c45bd
ILT
68382008-08-04 Ian Lance Taylor <iant@google.com>
6839
6840 * symtab.h (Symbol::use_plt_offset): New function.
6841 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
6842 * powerpc.cc (Relocate::relocate): Likewise.
6843 * sparc.cc (Relocate::relocate): Likewise.
6844 * x86_64.cc (Relocate::relocate): Likewise.
6845 * testsuite/weak_plt.sh: New test.
6846 * testsuite/weak_plt_main.cc: New test.
6847 * testsuite/weak_plt_shared.cc: New test.
6848 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
6849 (check_PROGRAMS): Add weak_plt.
6850 (check_DATA): Add weak_plt_shared.so.
6851 (weak_plt_main_pic.o, weak_plt): New targets.
6852 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
6853 * testsuite/Makefile.in: Rebuild.
6854
6855 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
6856 gcctestdir/ld.
6857 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
6858 * testsuite/Makefile.in: Rebuild.
6859
323ee3f4
AM
68602008-08-04 Alan Modra <amodra@bigpond.net.au>
6861
6862 * Makefile.am (POTFILES.in): Set LC_ALL=C.
6863 * Makefile.in: Regenerate.
6864 * po/POTFILES.in: Regenerate.
6865
7c07ecec
ILT
68662008-07-29 Ian Lance Taylor <iant@google.com>
6867
6868 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
6869 symbols before other symbols.
6870 * testsuite/script_test_2.cc (test_addr): Declare.
6871 (test_addr_alias): Declare.
6872 (main): Check that test_addr and test_addr_alias have the right
cd536b21 6873 values.
7c07ecec
ILT
6874 * testsuite/script_test_2.t: Define test_addr_alias and
6875 test_addr.
6876
5778530e
ILT
68772008-07-24 Ian Lance Taylor <iant@google.com>
6878
2a00e4fb
ILT
6879 PR 5990
6880 * descriptors.cc: New file.
6881 * descriptors.h: New file.
6882 * gold-threads.h (class Hold_optional_lock): New class.
6883 * fileread.cc: Include "descriptors.h".
6884 (File_read::~File_read): Release descriptor rather than closing
6885 it.
6886 (File_read::open) [file]: Call open_descriptor rather than open.
6887 Set is_descriptor_opened_.
6888 (File_read::open) [memory]: Assert that descriptor is not open.
6889 (File_read::reopen_descriptor): New function.
6890 (File_read::release): Release descriptor.
6891 (File_read::do_read): Make non-const. Reopen descriptor.
6892 (File_read::read): Make non-const.
6893 (File_read::make_view): Reopen descriptor.
6894 (File_read::do_readv): Likewise.
6895 * fileread.h (class File_read): Add is_descriptor_opened_ field.
6896 Update declarations.
6897 * layout.cc: Include "descriptors.h".
6898 (Layout::create_build_id): Use open_descriptor rather than open.
6899 * output.cc: Include "descriptors.h".
6900 (Output_file::open): Use open_descriptor rather than open.
6901 * archive.cc (Archive::const_iterator): Change Archive to be
6902 non-const.
6903 (Archive::begin, Archive::end): Make non-const.
6904 (Archive::count_members): Likewise.
6905 * archive.h (class Archive): Update declarations.
6906 * object.h (Object::read): Make non-const.
6907 * Makefile.am (CCFILES): Add descriptors.cc.
6908 (HFILES): Add descriptors.h.
6909 * Makefile.in: Rebuild.
6910
801647d1
ILT
6911 PR 6716
6912 * gold.h: Always include <clocale>. Add Solaris workarounds
6913 following code in binutils/sysdep.h.
6914
5edd166e
ILT
6915 PR 6048
6916 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
6917 this->eh_frame_hdr_ is NULL before using it.
6918
c89ad728
ILT
6919 * dynobj.cc (Versions::Versions): Update comment.
6920
aa86f06b
ILT
6921 * dynobj.cc (Versions::Versions): If there is an soname, use it as
6922 the base version name.
6923
5778530e
ILT
6924 * stringpool.cc (Stringpool_template::add_with_length): Set key to
6925 array size plus one.
6926 (Stringpool_template::set_string_offsets): Subtract one from key
6927 before using it as an array index.
6928 (Stringpool_template::get_offset_with_length): Likewise.
6929 (Stringpool_template::write_to_buffer): Likewise.
6930 * stringpool.h (Stringpool_template::get_offset_from_key):
6931 Likewise.
6932
057ead22
ILT
69332008-07-23 Ian Lance Taylor <iant@google.com>
6934
7f649c59
ILT
6935 PR 6658
6936 * object.h (Merged_symbol_value::value): Do our best to handle a
6937 negative addend.
6938
057ead22
ILT
6939 PR 6647
6940 * script.cc (Version_script_info::get_versions): Don't add empty
6941 version tag to return value.
6942 (Version_script_info::get_symbol_version_helper): Change return
6943 type to bool. Add pversion parameter. Change all callers.
6944 (script_register_vers_node): Don't require a non-NULL tag.
6945 * script.h (class Version_script_info): Update declarations.
6946 (Version_script_info::get_symbol_version): Change return type to
6947 bool. Add version parameter. Change all callers.
6948 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
6949 handling. Handle an empty version from a version script.
6950 (Symbol_table::define_special_symbol): Likewise.
6951 * testsuite/ver_test_10.script: New file.
6952 * testsuite/ver_test_10.sh: New file.
6953 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
6954 (check_DATA): Add ver_test_10.syms.
6955 (ver_test_10.syms, ver_test_10.so): New target.
6956 * testsuite/Makefile.in: Rebuild.
6957
58e54ac2
CD
69582008-07-23 Simon Baldwin <simonb@google.com>
6959
6960 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
6961 to zero for undefined symbols from dynamic libraries.
6962
95d14cd3
ILT
69632008-07-23 Ian Lance Taylor <iant@google.com>
6964
6965 * symtab.cc (Symbol_table::resolve): Remove version parameter.
6966 Change all callers.
6967 * symtab.h (class Symbol_table): Update declaration.
6968 * testsuite/ver_test_9.cc: New file.
6969 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
6970 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
6971 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
6972 (ver_test_9.so, ver_test_9.o): New targets.
6973 * testsuite/Makefile.in: Rebuild.
6974
92de84a6
ILT
69752008-07-22 Ian Lance Taylor <iant@google.com>
6976
34810851
ILT
6977 * options.h (class General_options): Define --check-sections.
6978 * layout.cc (Layout::set_segment_offsets): Handle
6979 --check-sections.
6980
af6156ef
ILT
6981 * options.h (class General_options): Define -n/--nmagic and
6982 -N/--omagic.
6983 * options.cc (General_options::finalize): For -n/--nmagic or
6984 -N/--omagic, set -static.
6985 * layout.cc (Layout::attach_allocated_section_to_segment): If
6986 -N/--omagic, don't put read-only and read-write sections in
6987 different segments.
6988 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
6989 finding a read-only segment.
6990 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
6991 don't set the minimum segment alignment to the common page size,
6992 and don't set the file offset to the address modulo the page size.
6993 * script-sections.cc (Script_sections::create_segments): If
6994 -n/--omagic, don't put read-only and read-write sections in
6995 different segments.
6996
92de84a6
ILT
6997 * cref.cc: New file.
6998 * cref.h: New file.
6999 * options.h (class General_options): Add --print-symbol-counts.
7000 * main.cc (main): Issue defined symbol report if requested.
7001 * archive.cc (Archive::interpret_header): Make into a const member
7002 function.
7003 (Archive::add_symbols): Call Input_objects::archive_start and
7004 archive_stop.
7005 (Archive::const_iterator): Define new class.
7006 (Archive::begin, Archive::end): New functions.
7007 (Archive::include_all_members): Rewrite to use iterator.
7008 (Archive::count_members): New function.
7009 * archive.h (class Archive): Update declarations.
7010 (Archive::filename): New function.
7011 * object.cc: Include "cref.h".
7012 (Sized_relobj::Sized_relobj): Initialize defined_count_.
7013 (Sized_relobj::do_get_global_symbol_counts): New function.
7014 (Input_objects::add_object): Add object to cross-referencer.
7015 (Input_objects::archive_start): New function.
7016 (Input_objects::archive_stop): New function.
7017 (Input_objects::print_symbol_counts): New function.
7018 * object.h: Declare Cref and Archive.
7019 (Object::get_global_symbol_counts): New function.
7020 (Object::do_get_global_symbol_counts): New pure virtual function.
7021 (class Sized_relobj): Add defined_count_ field. Update
7022 declarations.
7023 (class Input_objects): Add cref_ field. Update constructor.
7024 Update declarations.
7025 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
7026 defined_count_.
7027 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
7028 symbol counts.
7029 (Sized_dynobj::do_get_global_symbol_counts): New function.
7030 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
7031 defined_count_. Update declarations. Define Symbols typedef.
7032 * symtab.cc (Symbol_table::add_from_relobj): Add defined
7033 parameter. Change all callers.
7034 (Symbol_table::add_from_dynobj): Add sympointers and defined
7035 parameters. Change all callers.
7036 * symtab.h (class Symbol_table): Update declarations.
7037 * Makefile.am (CCFILES): Add cref.cc.
7038 (HFILES): Add cref.h.
7039 * Makefile.in: Rebuild.
7040
3f7c5e1d
CD
70412008-07-22 Simon Baldwin <simonb@google.com>
7042
7043 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
7044 to zero when writing undefined symbols.
7045
e0b64032
ILT
70462008-07-22 Ian Lance Taylor <iant@google.com>
7047
7048 * output.cc (Output_section::add_input_section): Don't try to
7049 merge empty merge sections.
7050
096b02cf
CS
70512008-07-21 Craig Silverstein <csilvers@google.com>
7052
7053 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
7054 Include symbol version in error message.
cd536b21 7055
1d1f116d
CD
70562008-07-20 Chris Demetriou <cgd@google.com>
7057
cd536b21 7058 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
7059 (RANDOM_SEED_CFLAGS): New substituted variable.
7060 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
7061 * configure: Rebuild.
7062 * Makefile.in: Likewise.
7063 * testsuite/Makefile.in: Likewise.
7064
a18f591e
ILT
70652008-07-18 Ian Lance Taylor <iant@google.com>
7066
7067 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
7068 where we see NAME/NULL and NAME/VERSION as separate symbols.
7069 * testsuite/ver_test_main.cc (main): Call t4.
7070 (t4, t4_2a): Define.
7071 * testsuite/ver_test_2.cc (t4_2): Define.
7072 * testsuite/ver_test_2.script: Put t4_2a in VER2.
7073 * testsuite/ver_test_4.cc (t4_2a): Define.
7074 * testsuite/ver_test_4.script: Put t4_2a in VER2.
7075 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
7076
c6e3f6ed
ILT
70772008-07-17 Ian Lance Taylor <iant@google.com>
7078
7079 * dynobj.cc (Versions::add_def): If we give an error about a
7080 missing version, go ahead and create the version anyhow.
7081
ef9beddf
ILT
70822008-07-10 Ian Lance Taylor <iant@google.com>
7083
7084 Handle output sections with more than 0x7fffffff bytes.
7085 * object.h (class Relobj): Change map_to_output_ to
7086 output_sections_, and just keep a section pointer. Change all
7087 uses. Move comdat group support to Sized_relobj.
7088 (Relobj::is_section_specially_mapped): Remove.
7089 (Relobj::output_section): Remove poff parameter. Change all
7090 callers.
7091 (Relobj::output_section_offset): New function.
7092 (Relobj::set_section_offset): Rewrite.
7093 (Relobj::map_to_output): Remove.
7094 (Relobj::output_sections): New function.
7095 (Relobj::do_output_section_offset): New pure virtual function.
7096 (Relobj::do_set_section_offset): Likewise.
7097 (class Sized_relobj): Add section_offsets_ field. Add comdat
7098 group support from Relobj. Update declarations.
7099 (Sized_relobj::get_output_section_offset): New function.
7100 (Sized_relobj::do_output_section_offset): New function.
7101 (Sized_relobj::do_set_section_offset): New function.
7102 * object.cc (Relobj::output_section_address): Remove.
7103 (Sized_relobj::Sized_relobj): Initialize new fields.
7104 (Sized_relobj::include_section_group): Cast find_kept_object to
7105 Sized_relobj.
7106 (Sized_relobj::include_linkonce_section): Likewise.
7107 (Sized_relobj::do_layout): Use separate arrays for output section
7108 and output offset.
7109 (Sized_relobj::do_count_local_symbols): Change map_to_output to
7110 output_sections.
7111 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
7112 output_sections and section_offsets.
7113 (Sized_relobj::write_local_symbols): Likewise.
7114 (map_to_kept_section): Compute output address directly.
7115 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
7116 output_sections and section_offsets.
7117 (Sized_relobj::write_sections): Likewise.
7118 (Sized_relobj::relocate_sections): Likewise.
7119 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
7120 * output.h (class Output_reloc): Update declarations. Change
7121 u2_.relobj to Sized_relobj*.
7122 (class Output_data_reloc): Change add functions to use
7123 Sized_relobj*.
7124 * output.cc (Output_reloc::Output_reloc): Change relobj to
7125 Sized_relobj*.
7126 (Output_reloc::local_section_offset): Change return type to
7127 Elf_Addr. Use get_output_section_offset.
7128 (Output_reloc::get_address): Likewise.
7129 (Output_section::is_input_address_mapped): Don't call
7130 is_section_specially_mapped.
7131 (Output_section::output_offset): Likewise.
7132 (Output_section::output_address): Likewise.
7133 (Output_section::starting_output_address): Likewise.
7134 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
7135 parameter to Sized_relobj*.
7136 (Copy_relocs::need_copy_reloc): Likewise.
7137 (Copy_relocs::save): Likewise.
7138 * copy-relocs.h (class Copy_relocs): Update declarations.
7139 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
7140 Sized_relobj*. Change relobj_ field to Sized_relobj*.
7141 * target-reloc.h (relocate_for_relocatable): Change
7142 offset_in_output_section type to Elf_Addr. Change code that uses
7143 it as well.
7144 * layout.cc (Layout::layout): Always set *off.
7145 * mapfile.cc (Mapfile::print_input_section): Use
7146 output_section_offset.
7147 * i386.cc (Target_i386::copy_reloc): Change object parameter to
7148 Sized_relobj*.
7149 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
7150 * sparc.cc (Target_sparc::copy_reloc): Likewise.
7151 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
7152
5cb66f97
ILT
71532008-07-03 Ian Lance Taylor <iant@google.com>
7154
7155 * layout.cc (Layout::include_section): Do not discard unrecognized
7156 SHT_STRTAB sections.
7157
afe47622
CS
71582008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
7159
7160 * script.cc (Lex::can_continue_name): Make '?' allowable in
7161 version-script names.
7162 * testsuite/version_script.map: Change glob pattern to use '?'
7163
5adf9721
ILT
71642008-06-30 Manish Singh <yosh@gimp.org>
7165
7166 PR 6585
7167 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
7168 Correct typo.
7169
e6fde208
ILT
71702008-06-30 Ian Lance Taylor <iant@google.com>
7171
7172 PR 6660
7173 PR 6682
7174 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
7175 versions]: Don't try to read the value in the contents, since we
7176 don't use it. Use the template endianness when writing.
7177
3f2e6a2d
CC
71782008-06-25 Cary Coutant <ccoutant@google.com>
7179
7180 * fileread.cc (File_read::make_view): Assert on zero-length view.
7181 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
7182 symbol table when there are no symbols to read.
7183
c43d3a48
CS
71842008-06-23 Craig Silverstein <csilvers@google.com>
7185
7186 * version.cc (version_string): Bump to 1.7
7187
5f494ea0
CS
71882008-06-18 Craig Silverstein <csilvers@google.com>
7189
7190 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
7191 constant 0xFFFF to type Valtype.
7192 (Powerpc_relocate_functions::rel16_ha): Likewise.
7193
c42e122e
ILT
71942008-06-17 Ian Lance Taylor <iant@google.com>
7195
f34787f8
ILT
7196 * output.h (Output_section::Input_section): Initialize p2align_ to
7197 zero for Output_section_data constructors.
7198 (Output_section::Input_section::addralign): If not an input
7199 section, return the alignment of the Output_section_data.
7200 * testsuite/copy_test.cc: New file.
7201 * testsuite/copy_test_1.cc: New file.
7202 * testsuite/copy_test_2.cc: New file.
7203 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
7204 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
7205 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
7206 (copy_test_1_pic.o, copy_test_1.so): New targets.
7207 (copy_test_2_pic.o, copy_test_2.so): New targets.
7208 * testsuite/Makefile.in: Rebuild.
7209
c42e122e
ILT
7210 * script-sections.cc (Script_sections::place_orphan): Initialize
7211 local variable exact.
7212
ce3ac18a
DE
72132008-06-13 David Edelsohn <edelsohn@gnu.org>
7214
7215 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
7216
42cacb20
DE
72172008-06-12 David Edelsohn <edelsohn@gnu.org>
7218 David S. Miller <davem@davemloft.net>
7219
7220 * powerpc.cc: New file.
7221 * Makefile.am (TARGETSOURCES): Add powerpc.cc
7222 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
7223 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
7224 * Makefile.in: Rebuild.
7225
7b308235
ILT
72262008-06-09 Ian Lance Taylor <iant@google.com>
7227
7228 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
7229 <exception>.
7230 (throwing, orig_terminate): New static variables.
7231 (terminate_handler): New static function.
7232 (t2): Set terminate handler.
7233
f0b886e3
ILT
72342008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
7235
7236 PR 6584
cd536b21 7237 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
7238 alignment.
7239
3e90f135
CC
72402008-05-30 Cary Coutant <ccoutant@google.com>
7241
7242 * archive.cc (Archive::include_all_members) Correct to step
7243 over symbol table and extended name table in thin archives.
7244
e09ad04a
ILT
72452008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
7246
7247 PR 6407
7248 * target-reloc.h (relocate_for_relocatable): Fix new_offset
7249 calculation.
7250
62b01cb5
ILT
72512008-05-28 Caleb Howe <cshowe@google.com>
7252
7253 * reduced_debug_output.cc: New file.
7254 * reduced_debug_output.h: New file.
92de84a6 7255 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
7256 * options.cc (General_options::finalize): Add strip_debug_non_line
7257 to the strip heirarchy.
7258 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
7259 fields.
7260 * layout.cc: Include "reduced_debug_output.h".
7261 (Layout::Layout): Initialize new fields.
7262 (line_only_debug_sections): New static array.
7263 (is_lines_only_debug_sections): New static inline function.
7264 (Layout::include_section): Handle --strip-debug-non-line.
7265 (Layout::make_output_section): If --strip-debug-non-line, build
7266 new output sections for .debug_abbrev and .debug_info.
7267 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
7268 gold. Warn about possible overflow.
7269 (read_signed_LEB_128): Likewise.
7270 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
7271 (read_signed_LEB_128): Declare.
7272 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
7273 (HFILES): Add reduced_debug_output.h.
7274 * Makefile.in: Rebuild.
7275
7d9e3d98
ILT
72762008-05-21 Ian Lance Taylor <iant@google.com>
7277
7278 * mapfile.cc: New file.
7279 * mapfile.h: New file.
7280 * options.h (class General_options): Add -M/--print-map and -Map.
7281 * options.cc (General_options::finalize): Make -M equivalent to
7282 -Map -.
7283 * main.cc: Include <cstdio> and "mapfile.h".
7284 (main): Open mapfile if requested.
7285 * gold.cc (class Middle_runner): Add mapfile_ field. Update
7286 constructor. Change caller.
7287 (queue_initial_tasks): Add mapfile parameter. Change caller.
7288 (queue_middle_tasks): Likewise.
7289 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
7290 declarations.
7291 * archive.cc: Include "mapfile.h".
7292 (Archive::add_symbols): Add mapfile parameter. Change all
7293 callers. Pass mapfile, symbol, and reason to include_member.
7294 (Archive::include_all_members): Add mapfile parameter. Change all
7295 callers.
7296 (Archive::include_member): Add mapfile, sym, and why parameters.
7297 Change all callers. Report inclusion to map file.
7298 * archive.h: Include "fileread.h".
7299 (class Archive): Update declarations.
7300 (Archive::file): New const method.
7301 (class Add_archive_symbols): Add mapfile_ field. Update
7302 constructor. Change all callers.
7303 * readsyms.h (class Read_symbols): Likewise.
7304 (class Finish_group): Likewise.
7305 (class Read_script): Likewise.
7306 * common.cc: Include "mapfile.h".
7307 (Symbol_table::allocate_commons): Add mapfile parameter. Change
7308 all callers.
7309 (Symbol_table::do_allocate_commons): Likewise.
7310 (Symbol_table::do_allocate_commons_list): Likewise. Report common
7311 symbol allocation to mapfile.
7312 * common.h (class Allocate_commons_task): Add mapfile_ field.
7313 Update constructor. Change all callers.
7314 * symtab.h (class Symbol_table): Update declarations.
7315 * layout.cc: Include "mapfile.h".
7316 (Layout_task_runner::run): Print information to mapfile.
7317 (Layout::create_gold_note): Change Output_data_fixed_space to
7318 Output_data_zero_fill.
7319 (Layout::create_build_id): Likewise.
7320 (Layout::print_to_mapfile): New function.
7321 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
7322 constructor. Change caller.
7323 (class Layout): Declare print_to_mapfile.
7324 * output.cc (Output_section::Input_section::print_to_mapfile): New
7325 function.
7326 (Output_section::add_input_section): If producing a map, always
7327 add to input_sections_ list.
7328 (Output_section::do_print_to_mapfile): New function.
7329 (Output_segment::print_sections_to_mapfile): New function.
7330 (Output_segment::print_section_list_to_mapfile): New function.
7331 * output.h: Include "mapfile.h".
7332 (Output_data::print_to_mapfile): New function.
7333 (Output_data::do_print_to_mapfile): New virtual function.
7334 (Output_segment_headers::do_print_to_mapfile): New function.
7335 (Output_file_header::do_print_to_mapfile): New function.
7336 (Output_data_const::do_print_to_mapfile): New function.
7337 (class Output_data_const_buffer): Add map_name_ field. Update
7338 constructor. Change all callers. Add do_print_to_mapfile
7339 function.
7340 (class Output_data_fixed_space): Likewise.
7341 (class Output_data_space): Likewise.
7342 (class Output_data_zero_fill): New class.
7343 (Output_data_strtab::do_print_to_mapfile): New function.
7344 (Output_data_reloc_base::do_print_to_mapfile): New function.
7345 (Output_relocatable_relocs::do_print_to_mapfile): New function.
7346 (Output_data_group::do_print_to_mapfile): New function.
7347 (Output_data_got::do_print_to_mapfile): New function.
7348 (Output_data_dynamic::do_print_to_mapfile): New function.
7349 (Output_symtab_xindex::do_print_to_mapfile): New function.
7350 (class Output_section): Declare do_print_to_mapflie. Declare
7351 print_to_mapfile in Input_section.
7352 (class Output_segment): Declare new functions.
7353 * object.h (Sized_relobj::symbol_count): New function.
7354 * script-sections.cc
7355 (Output_section_element_dot_assignment::set_section_addresses):
7356 Change Output_data_fixed_space to Output_data_zero_fill.
7357 (Output_data_expression::do_print_to_mapfile): New function.
7358 * script.cc (read_input_script): Add mapfile parameter. Change
7359 all callers.
7360 * script.h (read_input_script): Update declaration.
7361 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
7362 (Eh_frame::do_print_to_mapfile): New function.
7363 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
7364 (Output_merge_string::do_print_to_mapfile): New function.
7365 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
7366 function.
7367 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
7368 function.
7369 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
7370 function.
7371 * Makefile.am (CCFILES): Add mapfile.cc.
7372 (HFILES): Add mapfile.h.
7373 * Makefile.in: Rebuild.
7374
9f1d377b
ILT
73752008-05-19 Ian Lance Taylor <iant@google.com>
7376
7377 * options.h (class General_options): Add -z relro.
7378 * layout.cc (Layout::Layout): Initialize relro_segment_.
7379 (Layout::add_output_section_data): Return the output section.
7380 (Layout::make_output_section): Rcognize relro sections and mark
7381 them appropriately.
7382 (Layout::attach_allocated_section_to_segment): Put relro sections
7383 in a PT_GNU_RELRO segment.
7384 (Layout::create_initial_dynamic_sections): Mark the .dynamic
7385 section as relro.
7386 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
7387 PT_TLS segments.
7388 (Layout::linkonce_mapping): Map d.rel.ro.local to
7389 .data.rel.ro.local.
7390 (Layout::output_section_name): Us .data.rel.ro.local for any
7391 section which begins with that.
7392 * layout.h (class Layout): Update add_output_section_data
7393 declaration. Add relro_segment_ field.
7394 * output.cc (Output_section::Output_section): Initialize is_relro_
7395 and is_relro_local_ fields.
7396 (Output_segment::add_output_section): Group relro sections.
7397 (Output_segment::is_first_section_relro): New function.
7398 (Output_segment::maximum_alignment): If there is a relro section,
7399 align the segment to the common page size.
7400 (Output_segment::set_section_addresses): Track whether we are
7401 looking at relro sections. If the last section is a relro
7402 section, align to the common page size.
7403 (Output_segment::set_section_list_addresses): Add in_relro
7404 parameter. Change all callers. Align to the page size when
7405 moving from relro to non-relro section.
7406 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
7407 segment.
7408 * output.h (class Output_section): Add is_relro_ and
7409 is_relro_local_ fields.
7410 (Output_section::is_relro): New function.
7411 (Output_section::set_is_relro): New function.
7412 (Output_section::is_relro_local): New function.
7413 (Output_section::set_is_relro_local): New function.
7414 (class Output_segment): Update declarations.
7415 * i386.cc (Target_i386::got_section): Mark .got section as relro.
7416 * sparc.cc (Target_sparc::got_section): Likewise.
7417 * x86_64.cc (Target_x86_64::got_section): Likewise.
7418 * testsuite/relro_test_main.cc: New file.
7419 * testsuite/relro_test.cc: New file.
7420 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
7421 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
7422 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
7423 (relro_test.so, relro_test_pic.o): New targets.
7424 * testsuite/Makefile.in: Rebuild.
7425
a984ee1d
ILT
74262008-05-16 Ian Lance Taylor <iant@google.com>
7427
01676dcd
ILT
7428 * output.cc (Output_segment::add_output_section): Remove front
7429 parameter.
7430 * output.h (class Output_segment): Remove
7431 add_initial_output_section and overloaded add_output_section.
7432 Update declaration of remaining add_output_section.
7433 * layout.cc (Layout::create_interp): Call add_output_section
7434 rather than add_initial_output_section.
7435 (Layout::finish_dynamic_section): Likewise.
7436
497897f9
ILT
7437 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
7438 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
7439 know the dynamic type.
7440 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
7441 field. Initialize it in constructor.
7442 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
7443 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
7444 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
7445 reloc.
7446
a984ee1d
ILT
7447 * output.cc (Output_reloc::get_address): Change return type to
7448 Elf_Addr.
7449 * output.h (class Output_reloc): Update get_address declaration.
7450 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
7451 for section addresses.
7452
55ba0940
ILT
74532008-05-09 Ian Lance Taylor <iant@google.com>
7454
7455 PR 6493
7456 * gold.cc (gold_nomem): Use return value of write.
7457
75517b77
ILT
74582008-05-08 Ian Lance Taylor <iant@google.com>
7459
7460 * symtab.c (Symbol::init_base_output_data): Add version
7461 parameter. Change all callers.
7462 (Symbol::init_base_output_segment): Likewise.
7463 (Symbol::init_base_constant): Likewise.
7464 (Symbol::init_base_undefined): Likewise.
7465 (Sized_symbol::init_output_data): Likewise.
7466 (Sized_symbol::init_output_segment): Likewise.
7467 (Sized_symbol::init_constant): Likewise.
7468 (Sized_symbol::init_undefined): Likewise.
7469 (Symbol_table::do_define_in_output_data): If the new symbol has a
7470 version, mark it as the default.
7471 (Symbol_table::do_define_in_output_segment): Likewise.
7472 (Symbol_table::do_define_as_constant): Likewise.
7473 * symtab.h (class Symbol): Update declarations.
7474 (class Sized_symbol): Likewise.
7475 * resolve.cc (Symbol::override_version): New function.
c42e122e 7476 (Symbol::override_base): Call override_version.
75517b77
ILT
7477 (Symbol::override_base_with_special): Likewise.
7478 * testsuite/ver_script_8.script: New file.
7479 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
7480 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
7481 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
7482 (ver_test_8_1.so, ver_test_8_2.so): New targets.
7483
f1f70eae
ILT
74842008-05-06 Ian Lance Taylor <iant@google.com>
7485
f3e9c5c5
ILT
7486 PR 6049
7487 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
7488 functions.
7489 (class General_options): Remove existing --undefined, and add
7490 --no-undefined instead. Add new --undefined as synonym for -u.
7491 * archive.cc (Archive::add_symbols): Check whether symbol was
7492 named with -u.
7493 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
7494 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
7495 all uses. Add IS_UNDEFINED. Update declarations to split
7496 different versions of init_base. Declare init_base_undefined.
7497 (Symbol::is_defined): Handle IS_UNDEFINED.
7498 (Symbol::is_undefined): Likewise.
7499 (Symbol::is_weak_undefined): Call is_undefined.
7500 (Symbol::is_absolute): Handle IS_CONSTANT.
7501 (class Sized_symbol): Update declarations to split different
7502 versions of init. Declare init_undefined.
7503 (class Symbol_table): Declare new functions.
7504 * symtab.cc (Symbol::init_base_object): Rename from init_base.
7505 Change all callers.
7506 (Symbol::init_base_output_data): Likewise.
7507 (Symbol::init_base_output_segment): Likewise.
7508 (Symbol::init_base_constant): Likewise.
7509 (Symbol::init_base_undefined): New function.
7510 (Sized_symbol::init_object): Rename from init. Change all
7511 callers.
7512 (Sized_symbol::init_output_data): Likewise.
7513 (Sized_symbol::init_output_segment): Likewise.
7514 (Sized_symbol::init_constant): Likewise.
7515 (Sized_symbol::init_undefined): New function.
7516 (Symbol_table::add_undefined_symbols_from_command_line): New
7517 function.
7518 (Symbol_table::do_add_undefined_symbols_from_command_line): New
7519 function.
7520 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
7521 (Symbol::output_section): Likewise.
7522 (Symbol::set_output_section): Likewise.
7523 (Symbol_table::sized_finalize_symbol): Likewise.
7524 (Symbol_table::sized_write_globals): Likewise.
7525 * resolve.cc (Symbol_table::should_override): Likewise.
7526 (Symbol::override_base_with_special): Likewise.
7527
8bdcdf2c
ILT
7528 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
7529 symbol, change it to have default visibility.
7530 * testsuite/protected_1.cc: New file.
7531 * testsuite/protected_2.cc: New file.
7532 * testsuite/protected_3.cc: New file.
7533 * testsuite/protected_main_1.cc: New file.
7534 * testsuite/protected_main_2.cc: New file.
7535 * testsuite/protected_main_3.cc: New file.
7536 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
7537 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
7538 (protected_1_LDFLAGS, protected_1_LDADD): Define.
7539 (protected_1.so): New target.
7540 (protected_1_pic.o, protected_2_pic.o): New targets.
7541 (protected_3_pic.o): New target.
7542 (check_PROGRAMS): Add protected_2.
7543 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
7544 (protected_2_LDFLAGS, protected_2_LDADD): Define.
7545 * testsuite/Makefile.in: Rebuild.
7546
2b706932
ILT
7547 * options.h (DEFINE_var): Add set_user_set_##varname__.
7548 (DEFINE_bool_alias): New macro.
7549 (class General_options): Define -Bstatic using DEFINE_bool_alias
7550 rather than DEFINE_special. Add --undefined as an alias for -z
7551 defs.
7552 * options.cc (General_options::parse_Bstatic): Remove.
7553
d82a5bcc
ILT
7554 * options.h (class General_options): Add --fatal-warnings.
7555 * main.cc (main): Implement --fatal-warnings.
7556 * errors.h (Errors::warning_count): New function.
7557
f1f70eae
ILT
7558 * options.h (class General_options): Add -Bsymbolic-functions.
7559 * symtab.h (Symbol::is_preemptible): Check for
7560 -Bsymbolic-functions.
7561
8825ac63
ILT
75622008-05-05 Ian Lance Taylor <iant@google.com>
7563
d98bc257
ILT
7564 * options.h (DEFINE_bool): For DASH_Z, create the negative option
7565 as noVARNAME rather than no-VARNAME.
7566 (class General_options): Add option -z combreloc.
7567 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
7568 get_address.
7569 (Output_reloc::sort_before) [SHT_REL]: New function.
7570 (Output_reloc::sort_before) [SHT_RELA]: New function.
7571 (class Output_data_reloc_base): Add sort_relocs_ field. Define
7572 Sort_relocs_comparison.
7573 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
7574 parameter. Change all callers.
7575 (Output_data_reloc::Output_data_reloc) [both versions]: Add
7576 sort_relocs parameter. Change all callers.
7577 * output.cc (Output_reloc::get_address): New function, broken out
7578 of write_rel.
7579 (Output_reloc::write_rel): Call it.
7580 (Output_reloc::compare): New function.
7581 (Output_data_reloc_base::do_write): Optionally sort relocs.
7582
60b2b4e7
ILT
7583 * configure.ac: If targ_extra_obj is set, link it in.
7584 * configure.tgt: Initialize all variables.
7585 (x86_64*): Set targ_extra_obj and targ_extra_size.
7586 * configure: Rebuild.
7587
8825ac63
ILT
7588 * object.cc (Sized_relobj::include_section_group): Adjust section
7589 indexes read from group data. Build vector to pass to
7590 layout_group.
7591 * layout.cc (Layout::layout_group): Add flags and shndxes
7592 parameters. Remove contents parameter. Change caller. Update
7593 explicit instantiations.
7594 * layout.h (class Layout): Update layout_group declaration.
7595 * output.cc (Output_data_group::Output_data_group): Add flags and
7596 input_shndxes parameters. Remove contents parameter. Change
7597 caller.
7598 (Output_data_group::do_write): Change input_sections_ to
7599 input_shndxes_.
7600 * output.h (class Output_data_group): Update constructor
7601 declaration. Rename input_sections_ to input_shndxes_.
7602 * testsuite/many_sections_test.cc: Add template.
7603
e94cf127
CC
76042008-04-30 Cary Coutant <ccoutant@google.com>
7605
4418b2d5
CC
7606 * target-reloc.h (relocate_section): Fix dead-pointer bug.
7607
e94cf127
CC
7608 * layout.cc (Layout::include_section): Refactored check for debug
7609 info section.
7610 (Layout::add_comdat): Add new parameters. Change type
7611 of signature parameter. Add object and shndx to signatures table.
7612 (Layout::find_kept_object): New function.
7613 * layout.h: Include <cstring>.
7614 (Layout::is_debug_info_section): New function.
7615 (Layout::add_comdat): Add new parameters.
7616 (Layout::find_kept_object): New function.
7617 (Layout::Kept_section): New struct.
7618 (Layout::Signatures): Change type of map range.
7619 * object.cc (Relobj::output_section_address): New function.
7620 (Sized_relobj::include_section_group): Add new parameters. Change
7621 calls to Layout::add_comdat. Change to build table of kept comdat
7622 groups and table mapping discarded sections to kept sections.
7623 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
7624 (Sized_relobj::do_layout): Change calls to include_section_group and
7625 include_linkonce_section.
7626 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
7627 value to zero when section is discarded.
7628 (Sized_relobj::map_to_kept_section): New function.
7629 * object.h (Relobj::output_section_address): New function.
7630 (Relobj::Comdat_group): New type.
7631 (Relobj::find_comdat_group): New function.
7632 (Relobj::Comdat_group_table): New type.
7633 (Relobj::Kept_comdat_section): New type.
7634 (Relobj::Kept_comdat_section_table): New type.
7635 (Relobj::add_comdat_group): New function.
7636 (Relobj::set_kept_comdat_section): New function.
7637 (Relobj::get_kept_comdat_section): New function.
7638 (Relobj::comdat_groups_): New field.
7639 (Relobj::kept_comdat_sections_): New field.
7640 (Symbol_value::input_value): Update comment.
7641 (Sized_relobj::map_to_kept_section) New function.
7642 (Sized_relobj::include_linkonce_section): Add new parameter.
7643 * target-reloc.h (Comdat_behavior): New type.
7644 (get_comdat_behavior): New function.
7645 (relocate_section): Add code to map a discarded section to the
7646 corresponding kept section when applying a relocation.
7647
e4e5049b
CS
76482008-04-30 Craig Silverstein <csilvers@google.com>
7649
7650 * dwarf_reader.cc (next_generation_count): New static var.
7651 (Addr2line_cache_entry): New struct.
7652 (addr2line_cache): New static var.
7653 (Dwarf_line_info::one_addr2line): Added caching.
7654 (Dwarf_line_info::clear_addr2line_cache): New function.
7655 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
7656 cache-size parameter.
7657 (Dwarf_line_info::one_addr2line_cache): New function.
7658 * symtab.cc (Symbol_table::detect_odr_violations): Pass
7659 new cache-size argument to one_addr2line(), and clear cache.
7660
d09e9154
CC
76612008-04-28 Cary Coutant <ccoutant@google.com>
7662
7663 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
7664 R_386_PC8 relocations.
7665
7ef73768
ILT
76662008-04-23 Ian Lance Taylor <iant@google.com>
7667
55438702
ILT
7668 * object.cc (Sized_relobj::include_section_group): Check for
7669 invalid section group.
7670
c165fb93
ILT
7671 * object.cc (make_elf_object): Correct test for 64-bit ELF file
7672 header size.
7673
7ef73768
ILT
7674 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
7675 than read for file header.
7676 * archive.cc (Archive::include_member): Likewise.
7677
6194aaab
L
76782008-04-23 Paolo Bonzini <bonzini@gnu.org>
7679
7680 * aclocal.m4: Regenerate.
7681 * configure: Regenerate.
7682
d491d34e
ILT
76832008-04-19 Ian Lance Taylor <iant@google.com>
7684
5ea2bac6
ILT
7685 * version.cc (version_string): Bump to 1.6.
7686
7bc3e21a
ILT
7687 * testsuite/Makefile.am (many_sections_r_test): New target.
7688 (many_sections_r_test_SOURCES): Remove.
7689 (many_sections_r_test_DEPENDENCIES): Remove.
7690 (many_sections_r_test_LDFLAGS): Remove.
7691 (many_sections_r_test_LDADD): Remove.
7692
7fcd3aa9
ILT
7693 * object.cc (Sized_relobj::do_add_symbols): Always pass
7694 local_symbol_count_ to add_from_relobj.
7695
4c94d6ae
ILT
7696 * testsuite/Makefile.am (many_sections_check.h): Only check one in
7697 every thousand variables.
7698 * testsuite/Makefile.in: Rebuild.
7699
d491d34e
ILT
7700 * object.cc (Xindex::initialize_symtab_xindex): New function.
7701 (Xindex::read_symtab_xindex): New function.
7702 (Xindex::sym_xindex_to_shndx): New function.
7703 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
7704 available.
7705 (Sized_relobj::do_initialize_xindex): New function.
7706 (Sized_relobj::do_read_symbols): Adjust section links.
7707 (Sized_relobj::symbol_section_and_value): Add is_ordinary
7708 parameter. Change all callers.
7709 (Sized_relobj::include_section_group): Adjust section links and
7710 symbol section indexes.
7711 (Sized_relobj::do_layout): Adjust section links.
7712 (Sized_relobj::do_count_local_symbols): Adjust section links and
7713 symbol section indexes.
7714 (Sized_relobj::do_finalize_local_symbols): Distinguish between
7715 ordinary and special symbols.
7716 (Sized_relobj::write_local_symbols): Add symtab_xindex and
7717 dynsym_xindex parameters. Change all callers. Adjust section
7718 links. Use SHN_XINDEX when needed.
7719 (Sized_relobj::get_symbol_location_info): Adjust section links.
7720 Don't get fooled by special symbols.
7721 * object.h (class Xindex): Define.
7722 (class Object): Add xindex_ parameter. Declare virtual functoin
7723 do_initialize_xindex.
7724 (Object::adjust_sym_shndx): New function.
7725 (Object::set_xindex): New protected function.
7726 (class Symbol_value): Add is_ordinary_shndx_ field.
7727 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
7728 (Symbol_value::value): Assert ordinary section.
7729 (Symbol_value::initialize_input_to_output_map): Likewise.
7730 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
7731 Change all callers.
7732 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
7733 all callers.
7734 (class Sized_relobj): Update declarations.
7735 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
7736 parameter. Change all callers.
7737 (Sized_relobj::adjust_shndx): New function.
7738 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
7739 field.
7740 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
7741 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
7742 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
7743 (Sized_dynobj::read_dynsym_section): Adjust section links.
7744 (Sized_dynobj::read_dynamic): Likewise.
7745 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
7746 section links.
7747 (Sized_dynobj::do_initialize_xindex): New function.
7748 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
7749 do_initialize_xindex.
7750 (Sized_dynobj::adjust_shndx): New function.
7751 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
7752 dynsym_xindex_ fields.
7753 (Layout::finalize): Add a call to set_section_indexes before
7754 creating the symtab sections.
7755 (Layout::set_section_indexes): Don't do anything if the section
7756 already has a section index.
7757 (Layout::create_symtab_sections): Add shnum parameter. Change
7758 caller. Create .symtab_shndx section if needed.
7759 (Layout::create_shdrs): Add shstrtab_section parameter. Change
7760 caller.
7761 (Layout::allocated_output_section_count): New function.
7762 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
7763 needed.
7764 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
7765 fields. Update declarations.
7766 (Layout::symtab_xindex): New function.
7767 (Layout::dynsym_xindex): New function.
7768 (class Write_symbols_task): Add layout_ field.
7769 (Write_symbols_task::Write_symbols_task): Add layout parameter.
7770 Change caller.
7771 * output.cc (Output_section_headers::Output_section_headers): Add
7772 shstrtab_section parameter. Change all callers.
7773 (Output_section_headers::do_sized_write): Store overflow values
7774 for section count and section string table section index in
7775 section header zero.
7776 (Output_file_header::do_sized_write): Check for overflow of
7777 section count and section string table section index.
7778 (Output_symtab_xindex::do_write): New function.
7779 (Output_symtab_xindex::endian_do_write): New function.
7780 * output.h (class Output_section_headers): Add shstrtab_section_.
7781 Update declarations.
7782 (class Output_symtab_xindex): Define.
7783 (Output_section::has_out_shndx): New function.
7784 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
7785 field.
7786 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
7787 Change all callers.
7788 (Sized_symbol::init): Likewise.
7789 (Symbol::output_section): Check for ordinary symbol.
7790 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
7791 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
7792 callers.
7793 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
7794 Change all callers. Simplify handling of symbols from sections
7795 not included in the link.
7796 (Symbol_table::add_from_dynobj): Handle ordinary symbol
7797 distinction.
7798 (Weak_alias_sorter::operator()): Assert that symbols are
7799 ordinary.
7800 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
7801 distinction.
7802 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
7803 parameters. Change all callers.
7804 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
7805 symbol distinction. Use SHN_XINDEX when needed.
7806 (Symbol_table::write_section_symbol): Add symtab_xindex
7807 parameter. Change all callers.
7808 (Symbol_table::sized_write_section_symbol): Likewise. Use
7809 SHN_XINDEX when needed.
7810 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
7811 declarations.
7812 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
7813 (Symbol::is_defined): Check is_ordinary.
7814 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
7815 (Symbol::is_absolute, Symbol::is_common): Likewise.
7816 (class Sized_symbol): Update declarations.
7817 (class Symbol_table): Update declarations.
7818 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
7819 parameters. Change all callers.
7820 (Sized_symbol::override): Likewise.
7821 (Symbol_table::override): Likewise.
7822 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
7823 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
7824 is_ordinary, and orig_st_shndx parameters. Change all callers.
7825 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
7826 to be in an ordinary section.
7827 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
7828 object and is_ordinary parameters. Change all callers.
7829 (Sized_dwarf_line_info::read_relocs): Add object parameter.
7830 Change all callers. Don't add undefined or non-ordinary symbols
7831 to reloc_map_.
7832 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
7833 Change all callers.
7834 * dwarf_reader.h (class Sized_dwarf_line_info): Update
7835 declarations.
7836 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
7837 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
7838 (Sized_relobj::relocate_sections): Likewise.
7839 * target-reloc.h (scan_relocs): Adjust section symbol index.
7840 (scan_relocatable_relocs): Likewise.
7841 * i386.cc (Scan::local): Check for ordinary symbols.
7842 * sparc.cc (Scan::local): Likewise.
7843 * x86_64.cc (Scan::local): Likewise.
7844 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
7845 to symbol_section_and_value.
7846 * testsuite/many_sections_test.cc: New file.
7847 * testsuite/Makefile.am (BUILT_SOURCES): Define.
7848 (check_PROGRAMS): Add many_sections_test.
7849 (many_sections_test_SOURCES): Define.
7850 (many_sections_test_DEPENDENCIES): Define.
7851 (many_sections_test_LDFLAGS): Define.
7852 (BUILT_SOURCES): Add many_sections_define.h.
7853 (many_sections_define.h): New target.
7854 (BUILT_SOURCES): Add many_sections_check.h.
7855 (many_sections_check.h): New target.
7856 (check_PROGRAMS): Add many_sections_r_test.
7857 (many_sections_r_test_SOURCES): Define.
7858 (many_sections_r_test_DEPENDENCIES): Define.
7859 (many_sections_r_test_LDFLAGS): Define.
7860 (many_sections_r_test_LDADD): Define.
7861 (many_sections_r_test.o): New target.
7862 * testsuite/Makefile.in: Rebuild.
7863
c5818ff1
CC
78642008-04-17 Cary Coutant <ccoutant@google.com>
7865
7866 * errors.cc (Errors::info): New function.
7867 (gold_info): New function.
7868 * errors.h (Errors::info): New function.
7869 * gold.h (gold_info): New function.
7870 * object.cc (Input_objects::add_object): Print trace output.
7871 * options.cc (options::parse_set): New function.
7872 (General_options::parse_wrap): Deleted.
7873 (General_options::General_options): Deleted initializer.
7874 * options.h (options::String_set): New typedef.
7875 (options::parse_set): New function.
7876 (DEFINE_set): New macro.
7877 (General_options::wrap): Changed to use DEFINE_set. Changed
7878 callers of any_wrap_symbols and is_wrap_symbol.
7879 (General_options::trace, General_options::trace_symbol):
7880 New options.
7881 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
7882 (General_options::wrap_symbols_): Deleted.
7883 * symtab.cc (Symbol_table::add_from_object): Print trace output.
7884
b5be4a7c
DM
78852008-04-17 David S. Miller <davem@davemloft.net>
7886
7887 * options.cc (General_options::parse_V): New function.
7888 * options.h: Add entries for -V and -Qy.
7889
155a0dd7
ILT
78902008-04-17 Ian Lance Taylor <iant@google.com>
7891
7892 * common.cc (Symbol_table::allocate_commons): Remove options
7893 parameter. Change caller.
7894 (Symbol_table::do_allocate_commons): Remove options parameter.
7895 Change caller. Just call do_allocate_commons_list twice.
7896 (Symbol_table::do_allocate_commons_list): New function, broken out
7897 of do_allocate_commons.
7898 * common.h (class Allocate_commons_task): Remove options_ field.
7899 Update constructor.
7900 * symtab.cc (Symbol_table::Symbol_table): Initialize
7901 tls_commons_.
7902 (Symbol_table::add_from_object): Put TLS common symbols on
7903 tls_commons_ list.
7904 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
7905 which are IN_OUTPUT_DATA.
7906 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
7907 allocate_commons and do_allocate_commons declarations. Declare
7908 do_allocate_commons_list.
7909 * gold.cc (queue_middle_tasks): Update creation of
7910 Allocate_commons_task to not pass options.
7911 * testsuite/Makefile.am (INCLUDES): Add -I.. .
7912 (TLS_TEST_C_FLAGS): New variable.
7913 (tls_test_c_pic.o): New target.
7914 (tls_test_shared.so): Link in tls_test_c_pic.o.
7915 (tls_test_c_pic_ie.o): New target.
7916 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
7917 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
7918 (tls_test_c.o): New target.
7919 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
7920 (tls_pic_test_LDADD): Likewise.
7921 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
7922 (tls_shared_gd_to_ie_test_LDADD): Likewise.
7923 (tls_test_c_gnu2.o): New target.
7924 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
7925 tls_test_c_gnu2.o.
7926 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
7927 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
7928 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
7929 * testsuite/tls_test.cc: Include "config.h".
7930 (t_last): Call t11_last.
7931 * testsuite/tls_test.h (t11, t11_last): Declare.
7932 * testsuite/tls_test_c.c: New file.
7933 * testsuite/tls_test_main.cc (thread_routine): Call t11.
7934 * configure.ac: Check for OpenMP support.
7935 * configure, config.in, Makefile.in: Rebuild.
7936 * testsuite/Makefile.in: Rebuild.
7937
edfbb029
CC
79382008-04-16 Cary Coutant <ccoutant@google.com>
7939
7940 * i386.cc (Target_i386::define_tls_base_symbol): New function.
7941 (Target_i386::tls_base_symbol_defined_): New field.
7942 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
7943 (Target_i386::Scan::global): Likewise.
7944 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
7945 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
7946 (Target_x86_64::tls_base_symbol_defined_): New field.
7947 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
7948 (Target_x86_64::Scan::global): Likewise.
7949
f3c69fca
CC
79502008-04-16 Cary Coutant <ccoutant@google.com>
7951
7952 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
7953 (Symbol::needs_plt_entry): Allow weak undefined symbols.
7954 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
7955 building shared libraries.
7956 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
7957 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
7958 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
7959 * testsuite/Makefile.in: Rebuild.
7960 * testsuite/weak_undef.h: New file.
7961 * testsuite/weak_undef_file1.cc: Add extra test cases.
7962 * testsuite/weak_undef_file2.cc: Likewise.
7963 * testsuite/weak_undef_test.cc: Likewise.
7964
7c414435
DM
79652008-04-16 David S. Miller <davem@davemloft.net>
7966
32b769e1
DM
7967 * sparc.cc (Target_sparc::Scan): Change from struct to class.
7968 Add issued_non_pic_error_ field. Declare check_non_pic.
7969 (Target_sparc::Scan::check_non_pic): New function.
7970 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
7971 (Target_sparc::Scan::global): Likewise.
7972
11936fb1
DM
7973 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
7974 * configure: Rebuild.
7975
7c414435
DM
7976 * options.h (DEFINE_enable): New macro.
7977 (new_dtags): New enable option.
7978 (initfirst, interpose, loadfltr, nodefaultlib,
7979 nodelete, nodlopen, nodump): New -z options.
7980 * layout.cc (Layout:finish_dynamic_section): If new
7981 dtags enabled, emit DT_RUNPATH. Also, emit a
7982 DT_FLAGS_1 containing any specified -z flags.
7983
85c7bf8b
ILT
79842008-04-16 Ian Lance Taylor <iant@google.com>
7985
12c0daef
ILT
7986 * copy-relocs.cc: New file.
7987 * copy-relocs.h: New file.
7988 * reloc.cc: Remove Copy_relocs code.
7989 * reloc.h: Likewise.
7990 * reloc-types.h (struct Reloc_types) [both versions]: Add
7991 get_reloc_addend_noerror.
7992 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
7993 variants of add_global which take an addend which must be zero.
7994 * i386.cc: Include "copy-relocs.h".
7995 (class Target_i386): Change type of copy_relocs_ to variable,
7996 update initializer.
7997 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
7998 Change all callers.
7999 (Target_i386::do_finalize_sections): Change handling of
8000 copy_relocs_.
8001 * sparc.cc: Include "copy-relocs.h".
8002 (class Target_sparc): Change type of copy_relocs_ to variable,
8003 update initializer.
8004 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
8005 Change all callers.
8006 (Target_sparc::do_finalize_sections): Change handling of
8007 copy_relocs_.
8008 * x86_64.cc: Include "copy-relocs.h".
8009 (class Target_x86_64): Change type of copy_relocs_ to variable,
8010 update initializer.
8011 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
8012 class. Change all callers.
8013 (Target_x86_64::do_finalize_sections): Change handling of
8014 copy_relocs_.
8015 * Makefile.am (CCFILES): Add copy-relocs.cc.
8016 (HFILES): Add copy-relocs.h.
8017
4f4995b6
ILT
8018 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
8019
85c7bf8b
ILT
8020 * testsuite/script_test_4.sh: Permit leading zeroes.
8021
4f2a9edd
ILT
80222008-04-15 Ian Lance Taylor <iant@google.com>
8023
e6188289
ILT
8024 * script-sections.cc (Script_sections::create_segments): Use
8025 header_size_adjustment even when there is enough room for the
8026 headers.
8027 * testsuite/script_test_4.sh: New file.
8028 * testsuite/script_test_4.t: New file.
8029 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
8030 (check_DATA): Add script_test_4.stdout.
8031 (MOSTLYCLEANFILES): Likewise.
8032 (script_test_4): New target.
8033 (script_test_4.stdout): New target.
8034 * testsuite/Makefile.in: Rebuild.
8035
4f2a9edd
ILT
8036 * sparc.cc: Add definitions for Output_data_plt_sparc class
8037 constants.
8038
f5314dd5
DM
80392008-04-14 David S. Miller <davem@davemloft.net>
8040
8041 * sparc.cc: New file.
8042 * Makefile.am (TARGETSOURCES): Add sparc.cc
8043 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
8044 * configure.tgt: Document targ_extra_size and
8045 targ_extra_big_endian. Add entries for sparc-* and
8046 sparc64-*.
8047 * configure.ac: Handle targ_extra_size and
8048 targ_extra_big_endian.
8049 * Makefile.in: Rebuild.
8050 * configure: Likewise.
8051 * po/POTFILES.in: Likewise.
8052 * po/gold.pot: Likewise.
8053
154e0e9a
ILT
80542008-04-14 Ian Lance Taylor <iant@google.com>
8055
8056 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
8057 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
8058 in the name/type/flags to section mapping. Don't call
8059 allocate_output_section.
8060 (Layout::choose_output_section): Change parameter from adjust_name
8061 to is_input_section. Don't permit input sections after sections
8062 are attached to segments. Don't call allocate_output_section.
8063 (Layout::layout_eh_frame): Call update_flags_for_input_section,
8064 not write_enable_output_section.
8065 (Layout::make_output_section): Don't push to
8066 unattached_section_list_ nor call attach_to_segment. Call
8067 attach_section_to_segment if sections are attached.
8068 (Layout::attach_sections_to_segments): New function.
8069 (Layout::attach_section_to_segment): New function.
8070 (Layout::attach_allocated_section_to_segment): Rename from
8071 attach_to_segment. Remove flags parameter.
8072 (Layout::allocate_output_section): Remove function.
8073 (Layout::write_enable_output_section): Remove function.
8074 * layout.h (class Layout): Update for above changes. Add new
8075 field sections_are_attached_.
8076 * output.h (Output_section::update_flags_for_input_section): New
8077 function.
8078 * output.cc (Output_section::add_input_section): Call
8079 update_flags_for_input_section.
8080 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
8081
009a67a2
CC
80822008-04-11 Cary Coutant <ccoutant@google.com>
8083
8084 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
8085 thought unnecessary.
8086 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
8087
759b1a24
ILT
80882008-04-11 Ian Lance Taylor <iant@google.com>
8089
8090 * output.h (class Output_section_data): Remove inline definition
8091 of set_addralign.
8092 * output.cc (Output_section_data::set_addralign): New function.
8093
c2b45e22
CC
80942008-04-11 Cary Coutant <ccoutant@google.com>
8095
8096 Add support for TLS descriptors for i386 and x86_64.
8097 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
8098 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
8099 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
8100 GOT_TYPE_TLS_DESC.
8101 (Target_i386::got_mod_index_entry): Remove unnecessary code.
8102 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
8103 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
8104 relocations.
8105 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
8106 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
8107 Fix problem with initial-exec relocations.
8108 (Target_i386::Relocate::relocate_tls): Likewise.
8109 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
8110 relaxation.
8111 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
8112 support for section-plus-offset dynamic table entries.
8113 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
8114 (Output_data_dynamic::Dynamic_entry): Add support for
8115 section-plus-offset dynamic table entries.
8116 (Output_data_dynamic::Classification): Likewise.
8117 (Output_data_dynamic::classification_): Renamed offset_.
8118 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
8119 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
8120 (Target_x86_64::make_plt_section): New function.
8121 (Target_x86_64::reserve_tlsdesc_entries): New function.
8122 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
8123 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
8124 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
8125 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
8126 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
8127 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
8128 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
8129 add extra PLT entry for TLS descriptors.
8130 (Output_data_plt_x86_64::got_): New field.
8131 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
8132 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
8133 fields.
8134 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
8135 descriptors.
8136 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
8137 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
8138 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
8139 R_386_TLS_DESC_CALL relocations.
8140 (Target_x86_64::Scan::global): Likewise.
8141 (Target_x86_64::do_finalize_sections): Add dynamic table entries
8142 for TLS descriptors.
8143 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
8144 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
8145 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
8146 GD-to-IE relaxation.
8147 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
8148 and TLS_DESCRIPTORS.
8149 * Makefile.in: Rebuild.
8150 * configure: Rebuild.
8151 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
8152 (tls_test_shared2.so): New target.
8153 (tls_shared_gd_to_ie_test_SOURCES): New variable.
8154 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
8155 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
8156 (tls_shared_gd_to_ie_test_LDADD): New variable.
8157 (tls_shared_gnu2_gd_to_ie_test): New target.
8158 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
8159 New targets.
8160 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
8161 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
8162 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
8163 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
8164 (tls_shared_gnu2_test): New target.
8165 (tls_test_gnu2_shared.so): New target.
8166 (tls_shared_gnu2_test_SOURCES): New variable.
8167 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
8168 (tls_shared_gnu2_test_LDFLAGS): New variable.
8169 (tls_shared_gnu2_test_LDADD): New variable.
8170 * testsuite/Makefile.in: Rebuild.
8171 * testsuite/Makefile.
8172
83bfb6b7
ILT
81732008-04-11 Ian Lance Taylor <iant@google.com>
8174
8175 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
8176 justsyms.t.
8177 * testsuite/Makefile.in: Rebuild.
8178
8179 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
8180 long.
8181 * testsuite/script_test_2.cc (main): Adjust test.
8182
706e1f5e
ILT
81832008-04-11 David S. Miller <davem@davemloft.net>
8184 Ian Lance Taylor <iant@google.com>
8185
8186 * options.h (General_options): Add entries for '-Y' and
8187 '-relax'.
8188 * options.cc (General_options:finalize): If -Y was used, add those
8189 entries to the library path instead of the default "/lib" and
8190 "/usr/lib".
8191
7c98e6bb
DM
81922008-04-11 David S. Miller <davem@davemloft.net>
8193
8194 * testsuite/justsyms.t: Start at 0x100.
8195 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
8196 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
8197 long.
8198 * testsuite/script_test_2.cc: Adjust string and section length
8199 checks.
7c98e6bb 8200
99a37bfd
ILT
82012008-04-09 Ian Lance Taylor <iant@google.com>
8202
2cefc357
ILT
8203 PR gold/5996
8204 * script-sections.cc (Sections_element::allocate_to_segment): Add
8205 orphan parameter.
8206 (Output_section_definition::allocate_to_segment): Likewise.
8207 (Orphan_output_section::allocate_to_segment): Likewise.
8208 (Script_sections::attach_sections_using_phdrs_clause): Don't
8209 propagate non-PT_LOAD segments to orphan sections.
8210 * testsuite/Makefile.am (script_test_3.stdout): Generate using
8211 readelf rather than objdump.
8212 * testsuite/script_test_3.sh: Adjust accordingly. Test that
8213 .interp section and PT_INTERP segment are the same size.
8214 * testsuite/Makefile.in: Rebuild.
8215
99a37bfd
ILT
8216 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
8217 aliases for symbols defined in the same object.
8218 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
8219 (weak_alias_test_SOURCES): New variable.
8220 (weak_alias_test_DEPENDENCIES): New variable.
8221 (weak_alias_test_LDFLAGS): New variable.
8222 (weak_alias_test_LDADD): New variable.
8223 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
8224 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
8225 (weak_alias_test_3.o): New target.
8226 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
8227 * testsuite/weak_alias_test_main.cc: New file.
8228 * testsuite/weak_alias_test_1.cc: New file.
8229 * testsuite/weak_alias_test_2.cc: New file.
8230 * testsuite/weak_alias_test_3.cc: New file.
8231
780e49c5
ILT
82322008-04-08 Ian Lance Taylor <iant@google.com>
8233
cdb0b8f5
ILT
8234 * options.h (class General_options): Add --noinhibit-exec option.
8235 * main.cc (main): Check --noinhibit-exec.
8236
0864d551
ILT
8237 * options.h (class General_options): Define --wrap as a special
8238 option. Add wrap_symbols_ field.
8239 (General_options::any_wrap_symbols): New function.
8240 (General_options::is_wrap_symbol): New function.
8241 * options.cc (General_options::parse_wrap): New function.
8242 (General_options::General_options): Initialize wrap_symbols_.
8243 * symtab.cc (Symbol_table::wrap_symbol): New function.
8244 (Symbol_table::add_from_object): Handle --wrap.
8245 * symtab.h (class Symbol_table): Declare wrap_symbol.
8246 * target.h (Target::wrap_char): New function.
8247 (Target::Target_info): Add wrap_char field.
8248 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
8249 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
8250 * testsuite/testfile.cc (Target_test::test_target_info):
8251 Likewise.
8252
789aa6de
ILT
8253 * errors.cc (Errors::undefined_symbol): Mention symbol version if
8254 there is one.
8255
2c38906f
ILT
8256 * layout.h (class Layout): Add added_eh_frame_data_ field.
8257 * layout.cc (Layout::Layout): Initialize new field.
8258 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
8259 output section until we find a section we merged successfully.
8260 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
8261 that the size be non-zero.
8262
780e49c5
ILT
8263 * merge.cc (Object_merge_map::get_output_offset): Remove inline
8264 qualifier.
8265
7fcd0256
ILT
82662008-04-08 Craig Silverstein <csilvers@google.com>
8267
8268 * configure.ac: Export new conditional variable HAVE_ZLIB.
8269 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
8270 on HAVE_ZLIB.
8271 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
8272 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
8273
6835af53
ILT
82742008-04-07 Ian Lance Taylor <iant@google.com>
8275
e24f324c
ILT
8276 * version.cc (version_string): Set to "1.5".
8277
a036edd8
ILT
8278 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
8279 Add issued_non_pic_error_ field. Declare check_non_pic.
8280 (Target_x86_64::Scan::check_non_pic): New function.
8281 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
8282 (Target_x86_64::Scan::global): Likewise.
8283
624f8810
ILT
8284 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
8285 addend parameter. Change caller. Handle merge sections.
8286 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
8287 Address to Addend. Don't add in the result of
8288 local_section_offset, pass down the addend and use the returned
8289 value.
8290 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
8291 Update declarations of local_section_offset and symbol_value.
8292 * testsuite/two_file_test_1.cc (t18): New function.
8293 * testsuite/two_file_test_2.cc (f18): New function.
8294 * testsuite/two_file_test_main.cc (main): Call t18.
8295 * testsuite/two_file_test.h (t18, f18): Declare.
8296
6835af53
ILT
8297 * configure.ac: Don't test for objdump, c++filt, or readelf.
8298 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
8299 conditionals.
8300 (TEST_READELF): New variable.
8301 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
8302 (check_PROGRAMS): Add two_file_strip_test.
8303 (two_file_strip_test): New target.
8304 (check_PROGRAMS): Add two_file_same_shared_strip_test.
8305 (two_file_same_shared_strip_test_SOURCES): New variable.
8306 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
8307 (two_file_same_shared_strip_test_LDFLAGS): New variable.
8308 (two_file_same_shared_strip_test_LDADD): New variable.
8309 (two_file_shared_strip.so): New target.
8310 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
8311 (ver_test_5.syms, ver_test_7.syms): Likewise.
8312 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
8313 (strip_test_3.stdout): Use TEST_OBJDUMP.
8314 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
8315
86925eef
CC
83162008-04-04 Cary Coutant <ccoutant@google.com>
8317
8318 * symtab.h (Symbol::is_weak_undefined): New function.
8319 (Symbol::is_strong_undefined): New function.
8320 (Symbol::is_absolute): New function.
8321 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
8322 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
8323 absolute symbols.
8324 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
8325 (weak_undef_test): New target.
8326 * testsuite/Makefile.in: Rebuild.
8327 * testsuite/weak_undef_file1.cc: New file.
8328 * testsuite/weak_undef_file2.cc: New file.
8329 * testsuite/weak_undef_test.cc: New file.
8330
126f3ece
ILT
83312008-04-03 Craig Silverstein <csilvers@google.com>
8332
8333 * compressed_output.h (class Output_compressed_section): Use
8334 unsigned buffer.
8335 * compressed_output.cc (zlib_compress): Use unsigned buffers,
8336 add zlib header.
8337 (zlib_compressed_suffix): Removed.
8338 (Output_compressed_section::set_final_data_size): Use unsigned
8339 buffers.
8340 * testsuite/Makefile.am (flagstest_compress_debug_sections):
8341 Fix linker invocation.
8342 (flagstest_o_specialfile_and_compress_debug_sections):
8343 Likewise.
8344 * testsuite/Makefile.in: Regenerated.
8345
deae2a14
DM
83462008-04-02 David S. Miller <davem@davemloft.net>
8347
8348 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
8349 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
8350
70752818
ILT
83512008-04-02 Craig Silverstein <csilvers@google.com>
8352
8353 * TODO: New file.
8354
39d0cb0e
ILT
83552008-04-02 Ian Lance Taylor <iant@google.com>
8356
8357 * fileread.cc (File_read::find_view): Add byteshift and vshifted
8358 parameters. Update for new key type to views_. Change all
8359 callers.
8360 (File_read::read): Adjust for byteshift in returned view.
8361 (File_read::add_view): New function, broken out of
8362 find_and_make_view.
8363 (File_read::make_view): New function, broken out of
8364 find_and_make_view.
8365 (File_read::find_or_make_view): Add offset and aligned
8366 parameters. Rewrite accordingly. Change all callers.
8367 (File_read::get_view): Add offset and aligned parameters. Adjust
8368 for byteshift in return value.
8369 (File_read::get_lasting_view): Likewise.
8370 * fileread.h (class File_read): Update declarations.
8371 (class File_read::View): Add byteshift_ field. Add byteshift to
8372 constructor. Add byteshift method.
8373 * archive.h (Archive::clear_uncached_views): New function.
8374 (Archive::get_view): Add aligned parameter. Change all callers.
8375 * object.h (Object::get_view): Add aligned parameter. Change all
8376 callers.
8377 (Object::get_lasting_view): Likewise.
8378
8379 * fileread.cc (File_read::release): Don't call clear_views if
8380 there are multiple objects.
8381 * fileread.h (File_read::clear_uncached_views): New function.
8382 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
8383 on the archive.
8384
a1207466
CC
83852008-03-31 Cary Coutant <ccoutant@google.com>
8386
8387 Add thin archive support.
8388 * archive.cc (Archive::armagt): New const.
8389 (Archive::setup): Remove task parameter and calls to unlock.
8390 (Archive::unlock_nested_archives): New function.
8391 (Archive::read_header): Add nested_off parameter. Change
8392 all callers.
8393 (Archive::interpret_header): Likewise.
8394 (Archive::include_all_members): Change to handle thin
8395 archives.
8396 (Archive::include_member): Likewise.
8397 * archive.h (Archive::Archive): Add new parameters and
8398 initializers.
8399 (Archive::armagt): New const.
8400 (Archive::setup): Remove task parameter.
8401 (Archive::unlock_nested_archives): New function.
8402 (Archive::read_header): Add nested_off parameter.
8403 (Archive::interpret_header): Likewise.
8404 (Archive::Nested_archive_table): New typedef.
8405 (Archive::is_thin_archive_): New field.
8406 (Archive::nested_archives_): New field.
8407 (Archive::options_): New field.
8408 (Archive::dirpath_): New field.
8409 (Archive::task_): New field.
8410 * readsyms.cc (Read_symbols::do_read_symbols): Add check
8411 for thin archives. Pass additional parameters to
8412 Archive::Archive. Unlock the archive file after calling
8413 Archive::setup.
cd536b21 8414
479f6503
ILT
84152008-03-29 Ian Lance Taylor <iant@google.com>
8416
686c8caf
ILT
8417 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
8418 version symbol to be local.
8419 * testsuite/ver_test_4.sh: New file.
8420 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
8421 (check_DATA): Add ver_test_4.syms.
8422 (ver_test_4.syms): New target.
8423 * testsuite/Makefile.in: Rebuild.
8424
ab794b6b
ILT
8425 * output.cc
8426 (Output_section::Input_section_sort_entry::has_priority): New
8427 function.
8428 (Output_section::Input_section_sort_entry::match_file_name): New
8429 function.
8430 (Output_section::Input_section_sort_entry::match_section_name):
8431 Remove.
8432 (Output_section::Input_section_sort_entry::match_section_name_prefix):
8433 Remove.
8434 (Output_section::Input_section_sort_entry::match_section_file):
8435 Remove.
8436 (Output_section::Input_section_sort_compare::operator()): Rewrite
8437 using new Input_section_sort_entry functions. Sort crtbegin and
8438 crtend first. Sort sections with no priority before sections with
8439 a priority.
8440 * testsuite/initpri1.c (d3): Check j != 4.
8441 (cd5): New constructor/destructor function.
8442 (main): Check j != 2.
8443
479f6503
ILT
8444 * symtab.cc (Symbol_table::add_from_object): If we don't use the
8445 new symbol when resolving, don't call set_is_default.
8446 * testsuite/ver_test_7.cc: New file.
8447 * testsuite/ver_test_7.sh: New file.
8448 * testsuite/Makefile.am (ver_test_7.so): New target.
8449 (ver_test_7.o): New target.
8450 (check_SCRIPTS): Add ver_test_7.sh.
8451 (check_DATA): Add ver_test_7.syms.
8452 (ver_test_7.syms): New target.
8453
2fd32231
ILT
84542008-03-28 Ian Lance Taylor <iant@google.com>
8455
8456 * layout.cc (Layout::layout): If we see an input section with a
8457 name that needs sorting, set the must_sort flag for the output
8458 section.
8459 (Layout::make_output_section): If the name of the output section
8460 indicates that it might require sorting, set the may_sort flag.
8461 * output.h (Output_section::may_sort_attached_input_sections): New
8462 function.
8463 (Output_section::set_may_sort_attached_input_sections): New
8464 function.
8465 (Output_section::must_sort_attached_input_sections): New
8466 function.
8467 (Output_section::set_must_sort_attached_input_sections): New
8468 function.
8469 (class Output_section): Declare Input_section_sort_entry. Define
8470 Input_section_sort_compare. Declare
8471 sort_attached_input_sections. Add new fields:
8472 may_sort_attached_input_sections_,
8473 must_sort_attached_input_sections_,
8474 attached_input_sections_are_sorted_.
8475 * output.cc (Output_section::Output_section): Initialize new
8476 fields.
8477 (Output_section::add_input_section): Add an entry to
8478 input_sections_ if may_sort or must_sort are true.
8479 (Output_section::set_final_data_size): Call
8480 sort_attached_input_sections if necessary.
8481 (Output_section::Input_section_sort_entry): Define new class.
8482 (Output_section::Input_section_sort_compare::operator()): New
8483 function.
8484 (Output_section::sort_attached_input_sections): New function.
8485 * configure.ac: Check whether the compiler supports constructor
8486 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
8487 * testsuite/initpri1.c: New file.
8488 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
8489 CONSTRUCTOR_PRIORITY.
8490 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
8491 (initpri1_LDFLAGS): New variable.
8492 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
8493
18e6b24e
ILT
84942008-03-27 Ian Lance Taylor <iant@google.com>
8495
49bdd526
ILT
8496 * common.cc (Sort_commons::operator): Correct sorting algorithm.
8497 * testsuite/common_test_1.c: New file.
8498 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
8499 (common_test_1_SOURCES): New variable.
8500 (common_test_1_DEPENDENCIES): New variable.
8501 (common_test_1_LDFLAGS): New variable.
8502
18e6b24e
ILT
8503 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
8504 and commons_ correctly when NAME/VERSION does not override
8505 NAME/NULL.
8506 * testsuite/ver_test_6.c: New file.
8507 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
8508 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
8509 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
8510
04bf7072
ILT
85112008-03-26 Ian Lance Taylor <iant@google.com>
8512
5871526f
ILT
8513 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
8514 of an undefined symbol from a version script.
8515 * testsuite/Makefile.am (ver_test_5.so): New target.
8516 (ver_test_5.o): New target.
8517 (check_SCRIPTS): Add ver_test_5.sh.
8518 (check_DATA): Add ver_test_5.syms.
8519 (ver_test_5.syms): New target.
8520 * testsuite/ver_test_5.cc: New file.
8521 * testsuite/ver_test_5.script: New file.
8522 * testsuite/ver_test_5.sh: New file.
8523 * Makefile.in, testsuite/Makefile.in: Rebuild.
8524
04bf7072
ILT
8525 PR gold/5986
8526 Fix problems building gold with gcc 4.3.0.
8527 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
8528 (gold_error_at_location, gold_warning_at_location): Use it.
8529 * configure.ac: Check whether we can compile and use a template
8530 function with a printf attribute.
8531 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
8532 when jumping over bytes.
8533 * object.cc: Instantiate Object::read_section_data.
8534 * debug.h: Include <cstring>
8535 * dwarf_reader.cc: Include <algorithm>
8536 * main.cc: Include <cstring>.
8537 * options.cc: Include <cstring>.
8538 * output.cc: Include <cstring>.
8539 * script.cc: Include <cstring>.
8540 * script.h: Include <string>.
8541 * symtab.cc: Include <cstring> and <algorithm>.
8542 * target-select.cc: Include <cstring>.
8543 * version.cc: Include <string>.
8544 * testsuite/testmain.cc: Include <cstdlib>.
8545 * configure, config.in: Rebuild.
8546
874c5b28
ILT
85472008-03-25 Ian Lance Taylor <iant@google.com>
8548
819d6c3a
ILT
8549 * options.cc: Include "../bfd/bfdver.h".
8550 (options::help): Print bug reporting address.
8551
f4b2c6f5
ILT
8552 * version.cc (print_version): Adjust output for current value of
8553 BFD_VERSION_STRING.
8554
8555 * NEWS: New file.
8556
e96caa79
ILT
8557 * options.cc (options::help): Print list of supported targets.
8558 * target-select.h: Include <vector>.
8559 (class Target_selector): Make machine_, size_, and is_big_endian_
8560 fields const. Add bfd_name_ and instantiated_target_ fields.
8561 (Target_selector::Target_selector): Add bfd_name parameter.
8562 (Target_selector::recognize): Make non-virtual, call
8563 do_recognize.
8564 (Target_selector::recognize_by_name): Make non-virtual, call
8565 do_recognize_by_name.
8566 (Target_selector::supported_names): New function.
8567 (Target_selector::bfd_name): New function.
8568 (Target_selector::do_instantiate_target): New pure virtual
8569 function.
8570 (Target_selector::do_recognize): New virtual function.
8571 (Target_selector::do_recognize_by_name): New virtual function.
8572 (Target_selector::instantiate_target): New private function.
8573 (supported_target_names): Declare.
8574 * target-select.cc (Target_selector::Target_selector): Update for
8575 new parameter and fields.
8576 (select_target_by_name): Check that the name matches before
8577 calling recognize_by_name.
8578 (supported_target_names): New function.
8579 * i386.cc (class Target_selector_i386): Update Target_selector
8580 constructor call. Remove recognize and recognize_by_name. Add
8581 do_instantiate_target.
8582 * x86_64.cc (class Target_selector_x86_64): Likewise.
8583 * testsuite/testfile.cc (class Target_selector_test): Update for
8584 changes to Target_selector.
8585
874c5b28
ILT
8586 * README: Rewrite, with some notes on unsupported features.
8587
0a65a3a7
CC
85882008-03-24 Cary Coutant <ccoutant@google.com>
8589
8590 * i386.cc (Target_i386::Got_type): New enum declaration.
8591 (Target_i386::Scan::local): Updated callers of Output_data_got
8592 member functions.
8593 (Target_i386::Scan::global): Likewise.
8594 (Target_i386::Relocate::relocate): Likewise.
8595 (Target_i386::Relocate::relocate_tls): Likewise.
8596 * object.h (Got_offset_list): New class.
8597 (Sized_relobj::local_has_got_offset): Added got_type parameter.
8598 (Sized_relobj::local_got_offset): Likewise.
8599 (Sized_relobj::set_local_got_offset): Likewise.
8600 (Sized_relobj::local_has_tls_got_offset): Removed.
8601 (Sized_relobj::local_tls_got_offset): Removed.
8602 (Sized_relobj::set_local_tls_got_offset): Removed.
8603 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
8604 * output.cc (Output_data_got::add_global): Added got_type parameter.
8605 (Output_data_got::add_global_with_rel): Likewise.
8606 (Output_data_got::add_global_with_rela): Likewise.
8607 (Output_data_got::add_global_pair_with_rel): New function.
8608 (Output_data_got::add_global_pair_with_rela): New function.
8609 (Output_data_got::add_local): Added got_type parameter.
8610 (Output_data_got::add_local_with_rel): Likewise.
8611 (Output_data_got::add_local_with_rela): Likewise.
8612 (Output_data_got::add_local_pair_with_rel): New function.
8613 (Output_data_got::add_local_pair_with_rela): New function.
8614 (Output_data_got::add_global_tls): Removed.
8615 (Output_data_got::add_global_tls_with_rel): Removed.
8616 (Output_data_got::add_global_tls_with_rela): Removed.
8617 (Output_data_got::add_local_tls): Removed.
8618 (Output_data_got::add_local_tls_with_rel): Removed.
8619 (Output_data_got::add_local_tls_with_rela): Removed.
8620 * output.h (Output_data_got::add_global): Added got_type parameter.
8621 (Output_data_got::add_global_with_rel): Likewise.
8622 (Output_data_got::add_global_with_rela): Likewise.
8623 (Output_data_got::add_global_pair_with_rel): New function.
8624 (Output_data_got::add_global_pair_with_rela): New function.
8625 (Output_data_got::add_local): Added got_type parameter.
8626 (Output_data_got::add_local_with_rel): Likewise.
8627 (Output_data_got::add_local_with_rela): Likewise.
8628 (Output_data_got::add_local_pair_with_rel): New function.
8629 (Output_data_got::add_local_pair_with_rela): New function.
8630 (Output_data_got::add_global_tls): Removed.
8631 (Output_data_got::add_global_tls_with_rel): Removed.
8632 (Output_data_got::add_global_tls_with_rela): Removed.
8633 (Output_data_got::add_local_tls): Removed.
8634 (Output_data_got::add_local_tls_with_rel): Removed.
8635 (Output_data_got::add_local_tls_with_rela): Removed.
8636 * resolve.cc (Symbol::override_base_with_special): Removed
8637 reference to has_got_offset_ field.
8638 * symtab.cc (Symbol::init_fields): Replaced initialization
8639 of got_offset_ with got_offsets_. Removed initialization
8640 of has_got_offset_
53fcba31 8641 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
8642 (Symbol::got_offset): Likewise.
8643 (Symbol::set_got_offset): Likewise.
8644 (Symbol::has_tls_got_offset): Removed.
8645 (Symbol::tls_got_offset): Removed.
8646 (Symbol::set_tls_got_offset): Removed.
8647 (Symbol::got_offset_): Removed.
8648 (Symbol::tls_mod_got_offset_): Removed.
8649 (Symbol::tls_pair_got_offset_): Removed.
8650 (Symbol::got_offsets_): New field.
8651 (Symbol::has_got_offset): Removed.
8652 (Symbol::has_tls_mod_got_offset): Removed.
8653 (Symbol::has_tls_pair_got_offset): Removed.
8654 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
8655 (Target_x86_64::Scan::local): Updated callers of Output_data_got
8656 member functions.
8657 (Target_x86_64::Scan::global): Likewise.
8658 (Target_x86_64::Relocate::relocate): Likewise.
8659 (Target_x86_64::Relocate::relocate_tls): Likewise.
8660
bd52eafb
BE
86612008-03-25 Ben Elliston <bje@au.ibm.com>
8662
8663 * yyscript.y: Fix spelling error in comment.
8664
8b105e34
ILT
86652008-03-24 Ian Lance Taylor <iant@google.com>
8666
8ed814a9
ILT
8667 * options.h (class General_options): Define build_id option.
8668 * layout.h (class Layout): Declare write_build_id, create_note,
8669 create_build_id. Add build_id_note_ member.
8670 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
8671 "libiberty.h", "md5.h", "sha1.h".
8672 (Layout::Layout): Initialize eh_frame_data_,
8673 eh_frame_hdr_section_, and build_id_note_.
8674 (Layout::finalize): Call create_build_id.
8675 (Layout::create_note): New function, broken out of
8676 Layout::create_gold_note.
8677 (Layout::create_gold_note): Call create_note.
8678 (Layout::create_build_id): New function.
8679 (Layout::write_build_id): New function.
8680 (Close_task_runner::run): Call write_build_id.
8681
8b105e34
ILT
8682 * x86_64.cc: Correct license to GPLv3.
8683
086a1841
ILT
86842008-03-23 Ian Lance Taylor <iant@google.com>
8685
8686 * options.cc: Include "demangle.h".
8687 (parse_optional_string): New function.
8688 (parse_long_option): Handle takes_optional_argument.
8689 (parse_short_option): Update dash_z initializer. Handle
8690 takes_optional_argument.
8691 (General_options::General_options): Initialize do_demangle_.
8692 (General_options::finalize): Set do_demangle_. Handle demangling
8693 style.
8694 * options.h (parse_optional_string): Declare.
8695 (struct One_option): Add optional_arg field. Update constructor.
8696 Update call constructor calls. Add takes_optional_argument
8697 function.
8698 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
8699 (DEFINE_optional_string): Define.
8700 (General_options::demangle): Change from DEFINE_bool to
8701 DEFINE_optional_string.
8702 (General_options::no_demangle): New function.
8703 (General_options::do_demangle): New function.
8704 (General_options::set_do_demangle): New function.
8705 (General_options::execstack_status_): Move definition to end of
8706 class definition.
8707 (General_options::static_): Likewise.
8708 (General_options::do_demangle_): New field.
8709 * object.cc (big_endian>::get_symbol_location_info): Call
8710 Options::do_demangle, not Options::demangle.
8711 * symtab.cc (demangle): Likewise.
8712
cbb93e63
ILT
87132008-03-22 Ian Lance Taylor <iant@google.com>
8714
8715 * gold.h: Include <cstddef> and <sys/types.h>
8716 * options.h: Include <cstring>.
8717
ec531623
ILT
87182008-03-21 Ian Lance Taylor <iant@google.com>
8719
8720 * Added source code to GNU binutils.
This page took 0.569907 seconds and 4 git commands to generate.