fix date of last checkin
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
dcd8d12e
CC
12011-07-28 Cary Coutant <ccoutant@google.com>
2
3 * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
4 Add thread_number parameter.
5 (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
6 * workqueue-threads.cc
7 (Workqueue_threader_threadpool::should_cancel_thread): Cancel
8 current thread if its thread number is greater than desired thread
9 count.
10 * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
11 Add thread_number parameter.
12 (Workqueue::should_cancel_thread): Likewise.
13 (Workqueue::find_runnable_or_wait): Pass thread_number to
14 should_cancel_thread.
15 * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
16 parameter.
17
804eb480
ST
182011-07-22 Sriraman Tallam <tmsriram@google.com>
19
20 * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
21 only after checking if it cannot be forced local.
22 * symtab.h (is_externally_visible): Check if the symbol is not forced
23 local.
24
f1ddb600
ILT
252011-07-15 Ian Lance Taylor <iant@google.com>
26
27 * options.h (class General_options): Add --print-output-format.
28 Move -EL next to -EB, for better --help output.
29 * target-select.cc: Include <cstdio>, "options.h", and
30 "parameters.h".
31 (Target_selector::do_target_bfd_name): New function.
32 (print_output_format): New function.
33 * target-select.h (class Target_selector): Update declarations.
34 (Target_selector::target_bfd_name): New function.
35 (print_output_format): Declare.
36 * main.cc: Include "target-select.h".
37 (main): Handle --print-output-format.
38 * gold.cc: Include "target-select.h".
39 (queue_initial_tasks): Handle --print-output-format when there are
40 no input files.
41 * parameters.cc (parameters_force_valid_target): Give a better
42 error message if -EB/-EL does not match target.
43 * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
44 function.
45
7d172687
ILT
462011-07-15 Ian Lance Taylor <iant@google.com>
47
48 * i386.cc (class Output_data_plt_i386): Add layout_ field.
49 (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
50 (Output_data_plt_i386::do_write): Write address of .dynamic
51 section to first entry in .got.plt section.
52 * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
53 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
54 Initialize layout_.
55 (Output_data_plt_x86_64::do_write): Write address of .dynamic
56 section to first entry in .got.plt section.
57 * layout.h (Layout::dynamic_section): New function.
58
e9552f7e
ST
592011-07-13 Sriraman Tallam <tmsriram@google.com>
60
61 * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
62 to claim_file call.
63 * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
64 input_section_position_, and input_section_glob_.
65 (read_layout_from_file): Call function section_ordering_specified.
66 * layout.h (is_section_ordering_specified): New function.
67 (section_ordering_specified): New function.
68 (section_ordering_specified_): New boolean member.
69 * main.cc(main): Call load_plugins after layout object is defined.
70 * output.cc (Output_section::add_input_section): Use
71 function section_ordering_specified to check if section ordering is
72 needed.
73 * output.cc (Output_section::add_relaxed_input_section): Use
74 function section_ordering_specified to check if section ordering is
75 needed.
76 (Output_section::update_section_layout): New function.
77 (Output_section::sort_attached_input_sections): Check if input section
78 must be reordered.
79 * output.h (Output_section::update_section_layout): New function.
80 * plugin.cc (get_section_count): New function.
81 (get_section_type): New function.
82 (get_section_name): New function.
83 (get_section_contents): New function.
84 (update_section_order): New function.
85 (allow_section_ordering): New function.
86 (Plugin::load): Add the new interfaces to the transfer vector.
87 (Plugin_manager::load_plugins): New parameter.
88 (Plugin_manager::all_symbols_read): New parameter.
89 (Plugin_manager::claim_file): New parameter. Save the elf object for
90 unclaimed objects.
91 (Plugin_manager::get_elf_object): New function.
92 (Plugin_manager::get_view): Change to directly use the bool to check
93 if get_view is called from claim_file_hook.
94 * plugin.h (input_objects): New function
95 (Plugin__manager::load_plugins): New parameter.
96 (Plugin_manager::claim_file): New parameter.
97 (Plugin_manager::get_elf_object): New function.
98 (Plugin_manager::in_claim_file_handler): New function.
99 (Plugin_manager::in_claim_file_handler_): New member.
100 (layout): New function.
101 * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
102 handler with an extra parameter. Make the elf object before calling
103 claim_file handler.
104 * testsuite/plugin_test.c (get_section_count): New function pointer.
105 (get_section_type): New function pointer.
106 (get_section_name): New function pointer.
107 (get_section_contents): New function pointer.
108 (update_section_order): New function pointer.
109 (allow_section_ordering): New function pointer.
110 (onload): Check if the new interfaces exist.
111
9446efde
ILT
1122011-07-13 Ian Lance Taylor <iant@google.com>
113
114 * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
115 relro section.
116 * x86_64.cc (Target_x86_64::got_section): Likewise.
117 * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
118 (relro_now_test_SOURCES): New variable.
119 (relro_now_test_DEPENDENCIES): New variable.
120 (relro_now_test_LDFLAGS): New variable.
121 (relro_now_test_LDADD): New variable.
122 (relro_now_test.so): New target.
123 * testsuite/Makefile.in: Rebuild.
124
07aa62f2
ILT
1252011-07-12 Ian Lance Taylor <iant@google.com>
126
127 PR gold/12980
128 * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
129 GLOB_DAT relocation rather than a RELATIVE relocation for a
130 protected symbol when creating a shared library.
131 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
132 * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
133 * testsuite/protected_main_1.cc (main): Test that protected
134 function has same address.
135
e2153196
ILT
1362011-07-11 Ian Lance Taylor <iant@google.com>
137
138 PR gold/12979
139 * options.h (class General_options): Add -Bgroup.
140 * options.cc (General_options::finalize): If -Bgroup is set,
141 default to --unresolved-symbols=report-all.
142 * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
143 * target-reloc.h (issue_undefined_symbol_error): Handle
144 --unresolved-symbols=report-all.
145
6daf5215
ILT
1462011-07-08 Ian Lance Taylor <iant@google.com>
147
148 PR gold/11985
149 * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
150 if linker script discards key sections.
151 (Layout::create_dynamic_symtab): Likewise.
152 (Layout::assign_local_dynsym_offsets): Likewise.
153 (Layout::sized_create_version_sections): Likewise.
154 (Layout::create_interp): Likewise.
155 (Layout::finish_dynamic_section): Likewise.
156 (Layout::set_dynamic_symbol_size): Likewise.
157
beabb2c6
ILT
1582011-07-08 Ian Lance Taylor <iant@google.com>
159
160 PR gold/12386
161 * options.h (class General_options): Add --unresolved-symbols.
162 * target-reloc.h (issue_undefined_symbol_error): Check
163 --unresolved-symbols. Add comments.
164
9c16daf1
ILT
1652011-07-08 Ian Lance Taylor <iant@google.com>
166
167 * testsuite/odr_violation2.cc (Ordering::operator()): Make
168 expression more complex.
169
191f1a2d
ILT
1702011-07-08 Ian Lance Taylor <iant@google.com>
171
172 PR gold/11317
173 * target-reloc.h (issue_undefined_symbol_error): New inline
174 function, broken out of relocate_section.
175 (relocate_section): Call issue_undefined_symbol_error.
176 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
177 there is no TLS segment if we are about to issue an undefined
178 symbol error.
179 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
180
62855347
ILT
1812011-07-08 Ian Lance Taylor <iant@google.com>
182
183 PR gold/12279
184 * resolve.cc (Symbol_table::should_override): Add fromtype
185 parameter. Change all callers. Give error when linking together
186 TLS and non-TLS symbol.
187 (Symbol_table::should_override_with_special): Add fromtype
188 parameter. Change all callers.
189 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
190 there is no TLS segment if we have reported some errors.
191 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
192
67181c72
ILT
1932011-07-08 Ian Lance Taylor <iant@google.com>
194
195 PR gold/12372
196 * target.h (Target::plt_address_for_global): New function.
197 (Target::plt_address_for_local): New function.
198 (Target::plt_section_for_global): Remove.
199 (Target::plt_section_for_local): Remove.
200 (Target::do_plt_address_for_global): New virtual function.
201 (Target::do_plt_address_for_local): New virtual function.
202 (Target::do_plt_section_for_global): Remove.
203 (Target::do_plt_section_for_local): Remove.
204 (Target::register_global_plt_entry): Add Symbol_table and Layout
205 parameters.
206 * output.cc (Output_data_got::Got_entry::write): Use
207 plt_address_for_global and plt_address_for_local.
208 * layout.cc (Layout::add_target_dynamic_tags): Use size and
209 address of output section.
210 * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
211 got_irelative_, and irelative_count_ fields. Update
212 declarations.
213 (Output_data_plt_i386::has_irelative_section): New function.
214 (Output_data_plt_i386::entry_count): Add irelative_count_.
215 (Output_data_plt_i386::set_final_data_size): Likewise.
216 (class Target_i386): Add got_irelative_ and rel_irelative_
217 fields. Update declarations.
218 (Target_i386::Target_i386): Initialize new fields.
219 (Target_i386::do_plt_address_for_global): New function replacing
220 do_plt_section_for_global.
221 (Target_i386::do_plt_address_for_local): New function replacing
222 do_plt_section_for_local.
223 (Target_i386::got_section): Create got_irelative_.
224 (Target_i386::rel_irelative_section): New function.
225 (Output_data_plt_i386::Output_data_plt_i386): Initialize new
226 fields. Don't define __rel_iplt_{start,end}.
227 (Output_data_plt_i386::add_entry): Add symtab and layout
228 parameters. Change all callers. Use different PLT and GOT for
229 IFUNC symbols.
230 (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
231 layout parameters. Change all callers. Use different PLT and
232 GOT.
233 (Output_data_plt_i386::rel_tls_desc): Fix formatting.
234 (Output_data_plt_i386::rel_irelative): New function.
235 (Output_data_plt_i386::address_for_global): New function.
236 (Output_data_plt_i386::address_for_local): New function.
237 (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use
238 IRELATIVE GOT when changing IFUNC GOT entries.
239 (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
240 reloc.
241 (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
242 if we didn't create an IRELATIVE GOT.
243 (Target_i386::Relocate::relocate): Use plt_address_for_global and
244 plt_address_for_local.
245 (Target_i386::do_dynsym_value): Use plt_address_for_global.
246 * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
247 got_irelative_, and irelative_count_ fields. Update
248 declarations.
249 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
250 Initialize new fields. Remove symtab parameter. Change all
251 callers.
252 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
253 irelative_count_.
254 (Output_data_plt_x86_64::has_irelative_section): New function.
255 (Output_data_plt_x86_64::entry_count): Add irelative_count_.
256 (class Target_x86_64): Add got_irelative_ and rel_irelative_
257 fields. Update declarations.
258 (Target_x86_64::Target_x86_64): Initialize new fields.
259 (Target_x86_64::do_plt_address_for_global): New function replacing
260 do_plt_section_for_global.
261 (Target_x86_64::do_plt_address_for_local): New function replacing
262 do_plt_section_for_local.
263 (Target_x86_64::got_section): Create got_irelative_.
264 (Target_x86_64::rela_irelative_section): New function.
265 (Output_data_plt_x86_64::init): Remove symtab parameter. Change
266 all callers. Don't create __rel_iplt_{start,end}.
267 (Output_data_plt_x86_64::add_entry): Add symtab and layout
268 parameters. Change all callers. Use different PLT and GOT for
269 IFUNC symbols.
270 (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
271 layout parameters. Change all callers. Use different PLT and
272 GOT.
273 (Output_data_plt_x86_64::add_relocation): Add symtab and layout
274 parameters. Change all callers. Use different PLT and GOT for
275 IFUNC symbols.
276 (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
277 (Output_data_plt_x86_64::rela_irelative): New function.
278 (Output_data_plt_x86_64::address_for_global): New function.
279 (Output_data_plt_x86_64::address_for_local): New function.
280 (Output_data_plt_x86_64::set_final_data_size): Likewise.
281 (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
282 (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
283 (Target_x86_64::register_global_plt_entry): Add symtab and layout
284 parameters.
285 (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
286 reloc.
287 (Target_x86_64::do_finalize_sections): Create the __rela_iplt
288 symbols if we didn't create an IRELATIVE GOT.
289 (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
290 plt_address_for_local.
291 (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
292 * testsuite/ifuncvar1.c: New test file.
293 * testsuite/ifuncvar2.c: New test file.
294 * testsuite/ifuncvar3.c: New test file.
295 * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
296 (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
297 (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
298 (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
299 * testsuite/Makefile.in: Rebuild.
300
33c15b45
CC
3012011-07-07 Cary Coutant <ccoutant@google.com>
302
303 * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
304 (two_file_test_1_ndebug.o): Likewise.
305 (two_file_test_1b_ndebug.o): Likewise.
306 (two_file_test_2_ndebug.o): Likewise.
307 (two_file_test_main_ndebug.o): Likewise.
308 (incremental_test_2): Link with no-debug versions.
309
f48b5fb7
CC
3102011-07-06 Cary Coutant <ccoutant@google.com>
311
312 * gold/incremental.cc
313 (Output_section_incremental_inputs::write_info_blocks): Check for
314 hidden and internal symbols.
315
221597a5
CC
3162011-07-06 Cary Coutant <ccoutant@google.com>
317
318 * incremental.cc (Sized_incremental_binary::do_file_has_changed):
319 Check disposition for startup file.
320 (Incremental_inputs::report_command_line): Ignore
321 --incremental-startup-unchanged option.
322 * options.cc (General_options::parse_incremental_startup_unchanged):
323 New function.
324 (General_options::General_options): Initialize new data member.
325 * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
326 (General_options): Add --incremental-startup-unchanged option.
327 (General_options::incremental_startup_disposition): New function.
328 (General_options::incremental_startup_disposition_): New data member.
329
e24719f6
CC
3302011-07-06 Cary Coutant <ccoutant@google.com>
331
332 * incremental.cc (Sized_incremental_binary::setup_readers): Pass
333 input file index to Script_info ctor.
334 (Sized_incremental_binary::do_file_has_changed): Find the
335 command-line argument for files named in scripts.
336 * incremental.h (Script_info::Script_info): New ctor
337 with input file index.
338 (Script_info::input_file_index): New function.
339 (Script_info::input_file_index_): New data member.
340 (Incremental_binary::get_library): Add const.
341 (Incremental_binary::get_script_info): Add const.
342 * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
343 * testsuite/Makefile.am (incremental_test_5): New test case.
344 (incremental_test_6): New test case.
345 * testsuite/Makefile.in: Regenerate.
346
8f7c81e8
CC
3472011-07-06 Cary Coutant <ccoutant@google.com>
348
349 * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
350 debug output when command lines differ.
351
9fbd3822
CC
3522011-07-06 Cary Coutant <ccoutant@google.com>
353
354 * incremental.cc (Incremental_inputs::report_command_line): Ignore
355 --incremental-patch option.
356 * layout.cc (Free_list::allocate): Extend allocation beyond original
357 end if enabled.
358 (Layout::make_output_section): Mark sections that should get
359 patch space.
360 * options.cc (parse_percent): New function.
361 * options.h (parse_percent): New function.
362 (DEFINE_percent): New macro.
363 (General_options): Add --incremental-patch option.
364 * output.cc (Output_section::Output_section): Initialize new data
365 members.
366 (Output_section::add_input_section): Print section name when out
367 of patch space.
368 (Output_section::add_output_section_data): Likewise.
369 (Output_section::set_final_data_size): Add patch space when
370 doing --incremental-full.
371 (Output_section::do_reset_address_and_file_offset): Remove patch
372 space.
373 (Output_segment::set_section_list_addresses): Print debug output
374 only if --incremental-update.
375 * output.h (Output_section::set_is_patch_space_allowed): New function.
376 (Output_section::is_patch_space_allowed_): New data member.
377 (Output_section::patch_space_): New data member.
378 * parameters.cc (Parameters::incremental_full): New function.
379 * parameters.h (Parameters::incremental_full): New function
380 * testsuite/Makefile.am (incremental_test_2): Add test for
381 --incremental-patch option.
382 * testsuite/Makefile.in: Regenerate.
383 * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
384 (t18): Remove function body.
385
f6cccc2c
DK
3862011-07-05 Doug Kwan <dougkwan@google.com>
387
388 PR gold/12771
389 * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
390 Arm_Address type for relocation result.
391 (Arm_relocate_functions::abs16): Use unaligned access. Also fix
392 overflow check.
393 (Arm_relocate_functions::abs32): Use unaligned access.
394 (Arm_relocate_functions::rel32): Ditto.
395 (Arm_relocate_functions::prel31): Ditto.
396 (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
397 * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
398 static data relocations.
399 * testsuite/Makefile.in: Regnerate.
400 * testsuite/arm_unaligned_reloc.{s,sh}: New files.
401
28a13fec
ILT
4022011-07-05 Ian Lance Taylor <iant@google.com>
403
404 PR gold/12392
405 * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
406 symbols if necessary.
407 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
408
24d47b34
ILT
4092011-07-05 Ian Lance Taylor <iant@google.com>
410
411 PR gold/12952
412 * resolve.cc (Symbol::override_base_with_special): Simply override
413 version with special symbol version, ignoring previous version.
414
41f9cbbe
ILT
4152011-07-05 Ian Lance Taylor <iant@google.com>
416
417 * object.cc (Sized_relobj_file::include_section_group): Add
418 information to comment about signature location.
419
886288f1
ILT
4202011-07-02 Ian Lance Taylor <iant@google.com>
421
422 PR gold/12957
423 * options.h (class General_options): Add -f and -F.
424 * options.cc (General_options::finalize): Fatal error if -f/-F
425 are used without -shared.
426 * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
427
ae3a6d4f
ILT
4282011-07-02 Ian Lance Taylor <iant@google.com>
429
430 * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
431
21131061
ILT
4322011-07-01 Ian Lance Taylor <iant@google.com>
433
434 PR gold/12525
435 PR gold/12952
436 * resolve.cc (Symbol::override_base_with_special): Don't override
437 the version if the overriding symbol has a different name.
438 * dynobj.cc (Versions::add_def): Add dynpool parameter. Change
439 all callers. If we give an error about an undefined version,
440 define the base version if necessary.
441 * dynobj.h (class Versions): Update declaration.
442 * testsuite/weak_alias_test_5.cc: New file.
443 * testsuite/weak_alias_test.script: New file.
444 * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
445 and versioned_alias have the right value, and call t2.
446 * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
447 weak_alias_test_5.so.
448 (weak_alias_test_LDADD): Likewise.
449 (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
450 * testsuite/Makefile.in: Rebuild.
451
611062c0
ILT
4522011-07-01 Ian Lance Taylor <iant@google.com>
453
454 PR gold/12525
455 * options.h (class General_options): Support -z notext.
456 * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
457 -Wl,-z,notext.
458 (two_file_shared_nonpic.so): Likewise.
459 (two_file_shared_mixed.so): Likewise.
460 (two_file_shared_mixed_1.so): Likewise.
461 (weak_undef_lib_nonpic.so): Likewise.
462 (alt/weak_undef_lib_nonpic.so): Likewise.
463 (tls_test_shared_nonpic.so): Likewise.
464 * testsuite/Makefile.in: Rebuild.
465
328c7c2f
ILT
4662011-07-01 Ian Lance Taylor <iant@google.com>
467
468 PR gold/12525
469 * configure.ac: Test whether static linking works, setting
470 the automake conditional HAVE_STATIC.
471 * testsuite/Makefile.am: Disable tests using -static if
472 HAVE_STATIC is not true.
473 * configure, testsuite/Makefile.in: Rebuild.
474
02d7cd44
ILT
4752011-07-01 Ian Lance Taylor <iant@google.com>
476
477 PR gold/12525
478 * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
479 Assert if we see DW_EH_PE_indirect.
480 * target.h (Target::ehframe_datarel_base): New function.
481 (Target::do_ehframe_datarel_base): New target function.
482 * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
483 * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
484 function.
485
07a60597
ILT
4862011-07-01 Ian Lance Taylor <iant@google.com>
487
488 PR gold/12571
489 * options.h (class General_options): Add
490 --ld-generated-unwind-info.
491 * ehframe.cc (Fde::write): Add address parameter. Change all
492 callers. If associated with PLT, fill in address and size.
493 (Cie::set_output_offset): Only add merge mapping if there is an
494 object.
495 (Cie::write): Add address parameter. Change all callers.
496 (Eh_frame::add_ehframe_for_plt): New function.
497 * ehframe.h (class Fde): Update declarations. Move shndx_ and
498 input_offset_ fields into union u_, with new plt field.
499 (Fde::Fde): Adjust for new union field.
500 (Fde::Fde) [Output_data version]: New constructor.
501 (Fde::add_mapping): Only add merge mapping if there is an object.
502 (class Cie): Update declarations.
503 (class Eh_frame): Declare add_ehframe_for_plt.
504 * layout.cc (Layout::layout_eh_frame): Break out code into
505 make_eh_frame_section, and call it.
506 (Layout::make_eh_frame_section): New function.
507 (Layout::add_eh_frame_for_plt): New function.
508 * layout.h (class Layout): Update declarations.
509 * merge.cc (Merge_map::add_mapping): Add assertion.
510 * i386.cc: Include "dwarf.h".
511 (class Output_data_plt_i386): Make first_plt_entry,
512 dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add
513 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
514 and plt_eh_frame_fde.
515 (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
516 boundary. Call add_eh_frame_for_plt if appropriate.
517 * x86_64.cc: Include "dwarf.h".
518 (class Output_data_plt_x86_64): Align to 16-byte boundary. Make
519 first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add
520 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
521 and plt_eh_frame_fde.
522 (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
523 appropriate.
524
14788a3f
ILT
5252011-06-29 Ian Lance Taylor <iant@google.com>
526
527 PR gold/12629
528 * object.cc (Sized_relobj_file::layout_section): Change shdr
529 parameter to be const.
530 (Sized_relobj_file::layout_eh_frame_section): New function, broken
531 out of do_layout.
532 (Sized_relobj_file::do_layout): Defer .eh_frame sections if
533 appropriate. Call layout_eh_frame_section.
534 (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
535 sections.
536 * object.h (class Sized_relobj_file): Update declarations.
537
6c21fce1
ILT
5382011-06-29 Ian Lance Taylor <iant@google.com>
539
37e41b03 540 PR gold/12652
6c21fce1
ILT
541 * script.cc (Token::integer_value): Accept trailing M/m/K/k
542 modifier.
543 (Lex::gather_token): Accept trailing M/m/K/k for integers.
544
4d5e4e62
ILT
5452011-06-29 Ian Lance Taylor <iant@google.com>
546
547 PR gold/12675
548 * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
549 SHT_X86_64_UNWIND.
550 * layout.cc (Layout::layout_eh_frame): Likewise.
551
886f533a
ILT
5522011-06-29 Ian Lance Taylor <iant@google.com>
553
554 PR gold/12695
555 * layout.cc (Layout::symtab_section_shndx): New function.
556 * layout.h (class Layout): Declare symtab_section_shndx.
557 * output.cc (Output_section::write_header): Call it.
558
f3ae1b28
ILT
5592011-06-29 Ian Lance Taylor <iant@google.com>
560
561 PR gold/12818
562 * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
563 symbols which are not used in a relocation.
564
aecf301f
ILT
5652011-06-28 Ian Lance Taylor <iant@google.com>
566
567 PR gold/12898
568 * layout.cc (Layout::segment_precedes): Don't crash if a linker
569 script create indistinguishable segments.
570 (Layout::set_segment_offsets): Use stable_sort when sorting
571 segments. Pass this to Compare_segments constructor.
572 * layout.h (class Layout): Make segment_precedes non-static.
573 (class Compare_segments): Change from struct to class. Add
574 layout_ field. Add constructor.
575 * script-sections.cc
576 (Script_sections::attach_sections_using_phdrs_clause): Rename
577 local orphan to is_orphan. Don't report failure to put empty
578 section in segment. On attachment failure, report name of
579 section, and attach to first PT_LOAD segment.
580
03ef7571
ILT
5812011-06-28 Ian Lance Taylor <iant@google.com>
582
583 PR gold/12934
584 * target-select.cc (Target_selector::Target_selector): Add
585 emulation parameter. Change all callers.
586 (select_target_by_bfd_name): Rename from select_target_by_name.
587 Change all callers.
588 (select_target_by_emulation): New function.
589 (supported_emulation_names): New function.
590 * target-select.h (class Target_selector): Add emulation_ field.
591 Update declarations.
592 (Target_selector::recognize_by_bfd_name): Rename from
593 recognize_by_name. Change all callers.
594 (Target_selector::supported_bfd_names): Rename from
595 supported_names. Change all callers.
596 (Target_selector::recognize_by_emulation): New function.
597 (Target_selector::supported_emulations): New function.
598 (Target_selector::emulation): New function.
599 (Target_selector::do_recognize_by_bfd_name): Rename from
600 do_recognize_by_name. Change all callers.
601 (Target_selector::do_supported_bfd_names): Rename from
602 do_supported_names. Change all callers.
603 (Target_selector::do_recognize_by_emulation): New function.
604 (Target_selector::do_supported_emulations): New function.
605 (select_target_by_bfd_name): Change name in declaration.
606 (select_target_by_emulation): Declare.
607 (supported_emulation_names): Declare.
608 * parameters.cc (parameters_force_valid_target): Try to find
609 target based on emulation from -m option.
610 * options.h (class General_options): Change doc string for -m.
611 * options.cc (help): Print emulations.
612 (General_options::parse_V): Likewise.
613 * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
614 Add emulation parameter. Change all callers.
615
200b2bb9
ILT
6162011-06-28 Ian Lance Taylor <iant@google.com>
617
618 * target.h (class Target): Add osabi_ field.
619 (Target::osabi): New function.
620 (Target::set_osabi): New function.
621 (Target::Target): Initialize osabi_.
622 (Target::do_adjust_elf_header): Make pure virtual.
623 (Sized_target::do_adjust_elf_header): Declare.
624 * target.cc (Sized_target::do_adjust_elf_header): New function.
625 (class Sized_target): Instantiate all versions.
626 * freebsd.h (class Target_freebsd): Remove.
627 (Target_selector_freebsd::do_recognize): Call set_osabi on
628 Target.
629 (Target_selector_freebsd::do_recognize_by_name): Likewise.
630 (Target_selector_freebsd::set_osabi): Remove.
631 * i386.cc (class Target_i386): Inherit from Sized_target rather
632 than Target_freebsd.
633 * x86_64.cc (class Target_x86_64): Likewise.
634
b3ce541e
ILT
6352011-06-28 Ian Lance Taylor <iant@google.com>
636
637 * target.h (Target::can_check_for_function_pointers): Rewrite.
638 Make non-virtual.
639 (Target::can_icf_inline_merge_sections): Likewise.
640 (Target::section_may_have_icf_unsafe_poineters): Likewise.
641 (Target::Target_info): Add can_icf_inline_merge_sections field.
642 (Target::do_can_check_for_function_pointers): New virtual
643 function.
644 (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
645 * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
646 from can_check_for_function_pointers, move in file.
647 (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
648 section_may_have_icf_unsafe_poineters, move in file.
649 (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
650 * i386.cc (Target_i386::do_can_check_for_function_pointers):
651 Rename from can_check_for_function_pointers, move in file.
652 (Target_i386::can_icf_inline_merge_sections): Remove.
653 (Target_i386::i386_info): Initialize
654 can_icf_inline_merge_sections.
655 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
656 Initialize can_icf_inline_merge_sections.
657 * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
658 * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
659 Rename from can_check_for_function_pointers, move in file.
660 (Target_x86_64::can_icf_inline_merge_sections): Remove.
661 (Target_x86_64::x86_64_info): Initialize
662 can_icf_inline_merge_sections.
663 * testsuite/testfile.cc (Target_test::test_target_info):
664 Likewise.
665 * icf.cc (get_section_contents): Correct formatting.
666
6d1c4efb
ILT
6672011-06-27 Ian Lance Taylor <iant@google.com>
668
669 * symtab.cc (Symbol::versioned_name): New function.
670 (Symbol_table::add_to_final_symtab): Use versioned_name when
671 appropriate.
672 (Symbol_table::sized_write_symbol): Likewise.
673 * symtab.h (class Symbol): Declare versioned_name.
674 * stringpool.h (class Stringpool_template): Add variant of add
675 which takes a std::basic_string.
676 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
677 (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
678 (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
679 (ver_test_12.o): New target.
680 * testsuite/Makefile.in: Rebuild.
681
57eb9b50
DK
6822011-06-27 Doug Kwan <dougkwan@google.com>
683
684 * arm.cc (Arm_relocate_functions::thm_jump8,
685 Arm_relocate_functions::thm_jump11): Use a wider signed
686 type to compute offset.
687 * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
688 arm_thm_jump8.
689 * testsuite/Makefile.in: Regenerate.
690 * testsuite/arm_branch_in_range.sh: Check test results of
691 arm_thm_jump11 and arm_thm_jump8.
692 * testsuite/arm_thm_jump11.s: New test source file.
693 * testsuite/arm_thm_jump11.t: New linker script.
694 * testsuite/arm_thm_jump8.s: New test source file.
695 * testsuite/arm_thm_jump8.t: New linker script.
696
487b39df
ILT
6972011-06-24 Ian Lance Taylor <iant@google.com>
698
699 * layout.cc: Include "object.h".
700 (ctors_sections_in_init_array): New static variable.
701 (Layout::is_ctors_in_init_array): New function.
702 (Layout::layout): Add entry to ctors_sections_in_init_array if
703 appropriate.
704 * layout.h (class Layout): Declare is_ctors_in_init_array.
705 * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
706 is_ctors_reverse_view is set.
707 (Sized_relobj_file::write_sections): Add layout parameter. Change
708 all callers. Set is_ctors_reverse_view field of View_size.
709 (Sized_relobj_file::reverse_words): New function.
710 * object.h (Sized_relobj_file::View_size): Add
711 is_ctors_reverse_view field.
712 (class Sized_relobj_file): Update declarations.
713 * testsuite/initpri3.c: New test.
714 * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
715 initpri3b.
716 (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
717 (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
718 (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
719 (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
720 * testsuite/Makefile.in: Rebuild.
721
472076e4
CC
7222011-06-24 Cary Coutant <ccoutant@google.com>
723
724 * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
725 (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
726 (debug_msg_cdebug.err): New targets.
727 * testsuite/Makefile.in: Regenerate.
728 * testsuite/debug_msg.sh: Check output of link with compressed debug.
729 Fix checks for link with shared library.
730
a60af0db
DK
7312011-06-24 Doug Kwan <dougkwan@google.com>
732
733 * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
734 skip empty text sections.
735 * testsuite/arm_exidx_test.s: Test handling of an empty text section.
736
5393d741
ILT
7372011-06-22 Ian Lance Taylor <iant@google.com>
738
739 PR gold/12910
740 * options.h (class General_options): Add --ctors-in-init-array.
741 * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
742 friends as SHT_PROGBITS for merging sections.
743 (Layout::layout): Remove special handling of .init_array and
744 friends. Don't sort if doing relocatable link. Sort for .ctors
745 and .dtors if ctors_in_init_array.
746 (Layout::make_output_section): Force correct section types for
747 .init_array and friends. Don't sort if doing relocatable link,
748 Don't sort .ctors and .dtors if ctors_in_init_array.
749 (Layout::section_name_mapping): Remove .ctors. and .dtorso.
750 (Layout::output_section_name): Add relobj parameter. Change all
751 callers. Handle .ctors. and .dtors. in code rather than table.
752 Handle .ctors and .dtors if ctors_in_init_array.
753 (Layout::match_file_name): New function, moved from output.cc.
754 * layout.h (class Layout): Update declarations.
755 * output.cc: Include "layout.h".
756 (Input_section_sort_entry::get_priority): New function.
757 (Input_section_sort_entry::match_file_name): Just call
758 Layout::match_file_name.
759 (Output_section::Input_section_sort_init_fini_compare::operator()):
760 Handle .ctors and .dtors. Sort by explicit priority rather than
761 by name.
762 * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
763 * testsuite/initpri2.c: New test.
764 * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
765 (check_PROGRAMS): Add initpri2.
766 (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
767 (initpri2_LDFLAGS, initpri2_LDADD): New variables.
768 * configure, testsuite/Makefile.in: Rebuild.
769
e1f74f98
ILT
7702011-06-19 Ian Lance Taylor <iant@google.com>
771
772 PR gold/12880
773 * layout.cc (Layout::attach_allocated_section_to_segment): Add a
774 .interp section to a PT_INTERP segment even if we have seen a
775 --dynamic-linker option. Don't do it if we have seen a PHDRS
776 clause in a linker script.
777 (Layout::finalize): Don't create a .interp section if we've
778 already create a PT_INTERP segment.
779 (Layout::create_interp): Always call choose_output_section (revert
780 patch of 2011-06-17). Don't create PT_INTERP segment.
781 * script-sections.cc
782 (Script_sections::create_note_and_tls_segments): Add a .interp
783 section to a PT_INTERP segment even if we have seen a
784 --dynamic-linker option.
785
766f91bb
ILT
7862011-06-18 Ian Lance Taylor <iant@google.com>
787
788 * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
789 merely because a non-PT_LOAD segment has a dynamic reloc.
790
0d212c3a
ILT
7912011-06-18 Ian Lance Taylor <iant@google.com>
792
793 * layout.cc (Layout::finish_dynamic_section): Don't create
794 DT_FLAGS entry if not needed.
795
911a5072
ILT
7962011-06-18 Ian Lance Taylor <iant@google.com>
797
798 PR gold/12745
799 * layout.cc (Layout::layout_eh_frame): Correct handling of
800 writable .eh_frame section.
801
534b4e5f
ILT
8022011-06-17 Ian Lance Taylor <iant@google.com>
803
804 PR gold/12893
805 * resolve.cc (Symbol_table::resolve): Don't give an error if a
806 symbol is redefined with the exact same object and value.
807
10b4f102
ILT
8082011-06-17 Ian Lance Taylor <iant@google.com>
809
810 PR gold/12880
811 * layout.h (class Layout): Add interp_segment_ field.
812 * layout.cc (Layout::Layout): Initialize interp_segment_ field.
813 (Layout::attach_allocated_section_to_segment): If making shared
814 library, put .interp section in PT_INTERP segment.
815 (Layout::finalize): Also call create_interp if -dynamic-linker
816 option was used.
817 (Layout::create_interp): Assert that there is no PT_INTERP
818 segment. If not using a SECTIONS clause, use make_output_section.
819 (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
820 * script-sections.cc
821 (Script_sections::create_note_and_tls_segments): If making shared
822 library, put .interp section in PT_INTERP segment.
823
a29b0dad
ILT
8242011-06-17 Ian Lance Taylor <iant@google.com>
825
e588ea8d
ILT
826 * object.cc (Sized_relobj_file::do_layout): Keep warning sections
827 when making a shared library.
828
8292011-06-17 Ian Lance Taylor <iant@google.com>
830
831 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
832 parameter. Change all callers. Don't issue warning about PC32
833 against locally defined symbol.
a29b0dad 834
9d3b0698
ILT
8352011-06-16 Ian Lance Taylor <iant@google.com>
836
837 * symtab.cc (Warnings::issue_warning): Don't warn if relocation
838 occurs in same object.
839
85b0f90c
AM
8402011-06-14 Alan Modra <amodra@gmail.com>
841
842 * po/POTFILES.in: Regenerate.
843
a94907d9
ILT
8442011-06-09 Ian Lance Taylor <iant@google.com>
845
846 * script-sections.cc
847 (Orphan_output_section::set_section_addresses): For a relocatable
848 link set address to 0.
849
4fb3a1c3
CC
8502011-06-09 Cary Coutant <ccoutant@google.com>
851
852 PR gold/12804
853 * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
854 used with --compress-debug-sections.
855 * gold/object.cc (Sized_relobj_file::do_layout): Report
856 uncompressed size of compressed input sections.
857
61220854
CC
8582011-06-08 Cary Coutant <ccoutant@google.com>
859
860 PR gold/12804
861 * testsuite/two_file_test_2_v1.cc: Change initialization of
862 v2 to keep it in .data.
863
e6455dfb
CC
8642011-06-07 Cary Coutant <ccoutant@google.com>
865
866 * common.cc (Symbol_table::do_allocate_commons_list): Call
867 gold_fallback.
868 * errors.cc (Errors::fatal): Adjust call to gold_exit.
869 (Errors::fallback): New function.
870 (gold_fallback): New function.
871 * errors.h (Errors::fallback): New function.
872 * gold.cc (gold_exit): Change status parameter to enum; adjust
873 all callers.
874 (queue_initial_tasks): Call gold_fallback.
875 * gold.h: Include cstdlib.
876 (Exit_status): New enum type.
877 (gold_exit): Change status parameter to enum.
878 (gold_fallback): New function.
879 * layout.cc (Layout::set_section_offsets): Call gold_fallback.
880 (Layout::create_symtab_sections): Likewise.
881 (Layout::create_shdrs): Likewise.
882 * main.cc (main): Adjust call to gold_exit.
883 * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
884 (Output_data_got::add_got_entry_pair): Likewise.
885 (Output_section::add_input_section): Likewise.
886 (Output_section::add_output_section_data): Likewise.
887 (Output_segment::set_section_list_addresses): Likewise.
888 * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
889
fb0e076f
CC
8902011-06-07 Cary Coutant <ccoutant@google.com>
891
892 * layout.cc (Layout::set_segment_offsets): Don't adjust layout
893 for incremental links.
894 * output.cc (Output_segment::set_section_list_addresses): Remove
895 FIXME and test for TLS or BSS.
896
a5ee4d5d
CC
8972011-06-07 Cary Coutant <ccoutant@google.com>
898
899 * testsuite/Makefile.am: Add incremental_copy_test,
900 incremental_common_test_1.
901 * testsuite/Makefile.in: Regenerate.
902 * testsuite/common_test_1_v1.c: New source file.
903 * testsuite/common_test_1_v2.c: New source file.
904 * testsuite/copy_test_v1.cc: New source file.
905
5146f448
CC
9062011-06-07 Cary Coutant <ccoutant@google.com>
907
908 * common.cc (Symbol_table::do_allocate_commons_list): For incremental
909 update, allocate common from bss section's free list.
910 * incremental-dump.cc (dump_incremental_inputs): Print flag for
911 linker-defined symbols.
912 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
913 Skip GOT and PLT entries that are no longer referenced.
914 (Output_section_incremental_inputs::write_info_blocks): Mark
915 linker-defined symbols.
916 (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
917 * output.cc (Output_section::allocate): New function.
918 * output.h (Output_section::allocate): New function.
919 * resolve.cc (Symbol_table::report_resolve_problem): Add case for
920 linker-defined symbols.
921 (Symbol::override_base_with_special): Copy is_predefined_ flag.
922 * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
923 (Symbol::init_base_output_data): Likewise.
924 (Symbol::init_base_output_segment): Likewise.
925 (Symbol::init_base_constant): Likewise.
926 (Sized_symbol::init_output_data): Likewise.
927 (Sized_symbol::init_output_segment): Likewise.
928 (Sized_symbol::init_constant): Likewise.
929 (Symbol_table::do_define_in_output_data): Likewise.
930 (Symbol_table::do_define_in_output_segment): Likewise.
931 (Symbol_table::do_define_as_constant): Likewise.
932 * symtab.h (Symbol::is_predefined): New function.
933 (Symbol::init_base_output_data): Add is_predefined parameter.
934 (Symbol::init_base_output_segment): Likewise.
935 (Symbol::init_base_constant): Likewise.
936 (Symbol::is_predefined_): New data member.
937 (Sized_symbol::init_output_data): Add is_predefined parameter.
938 (Sized_symbol::init_output_segment): Likewise.
939 (Sized_symbol::init_constant): Likewise.
940 (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
941
26d3c67d
CC
9422011-06-07 Cary Coutant <ccoutant@google.com>
943
944 * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
945 instead of emit_copy_reloc.
946 (Copy_relocs::emit_copy_reloc): Refactor.
947 (Copy_relocs::make_copy_reloc): New function.
948 (Copy_relocs::add_copy_reloc): Remove.
949 * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
950 section.
951 (Copy_relocs::make_copy_reloc): New function.
952 (Copy_relocs::add_copy_reloc): Remove.
953 * gold.cc (queue_middle_tasks): Emit old COPY relocations from
954 unchanged input files.
955 * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
956 * incremental.cc (Sized_incremental_binary::do_reserve_layout):
957 Reserve BSS space for COPY relocations.
958 (Sized_incremental_binary::do_emit_copy_relocs): New function.
959 (Output_section_incremental_inputs::write_info_blocks): Record
960 whether a symbol is copied from a shared object.
961 (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
962 * incremental.h (enum Incremental_shlib_symbol_flags): New type.
963 (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
964 (Incremental_input_entry_reader::get_output_symbol_index): Add
965 is_copy parameter.
966 (Incremental_binary::emit_copy_relocs): New function.
967 (Incremental_binary::do_emit_copy_relocs): New function.
968 (Sized_incremental_binary::Sized_incremental_binary): Initialize
969 new data member.
970 (Sized_incremental_binary::add_copy_reloc): New function.
971 (Sized_incremental_binary::do_emit_copy_relocs): New function.
972 (Sized_incremental_binary::Copy_reloc): New struct.
973 (Sized_incremental_binary::Copy_relocs): New typedef.
974 (Sized_incremental_binary::copy_relocs_): New data member.
975 * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
976 * symtab.h (Symbol_table::add_from_incrobj): Change return type.
977 * target.h (Sized_target::emit_copy_reloc): New function.
978 * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
979
7cdb37d9
CC
9802011-06-02 Cary Coutant <ccoutant@google.com>
981
982 PR gold/12163
983 * gold/archive.cc (Archive::Archive): Initialize new data member.
984 (Archive::include_all_members): Return if archive has already been
985 included.
986 * gold/archive.h (Archive::include_all_members_): New data member.
987
cc643b88
NC
9882011-06-02 Nick Clifton <nickc@redhat.com>
989
990 * dynobj.h: Fix spelling mistake in comment.
991 * output.cc: Likewise.
992
f62a3ca7
DK
9932011-05-31 Doug Kwan <dougkwan@google.com>
994 Asier Llano
995
996 PR gold/12826
cc643b88 997 * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
f62a3ca7
DK
998 arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
999 * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up. Remove
1000 redundant arm_exidx_test.so.
1001 * testsuite/Makefile.in: Regenerate.
1002 (check_SCRIPTS): Add pr12826.sh
1003 (check_DATA): Add pr12826.stdout
1004 (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
1005 * testsuite/pr12826.sh: New file.
1006 * testsuite/pr12826_1.s: Ditto.
1007 * testsuite/pr12826_1.s: Ditto.
1008
8dbe1edc
ILT
10092011-05-30 Ian Lance Taylor <iant@google.com>
1010
1011 * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
1012 sections.
1013
c49875be
ILT
10142011-05-29 Ian Lance Taylor <iant@google.com>
1015
1016 PR gold/12804
1017 * testsuite/Makefile.am: Use different file name for two_file_test
1018 temporary file for each incremental test.
1019 * testsuite/Makefile.in: Rebuild.
1020
69d53f7a
ILT
10212011-05-29 Ian Lance Taylor <iant@google.com>
1022
1023 * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
1024 binary input file is empty.
1025
41d0ab5f
ILT
10262011-05-27 Ian Lance Taylor <iant@google.com>
1027
1028 * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
1029 (ver_test_9.so): Likewise.
1030 * testsuite/Makefile.in: Rebuild.
1031
89d8a36b
CC
10322011-05-26 Cary Coutant <ccoutant@google.com>
1033
1034 * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
1035 * incremental.cc (Incremental_inputs::report_input_section): Fix
1036 comment, indentation.
1037 (Incremental_inputs::report_comdat_group): New function.
1038 (Output_section_incremental_inputs::set_final_data_size): Adjust size
1039 of data for incremental input file entry.
1040 (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
1041 group count, COMDAT group signatures.
1042 (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
1043 an unchanged input file.
1044 * incremental.h (Incremental_object_entry::Incremental_object_entry):
1045 Initialize new data member.
1046 (Incremental_object_entry::add_comdat_group): New function.
1047 (Incremental_object_entry::get_comdat_group_count): New function.
1048 (Incremental_object_entry::get_comdat_signature_key): New function.
1049 (Incremental_object_entry::groups_): New data member.
1050 (Incremental_inputs::report_comdat_group): New function.
1051 (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
1052 data for incremental input file entry.
1053 (Incremental_input_entry_reader::get_comdat_group_count): New function.
1054 (Incremental_input_entry_reader::get_input_section): Adjust size of
1055 data for incremental input file entry.
1056 (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
1057 (Incremental_input_entry_reader::get_comdat_group_signature): New
1058 function.
1059 * object.cc (Sized_relobj::include_section_group): Report kept
1060 COMDAT groups for incremental links.
1061
1706a06f
ILT
10622011-05-24 David Meyer <pdox@google.com>
1063
1064 * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
1065 with name parameter. Add found_name parameter.
1066 * fileread.cc (Input_file::find_file): Adjust code accordingly.
1067 * dirsearch.h (class Dirsearch): Update declaration.
1068
a10ae760
ILT
10692011-05-24 Ian Lance Taylor <iant@google.com>
1070
1071 * archive.cc (Library_base::should_include_member): Pull in object
1072 from archive if it defines the entry symbol.
1073 * parameters.cc (Parameters::entry): New function.
1074 * parameters.h (class Parameters): Declare entry.
1075 * output.h (class Output_file_header): Remove entry_ field.
1076 * output.cc (Output_file_header::Output_file_header): Remove entry
1077 parameter. Change all callers.
1078 (Output_file_header::entry): Use parameters->entry.
1079 * gold.cc (queue_middle_tasks): Likewise.
1080 * plugin.cc (Plugin_hook::run): Likewise.
1081
aa92d6ed
CC
10822011-05-24 Cary Coutant <ccoutant@google.com>
1083
1084 * gold.cc (queue_initial_tasks): Pass incremental base filename
1085 to Output_file::open_base_file; don't print error message.
1086 * incremental-dump.cc (main): Adjust call to
1087 Output_file::open_for_modification.
1088 * incremental-dump.cc (main): Likewise.
1089 * incremental.cc (Incremental_inputs::report_command_line):
1090 Ignore --incremental-base option when comparing command lines.
1091 Ignore parameter when given as separate argument.
1092 * options.h (class General_options): Add --incremental-base.
1093 * output.cc (Output_file::Output_file):
1094 (Output_file::open_base_file): Add base_name and writable parameters;
1095 read base file into new file; print error message here.
1096 (Output_file::map_no_anonymous): Add writable parameter; adjust all
1097 callers.
1098 * output.h (Output_file::open_for_modification): Rename to...
1099 (Output_file::open_base_file): ...this; add base_name and
1100 writable parameters; adjust all callers.
1101 (Output_file::map_no_anonymous): Add writable parameter; adjust all
1102 callers.
1103 * testsuite/Makefile.am (incremental_test_4): Test
1104 --incremental-base.
1105 * testsuite/Makefile.in: Regenerate.
1106
2eedd706
CC
11072011-05-24 Cary Coutant <ccoutant@google.com>
1108
1109 * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
1110 incremental_test_4.
1111 * testsuite/Makefile.in: Regenerate.
1112 * testsuite/two_file_test_1_v1.cc: New test source file.
1113 * testsuite/two_file_test_1b_v1.cc: New test source file.
1114 * testsuite/two_file_test_2_v1.cc: New test source file.
1115
0f1c85a6
CC
11162011-05-24 Cary Coutant <ccoutant@google.com>
1117
1118 * dynobj.h (Dynobj::do_dynobj): New function.
1119 * incremental-dump.cc (dump_incremental_inputs): Print as_needed
1120 flag and soname for shared objects.
1121 * incremental.cc (Incremental_inputs::report_object): Make
1122 either Incremental_object_entry or Incremental_dynobj_entry; add
1123 soname to string table.
1124 (Incremental_inputs::report_input_section): Add assertion.
1125 (Output_section_incremental_inputs::set_final_data_size): Adjust
1126 type of input file entry for shared libraries; adjust size of
1127 shared library info entry.
1128 (Output_section_incremental_inputs::write_input_files): Write
1129 as_needed flag for shared libraries.
1130 (Output_section_incremental_inputs::write_info_blocks): Adjust type
1131 of input file entry for shared libraries; write soname.
1132 (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
1133 soname from incremental info.
1134 * incremental.h (enum Incremental_input_flags): Add
1135 INCREMENTAL_INPUT_AS_NEEDED.
1136 (Incremental_input_entry::Incremental_input_entry): Initialize new
1137 data member.
1138 (Incremental_input_entry::set_as_needed): New function.
1139 (Incremental_input_entry::as_needed): New function.
1140 (Incremental_input_entry::do_dynobj_entry): New function.
1141 (Incremental_input_entry::as_needed_): New data member.
1142 (Incremental_object_entry::Incremental_object_entry): Don't check
1143 for shared library.
1144 (Incremental_object_entry::do_type): Likewise.
1145 (class Incremental_dynobj_entry): New class.
1146 (Incremental_input_entry_reader::as_needed): New function.
1147 (Incremental_input_entry_reader::get_soname): New function.
1148 (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
1149 (Incremental_input_entry_reader::get_output_symbol_index): Adjust
1150 size of shared library info entry.
1151 * layout.cc (Layout::finish_dynamic_section): Don't test for
1152 incremental link when adding DT_NEEDED entries.
1153 * object.h (Object::Object): Initialize new data member.
1154 (Object::dynobj): New function.
1155 (Object::set_as_needed): New function.
1156 (Object::as_needed): New function.
1157 (Object::do_dynobj): New function.
1158 (Object::as_needed_): New data member.
1159
6fa2a40b
CC
11602011-05-24 Cary Coutant <ccoutant@google.com>
1161
1162 * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
1163 info; adjust display of GOT entries.
1164 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
1165 vector of input objects; remove file_status_.
1166 (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
1167 (Sized_incremental_binary::do_process_got_plt): Adjust calls to
1168 got_plt reader; call target hooks to reserve GOT entries.
1169 (Output_section_incremental_inputs::set_final_data_size): Adjust size
1170 of input file info header and GOT info entry.
1171 (Output_section_incremental_inputs::write_info_blocks): Write dynamic
1172 relocation info.
1173 (Got_plt_view_info::got_descriptor): Remove.
1174 (Got_plt_view_info::sym_index): New data member.
1175 (Got_plt_view_info::input_index): New data member.
1176 (Local_got_offset_visitor::visit): Write input file index.
1177 (Global_got_offset_visitor::visit): Write 0 for input file index.
1178 (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
1179 with sym_index and input_index.
1180 (Output_section_incremental_inputs::write_got_plt): Adjust size of
1181 incremental info GOT entry; replace got_descriptor with input_index.
1182 (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
1183 map from input file index to object.
1184 (Sized_relobj_incr::do_layout): Replace direct data member reference
1185 with accessor function.
1186 (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
1187 * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
1188 Adjust size of input file info header.
1189 (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
1190 (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
1191 (Incremental_input_entry_reader::get_input_section): Adjust size of
1192 input file info header.
1193 (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
1194 of incremental info GOT entry.
1195 (Incremental_got_plt_reader::get_got_desc): Remove.
1196 (Incremental_got_plt_reader::get_got_symndx): New function.
1197 (Incremental_got_plt_reader::get_got_input_index): New function.
1198 (Sized_incremental_binary::Sized_incremental_binary): Remove
1199 file_status_; add input_objects_.
1200 (Sized_incremental_binary::~Sized_incremental_binary): Remove.
1201 (Sized_incremental_binary::set_file_is_unchanged): Remove.
1202 (Sized_incremental_binary::file_is_unchanged): Remove.
1203 (Sized_incremental_binary::set_input_object): New function.
1204 (Sized_incremental_binary::input_object): New function.
1205 (Sized_incremental_binary::file_status_): Remove.
1206 (Sized_incremental_binary::input_objects_): New data member.
1207 (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
1208 references.
1209 (Sized_relobj_incr::invalid_address): Move to base class.
1210 (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
1211 class.
1212 (Sized_relobj_incr::do_output_section_offset): Likewise.
1213 (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
1214 (Sized_relobj_incr::section_offsets_): Likewise.
1215 * object.cc (Sized_relobj::do_for_all_local_got_entries): New
1216 function.
1217 (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
1218 (Sized_relobj_file::layout_section): Replace refs to section_offsets_
1219 with accessor function.
1220 (Sized_relobj_file::do_layout): Likewise.
1221 (Sized_relobj_file::do_layout_deferred_sections): Likewise.
1222 (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
1223 (Sized_relobj_file::compute_final_local_value): Replace refs to
1224 section_offsets_ with accessor function.
1225 (Sized_relobj_file::do_finalize_local_symbols): Likewise.
1226 * object.h (Relobj::Relobj): Initialize new data members.
1227 (Relobj::add_dyn_reloc): New function.
1228 (Relobj::first_dyn_reloc): New function.
1229 (Relobj::dyn_reloc_count): New function.
1230 (Relobj::first_dyn_reloc_): New data member.
1231 (Relobj::dyn_reloc_count_): New data member.
1232 (Sized_relobj): Rename Sized_relobj_base to this; adjust all
1233 references.
1234 (Sized_relobj::Address): New typedef.
1235 (Sized_relobj::invalid_address): Move here from child class.
1236 (Sized_relobj::Sized_relobj): Initialize new data members.
1237 (Sized_relobj::sized_relobj): New function.
1238 (Sized_relobj::is_output_section_offset_invalid): Move here from
1239 child class.
1240 (Sized_relobj::get_output_section_offset): Likewise.
1241 (Sized_relobj::local_has_got_offset): Likewise.
1242 (Sized_relobj::local_got_offset): Likewise.
1243 (Sized_relobj::set_local_got_offset): Likewise.
1244 (Sized_relobj::do_for_all_local_got_entries): Likewise.
1245 (Sized_relobj::clear_got_offsets): New function.
1246 (Sized_relobj::section_offsets): Move here from child class.
1247 (Sized_relobj::do_output_section_offset): Likewise.
1248 (Sized_relobj::do_set_section_offset): Likewise.
1249 (Sized_relobj::Local_got_offsets): Likewise.
1250 (Sized_relobj::local_got_offsets_): Likewise.
1251 (Sized_relobj::section_offsets_): Likewise.
1252 (Sized_relobj_file): Rename Sized_relobj to this; adjust all
1253 references.
1254 (Sized_relobj_file::is_output_section_offset_invalid): Move to base
1255 class.
1256 (Sized_relobj_file::sized_relobj): New function
1257 (Sized_relobj_file::local_has_got_offset): Move to base class.
1258 (Sized_relobj_file::local_got_offset): Likewise.
1259 (Sized_relobj_file::set_local_got_offset): Likewise.
1260 (Sized_relobj_file::get_output_section_offset): Likewise.
1261 (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
1262 (Sized_relobj_file::do_output_section_offset): Likewise.
1263 (Sized_relobj_file::do_set_section_offset): Likewise.
1264 (Sized_relobj_file::Local_got_offsets): Likewise.
1265 (Sized_relobj_file::local_got_offsets_): Likewise.
1266 (Sized_relobj_file::section_offsets_): Likewise.
1267 * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
1268 (all constructors).
1269 (set_needs_dynsym_index): Convert relobj to derived class pointer.
1270 (Output_reloc::get_symbol_index): Likewise.
1271 (Output_reloc::local_section_offset): Likewise.
1272 (Output_reloc::get_address): Likewise.
1273 (Output_reloc::symbol_value): Likewise.
1274 (Output_data_got::reserve_slot): Move to class definition.
1275 (Output_data_got::reserve_local): New function.
1276 (Output_data_got::reserve_slot_for_global): Remove.
1277 (Output_data_got::reserve_global): New function.
1278 * output.h (Output_reloc::Output_reloc): Adjust type of relobj
1279 (all constructors, two instantiations).
1280 (Output_reloc::get_relobj): New function (two instantiations).
1281 (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
1282 (Output_data_reloc_base::add): Convert relobj to derived class pointer.
1283 (Output_data_reloc::add_global): Adjust type of relobj.
1284 (Output_data_reloc::add_global_relative): Likewise.
1285 (Output_data_reloc::add_symbolless_global_addend): Likewise.
1286 (Output_data_reloc::add_local): Likewise.
1287 (Output_data_reloc::add_local_relative): Likewise.
1288 (Output_data_reloc::add_symbolless_local_addend): Likewise.
1289 (Output_data_reloc::add_local_section): Likewise.
1290 (Output_data_reloc::add_output_section): Likewise.
1291 (Output_data_reloc::add_absolute): Likewise.
1292 (Output_data_reloc::add_target_specific): Likewise.
1293 (Output_data_got::reserve_slot): Move definition here.
1294 (Output_data_got::reserve_local): New function.
1295 (Output_data_got::reserve_global): New function.
1296 * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
1297 section_offsets_ with accessor function.
1298 (Sized_relobj_file::write_sections): Likewise.
1299 (Sized_relobj_file::do_relocate_sections): Likewise.
1300 * target.h (Sized_target::reserve_local_got_entry): New function.
1301 (Sized_target::reserve_global_got_entry): New function.
1302 * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
1303 (Target_x86_64::reserve_global_got_entry): New function.
1304 (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
1305
4829d394
CC
13062011-05-23 Cary Coutant <ccoutant@google.com>
1307
1308 * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
1309 * incremental-dump.cc (dump_incremental_inputs): Mask high-order
1310 bit when checking got_type.
1311 * incremental.cc (Sized_incremental_binary::setup_readers):
1312 Store symbol table and string table locations; initialize bit vector
1313 of file status flags.
1314 (Sized_incremental_binary::do_reserve_layout): Set bit flag for
1315 unchanged files.
1316 (Sized_incremental_binary::do_process_got_plt): New function.
1317 (Sized_incremental_binary::get_symtab_view): Use stored locations.
1318 (Output_section_incremental_inputs::set_final_data_size): Record
1319 file index for each input file.
1320 (Output_section_incremental_inputs::write_got_plt): Store file index
1321 instead of input entry offset for each GOT entry.
1322 * incremental.h
1323 (Incremental_input_entry::Incremental_input_entry): Initialize new
1324 data member.
1325 (Incremental_input_entry::set_offset): Store file index.
1326 (Incremental_input_entry::get_file_index): New function.
1327 (Incremental_input_entry::file_index_): New data member.
1328 (Incremental_binary::process_got_plt): New function.
1329 (Incremental_binary::do_process_got_plt): New function.
1330 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
1331 data members.
1332 (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
1333 (Sized_incremental_binary::set_file_is_unchanged): New function.
1334 (Sized_incremental_binary::file_is_unchanged): New function.
1335 (Sized_incremental_binary::do_process_got_plt): New function.
1336 (Sized_incremental_binary::file_status_): New data member.
1337 (Sized_incremental_binary::main_symtab_loc_): New data member.
1338 (Sized_incremental_binary::main_strtab_loc_): New data member.
1339 * output.cc (Output_data_got::Got_entry::write): Add case
1340 RESERVED_CODE.
1341 (Output_data_got::add_global): Call add_got_entry.
1342 (Output_data_got::add_global_plt): Likewise.
1343 (Output_data_got::add_global_with_rel): Likewise.
1344 (Output_data_got::add_global_with_rela): Likewise.
1345 (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
1346 (Output_data_got::add_global_pair_with_rela): Likewise.
1347 (Output_data_got::add_local): Call add_got_entry.
1348 (Output_data_got::add_local_plt): Likewise.
1349 (Output_data_got::add_local_with_rel): Likewise.
1350 (Output_data_got::add_local_with_rela): Likewise.
1351 (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
1352 (Output_data_got::add_local_pair_with_rela): Likewise.
1353 (Output_data_got::reserve_slot): New function.
1354 (Output_data_got::reserve_slot_for_global): New function.
1355 (Output_data_got::add_got_entry): New function.
1356 (Output_data_got::add_got_entry_pair): New function.
1357 (Output_section::add_output_section_data): Edit FIXME.
1358 * output.h
1359 (Output_section_data_build::Output_section_data_build): New
1360 constructor with size parameter.
1361 (Output_data_space::Output_data_space): Likewise.
1362 (Output_data_got::Output_data_got): Initialize new data member; new
1363 constructor with size parameter.
1364 (Output_data_got::add_constant): Call add_got_entry.
1365 (Output_data_got::reserve_slot): New function.
1366 (Output_data_got::reserve_slot_for_global): New function.
1367 (class Output_data_got::Got_entry): Add RESERVED_CODE.
1368 (Output_data_got::add_got_entry): New function.
1369 (Output_data_got::add_got_entry_pair): New function.
1370 (Output_data_got::free_list_): New data member.
1371 * target.h (Sized_target::init_got_plt_for_update): New function.
1372 (Sized_target::register_global_plt_entry): New function.
1373 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
1374 Initialize new data member; call init; add constructor with PLT count.
1375 (Output_data_plt_x86_64::init): New function.
1376 (Output_data_plt_x86_64::add_relocation): New function.
1377 (Output_data_plt_x86_64::reserve_slot): New function.
1378 (Output_data_plt_x86_64::free_list_): New data member.
1379 (Target_x86_64::init_got_plt_for_update): New function.
1380 (Target_x86_64::register_global_plt_entry): New function.
1381 (Output_data_plt_x86_64::add_entry): Allocate from free list for
1382 incremental updates.
1383 (Output_data_plt_x86_64::add_relocation): New function.
1384 * testsuite/object_unittest.cc (Object_test): Set default options.
1385
ec69d6da
ILT
13862011-05-16 Ian Lance Taylor <iant@google.com>
1387
1388 * options.h (class General_options): Make -i a synonym for -r.
1389
732e31de
ILT
13902011-05-16 Ian Lance Taylor <iant@google.com>
1391
1392 * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
1393
403676b5
CC
13942011-05-10 Cary Coutant <ccoutant@google.com>
1395
1396 * object.cc (Sized_relobj::do_count_local_symbols): Check for
1397 strip_all (-s).
1398
5b7b7d6e
ILT
13992011-05-06 Ian Lance Taylor <iant@google.com>
1400
1401 * layout.cc (Layout::layout): If the output section flags change,
1402 update the ordering.
1403
f0f9babf
CC
14042011-04-25 Cary Coutant <ccoutant@google.com>
1405
1406 * incremental-dump.cc (dump_incremental_inputs): Print local
1407 symbol info for each input file.
1408 * incremental.cc
1409 (Output_section_incremental_inputs::set_final_data_size): Add local
1410 symbol info to input file entries in incremental info.
1411 (Output_section_incremental_inputs::write_info_blocks): Likewise.
1412 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
1413 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
1414 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
1415 implementation.
1416 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
1417 (Sized_incr_relobj::do_relocate): Write the local symbols.
1418 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
1419 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
1420 Adjust size of input file header.
1421 (Incremental_inputs_reader::get_local_symbol_offset): New function.
1422 (Incremental_inputs_reader::get_local_symbol_count): New function.
1423 (Incremental_inputs_reader::get_input_section): Adjust size of input
1424 file header.
1425 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
1426 (Sized_incr_relobj::This): New typedef.
1427 (Sized_incr_relobj::sym_size): New const data member.
1428 (Sized_incr_relobj::Local_symbol): New struct.
1429 (Sized_incr_relobj::do_output_local_symbol_count): New function.
1430 (Sized_incr_relobj::do_local_symbol_offset): New function.
1431 (Sized_incr_relobj::local_symbol_count_): New data member.
1432 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
1433 (Sized_incr_relobj::local_symbol_index_): New data member.
1434 (Sized_incr_relobj::local_symbol_offset_): New data member.
1435 (Sized_incr_relobj::local_dynsym_offset_): New data member.
1436 (Sized_incr_relobj::local_symbols_): New data member.
1437 * object.h (Relobj::output_local_symbol_count): New function.
1438 (Relobj::local_symbol_offset): New function.
1439 (Relobj::do_output_local_symbol_count): New function.
1440 (Relobj::do_local_symbol_offset): New function.
1441 (Sized_relobj::do_output_local_symbol_count): New function.
1442 (Sized_relobj::do_local_symbol_offset): New function.
1443
d0a9ace3
ILT
14442011-04-22 Vladimir Simonov <sv@sw.ru>
1445
1446 * descriptors.cc (set_close_on_exec): New function.
1447 (Descriptors::open): Use set_close_on_exec.
1448 * output.cc (S_ISLNK): Define if not defined.
1449
94a3fc8b
CC
14502011-04-22 Cary Coutant <ccoutant@google.com>
1451
1452 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
1453 global symbol map.
1454 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
1455 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
1456 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
1457 relocations.
1458 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
1459 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
1460 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
1461 * incremental.h
1462 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
1463 function.
1464 (Incremental_binary::apply_incremental_relocs): New function.
1465 (Incremental_binary::do_apply_incremental_relocs): New function.
1466 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
1467 data member.
1468 (Sized_incremental_binary::add_global_symbol): New function.
1469 (Sized_incremental_binary::global_symbol): New function.
1470 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
1471 (Sized_incremental_binary::symbol_map_): New data member.
1472 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
1473 * target.h (Sized_target::apply_relocation): New function.
1474 * target-reloc.h (apply_relocation): New function.
1475 * x86_64.cc (Target_x86_64::apply_relocation): New function.
1476
c87e4302
DK
14772011-04-22 Doug Kwan <dougkwan@google.com>
1478
1479 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
1480 flag of a SHT_ARM_EXIDX section.
1481 * testsuite/Makefile.am (arm_exidx_test): New test rules.
1482 * testsuite/Makefile.in: Regenerate.
1483 * testsuite/arm_exidx_test.s: New file.
1484 * testsuite/arm_exidx_test.sh: Same.
1485
e7782cf6
CC
14862011-04-20 Cary Coutant <ccoutant@google.com>
1487
1488 PR gold/12689
1489 * archive.h (Incremental_archive_entry::Archive_member):
1490 Initialize arg_serial_ (second constructor).
1491
308ecdc7
ILT
14922011-04-17 Ian Lance Taylor <iant@google.com>
1493
1494 * object.cc (Relocate_info::location): Simplify location string.
1495 * errors.cc (Errors::error_at_location): Don't print program
1496 name.
1497 (Errors::warning_at_location): Likewise.
1498 (Errors::undefined_symbol): Likewise.
1499 * testsuite/debug_msg.sh: Update accordingly.
1500
bec5b579
CC
15012011-04-14 Cary Coutant <ccoutant@google.com>
1502
1503 * gold/layout.cc (Layout::symtab_section_offset): New function.
1504 * gold/layout.h (Layout::symtab_section_offset): New function.
1505 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
1506
88597d34
ILT
15072011-04-12 Ian Lance Taylor <iant@google.com>
1508
1509 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
1510 with MREMAP_MAYMOVE.
1511 * output.h (class Output_file): Add map_is_allocated_ field.
1512 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
1513 not available, provide stubs. If mremap is not available, #define
1514 it to gold_mremap.
1515 (MREMAP_MAYMOVE): Define if not defined.
1516 (Output_file::Output_file): Initialize map_is_allocated_.
1517 (Output_file::resize): Check map_is_allocated_.
1518 (Output_file::map_anonymous): If mmap fails, use malloc.
1519 (Output_file::unmap): Don't do anything for an anonymous map.
1520 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
1521 is not available, provide stubs.
1522 (File_read::View::~View): Use free rather than delete[].
1523 (File_read::make_view): Use malloc rather than new[]. If mmap
1524 fails, use malloc.
1525 (File_read::find_or_make_view): Use malloc rather than new[].
1526 * gold.h: Remove HAVE_REMAP code.
1527 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
1528 exists. Rename mremap to gold_mremap. If mmap is not available
1529 don't do anything.
1530 * configure, config.in: Rebuild.
1531
11e361bc
ILT
15322011-04-11 Ian Lance Taylor <iant@google.com>
1533
1534 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
1535 initialize local variable v.
1536
cdc29364
CC
15372011-04-11 Cary Coutant <ccoutant@google.com>
1538
1539 * archive.cc (Archive::include_member): Adjust call to
1540 report_object.
1541 (Add_archive_symbols::run): Track argument serial numbers.
1542 (Lib_group::include_member): Likewise.
1543 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
1544 * archive.h (Incremental_archive_entry::Archive_member):
1545 Initialize arg_serial_.
1546 (Archive_member::arg_serial_): New data member.
1547 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
1548 (Sized_dynobj::do_add_symbols): Track symbols when doing an
1549 incremental link.
1550 (Sized_dynobj::do_for_all_local_got_entries): New function.
1551 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
1552 function.
1553 * fileread.cc (get_mtime): New function.
1554 * fileread.h (get_mtime): New function.
1555 * gold.cc (queue_initial_tasks): Check for incremental update.
1556 (process_incremental_input): New function.
1557 (queue_middle_tasks): Don't force valid target for incremental
1558 update.
1559 * incremental-dump.cc (find_input_containing_global): Adjust
1560 size of symbol info entry.
1561 (dump_incremental_inputs): Dump argument serial number and
1562 in_system_directory flag; bias shndx by 1; print symbol names
1563 when dumping per-file symbol lists; use new symbol info readers.
1564 * incremental.cc
1565 (Output_section_incremental_inputs:update_data_size): New function.
1566 (Sized_incremental_binary::setup_readers): Setup input readers
1567 for each input file; build maps for files added from libraries
1568 and scripts.
1569 (Sized_incremental_binary::check_input_args): New function.
1570 (Sized_incremental_binary::do_check_inputs): Build map of argument
1571 serial numbers to input arguments.
1572 (Sized_incremental_binary::do_file_has_changed): Rename
1573 do_file_is_unchanged to this; compare file modification times.
1574 (Sized_incremental_binary::do_init_layout): New function.
1575 (Sized_incremental_binary::do_reserve_layout): New function.
1576 (Sized_incremental_binary::do_get_input_reader): Remove.
1577 (Sized_incremental_binary::get_symtab_view): New function.
1578 (Incremental_checker::can_incrementally_link_output_file): Remove.
1579 (Incremental_inputs::report_command_line): Exclude --debug options.
1580 (Incremental_inputs::report_archive_begin): Add parameter; track
1581 argument serial numbers; don't put input file entry for archive
1582 before archive members.
1583 (Incremental_inputs::report_archive_end): Put input file entry
1584 for archive after archive members.
1585 (Incremental_inputs::report_object): Add parameter; track argument
1586 serial numbers and in_system_directory flag.
1587 (Incremental_inputs::report_script): Add parameter; track argument
1588 serial numbers.
1589 (Output_section_incremental_inputs::set_final_data_size): Adjust
1590 size of symbol info entry; check for forwarding symbols.
1591 (Output_section_incremental_inputs::write_input_files): Write
1592 in_system_directory flag and argument serial number.
1593 (Output_section_incremental_inputs::write_info_blocks): Map section
1594 indices between incremental info and original input file; store
1595 input section index for each symbol.
1596 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
1597 change operator() to visit().
1598 (class Global_got_offset_visitor): Likewise.
1599 (class Global_symbol_visitor_got_plt):
1600 (Output_section_incremental_inputs::write_got_plt): Use new visitor
1601 classes.
1602 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
1603 (Sized_incr_relobj::do_read_symbols): New function.
1604 (Sized_incr_relobj::do_layout): New function.
1605 (Sized_incr_relobj::do_layout_deferred_sections): New function.
1606 (Sized_incr_relobj::do_add_symbols): New function.
1607 (Sized_incr_relobj::do_should_include_member): New function.
1608 (Sized_incr_relobj::do_for_all_global_symbols): New function.
1609 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
1610 (Sized_incr_relobj::do_section_size): New function.
1611 (Sized_incr_relobj::do_section_name): New function.
1612 (Sized_incr_relobj::do_section_contents): New function.
1613 (Sized_incr_relobj::do_section_flags): New function.
1614 (Sized_incr_relobj::do_section_entsize): New function.
1615 (Sized_incr_relobj::do_section_address): New function.
1616 (Sized_incr_relobj::do_section_type): New function.
1617 (Sized_incr_relobj::do_section_link): New function.
1618 (Sized_incr_relobj::do_section_info): New function.
1619 (Sized_incr_relobj::do_section_addralign): New function.
1620 (Sized_incr_relobj::do_initialize_xindex): New function.
1621 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
1622 (Sized_incr_relobj::do_read_relocs): New function.
1623 (Sized_incr_relobj::do_gc_process_relocs): New function.
1624 (Sized_incr_relobj::do_scan_relocs): New function.
1625 (Sized_incr_relobj::do_count_local_symbols): New function.
1626 (Sized_incr_relobj::do_finalize_local_symbols): New function.
1627 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
1628 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
1629 (Sized_incr_relobj::do_relocate): New function.
1630 (Sized_incr_relobj::do_set_section_offset): New function.
1631 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
1632 (Sized_incr_dynobj::do_read_symbols): New function.
1633 (Sized_incr_dynobj::do_layout): New function.
1634 (Sized_incr_dynobj::do_add_symbols): New function.
1635 (Sized_incr_dynobj::do_should_include_member): New function.
1636 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
1637 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
1638 (Sized_incr_dynobj::do_section_size): New function.
1639 (Sized_incr_dynobj::do_section_name): New function.
1640 (Sized_incr_dynobj::do_section_contents): New function.
1641 (Sized_incr_dynobj::do_section_flags): New function.
1642 (Sized_incr_dynobj::do_section_entsize): New function.
1643 (Sized_incr_dynobj::do_section_address): New function.
1644 (Sized_incr_dynobj::do_section_type): New function.
1645 (Sized_incr_dynobj::do_section_link): New function.
1646 (Sized_incr_dynobj::do_section_info): New function.
1647 (Sized_incr_dynobj::do_section_addralign): New function.
1648 (Sized_incr_dynobj::do_initialize_xindex): New function.
1649 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
1650 (make_sized_incremental_object): New function.
1651 (Incremental_library::copy_unused_symbols): New function.
1652 (Incremental_library::do_for_all_unused_symbols): New function.
1653 * incremental.h (enum Incremental_input_flags): New type.
1654 (class Incremental_checker): Remove.
1655 (Incremental_input_entry::Incremental_input_entry): Add argument
1656 serial number.
1657 (Incremental_input_entry::arg_serial): New function.
1658 (Incremental_input_entry::set_is_in_system_directory): New function.
1659 (Incremental_input_entry::is_in_system_directory): New function.
1660 (Incremental_input_entry::arg_serial_): New data member.
1661 (Incremental_input_entry::is_in_system_directory_): New data member.
1662 (class Script_info): Move here from script.h.
1663 (Script_info::Script_info): Add filename parameter.
1664 (Script_info::filename): New function.
1665 (Script_info::filename_): New data member.
1666 (Incremental_script_entry::Incremental_script_entry): Add argument
1667 serial number.
1668 (Incremental_object_entry::Incremental_object_entry): Likewise.
1669 (Incremental_object_entry::add_input_section): Build list of input
1670 sections with map to original shndx.
1671 (Incremental_object_entry::get_input_section_index): New function.
1672 (Incremental_object_entry::shndx_): New data member.
1673 (Incremental_object_entry::name_key_): Rename; adjust all refs.
1674 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
1675 (Incremental_archive_entry::Incremental_archive_entry): Add argument
1676 serial number.
1677 (Incremental_inputs::report_archive_begin): Likewise.
1678 (Incremental_inputs::report_object): Likewise.
1679 (Incremental_inputs::report_script): Likewise.
1680 (class Incremental_global_symbol_reader): New class.
1681 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
1682 and store flags and input file type.
1683 (Incremental_input_entry_reader::arg_serial): New function.
1684 (Incremental_input_entry_reader::type): Extract type from flags.
1685 (Incremental_input_entry_reader::is_in_system_directory): New function.
1686 (Incremental_input_entry_reader::get_input_section_count): Call
1687 accessor function for type.
1688 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
1689 function for type; adjust size of global symbol entry.
1690 (Incremental_input_entry_reader::get_global_symbol_count): Call
1691 accessor function for type.
1692 (Incremental_input_entry_reader::get_object_count): Likewise.
1693 (Incremental_input_entry_reader::get_object_offset): Likewise.
1694 (Incremental_input_entry_reader::get_member_count): Likewise.
1695 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
1696 (Incremental_input_entry_reader::get_member_offset): Likewise.
1697 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
1698 (Incremental_input_entry_reader::Global_symbol_info): Remove.
1699 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
1700 (Incremental_input_entry_reader::get_global_symbol_reader): New
1701 function.
1702 (Incremental_input_entry_reader::get_output_symbol_index): New
1703 function.
1704 (Incremental_input_entry_reader::type_): Remove.
1705 (Incremental_input_entry_reader::flags_): New data member.
1706 (Incremental_inputs_reader::input_file_offset): New function.
1707 (Incremental_inputs_reader::input_file_index): New function.
1708 (Incremental_inputs_reader::input_file): Call input_file_offset.
1709 (Incremental_inputs_reader::input_file_at_offset): New function.
1710 (Incremental_relocs_reader::get_r_type): Reformat.
1711 (Incremental_relocs_reader::get_r_shndx): Reformat.
1712 (Incremental_relocs_reader::get_r_offset): Reformat.
1713 (Incremental_relocs_reader::data): New function.
1714 (Incremental_binary::Incremental_binary): Initialize new data members.
1715 (Incremental_binary::check_inputs): Add cmdline parameter.
1716 (Incremental_binary::file_is_unchanged): Remove.
1717 (Input_reader::arg_serial): New function.
1718 (Input_reader::get_unused_symbol_count): New function.
1719 (Input_reader::get_unused_symbol): New function.
1720 (Input_reader::do_arg_serial): New function.
1721 (Input_reader::do_get_unused_symbol_count): New function.
1722 (Input_reader::do_get_unused_symbol): New function.
1723 (Incremental_binary::input_file_count): New function.
1724 (Incremental_binary::get_input_reader): Change signature to use
1725 index instead of filename.
1726 (Incremental_binary::file_has_changed): New function.
1727 (Incremental_binary::get_input_argument): New function.
1728 (Incremental_binary::get_library): New function.
1729 (Incremental_binary::get_script_info): New function.
1730 (Incremental_binary::init_layout): New function.
1731 (Incremental_binary::reserve_layout): New function.
1732 (Incremental_binary::output_file): New function.
1733 (Incremental_binary::do_check_inputs): New function.
1734 (Incremental_binary::do_file_is_unchanged): Remove.
1735 (Incremental_binary::do_file_has_changed): New function.
1736 (Incremental_binary::do_init_layout): New function.
1737 (Incremental_binary::do_reserve_layout): New function.
1738 (Incremental_binary::do_input_file_count): New function.
1739 (Incremental_binary::do_get_input_reader): Change signature.
1740 (Incremental_binary::input_args_map_): New data member.
1741 (Incremental_binary::library_map_): New data member.
1742 (Incremental_binary::script_map_): New data member.
1743 (Sized_incremental_binary::Sized_incremental_binary): Initialize
1744 new data members.
1745 (Sized_incremental_binary::output_section): New function.
1746 (Sized_incremental_binary::inputs_reader): Add const.
1747 (Sized_incremental_binary::symtab_reader): Add const.
1748 (Sized_incremental_binary::relocs_reader): Add const.
1749 (Sized_incremental_binary::got_plt_reader): Add const.
1750 (Sized_incremental_binary::get_symtab_view): New function.
1751 (Sized_incremental_binary::Inputs_reader): New typedef.
1752 (Sized_incremental_binary::Input_entry_reader): New typedef.
1753 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
1754 (Sized_incremental_binary::do_file_is_unchanged): Remove.
1755 (Sized_incremental_binary::do_file_has_changed): New function.
1756 (Sized_incremental_binary::do_init_layout): New function.
1757 (Sized_incremental_binary::do_reserve_layout): New function.
1758 (Sized_input_reader::Inputs_reader): Remove.
1759 (Sized_input_reader::Input_entry_reader): Remove.
1760 (Sized_input_reader::do_arg_serial): New function.
1761 (Sized_input_reader::do_get_unused_symbol_count): New function.
1762 (Sized_input_reader::do_get_unused_symbol): New function.
1763 (Sized_incremental_binary::do_input_file_count): New function.
1764 (Sized_incremental_binary::do_get_input_reader): Change signature;
1765 use index instead of filename.
1766 (Sized_incremental_binary::section_map_): New data member.
1767 (Sized_incremental_binary::input_entry_readers_): New data member.
1768 (class Sized_incr_relobj): New class.
1769 (class Sized_incr_dynobj): New class.
1770 (make_sized_incremental_object): New function.
1771 (class Incremental_library): New class.
1772 * layout.cc (Free_list::num_lists): New static data member.
1773 (Free_list::num_nodes): New static data member.
1774 (Free_list::num_removes): New static data member.
1775 (Free_list::num_remove_visits): New static data member.
1776 (Free_list::num_allocates): New static data member.
1777 (Free_list::num_allocate_visits): New static data member.
1778 (Free_list::init): New function.
1779 (Free_list::remove): New function.
1780 (Free_list::allocate): New function.
1781 (Free_list::dump): New function.
1782 (Free_list::print_stats): New function.
1783 (Layout_task_runner::run): Resize output file for incremental updates.
1784 (Layout::Layout): Initialize new data members.
1785 (Layout::set_incremental_base): New function.
1786 (Layout::init_fixed_output_section): New function.
1787 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
1788 incremental updates.
1789 (Layout::create_gold_note): Do not create gold note section for
1790 incremental updates.
1791 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
1792 for incremental updates.
1793 (Layout::set_section_offsets): For incremental updates, allocate space
1794 from free list.
1795 (Layout::create_symtab_sections): Layout with offsets relative to
1796 start of section; for incremental updates, allocate space from free
1797 list.
1798 (Layout::create_shdrs): For incremental updates, allocate space from
1799 free list.
1800 (Layout::finish_dynamic_section): For incremental updates, do not
1801 check --as-needed (fixed in subsequent patch).
1802 * layout.h (class Free_list): New class.
1803 (Layout::set_incremental_base): New function.
1804 (Layout::incremental_base): New function.
1805 (Layout::init_fixed_output_section): New function.
1806 (Layout::allocate): New function.
1807 (Layout::incremental_base_): New data member.
1808 (Layout::free_list_): New data member.
1809 * main.cc (main): Print Free_list statistics.
1810 * object.cc (Relobj::finalize_incremental_relocs): Add
1811 clear_counts parameter; clear counts only when clear_counts is set.
1812 (Sized_relobj::Sized_relobj): Initialize new base class.
1813 (Sized_relobj::do_layout): Don't report special sections.
1814 (Sized_relobj::do_for_all_local_got_entries): New function.
1815 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
1816 symtab_off to all symbol table offsets.
1817 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
1818 * object.h (class Got_offset_list): Move to top of file.
1819 (Object::Object): Allow case where input_file == NULL.
1820 (Object::~Object): Likewise.
1821 (Object::input_file): Assert that input_file != NULL.
1822 (Object::lock): Allow case where input_file == NULL.
1823 (Object::unlock): Likewise.
1824 (Object::is_locked): Likewise.
1825 (Object::token): Likewise.
1826 (Object::release): Likewise.
1827 (Object::is_incremental): New function.
1828 (Object::get_mtime): New function.
1829 (Object::for_all_local_got_entries): New function.
1830 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
1831 (Object::set_is_in_system_directory): New function.
1832 (Object::is_in_system_directory): New function.
1833 (Object::do_is_incremental): New function.
1834 (Object::do_get_mtime): New function.
1835 (Object::do_for_all_local_got_entries): New function.
1836 (Object::is_in_system_directory_): New data member.
1837 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
1838 (class Sized_relobj_base): New class.
1839 (class Sized_relobj): Derive from Sized_relobj_base.
1840 (class Sized_relobj::Symbols): Redeclare from base class.
1841 (class Sized_relobj::local_got_offset_list): Remove.
1842 (class Sized_relobj::Output_sections): Redeclare from base class.
1843 (class Sized_relobj::do_for_all_local_got_entries): New function.
1844 (class Sized_relobj::write_local_symbols): Add offset parameter.
1845 (class Sized_relobj::local_symbol_offset_): Update comment.
1846 (class Sized_relobj::local_dynsym_offset_): Update comment.
1847 * options.cc (Input_arguments::add_file): Remove const.
1848 * options.h (Input_file_argument::Input_file_argument):
1849 Initialize arg_serial_ (all constructors).
1850 (Input_file_argument::set_arg_serial): New function.
1851 (Input_file_argument::arg_serial): New function.
1852 (Input_file_argument::arg_serial_): New data member.
1853 (Input_arguments::Input_arguments): Initialize file_count_.
1854 (Input_arguments::add_file): Remove const.
1855 (Input_arguments::number_of_input_files): New function.
1856 (Input_arguments::file_count_): New data member.
1857 (Command_line::number_of_input_files): Call
1858 Input_arguments::number_of_input_files.
1859 * output.cc (Output_segment_headers::Output_segment_headers):
1860 Set current size.
1861 (Output_section::Input_section::current_data_size): New function.
1862 (Output_section::Output_section): Initialize new data members.
1863 (Output_section::add_input_section): Don't do merge sections for
1864 an incremental link; allocate space from free list for an
1865 incremental update.
1866 (Output_section::add_output_section_data): Allocate space from
1867 free list for an incremental update.
1868 (Output_section::update_data_size): New function.
1869 (Output_section::set_fixed_layout): New function.
1870 (Output_section::reserve): New function.
1871 (Output_segment::set_section_addresses): Remove const.
1872 (Output_segment::set_section_list_addresses): Remove const; allocate
1873 space from free list for an incremental update.
1874 (Output_segment::set_offset): Adjust size of RELRO segment for an
1875 incremental update.
1876 * output.h (Output_data::current_data_size): Move here from
1877 child classes.
1878 (Output_data::pre_finalize_data_size): New function.
1879 (Output_data::update_data_size): New function.
1880 (Output_section_headers::update_data_size): new function.
1881 (Output_section_data_build::current_data_size): Move to Output_data.
1882 (Output_data_strtab::update_data_size): New function.
1883 (Output_section::current_data_size): Move to Output_data.
1884 (Output_section::set_fixed_layout): New function.
1885 (Output_section::has_fixed_layout): New function.
1886 (Output_section::reserve): New function.
1887 (Output_section::update_data_size): New function.
1888 (Output_section::has_fixed_layout_): New data member.
1889 (Output_section::free_list_): New data member.
1890 (Output_segment::set_section_addresses): Remove const.
1891 (Output_segment::set_section_list_addresses): Remove const.
1892 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
1893 New function.
1894 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
1895 New function.
1896 * readsyms.cc (Read_symbols::do_read_symbols): Add library
1897 parameter when calling Add_symbols constructor; store argument
1898 serial number for members of a lib group.
1899 (Add_symbols::locks): Allow case where token == NULL.
1900 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
1901 (Read_member::~Read_member): New function.
1902 (Read_member::is_runnable): New function.
1903 (Read_member::locks): New function.
1904 (Read_member::run): New function.
1905 (Check_script::~Check_script): New function.
1906 (Check_script::is_runnable): New function.
1907 (Check_script::locks): New function.
1908 (Check_script::run): New function.
1909 (Check_library::~Check_library): New function.
1910 (Check_library::is_runnable): New function.
1911 (Check_library::locks): New function.
1912 (Check_library::run): New function.
1913 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
1914 (Add_symbols::library_): New data member.
1915 (class Read_member): New class.
1916 (class Check_script): New class.
1917 (class Check_library): New class.
1918 * reloc.cc (Read_relocs::is_runnable): Allow case where
1919 token == NULL.
1920 (Read_relocs::locks): Likewise.
1921 (Scan_relocs::locks): Likewise.
1922 (Relocate_task::locks): Likewise.
1923 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
1924 to clear counters.
1925 (Sized_relobj::incremental_relocs_scan): Fix comment.
1926 (Sized_relobj::do_relocate): Pass output file offset to
1927 write_local_symbols.
1928 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
1929 from class declaration.
1930 * script.cc (read_input_script): Allocate Script_info; pass
1931 argument serial number to report_script.
1932 * script.h (class Script_info): Move to incremental.h.
1933 * symtab.cc (Symbol_table::add_from_incrobj): New function.
1934 * symtab.h (Symbol_table::add_from_incrobj): New function.
1935 (Symbol_table::set_file_offset): New function.
1936
b961d0d7
CC
19372011-04-05 Cary Coutant <ccoutant@google.com>
1938
1939 * incremental-dump.cc (dump_incremental_inputs): Change signature
1940 to take a Sized_incremental_binary; change caller. Use readers
1941 in Sized_incremental_binary.
1942 * incremental.cc
1943 (Sized_incremental_binary::find_incremental_inputs_sections):
1944 Rename do_find_incremental_inputs_sections to this.
1945 (Sized_incremental_binary::setup_readers): New function.
1946 (Sized_incremental_binary::do_check_inputs): Check
1947 has_incremental_info_ flag; move setup code to setup_readers;
1948 use input readers.
1949 (Sized_incremental_binary::do_file_is_unchanged): New function.
1950 (Sized_incremental_binary::do_get_input_reader): New function.
1951 * incremental.h (class Incremental_binary): Move to end of file.
1952 (Incremental_binary::file_is_unchanged): New function.
1953 (Incremental_binary::do_file_is_unchanged): New function.
1954 (Incremental_binary::Input_reader): New class.
1955 (Incremental_binary::get_input_reader): New function.
1956 (class Sized_incremental_binary): Move to end of file.
1957 (Sized_incremental_binary::Sized_incremental_binary): Setup the
1958 input section reader classes.
1959 (Sized_incremental_binary::has_incremental_info): New function.
1960 (Sized_incremental_binary::inputs_reader): New function.
1961 (Sized_incremental_binary::symtab_reader): New function.
1962 (Sized_incremental_binary::relocs_reader): New function.
1963 (Sized_incremental_binary::got_plt_reader): New function.
1964 (Sized_incremental_binary::do_file_is_unchanged): New function.
1965 (Sized_incremental_binary::Sized_input_reader): New class.
1966 (Sized_incremental_binary::get_input_reader): New function.
1967 (Sized_incremental_binary::find_incremental_inputs_sections):
1968 Rename do_find_incremental_inputs_sections to this.
1969 (Sized_incremental_binary::setup_readers): New function.
1970 (Sized_incremental_binary::has_incremental_info_): New data member.
1971 (Sized_incremental_binary::inputs_reader_): New data member.
1972 (Sized_incremental_binary::symtab_reader_): New data member.
1973 (Sized_incremental_binary::relocs_reader_): New data member.
1974 (Sized_incremental_binary::got_plt_reader_): New data member.
1975 (Sized_incremental_binary::current_input_file_): New data member.
1976
a869183f
PP
19772011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
1978
1979 PR gold/12640
1980 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
1981 violation.
1982
19832011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
1984
1985 * archive.cc (Archive::include_member): Adjust call to report_object.
1986 (Add_archive_symbols::run): Add script_info to call to
1987 report_archive_begin.
1988 (Lib_group::include_member): Adjust call to report_object.
1989 (Add_lib_group_symbols::run): Adjust call to report_object.
1990 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
1991 blocks. Add object count for script input files.
1992 * incremental.cc (Incremental_inputs::report_archive_begin): Add
1993 script_info parameter; change all callers.
1994 (Incremental_inputs::report_object): Add script_info parameter;
1995 change all callers.
1996 (Incremental_inputs::report_script): Store backpointer to
1997 incremental info entry.
1998 (Output_section_incremental_inputs::set_final_data_size): Record
1999 additional information for scripts.
2000 (Output_section_incremental_inputs::write_info_blocks): Likewise.
2001 * incremental.h (Incremental_script_entry::add_object): New function.
2002 (Incremental_script_entry::get_object_count): New function.
2003 (Incremental_script_entry::get_object): New function.
2004 (Incremental_script_entry::objects_): New data member; adjust
2005 constructor.
2006 (Incremental_inputs::report_archive_begin): Add script_info parameter.
2007 (Incremental_inputs::report_object): Add script_info parameter.
2008 (Incremental_inputs_reader::get_object_count): New function.
2009 (Incremental_inputs_reader::get_object_offset): New function.
2010 * options.cc (Input_arguments::add_file): Return reference to
2011 new input argument.
2012 * options.h (Input_argument::set_script_info): New function.
2013 (Input_argument::script_info): New function.
2014 (Input_argument::script_info_): New data member; adjust all
2015 constructors.
2016 (Input_file_group::add_file): Return reference to new input argument.
2017 (Input_file_lib::add_file): Likewise.
2018 (Input_arguments::add_file): Likewise.
2019 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
2020 * script.cc (Parser_closure::Parser_closure): Add script_info
2021 parameter; adjust all callers.
2022 (Parser_closure::script_info): New function.
2023 (Parser_closure::script_info_): New data member.
2024 (read_input_script): Report scripts earlier to incremental info.
2025 (script_add_file): Set script_info in Input_argument.
2026 (script_add_library): Likewise.
2027 * script.h (Script_options::Script_info): Rewrite class.
2028
a869183f 20292011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
2030
2031 * archive.cc (Library_base::should_include_member): Move
2032 method here from class Archive.
2033 (Archive::Archive): Initialize base class.
2034 (Archive::should_include_member): Move to base class.
2035 (Archive::do_for_all_unused_symbols): New function.
2036 (Add_archive_symbols::run): Remove redundant access to
2037 incremental_inputs.
2038 (Lib_group::Lib_group): Initialize base class.
2039 (Lib_group::do_filename): New function.
2040 (Lib_group::include_member): Pass pointer to Lib_group to
2041 report_object.
2042 (Lib_group::do_for_all_unused_symbols): New function.
2043 (Add_lib_group_symbols::run): Report archive information for
2044 incremental links.
2045 * archive.h (class Library_base): New base class.
2046 (class Archive): Derive from Library_base.
2047 (Archive::filename): Move to base class.
2048 (Archive::set_incremental_info): Likewise.
2049 (Archive::incremental_info): Likewise.
2050 (Archive::Should_include): Likewise.
2051 (Archive::should_include_member): Likewise.
2052 (Archive::Armap_entry): Remove.
2053 (Archive::Unused_symbol_iterator): Remove.
2054 (Archive::unused_symbols_begin): Remove.
2055 (Archive::unused_symbols_end): Remove.
2056 (Archive::do_filename): New function.
2057 (Archive::do_get_mtime): New function.
2058 (Archive::do_for_all_unused_symbols): New function.
2059 (Archive::task_): Move to base class.
2060 (Archive::incremental_info_): Likewise.
2061 (class Lib_group): Derive from Library_base.
2062 (Lib_group::do_filename): New function.
2063 (Lib_group::do_get_mtime): New function.
2064 (Lib_group::do_for_all_unused_symbols): New function.
2065 (Lib_group::task_): Move to base class.
2066 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
2067 function.
2068 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
2069 function.
2070 * incremental.cc (Incremental_inputs::report_archive_begin):
2071 Use Library_base; call library's get_mtime; add incremental inputs
2072 entry before members.
2073 (class Unused_symbol_visitor): New class.
2074 (Incremental_inputs::report_archive_end): Use Library_base; use
2075 visitor class to record unused symbols; don't add incremental inputs
2076 entry after members.
2077 (Incremental_inputs::report_object): Use Library_base.
2078 * incremental.h
2079 (Incremental_archive_entry::Incremental_archive_entry): Remove
2080 unused Archive parameter.
2081 (Incremental_inputs::report_archive_begin): Use Library_base.
2082 (Incremental_inputs::report_archive_end): Likewise.
2083 (Incremental_inputs::report_object): Likewise.
2084 * object.cc (Sized_relobj::do_for_all_global_symbols): New
2085 function.
2086 * object.h (Object::for_all_global_symbols): New function.
2087 (Object::do_for_all_global_symbols): New function.
2088 (Sized_relobj::do_for_all_global_symbols): New function.
2089 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
2090 function.
2091 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
2092 function.
2093
61ab3e40
ILT
20942011-03-27 Ian Lance Taylor <iant@google.com>
2095
2096 * archive.cc (Archive::interpret_header): Return -1 if something
2097 goes wrong. Change callers accordingly.
2098
30e1f9e6
CC
20992011-03-25 Cary Coutant <ccoutant@google.com>
2100
2101 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
2102 * testsuite/Makefile.in: Regenerate.
2103
9c793f14
RÁE
21042010-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
2105
2106 * plugin.cc (get_view): New.
2107 (Plugin::load): Pass get_view to the plugin.
2108 (Plugin_manager::get_view): New.
2109
9312bb0a
ILT
21102011-03-21 Ian Lance Taylor <iant@google.com>
2111
2112 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 2113 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 2114
7e12ba9e
ST
21152011-03-21 Sriraman Tallam <tmsriram@google.com>
2116
2117 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
2118 Change == to -eq.
2119 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
2120 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
2121 Change == to -eq.
2122 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
2123 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
2124
fd7a005d
ILT
21252011-03-14 Ian Lance Taylor <iant@google.com>
2126
2127 * script-sections.cc (Sort_output_sections::script_compare):
2128 Rename from is_before, change return type.
2129 (Sort_output_sections::operator()): Adjust accordingly.
2130
ed16fd1b
ILT
21312011-03-11 Jeffrey Yasskin <jyasskin@google.com>
2132
2133 PR gold/12572
2134 * testsuite/odr_violation2.cc: Add comment to make all error line
2135 numbers double digits.
2136 * testsuite/debug_msg.sh: Adjust expected errors.
2137
71ff8986
ILT
21382011-03-09 Jeffrey Yasskin <jyasskin@google.com>
2139
2140 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
2141 but mark earlier ones as non-canonical
2142 (offset_to_iterator): Update search target and example
2143 (do_addr2line): Return extra lines in a vector*
2144 (format_file_lineno): Extract from do_addr2line
2145 (one_addr2line): Add vector* out-param
2146 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
2147 when a lineno entry appeared last for its instruction
2148 (Dwarf_line_info): Add vector* out-param
2149 * object.cc (Relocate_info): Pass NULL for the vector* out-param
2150 * symtab.cc (Odr_violation_compare): Include the lineno in the
2151 comparison again.
2152 (linenos_from_loc): New. Combine the canonical line for an
2153 address with its other lines.
2154 (True_if_intersect): New. Helper functor to make
2155 std::set_intersection a query.
2156 (detect_odr_violations): Compare sets of lines instead of just
2157 one line for each function. This became less deterministic, but
2158 has fewer false positives.
2159 * symtab.h: Declarations.
2160 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
2161 mix an optimized and non-optimized object in the same binary
2162 (odr_violation2.so): Same.
2163 * testsuite/Makefile.in: Regenerate from Makefile.am.
2164 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
2165 * testsuite/debug_msg.sh: Update line numbers and add
2166 assertions.
2167 * testsuite/odr_violation1.cc: Use OdrDerived, in a
2168 non-optimized context.
2169 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
2170 isn't inlined, and use OdrDerived in an optimized context.
2171 * testsuite/odr_header1.h: Defines OdrDerived, where
2172 optimization will change the
2173 first-instruction-in-the-destructor's file and line number.
2174 * testsuite/odr_header2.h: Defines OdrBase.
2175
a19fefdc
ILT
21762011-03-09 Ian Lance Taylor <iant@google.com>
2177
2178 * fileread.cc (File_read::clear_views): Don't delete the whole
2179 file view.
2180
ecb351e9
ILT
21812011-03-08 Ian Lance Taylor <iant@google.com>
2182
2183 PR gold/12525
2184 * fileread.cc: #include <climits>.
2185 (GOLD_IOV_MAX): Define.
2186 (File_read::read_multiple): Limit number of entries by iov_max.
2187 * fileread.h (class File_read): Always set max_readv_entries to
2188 128.
2189
b821d13c
ILT
21902011-03-07 Ian Lance Taylor <iant@google.com>
2191
2192 PR gold/12525
2193 * options.h (class General_options): Add -dy and -dn.
2194
89243142
CC
21952011-03-02 Cary Coutant <ccoutant@google.com>
2196
2197 * testsuite/script_test_9.t: Add TLS segment.
2198
d0773f31
ILT
21992011-03-02 Simon Baldwin <simonb@google.com>
2200
2201 * configure.ac: Add check for gnu_indirect_function support in
2202 the toolchain building binutils.
2203 * configure: Rebuild.
2204
badc8139
RÁE
22052010-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
2206
2207 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
2208 plugin only symbols.
2209 (Symbol_table::sized_finalize_symbol) Mark symbol only present
2210 in plugin files as not needed in the symbol table.
2211
4cf7a849
ST
22122011-02-11 Sriraman Tallam <tmsriram@google.com>
2213
2214 * output.cc (Output_section::add_input_section): Delay fill
2215 generation for section ordering.
2216
b578bd7d
ILT
22172011-02-09 Ian Lance Taylor <iant@google.com>
2218
2219 PR gold/12316
2220 * object.h (class Sized_relobj): Remove clear_local_symbols.
2221 * reloc.cc (Sized_relobj::do_relocate): Don't call
2222 clear_local_symbols.
2223
84ced98a
RÁE
22242010-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
2225
2226 * plugin.cc (is_visible_from_outside): Return true for symbols
2227 in the -u option.
2228
55382fb7
ILT
22292011-02-04 Jeffrey Yasskin <jyasskin@google.com>
2230
2231 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
2232 filename.
2233
4e271fff
ST
22342011-02-02 Sriraman Tallam <tmsriram@google.com>
2235
2236 * icf.h (is_section_foldable_candidate): Change type of parameter
2237 to std::string.
2238 * icf.cc (Icf::find_identical_sections): Change type of local variable
2239 section_name to be std::string.
2240 (is_function_ctor_or_dtor): Change type of parameter to std::string.
2241
d433c3ac
ILT
22422011-01-25 Ian Lance Taylor <iant@google.com>
2243
2244 * script.cc (script_add_extern): Rewrite to use
2245 add_symbol_reference.
2246
880473a6
DK
22472011-01-25 Doug Kwan <dougkwan@google.com>
2248
d433c3ac 2249 * icf.cc (get_section_contents): Always lock section's object.
880473a6 2250
f30f86fa
ILT
22512011-01-24 Ian Lance Taylor <iant@google.com>
2252
2253 * options.h (class General_options): Accept
2254 --no-detect-odr-violations.
2255
8e51a0b9
ILT
22562011-01-24 Ian Lance Taylor <iant@google.com>
2257
2258 * version.cc (version_string): Bump to 1.11.
2259
0f3b89d8
ILT
22602011-01-24 Ian Lance Taylor <iant@google.com>
2261
2262 * plugin.cc (class Plugin_rescan): Define new class.
2263 (Plugin_manager::claim_file): Set any_claimed_.
2264 (Plugin_manager::save_archive): New function.
2265 (Plugin_manager::save_input_group): New function.
2266 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
2267 necessary.
2268 (Plugin_manager::new_undefined_symbol): New function.
2269 (Plugin_manager::rescan): New function.
2270 (Plugin_manager::rescannable_defines): New function.
2271 (Plugin_manager::add_input_file): Set any_added_.
2272 * plugin.h (class Plugin_manager): define new fields rescannable_,
2273 undefined_symbols_, any_claimed_, and any_added_. Declare
2274 Plugin_rescan as friend. Declare new functions.
2275 (Plugin_manager::Rescannable): Define type.
2276 (Plugin_manager::Rescannable_list): Define type.
2277 (Plugin_manager::Undefined_symbol_list): Define type.
2278 (Plugin_manager::Plugin_manager): Initialize new fields.
2279 * archive.cc (Archive::defines_symbol): New function.
2280 (Add_archive_symbols::run): Pass archive to plugins if any.
2281 * archive.h (class Archive): Declare defines_symbol.
2282 * readsyms.cc (Input_group::~Input_group): New function.
2283 (Finish_group::run): Pass input_group to plugins if any.
2284 * readsyms.h (class Input_group): Declare destructor.
2285 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
2286 any.
2287
3bb951e5
ILT
22882011-01-10 Ian Lance Taylor <iant@google.com>
2289
2290 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
2291 section as relro.
2292 (Layout::set_segment_offsets): Reset increase_relro before calling
2293 set_section_addresses a second time.
2294
0aa45fac
CC
22952011-01-04 Cary Coutant <ccoutant@google.com>
2296
2297 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
2298 sections before NOBITS sections.
2299
0db46eb4
L
23002011-01-01 H.J. Lu <hongjiu.lu@intel.com>
2301
2302 * version.cc (print_version): Update copyright to 2011.
2303
829c9745
CC
23042010-12-23 Cary Coutant <ccoutant@google.com>
2305
2306 * output.h (Output_data_reloc::add_output_section): Pass OD instead
2307 of OS to this->add. Add OD parameter to second form of the function.
2308
7500420b
ILT
23092010-12-20 Ian Lance Taylor <iant@google.com>
2310
2311 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
2312 second of two consecutive entries with same offset.
2313
f8e9a930
RW
23142010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2315
2316 * testsuite/Makefile.am (ifuncmain2static_LDADD)
2317 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
2318 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
2319 to avoid unneeded links against $(LDADD).
2320 * testsuite/Makefile.in: Regenerate.
2321
2fbb4320
ILT
23222010-12-15 Ian Lance Taylor <iant@google.com>
2323
2324 PR gold/12324
2325 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
2326 for R_X86_64_32 and R_X86_64_PC32.
2327 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
2328 ver_matching_def_pic.o.
2329 (ver_matching_def_pic.o): New target.
2330
fedb228d
RW
23312010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2332
2333 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
2334 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
2335 Move definition before File_read::View member definitions.
2336 (File_read::View::~View): Initialize and hold lock before
2337 updating current_mapped_bytes.
2338
9b547ce6
RW
23392010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2340
2341 * dwarf_reader.cc: Remove outdated comment.
2342 * gold-threads.cc: Fix typo in error message.
2343 * archive.cc: Fix typos in comments.
2344 * archive.h: Likewise.
2345 * arm-reloc-property.cc: Likewise.
2346 * arm-reloc-property.h: Likewise.
2347 * arm-reloc.def: Likewise.
2348 * arm.cc: Likewise.
2349 * attributes.h: Likewise.
2350 * cref.cc: Likewise.
2351 * ehframe.cc: Likewise.
2352 * fileread.h: Likewise.
2353 * gold.h: Likewise.
2354 * i386.cc: Likewise.
2355 * icf.cc: Likewise.
2356 * incremental.h: Likewise.
2357 * int_encoding.cc: Likewise.
2358 * layout.h: Likewise.
2359 * main.cc: Likewise.
2360 * merge.h: Likewise.
2361 * object.cc: Likewise.
2362 * object.h: Likewise.
2363 * options.cc: Likewise.
2364 * readsyms.cc: Likewise.
2365 * reduced_debug_output.cc: Likewise.
2366 * reloc.cc: Likewise.
2367 * script-sections.cc: Likewise.
2368 * sparc.cc: Likewise.
2369 * symtab.h: Likewise.
2370 * target-reloc.h: Likewise.
2371 * target.cc: Likewise.
2372 * target.h: Likewise.
2373 * timer.cc: Likewise.
2374 * timer.h: Likewise.
2375 * x86_64.cc: Likewise.
2376
83e17bd5
CC
23772010-12-09 Cary Coutant <ccoutant@google.com>
2378
2379 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
2380 stack.
2381 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
2382 parameter; change all callers.
2383 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
2384 * options.h (warn_execstack): New option.
2385
017257f8
DK
23862010-12-07 Doug Kwan <dougkwan@google.com>
2387
2388 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
2389 like function call relocations.
2390
c20cbc06
ILT
23912010-12-07 Ian Lance Taylor <iant@google.com>
2392
2393 * archive.cc (Archive::get_elf_object_for_member): Permit
2394 punconfigured to be NULL.
2395 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
2396 (Archive::include_member): Pass NULL to get_elf_object_for_member
2397 if we searched for the archive and this is the first included
2398 object.
2399
4dbfafcc
ILT
24002010-12-01 Ian Lance Taylor <iant@google.com>
2401
2402 * dwarf_reader.h (class Sized_dwarf_line_info): Add
2403 track_relocs_type_ field.
2404 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
2405 Set track_relocs_type_.
2406 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
2407 contents when using RELA relocs.
2408 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
2409 reloc_map_.
2410 * reloc.cc (Track_relocs::next_addend): New function.
2411 * reloc.h (class Track_relocs): Declare next_addend.
2412
e5e19edd
ILT
24132010-12-01 Ian Lance Taylor <iant@google.com>
2414
2415 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
2416 virtual destructor.
2417
9a5ce24c
ILT
24182010-12-01 Ian Lance Taylor <iant@google.com>
2419
2420 * README: Update compilers known to work and fail.
2421
c7791212
NC
24222010-11-23 Matthias Klose <doko@ubuntu.com>
2423
2424 * configure.in: For --enable-gold, handle value `default' instead of
2425 `both*'. Always install ld as ld.bfd, install as ld if gold is
2426 not the default.
2427 * configure: Regenerate.
2428
0ad220c9
DK
24292010-11-18 Doug Kwan <dougkwan@google.com>
2430
2431 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
2432 and right_alignment to be zero. Store result alignment only if it is
2433 greater than existing alignment.
2434
ab8056e0
CC
24352010-11-16 Cary Coutant <ccoutant@google.com>
2436
2437 PR gold/12220
2438 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
2439 Check for ".zdebug_line".
2440
fd064a5b
CC
24412010-11-16 Doug Kwan <dougkwan@google.com>
2442 Cary Coutant <ccoutant@google.com>
2443
2444 * output.h (Output_segment::set_section_addresses): Pass increase_relro
2445 by reference; adjust all callers.
2446 * output.cc (Output_segment::set_section_addresses): Adjust references
2447 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
2448 list is empty.
2449 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
2450 end at page boundary.
2451
6fc6ea19
CC
24522010-11-16 Cary Coutant <ccoutant@google.com>
2453
2454 PR gold/12220
2455 * layout.cc (Layout::choose_output_section): Transform names of
2456 compressed sections even when using a script with a SECTIONS clause.
2457 (Layout::output_section_name): Remove code to transform
2458 compressed debug section names.
2459 * output.cc (Output_section::add_input_section): Use uncompressed
2460 section size when tracking input sections.
2461
95a2c8d6
RS
24622010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
2463
2464 * symtab.h (Symbol::NON_PIC_REF): Remove.
2465 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
2466 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
2467 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
2468 (Symbol::use_plt_offset): Take a flags argument and pass it
2469 directly to needs_dynamic_reloc. Restrict check for undefined
2470 weak symbols to function calls.
2471 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
2472 (Target_arm::Scan::global): Use it.
2473 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
2474 (Target_arm::Relocate::relocate): Likewise.
2475 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
2476 parameter with an r_type parameter. Use get_reference_flags
2477 to get the flags.
2478 (Target_arm::Relocate::relocate): Update accordingly.
2479 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
2480 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
2481 (Target_i386::Scan::global): Likewise.
2482 (Target_i386::Relocate::relocate): Likewise.
2483 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
2484 parameter with an r_type parameter. Use get_reference_flags
2485 to get the flags.
2486 (Target_i386::Relocate::relocate): Update accordingly.
2487 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
2488 (Target_powerpc::Scan::global): Use it.
2489 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
2490 (Target_powerpc::Relocate::relocate): Likewise.
2491 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
2492 (Target_sparc::Scan::global): Use it.
2493 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
2494 (Target_sparc::Relocate::relocate): Likewise.
2495 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
2496 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
2497 (Target_x86_64::Scan::global): Likewise.
2498 (Target_x86_64::Relocate::relocate): Likewise.
2499
f625ae50
DK
25002010-11-08 Doug Kwan <dougkwan@google.com>
2501 Cary Coutant <ccoutant@google.com>
2502
2503 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
2504 (Arm_exidx_merge_section::section_contents_): New data member.
2505 (Arm_input_section::Arm_input_section): Initialize original_contents_.
2506 (Arm_input_section::~Arm_input_section): De-allocate memory.
2507 (Arm_input_section::original_contents_): New data member.
2508 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
2509 in parameters instead of calling Object::section_contents without
2510 locking.
2511 (Arm_output_section::group_section): New parameter TASK. Pass it
2512 to callees that need locking objects.
2513 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
2514 to lock EXIDX input sections. Fix a formatting issue. Call
2515 Arm_exidx_merged_section::build_contents to create merged section
2516 contents.
2517 (Arm_output_section::create_stub_group): New parameter TASK. Use it
2518 to lock object of stub table owner.
2519 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
2520 TEXT_SIZE to initialize data member TEXT_SIZE_.
2521 (Arm_exidx_input_section::addralign): Fix typo in comment.
2522 (Arm_exidx_input_section::text_size): New method.
2523 (Target_arm::do_relax): New parameter TASK. Pass it to callees
2524 that require locking objects. Lock objects before scanning for stubs
2525 and updating local symbols.
2526 (Arm_input_section<big_endian>::init): Copy contents of original
2527 input section.
2528 (Arm_input_section<big_endian>::do_write): Use saved contents of
2529 original input section instead of calling Object::section_contents
2530 without locking.
2531 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
2532 size without calling Object::section_size().
2533 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
2534 for size. Allocate a buffer for merged EXIDX entries.
2535 (Arm_exidx_merged_section::build_contents): New method.
2536 (Arm_exidx_merged_section::do_write): Move merge section contents
2537 building code to Arm_exidx_merged_section::build_contetns. Write
2538 out contetns in buffer instead of building it on the fly.
2539 (Arm_relobj::make_exidx_input_section): Also pass text section size
2540 to Arm_exidx_input_section constructor.
2541 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
2542 (Arm_dynobj::do_read_symbols): Fix memory leak.
2543 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
2544 * target.h: (class Task): Add forward declaration.
2545 (Target::relax): Add new parameter TASK and pass it to
2546 Target::do_relax().
2547 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
2548
5f9bcf58
CC
25492010-11-05 Cary Coutant <ccoutant@google.com>
2550
2551 PR gold/10708
2552 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
2553 object when reading from the file.
2554 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
2555 second layout pass.
2556 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
2557 when reading section contents.
2558 (get_section_contents): Likewise.
2559 (icf::find_identical_sections): Likewise.
2560 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
2561 object when reading from the file.
2562 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
2563 the object when doing deferred section layout.
2564
e597fa08
NC
25652010-11-03 Nick Clifton <nickc@redhat.com>
2566
2567 PR gold/12001
2568 * script.h (class Symbol_assignment: name): New member. Returns
2569 the name of the symbol.
2570 * scrfipt.cc (Script_options::is_pending_assignment): New member.
2571 Returns true if the given symbol name is on the list of
2572 assignments wating to be processed.
2573 * archive.cc (should_incldue_member): If the symbol is undefined,
2574 check to see if it is on the list of symbols pending assignment.
2575
3f9a3278
ILT
25762010-11-03 Ryan Mansfield <rmansfield@qnx.com>
2577
2578 * script-sections.cc (Script_sections::find_memory_region): Check
2579 for a NULL output section pointer.
2580
d06fb4d1
DK
25812010-10-29 Doug Kwan <dougkwan@google.com>
2582
2583 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
2584 Output_section::add_relaxed_input_section.
2585 * output.cc (Output_section::add_relaxed_input_section): Add new
2586 arguments LAYOUT and NAME. Set section order index.
2587 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
2588 Copy section order index.
2589 * output.h (Output_section::add_relaxed_input_section): Add new
2590 arguments LAYOUT and NAME.
2591
90e24de5
ILT
25922010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2593
2594 * testsuite/Makefile.am: Move gcctestdir/ld rule to
2595 NATIVE_OR_CROSS_LINKER.
2596 * testsuite/Makefile.in: Regenerate.
2597
c9484ea5
DK
25982010-10-20 Doug Kwan <dougkwan@google.com>
2599
2600 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
2601 without SHF_LINK_ORDER flags.
2602 * layout.cc (Layout::choose_output_section): Do not filter
2603 SHF_LINK_ORDER flag in a relocatable link.
2604
5bc2f5be
CC
26052010-10-17 Cary Coutant <ccoutant@google.com>
2606
2607 * output.h (Output_segment::set_section_addresses): Change function
2608 signature. Update all callers.
2609 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
2610 sections.
2611 (Output_segment::set_section_addresses): Align after last TLS
2612 section. Add padding before last relro section instead of after.
2613
0c91cf04
DK
26142010-10-17 Doug Kwan <dougkwan@google.com>
2615
2616 * gold/arm.cc (Target_arm::got_section): Use correct order and set
2617 GOT output section to be writable.
2618
8c21d9d3
CC
26192010-10-14 Cary Coutant <ccoutant@google.com>
2620
2621 * debug.h (DEBUG_INCREMENTAL): New flag.
2622 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
2623 * gold.cc (queue_initial_tasks): Check parameters for incremental link
2624 mode.
2625 * incremental.cc (report_command_line): Ignore all forms of
2626 --incremental.
2627 * layout.cc (Layout::Layout): Check parameters for incremental link
2628 mode.
2629 * options.cc (General_options::parse_incremental): New function.
2630 (General_options::parse_no_incremental): New function.
2631 (General_options::parse_incremental_full): New function.
2632 (General_options::parse_incremental_update): New function.
2633 (General_options::incremental_mode_): New data member.
2634 (General_options::finalize): Check incremental_mode_.
2635 * options.h (General_options): Update help text for --incremental.
2636 Add --no-incremental, --incremental-full, --incremental-update.
2637 (General_options::Incremental_mode): New enum type.
2638 (General_options::incremental_mode): New function.
2639 (General_options::incremental_mode_): New data member.
2640 * parameters.cc (Parameters::incremental_mode_): New data member.
2641 (Parameters::set_options): Set incremental_mode_.
2642 (Parameters::set_incremental_full): New function.
2643 (Parameters::incremental): New function.
2644 (Parameters::incremental_update): New function.
2645 (set_parameters_incremental_full): New function.
2646 * parameters.h (Parameters::set_incremental_full): New function.
2647 (Parameters::incremental): New function.
2648 (Parameters::incremental_update): New function.
2649 (Parameters::incremental_mode_): New data member.
2650 (set_parameters_incremental_full): New function.
2651 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
2652 incremental link mode.
2653 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
2654 (Sized_relobj::do_relocate_sections): Likewise.
2655 * testsuite/Makefile.am (incremental_test): Use --incremental-full
2656 option.
2657 * testsuite/Makefile.in: Regenerate.
2658 * testsuite/incremental_test.sh: Filter all forms of --incremental.
2659
bb32aa18 26602010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
2661
2662 * script-sections.h (class Script_sections): Make
2663 Sections_elements typedef public.
2664 * script-sections.cc (class Sort_output_sections): Add elements_
2665 field. Add constructor which sets it; change all callers.
2666 (Sort_output_sections::is_before): New function.
2667 (Sort_output_sections::operator()): Call is_before.
2668 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
2669 conditional.
2670 * testsuite/script_test_10.sh: New test. Test script section
2671 order.
2672 * testsuite/script_test_10.t: Likewise.
2673 * testsuite/script_test_10.s: Likewise.
2674 * testsuite/Makefile.am: Wrap the cross linker tests and the
2675 common tests into NATIVE_OR_CROSS_LINKER.
2676 (check_SCRIPTS): Add script_test_10.sh.
2677 (check_DATA): Add script_test_10.stdout.
2678 (script_test_10.o, script_test_10): New targets.
2679 (script_test_10.stdout): New target.
2680 * configure, testsuite/Makefile.in: Regenerate.
2681
3cef7179
ILT
26822010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2683
2684 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
2685 error for the deprecated relocations.
2686 (Target_arm::Scan::global): Likewise.
2687 (Target_arm::Relocate::relocate): Likewise.
2688
7411e9a8
RS
26892010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
2690
2691 * fileread.cc (Input_file::find_file): Initialize *found_name
2692 and *namep when using the fallback search for case 4.
2693
6a9da32a
CC
26942010-10-11 Cary Coutant <ccoutant@google.com>
2695
2696 * options.h (class General_options): Redefine -z lazy as an alias for
2697 the negation of -z now.
2698
ac897c20
ILT
26992010-10-11 Ian Lance Taylor <iant@google.com>
2700
2701 * resolve.cc (symbol_to_bits): Report the value of the unsupported
2702 binding.
2703
ea5cae92
NC
27042010-10-06 Nick Clifton <nickc@redhat.com>
2705
2706 * script-sections.cc(class Memory_region): Remove
2707 current_lma_offset_ field. Rename current_vma_offset_ to
2708 current_offset_. Add last_section_ field.
2709 (Memory_region::get_current_vma_address): Rename to
2710 get_current_address.
2711 (Memory_region::get_current_lma_address): Delete.
2712 (Memory_region::increment_vma_offset): Rename to
2713 increment_offset.
2714 (Memory_region::increment_lma_offset): Delete.
2715 (Memory_region::attributes_compatible): New method. Returns
2716 true if the provided section is compatible with the region.
2717 (Memory_region::get_last_section): New method. Returns the last
2718 section to use the region.
2719 (Memory_region::set_last_section): New method. Stores the last
2720 section to use the region.
2721 (Script_sections::block_in_region): New method. Returns true if
2722 a block of memory is contained within a region.
2723 (Script_sections::find_memory_region): New method. Locates a
2724 memory region to be used to set a VMA or LMA address.
2725 (Output_section_definition::set_section_addresses): Add code to
2726 check for addresses set by memory regions.
2727 (Output_segment::set_section_addresses): Remove memory region
2728 walking code.
2729 (Script_sections::create_segment): Add a warning if a header
2730 segment is created outside of any region.
2731 * script-sections.h (class Script_sections): Add prototypes for
2732 find_memory_region and block_in_region methods.
2733 * testsuite/memory_test.s: Use .long instead of .word.
2734 * testsuite/memory_test.t: Add some more output sections.
2735 * testsuite/memory_test.sh: Update expected output.
2736
a9bfd952
DK
27372010-10-02 Doug Kwan <dougkwan@google.com>
2738
2739 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
2740 defintion to symtab.h
2741 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
2742 declaration to defintion.
2743
bacff3ab
NC
27442010-10-01 Nick Clifton <nickc@redhat.com>
2745
2746 * expression.cc (eval): Replace dummy argument with NULL.
2747 (eval_maybe_dot): Check for a NULL result section pointer.
2748 (Symbol_expression::value): Likewise.
2749 (Dot_expression::value): Likewise.
2750 (BINARY_EXPRESSION): Likewise.
2751 (Max_expression::value): Likewise.
2752 (Min_expression::value): Likewise.
2753 (Absolute_expression::value): Likewise.
2754 (Addr_expression::value_from_output_section): Likewise.
2755 (Loaddddr_expression::value_from_output_section): Likewise.
2756 (Segment_start_expression::value): Likewise.
2757 * script-sections.cc
2758 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
2759 argument with NULL.
2760 (Sections_elememt_dot_assignment::set_section_addresses):
2761 Likewise.
2762 (Output_data_expression::do_write_to_buffer): Likewise.
2763 (Output_section_definition::finalize_symbols): Likewise.
2764 (Output_section_definition::set_section_addresses): Likewise.
2765
f81bc8b5
DK
27662010-09-30 Doug Kwan <dougkwan@google.com>
2767
2768 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
2769
c95e9f27
ST
27702010-09-28 Sriraman Tallam <tmsriram@google.com>
2771
2772 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 2773 function.
c95e9f27
ST
2774 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
2775 virtual function.
2776 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
2777 virtual function.
2778 * icf.cc (get_section_contents): Inline merge sections only when
2779 target allows it.
2780
3cac54d2
RW
27812010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2782
2783 * configure: Regenerate.
2784
2904037a
ILT
27852010-09-17 Ian Lance Taylor <iant@google.com>
2786
2787 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
2788 * testsuite/Makefile.am (memory_test.o): New target.
2789 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
2790 memory_test.t.
2791 * testsuite/Makefile.in: Rebuild.
2904037a 2792
bca7fb63
DK
27932010-09-17 Doug Kwan <dougkwan@google.com>
2794
2795 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
2796 defintion if relocation uses GOT entries of the symbol.
2797 * testsuite/icf_safe_test.sh: Fix test.
2798 * testsuite/icf_safe_so_test.sh: Fix test.
2799
4ef28648
CC
28002010-09-16 Cary Coutant <ccoutant@google.com>
2801
2802 * script_sections.cc (class Memory_region): Remove "NULL" from
2803 vector initializations.
2804
793990de
CC
28052010-09-15 Cary Coutant <ccoutant@google.com>
2806
2807 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
2808 Resolve forwarding symbols.
2809
81e015e2
DK
28102010-09-15 Doug Kwan <dougkwan@google.com>
2811
2812 * gold/testsuite/script_test_3.t: Add ARM special sections.
2813 * gold/testsuite/script_test_4.t: Same.
2814 * gold/testsuite/script_test_5.t: Same.
2815 * gold/testsuite/script_test_6.t: Same.
2816 * gold/testsuite/script_test_7.t: Same.
2817 * gold/testsuite/script_test_7.t: Same.
2818 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
2819
36171d64
CC
28202010-09-14 Cary Coutant <ccoutant@google.com>
2821
2822 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
2823 (Target_x86_64::Relocate::relocate_tls): Replace check for
2824 saw_tls_block_reloc_ with test for executable section.
2825
d89051bd
CC
28262010-09-12 Cary Coutant <ccoutant@google.com>
2827
2828 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
2829 position-independent executables to shared libraries need dynamic
2830 relocations.
2831 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
2832 position-independent executables.
2833 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
2834 * testsuite/Makefile.in: Regenerate.
2835
fca41f0f
NC
28362010-09-10 Nick Clifton <nickc@redhat.com>
2837
2838 PR gold/11997
2839 * testsuite/memory_test.t: Discard any sections that are not
2840 needed.
2841
6695e4b3
L
28422010-09-09 H.J. Lu <hongjiu.lu@intel.com>
2843
2844 PR gold/11996
2845 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
2846 "This::" to work around a bug in gcc 4.2.
2847
2848 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
2849
0f72bf6f
RÁE
28502010-09-09 Rafael Espindola <espindola@google.com>
2851
2852 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
2853 sections with different PF_X flags in the same segment.
2854 (Layout::find_first_load_seg): Search all segments to find the first
2855 one.
2856 * options.h (rosegment): New.
2857
28582010-09-08 Rafael Espindola <espindola@google.com>
a6577478 2859
05a79166 2860 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 2861
aa98ff75
DK
28622010-09-08 Doug Kwan <dougkwan@google.com>
2863
2864 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
2865 (Arm_relobj::do_relocate_sections): Add new parameter for output
2866 file to match the parent.
2867 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
2868 of local symbols instead of input values. Update code to track
2869 changes in gold::relocate_section.
2870 * object.cc (Sized_relobj::compute_final_local_value): New methods.
2871 (Sized_relobj::compute_final_local_value_internal): New methods.
2872 (Sized_relobj::do_finalize_local_symbols): Move code from loop
2873 body into private version of Sized_relobj::compute_final_local_value.
2874 Call the inline method.
2875 * object.h (Symbol_value::Symbol_value): Define destructor. Free
2876 merged symbol value if there is one.
2877 (Symbol_value::has_output_value): New method defintiion.
2878 (Sized_relobj::Compute_final_local_value_status): New enum type.
2879 (Sized_relobj::compute_final_local_value): New methods.
2880 (Sized_relobj::compute_final_local_value_internal): New methods.
2881 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
2882 and arm_cortex_a8.sh.
2883 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
2884 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
2885 New tests.
2886 * Makefile.in: Regenerate.
2887 * testsuite/arm_bl_out_of_range.s: Update test.
2888 * testsuite/thumb_bl_out_of_range.s: Ditto.
2889 * testsuite/thumb_blx_out_of_range.s: Ditto.
2890 * testsuite/arm_branch_out_of_range.sh: New file.
2891 * testsuite/arm_cortex_a8.sh: Ditto.
2892 * testsuite/arm_cortex_a8_b.s: Ditto.
2893 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
2894 * testsuite/arm_cortex_a8_b_local.s: Ditto.
2895 * testsuite/arm_cortex_a8_bl.s: Ditto.
2896 * testsuite/arm_cortex_a8_blx.s: Ditto.
2897 * testsuite/arm_cortex_a8_local.s: Ditto.
2898 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
2899 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
2900
05a79166
L
29012010-09-08 Rafael Espindola <espindola@google.com>
2902
2903 * Makefile.am (memory_test.stdout): Run readelf with -W.
2904 * Makefile.in: Regenerate.
2905 * testsuite/memory_test.sh: Make the regexps accept both 32 and
2906 64 bit output.
2907
33dbc701
RÁE
29082010-09-08 Rafael Espindola <espindola@google.com>
2909
2910 * script-sections.cc (Script_sections::add_memory_region): Convert
2911 field precision to int.
2912 * script.cc (script_set_section_region, script_set_section_region):
2913 Convert field precision to int.
2914
731ca54a
RÁE
29152010-09-08 Rafael Espindola <espindola@google.com>
2916
2917 * arm.cc (do_finalize_sections): Create the __exidx_start and
2918 __exdix_end symbols even when the section is missing.
2919
7f8cd844
NC
29202010-09-08 Nick Clifton <nickc@redhat.com>
2921
2922 * README: Remove claim that MEMORY is not supported.
2923 * expression.cc (script_exp_function_origin)
2924 (script_exp_function_length): Move from here to ...
2925 * script.cc: ... here.
2926 (script_set_section_region, script_add_memory)
2927 (script_parse_memory_attr, script_include_directive): New
2928 functions.
2929 * script-sections.cc
2930 (class Memory_region): New class.
2931 (class Output_section_definition): Add set_memory_region,
2932 set_section_vma, set_section_lma and get_section_name methods.
2933 (class Script_Sections): Add add_memory_region,
2934 find_memory_region, find_memory_region_origin,
2935 find_memory_region_length and set_memory_region methods.
2936 Have set_section_addresses method walk the list of set memory
2937 regions.
2938 Extend the print methos to display memory regions.
2939 * script-sections.h: Add prototypes for new methods.
2940 Add enum for MEMORY region attributes.
2941 * yyscript.y: Add support for parsing MEMORY regions.
2942 * script-c.h: Add prototypes for new functions.
2943 * testsuite/Makefile.am: Add test of MEMORY region functionality.
2944 * testsuite/Makefile.in: Regenerate.
2945 * testsuite/memory_test.sh: New script.
2946 * testsuite/memory_test.s: New assembler source file.
2947 * testsuite/memory_test.t: New linker script.
2948
a4649286
DK
29492010-08-27 Doug Kwan <dougkwan@google.com>
2950
2951 * gold/resolve.cc (Symbol_table::should_override): Let a weak
2952 reference override an existing dynamic weak reference.
2953 * testsuite/Makefile.am: Add new test dyn_weak_ref.
2954 * testsuite/Makefile.in: Regenerate.
2955 * testsuite/dyn_weak_ref.sh: New file.
2956 * testsuite/dyn_weak_ref_1.c: Ditto.
2957 * testsuite/dyn_weak_ref_2.c: Ditto.
2958
b56648ad
ILT
29592010-08-27 Ian Lance Taylor <iant@google.com>
2960
2961 * incremental.h (class Incremental_input_entry): Add virtual
2962 destructor.
2963
809313cb
ILT
29642010-08-27 Ian Lance Taylor <iant@google.com>
2965
2966 * testsuite/start_lib_test_3.c: Mark t3 as used.
2967
11e32464
NC
29682010-08-27 Nick Clifton <nickc@redhat.com>
2969
2970 * options.cc (version_script): Fix small typo in previous
2971 whitespace tidyup.
2972
ca09d69a
NC
29732010-08-25 Nick Clifton <nickc@redhat.com>
2974
2975 * archive.cc: Formatting fixes: Remove whitespace between
2976 typename and following asterisk. Remove whitespace between
2977 function name and opening parenthesis.
2978 * archive.h: Likewise.
2979 * arm.cc: Likewise.
2980 * attributes.cc: Likewise.
2981 * attributes.h: Likewise.
2982 * common.cc: Likewise.
2983 * copy-relocs.cc: Likewise.
2984 * dirsearch.h: Likewise.
2985 * dynobj.cc: Likewise.
2986 * ehframe.cc: Likewise.
2987 * ehframe.h: Likewise.
2988 * expression.cc: Likewise.
2989 * fileread.cc: Likewise.
2990 * fileread.h: Likewise.
2991 * gc.h: Likewise.
2992 * gold-threads.cc: Likewise.
2993 * gold.cc: Likewise.
2994 * i386.cc: Likewise.
2995 * icf.h: Likewise.
2996 * incremental-dump.cc: Likewise.
2997 * incremental.cc: Likewise.
2998 * layout.cc: Likewise.
2999 * layout.h: Likewise.
3000 * main.cc: Likewise.
3001 * merge.cc: Likewise.
3002 * merge.h: Likewise.
3003 * object.cc: Likewise.
3004 * object.h: Likewise.
3005 * options.cc: Likewise.
3006 * options.h: Likewise.
3007 * output.cc: Likewise.
3008 * output.h: Likewise.
3009 * plugin.cc: Likewise.
3010 * plugin.h: Likewise.
3011 * powerpc.cc: Likewise.
3012 * reloc.cc: Likewise.
3013 * script-c.h: Likewise.
3014 * script-sections.cc: Likewise.
3015 * script.cc: Likewise.
3016 * stringpool.cc: Likewise.
3017 * symtab.cc: Likewise.
3018 * symtab.h: Likewise.
3019 * target.cc: Likewise.
3020 * timer.cc: Likewise.
3021 * timer.h: Likewise.
3022 * version.cc: Likewise.
3023 * x86_64.cc: Likewise.
3024
b8fa8750
NC
30252010-08-24 Nick Clifton <nickc@redhat.com>
3026
3027 PR 11899
3028 * layout.cc (segment_precedes): Sort segments by their physical
3029 addresses, if they have been set.
3030
9919d93b
CC
30312010-08-23 Cary Coutant <ccoutant@google.com>
3032
3033 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
3034 symbols data.
3035 (Lib_group::include_member): Unlock object after deleting its
3036 symbols data.
3037 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
3038 the bug fixed here.
3039
97b4be1c
CC
30402010-08-19 Neil Vachharajani <nvachhar@google.com>
3041 Cary Coutant <ccoutant@google.com>
3042
3043 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
3044 constructor, and set_blocker.
3045 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
3046 readsyms_blocker_.
3047 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
3048 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
3049 * testsuite/Makefile.am (start_lib_test): New test case.
3050 * testsuite/Makefile.in: Regenerate.
3051 * testsuite/start_lib_test_main.c: New file.
3052 * testsuite/start_lib_test_1.c: New file.
3053 * testsuite/start_lib_test_2.c: New file.
3054 * testsuite/start_lib_test_3.c: New file.
3055
dd0b1884
ILT
30562010-08-19 Ian Lance Taylor <iant@google.com>
3057
3058 * Makefile.in: Rebuild with automake 1.11.1.
3059 * aclocal.m4: Likewise.
3060 * testsuite/Makefile.in: Likewise.
3061
7223e9ca
ILT
30622010-08-19 Ian Lance Taylor <iant@google.com>
3063
3064 PR 10893
3065 * i386.cc (class Output_data_plt_i386): Update declarations.
3066 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
3067 local_ifuncs_ fields.
3068 (Target_i386::do_plt_section_for_global): New function.
3069 (Target_i386::do_plt_section_for_local): New function.
3070 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
3071 parameter; change all callers. Initialize global_ifuncs_ and
3072 local_ifuncs_. If doing a static link define __rel_iplt_start and
3073 __rel_iplt_end.
3074 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
3075 (Output_data_plt_i386::add_local_ifunc_entry): New function.
3076 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
3077 symbols.
3078 (Target_i386::make_plt_section): New function, broken out of
3079 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
3080 (Target_i386::make_plt_entry): Call make_plt_section.
3081 (Target_i386::make_local_ifunc_plt_entry): New function.
3082 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
3083 (Target_i386::Scan::local): Handle IFUNC symbols. Add
3084 R_386_IRELATIVE to switch.
3085 (Target_i386::Scan::global): Likewise.
3086 (Target_i386::Relocate::relocate): Likewise.
3087 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
3088 switch.
3089 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
3090 (Target_x86_64::do_plt_section_for_global): New function.
3091 (Target_x86_64::do_plt_section_for_local): New function.
3092 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
3093 parameter; change all callers. If doing a static link define
3094 __rela_iplt_start and __rela_iplt_end.
3095 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
3096 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
3097 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
3098 to point to .plt.
3099 (Target_x86_64::make_local_ifunc_plt_entry): New function.
3100 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
3101 switch.
3102 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
3103 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
3104 R_X86_64_IRELATIVE to switch.
3105 (Target_x86_64::Scan::global): Likewise.
3106 (Target_x86_64::Relocate::relocate): Likewise.
3107 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
3108 switch.
3109 * target.h (class Target): Add plt_section_for_global and
3110 plt_section_for_local functions. Add do_plt_section_for_global
3111 and do_plt_section_for_local virtual functions.
3112 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
3113 clarifying comments.
3114 (Symbol::use_plt_offset): Handle IFUNC symbol.
3115 * object.cc (Sized_relobj::Sized_relobj): Initialize
3116 local_plt_offsets_.
3117 (Sized_relobj::local_has_plt_offset): New function.
3118 (Sized_relobj::local_plt_offset): New function.
3119 (Sized_relobj::set_local_plt_offset): New function.
3120 (Sized_relobj::do_count): Handle IFUNC symbol.
3121 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
3122 a bit away from input_shndx_ field. Add set_is_func_symbol and
3123 is_ifunc_symbol functions.
3124 (class Sized_relobj): Update declarations. Remove Tls_got_entry
3125 and Local_tls_got_offsets. Define Local_plt_offsets. Add
3126 local_plt_offsets_ field.
3127 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
3128 * output.h (class Output_section_data): Add non-const
3129 output_section function.
3130 (class Output_data_got): Update declarations.
3131 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
3132 Add use_plt_offset parameter to global and local constructors.
3133 Change all callers. Change local_sym_index_ field to 31 bits.
3134 Change GSYM_CODE and CONSTANT_CODE accordingly.
3135 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
3136 doing a static link don't set sh_link field.
3137 (Output_data_got::Got_entry::write): Use PLT offset if
3138 appropriate.
3139 (Output_data_got::add_global_plt): New function.
3140 (Output_data_got::add_local_plt): New function.
3141 * target-reloc.h (relocate_section): Handle IFUNC symbol.
3142 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
3143 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
3144 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
3145 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
3146 IFUNC conditional.
3147 * testsuite/ifunc-sel.h: New file.
3148 * testsuite/ifuncmain1.c: New file.
3149 * testsuite/ifuncmain1vis.c: New file.
3150 * testsuite/ifuncmod1.c: New file.
3151 * testsuite/ifuncdep2.c: New file.
3152 * testsuite/ifuncmain2.c: New file.
3153 * testsuite/ifuncmain3.c: New file.
3154 * testsuite/ifuncmod3.c: New file.
3155 * testsuite/ifuncmain4.c: New file.
3156 * testsuite/ifuncmain5.c: New file.
3157 * testsuite/ifuncmod5.c: New file.
3158 * testsuite/ifuncmain6pie.c: New file.
3159 * testsuite/ifuncmod6.c: New file.
3160 * testsuite/ifuncmain7.c: New file.
3161 * configure, testsuite/Makefile.in: Rebuild.
3162
56f75c03
ILT
31632010-08-18 Ian Lance Taylor <iant@google.com>
3164
3165 * incremental.cc
3166 (Output_section_incremental_inputs::write_input_files): Add cast
3167 to avoid signed/unsigned comparison warning.
3168 (Output_section_incremental_inputs::write_info_blocks): Likewise.
3169
55455f89
CC
31702010-08-12 Cary Coutant <ccoutant@google.com>
3171
3172 * common.cc (Sort_commons::operator()): Remove unnecessary code.
3173
e2054bcb
ILT
31742010-08-13 Ian Lance Taylor <iant@google.com>
3175
3176 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
3177
74f67560
DK
31782010-08-12 Cary Coutant <ccoutant@google.com>
3179 Doug Kwan <dougkwan@google.com>
3180
3181 * resolve.cc (Symbol_table::should_override): When a weak dynamic
3182 defintion overrides non-weak undef, remember that the original undef
3183 is not weak.
3184 * symtab.cc (Symbol_table::sized_write_global): For undef without
3185 an original weak binding, set binding to global in output.
3186 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
3187 * testsuite/Makefile.in: Regenerate.
3188 * testsuite/strong_ref_weak_def.sh: New file.
3189 * testsuite/strong_ref_weak_def_1.c: Ditto.
3190 * testsuite/strong_ref_weak_def_2.c: Ditto.
3191
d1238d12
CC
31922010-08-12 Cary Coutant <ccoutant@google.com>
3193
3194 * testsuite/incremental_test.sh: Rewrite.
3195 * testsuite/incremental_test_1.c: Rewrite.
3196 * testsuite/incremental_test_2.c: Rewrite.
3197
0e70b911
CC
31982010-08-12 Cary Coutant <ccoutant@google.com>
3199
3200 * arm.cc (Target_arm::got_size): Add const.
3201 (Target_arm::got_entry_count): New function.
3202 (Target_arm::plt_entry_count): New function.
3203 (Target_arm::first_plt_entry_offset): New function.
3204 (Target_arm::plt_entry_size): New function.
3205 (Output_data_plt_arm::entry_count): New function.
3206 (Output_data_plt_arm::first_plt_entry_offset): New function.
3207 (Output_data_plt_arm::get_plt_entry_size): New function.
3208 * i386.cc (Target_i386::got_size): Add const.
3209 (Target_i386::got_entry_count): New function.
3210 (Target_i386::plt_entry_count): New function.
3211 (Target_i386::first_plt_entry_offset): New function.
3212 (Target_i386::plt_entry_size): New function.
3213 (Output_data_plt_i386::entry_count): New function.
3214 (Output_data_plt_i386::first_plt_entry_offset): New function.
3215 (Output_data_plt_i386::get_plt_entry_size): New function.
3216 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
3217 find_incremental_inputs_sections. Dump incremental_got_plt section.
3218 * incremental.cc: Include target.h.
3219 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
3220 parameter. Adjust all callers. Find incremental_got_plt section.
3221 (Incremental_inputs::create_data_sections): Create incremental_got_plt
3222 section.
3223 (Output_section_incremental_inputs::set_final_data_size): Calculate
3224 size of incremental_got_plt section.
3225 (Output_section_incremental_inputs::do_write): Write the
3226 incremental_got_plt section.
3227 (Got_plt_view_info): New struct.
3228 (Local_got_offset_visitor): New class.
3229 (Global_got_offset_visitor): New class.
3230 (Global_symbol_visitor_got_plt): New class.
3231 (Output_section_incremental_inputs::write_got_plt): New function.
3232 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
3233 Add parameter. Adjust all callers.
3234 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
3235 (Incremental_inputs::got_plt_section): New function.
3236 (Incremental_inputs::got_plt_section_): New data member.
3237 (Incremental_got_plt_reader): New class.
3238 * layout.cc (Layout::create_incremental_info_sections): Add the
3239 incremental_got_plt section.
3240 * object.h (Got_offset_list::get_list): New function.
3241 (Got offset_list::for_all_got_offsets): New function.
3242 (Sized_relobj::local_got_offset_list): New function.
3243 * powerpc.cc (Target_powerpc::got_size): Add const.
3244 (Target_powerpc::got_entry_count): New function.
3245 (Target_powerpc::plt_entry_count): New function.
3246 (Target_powerpc::first_plt_entry_offset): New function.
3247 (Target_powerpc::plt_entry_size): New function.
3248 (Output_data_plt_powerpc::entry_count): New function.
3249 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
3250 (Output_data_plt_powerpc::get_plt_entry_size): New function.
3251 * sparc.cc (Target_sparc::got_size): Add const.
3252 (Target_sparc::got_entry_count): New function.
3253 (Target_sparc::plt_entry_count): New function.
3254 (Target_sparc::first_plt_entry_offset): New function.
3255 (Target_sparc::plt_entry_size): New function.
3256 (Output_data_plt_sparc::entry_count): New function.
3257 (Output_data_plt_sparc::first_plt_entry_offset): New function.
3258 (Output_data_plt_sparc::get_plt_entry_size): New function.
3259 * symtab.h (Symbol::got_offset_list): New function.
3260 (Symbol_table::for_all_symbols): New function.
3261 * target.h (Sized_target::got_entry_count): New function.
3262 (Sized_target::plt_entry_count): New function.
3263 (Sized_target::plt_entry_size): New function.
3264 * x86_64.cc (Target_x86_64::got_size): Add const.
3265 (Target_x86_64::got_entry_count): New function.
3266 (Target_x86_64::plt_entry_count): New function.
3267 (Target_x86_64::first_plt_entry_offset): New function.
3268 (Target_x86_64::plt_entry_size): New function.
3269 (Output_data_plt_x86_64::entry_count): New function.
3270 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
3271 (Output_data_plt_x86_64::get_plt_entry_size): New function.
3272
09ec0418
CC
32732010-08-12 Cary Coutant <ccoutant@google.com>
3274
3275 * archive.cc: Include incremental.h.
3276 (Archive::Archive): Initialize incremental_info_.
3277 (Archive::include_member): Record archive members in incremental info.
3278 (Add_archive_symbols::run): Record begin and end of an archive in
3279 incremental info.
3280 (Lib_group::include_member): Record objects in incremental info.
3281 * archive.h (Incremental_archive_entry): Forward declaration.
3282 (Archive::set_incremental_info): New member function.
3283 (Archive::incremental_info): New member function.
3284 (Archive::Unused_symbol_iterator): New class.
3285 (Archive::unused_symbols_begin): New member function.
3286 (Archive::unused_symbols_end): New member function.
3287 (Archive::incremental_info_): New data member.
3288 * incremental-dump.cc (find_input_containing_global): New function.
3289 (dump_incremental_inputs): Dump new incremental info sections.
3290 * incremental.cc: Include symtab.h.
3291 (Output_section_incremental_inputs): New class.
3292 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
3293 new incremental info sections.
3294 (Sized_incremental_binary::do_check_inputs): Likewise.
3295 (Incremental_inputs::report_archive): Remove.
3296 (Incremental_inputs::report_archive_begin): New function.
3297 (Incremental_inputs::report_archive_end): New function.
3298 (Incremental_inputs::report_object): New function.
3299 (Incremental_inputs::finalize_inputs): Remove.
3300 (Incremental_inputs::report_input_section): New function.
3301 (Incremental_inputs::report_script): Rewrite.
3302 (Incremental_inputs::finalize): Do nothing but finalize string table.
3303 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
3304 (Incremental_inputs::sized_create_inputs_section_data): Remove.
3305 (Incremental_inputs::create_data_sections): New function.
3306 (Incremental_inputs::relocs_entsize): New function.
3307 (Output_section_incremental_inputs::set_final_data_size): New function.
3308 (Output_section_incremental_inputs::do_write): New function.
3309 (Output_section_incremental_inputs::write_header): New function.
3310 (Output_section_incremental_inputs::write_input_files): New function.
3311 (Output_section_incremental_inputs::write_info_blocks): New function.
3312 (Output_section_incremental_inputs::write_symtab): New function.
3313 * incremental.h (Incremental_script_entry): Forward declaration.
3314 (Incremental_object_entry): Forward declaration.
3315 (Incremental_archive_entry): Forward declaration.
3316 (Incremental_inputs): Forward declaration.
3317 (Incremental_inputs_header_data): Remove.
3318 (Incremental_inputs_header): Remove.
3319 (Incremental_inputs_header_write): Remove.
3320 (Incremental_inputs_entry_data): Remove.
3321 (Incremental_inputs_entry): Remove.
3322 (Incremental_inputs_entry_write): Remove.
3323 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
3324 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
3325 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
3326 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
3327 Likewise.
3328 (Incremental_input_entry): New class.
3329 (Incremental_script_entry): New class.
3330 (Incremental_object_entry): New class.
3331 (Incremental_archive_entry): New class.
3332 (Incremental_inputs::Incremental_inputs): Initialize new data members.
3333 (Incremental_inputs::report_inputs): Remove.
3334 (Incremental_inputs::report_archive): Remove.
3335 (Incremental_inputs::report_archive_begin): New function.
3336 (Incremental_inputs::report_archive_end): New function.
3337 (Incremental_inputs::report_object): Change prototype.
3338 (Incremental_inputs::report_input_section): New function.
3339 (Incremental_inputs::report_script): Change prototype.
3340 (Incremental_inputs::get_reloc_count): New function.
3341 (Incremental_inputs::set_reloc_count): New function.
3342 (Incremental_inputs::create_data_sections): New function.
3343 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
3344 (Incremental_inputs::inputs_section): New function.
3345 (Incremental_inputs::symtab_section): New function.
3346 (Incremental_inputs::relocs_section): New function.
3347 (Incremental_inputs::get_stringpool): Add const.
3348 (Incremental_inputs::command_line): Add const.
3349 (Incremental_inputs::inputs): Remove.
3350 (Incremental_inputs::command_line_key): New function.
3351 (Incremental_inputs::input_file_count): New function.
3352 (Incremental_inputs::input_files): New function.
3353 (Incremental_inputs::relocs_entsize): New function.
3354 (Incremental_inputs::sized_create_inputs_section_data): Remove.
3355 (Incremental_inputs::finalize_inputs): Remove.
3356 (Incremental_inputs::Input_info): Remove.
3357 (Incremental_inputs::lock_): Remove.
3358 (Incremental_inputs::inputs_): Change type.
3359 (Incremental_inputs::inputs_map_): Remove.
3360 (Incremental_inputs::current_object_entry_): New data member.
3361 (Incremental_inputs::inputs_section_): New data member.
3362 (Incremental_inputs::symtab_section_): New data member.
3363 (Incremental_inputs::relocs_section_): New data member.
3364 (Incremental_inputs::reloc_count_): New data member.
3365 (Incremental_inputs_reader): New class.
3366 (Incremental_symtab_reader): New class.
3367 (Incremental_relocs_reader): New class.
3368 * layout.cc (Layout::finalize): Move finalization of incremental info
3369 and creation of incremental info sections to follow finalization of
3370 symbol table. Set offsets for postprocessing sections.
3371 (Layout::create_incremental_info_sections): Call
3372 Incremental_inputs::create_data_sections. Add incremental symtab
3373 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
3374 sections to layout after input sections.
3375 * layout.h (struct Timespec): Forward declaration.
3376 (Layout::incremental_inputs): Add const.
3377 (Layout::create_incremental_info_sections): Add parameter.
3378 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
3379 * object.cc: Include incremental.h.
3380 (Relobj::finalize_incremental_relocs): New function.
3381 (Sized_relobj::do_layout): Record input sections in incremental info.
3382 * object.h (Object::output_section): New function.
3383 (Object::output_section_offset): Moved from Relobj.
3384 (Object::get_incremental_reloc_base): New function.
3385 (Object::get_incremental_reloc_count): New function.
3386 (Object::do_output_section): New function.
3387 (Object::do_output_section_offset): Moved from Relobj.
3388 (Object::do_get_incremental_reloc_base): New function.
3389 (Object::do_get_incremental_reloc_count): New function.
3390 (Object::Object): Initialize new data members.
3391 (Relobj::output_section): Renamed do_output_section and moved to
3392 protected.
3393 (Relobj::output_section_offset): Moved to Object.
3394 (Relobj::do_get_incremental_reloc_base): New function.
3395 (Relobj::do_get_incremental_reloc_count): New function.
3396 (Relobj::allocate_incremental_reloc_counts): New function.
3397 (Relobj::count_incremental_reloc): New function.
3398 (Relobj::finalize_incremental_relocs): New function.
3399 (Relobj::next_incremental_reloc_index): New function.
3400 (Relobj::reloc_counts_): New data member.
3401 (Relobj::reloc_bases_): New data member.
3402 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
3403 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
3404 (Sized_relobj::incremental_relocs_scan): New function.
3405 (Sized_relobj::incremental_relocs_scan_reltype): New function.
3406 (Sized_relobj::incremental_relocs_write): New function.
3407 (Sized_relobj::incremental_relocs_write_reltype): New function.
3408 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
3409 incremental link.
3410 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
3411 archives and object files elsewhere.
3412 (Add_symbols::run): Report object files here.
3413 (Finish_group::run): Report end of archive at end of group.
3414 * reloc.cc: Include layout.h, incremental.h.
3415 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
3416 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
3417 (Sized_relobj::incremental_relocs_scan): New function.
3418 (Sized_relobj::incremental_relocs_scan_reltype): New function.
3419 (Sized_relobj::do_relocate_sections): Write incremental relocations.
3420 (Sized_relobj::incremental_relocs_write): New function.
3421 (Sized_relobj::incremental_relocs_write_reltype): New function.
3422 * script.cc (read_input_script): Rewrite test for incremental link.
3423 Change call to Incremental_inputs::report_script.
3424 * symtab.h (Symbol_table::first_global_index): New function.
3425 (Symbol_table::output_count): New function.
3426
ce0d1972
DK
34272010-08-12 Doug Kwan <dougkwan@google.com>
3428
3429 * arm.cc (Target_arm::merge_object_attributes): Check command line
3430 options --no-wchar-size-warning and --no-enum-size-warning.
3431 * options.h (General_options): Add ld-compatible options
3432 --no-enum-size-warning and --no-wchar-size-warning.
3433
6e5710ce
ILT
34342010-08-04 Ian Lance Taylor <iant@google.com>
3435
3436 * x86_64.cc (Target_x86_64::Scan::local): Use
3437 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
3438 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
3439 (Target_x86_64::Scan::global): Likewise.
3440 (Target_x86_64::Relocate::relocate): Likewise.
3441 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
3442 Likewise.
3443
fef830db
CC
34442010-08-03 Cary Coutant <ccoutant@google.com>
3445
3446 * merge.cc (Output_merge_string::do_add_input_section): Count strings
3447 to reserve space in merged_strings vector. Keep total input size
3448 for stats.
3449 (Output_merge_string::do_print_merge_stats): Print total input size.
3450 * merge.h (Output_merge_string): Add input_size_ field.
3451 * stringpool.cc (Stringpool_template::string_length): Move
3452 implementations out of Stringpool_template class and place in
3453 stringpool.h.
3454 * stringpool.h (string_length): Move out of Stringpool_template.
3455
1e3811b0
ILT
34562010-08-03 Ian Lance Taylor <iant@google.com>
3457
3458 PR 11712
3459 * layout.cc (relaxation_loop_body): If address of load segment is
3460 set, adjust address to include headers if possible.
3461
7af0c620
ILT
34622010-08-03 Ian Lance Taylor <iant@google.com>
3463
3464 * version.cc (version_string): Bump to 1.10.
3465
22f0da72
ILT
34662010-08-03 Ian Lance Taylor <iant@google.com>
3467
3468 PR 11805
3469 * layout.h (enum Output_section_order): Define.
3470 (class Layout): Update declarations.
3471 * layout.cc (Layout::get_output_section): Add order parameter.
3472 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
3473 is_first_non_relro parameters. Change all callers.
3474 (Layout::choose_output_section): Likewise.
3475 (Layout::add_output_section_data): Likewise.
3476 (Layout::make_output_section): Likewise. Set order.
3477 (Layout::default_section_order): New function.
3478 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
3479 * output.cc (Output_section::Output_section): Initialize order_.
3480 Don't initialize deleted fields.
3481 (Output_segment::Output_segment): Don't initialize deleted
3482 fields.
3483 (Output_segment::add_output_section_to_load): New function
3484 replacing add_output_section. Change all callers to call this or
3485 add_output_section_to_nonload.
3486 (Output_segment::add_output_section_to_nonload): New function.
3487 (Output_segment::remove_output_section): Rewrite.
3488 (Output_segment::add_initial_output_data): Likewise.
3489 (Output_segment::has_any_data_sections): Likewise.
3490 (Output_segment::is_first_section_relro): Likewise.
3491 (Output_segment::maximum_alignment): Likewise.
3492 (Output_segment::has_dynamic_reloc): New function replacing
3493 dynamic_reloc_count. Change all callers.
3494 (Output_segment::has_dynamic_reloc_list): New function replacing
3495 dynamic_reloc_count_list. Change all callers.
3496 (Output_segment::set_section_addresses): Rewrite.
3497 (Output_segment::set_offset): Rewrite.
3498 (Output_segment::find_first_and_last_list): Remove.
3499 (Output_segment::set_tls_offsets): Rewrite.
3500 (Output_segment::first_section_load_address): Likewise.
3501 (Output_segment::output_section_count): Likewise.
3502 (Output_segment::section_with_lowest_load_address): Likewise.
3503 (Output_segment::write_section_headers): Likewise.
3504 (Output_segment::print_sections_to_map): Likewise.
3505 * output.h (class Output_data): Remove dynamic_reloc_count_
3506 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
3507 (Output_data::add_dynamic_reloc): Rewrite.
3508 (Output_data::has_dynamic_reloc): New function.
3509 (Output_data::dynamic_reloc_count): Remove.
3510 (class Output_section): Add order_ field. Remvoe is_relro_local_,
3511 is_last_relro_, is_first_non_relro_, is_interp_,
3512 is_dynamic_linker_section_ fields. Add order and set_order
3513 functions. Remove is_relro_local, set_is_relro_local,
3514 is_last_relro, set_is_last_relro, is_first_non_relro,
3515 set_is_first_non_relro functions, is_interp, set_is_interp,
3516 is_dynamic_linker_section, and set_is_dynamic_linker_section
3517 functions.
3518 (class Output_segment): Change Output_data_list from std::list to
3519 std:;vector. Add output_lists_ field. Remove output_data_ and
3520 output_bss_ fields. Update declarations.
3521
3ff2ccb0
ILT
35222010-08-02 Ian Lance Taylor <iant@google.com>
3523
3524 * arm.cc (Target_arm::gc_process_relocs): Use typename.
3525 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
3526 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
3527
88a4108b
ILT
35282010-08-02 Ian Lance Taylor <iant@google.com>
3529
3530 PR 11855
3531 * script.cc (Script_options::Script_options): Initialize
3532 symbol_definitions_ and symbol_references_.
3533 (Script_options::add_symbol_assignment): Update
3534 symbol_definitions_ and symbol_references_.
3535 (Script_options::add_symbol_reference): New function.
3536 (script_symbol): New function.
3537 * script.h (class Script_options): Add symbol_definitions_ and
3538 symbol_references_ fields.
3539 (Script_options::referenced_const_iterator): New type.
3540 (Script_options::referenced_begin): New function.
3541 (Script_options::referenced_end): New function.
3542 (Script_options::is_referenced): New function.
3543 (Script_options::any_unreferenced): New function.
3544 * script-c.h (script_symbol): Declare.
3545 * yyscript.y (exp): Call script_symbol.
3546 * symtab.cc: Include "script.h".
3547 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
3548 Change all callers. Check symbols referenced by scripts.
3549 (Symbol_table::add_undefined_symbols_from_command_line): Add
3550 layout parameter. Change all callers.
3551 (Symbol_table::do_add_undefined_symbols_from_command_line):
3552 Likewise. Break out loop body. Check symbols referenced by
3553 scripts.
3554 (Symbol_table::add_undefined_symbol_from_command_line): New
3555 function broken out of
3556 do_add_undefined_symbols_from_command_line.
3557 * symtab.h (class Symbol_table): Update declarations.
3558 * archive.cc: Include "layout.h".
3559 (Archive::should_include_member): Add layout parameter. Change
3560 all callers. Check for symbol mentioned in expression.
3561 * archive.h (class Archive): Update declaration.
3562 * object.cc (Sized_relobj::do_should_include_member): Add layout
3563 parameter.
3564 * object.h (Object::should_include_member): Add layout parameter.
3565 Change all callers.
3566 (Object::do_should_include_member): Add layout parameter.
3567 (class Sized_relobj): Update declaration.
3568 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
3569 parameter.
3570 * dynobj.h (class Sized_dynobj): Update declaration.
3571 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
3572 layout parameter.
3573 * plugin.h (class Sized_pluginobj): Update declaration.
3574
5f1ab67a
ILT
35752010-08-02 Ian Lance Taylor <iant@google.com>
3576
3577 PR 11866
3578 * output.cc (Output_segment::set_offset): Search for the first and
3579 last sections rather than assuming that the list is in order.
3580 (Output_segment::find_first_and_last_list): New function.
3581 * output.h (class Output_segment): Update declarations.
3582 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
3583 (relro_strip_test_SOURCES): New variable.
3584 (relro_strip_test_DEPENDENCIES): New variable.
3585 (relro_strip_test_LDFLAGS): New variable.
3586 (relro_strip_test_LDADD): New variable.
3587 (relro_strip_test.so): New target.
3588
a8df5856
ILT
35892010-08-02 Ian Lance Taylor <iant@google.com>
3590
3591 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
3592 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
3593 (Target_i386::got_tlsdesc_section): New function.
3594 (Target_i386::got_section): Create space for GOT entries for
3595 TLSDESC relocations.
3596 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
3597 R_386_TLS_GOTDESC.
3598 (Target_i386::Scan::global): Likewise.
3599 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
3600 using TLSDESC GOT.
3601 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
3602 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
3603 (Target_x86_64::got_tlsdesc_section): New function.
3604 (Target_x86_64::got_section): Create space for GOT entries for
3605 TLSDESC relocations.
3606 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
3607 R_386_TLS_GOTDESC.
3608 (Target_x86_64::Scan::global): Likewise.
3609 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
3610 using TLSDESC GOT.
3611
0c10a0a6
ILT
36122010-08-02 Ian Lance Taylor <iant@google.com>
3613
3614 * testsuite/final_layout.sh: Use dc to convert from hex to
3615 decimal.
3616
41cbeecc
ST
36172010-07-29 Sriraman Tallam <tmsriram@google.com>
3618
3619 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
3620 paramter to the call to gold::gc_process_relocs.
3621 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
3622 paramter to the call to gold::gc_process_relocs.
3623 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
3624 parameter to the call to gold::gc_process_relocs.
3625 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
3626 template parameter to the call to gold::gc_process_relocs.
3627 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
3628 paramter to the call to gold::gc_process_relocs.
3629 * gc.h (get_embedded_addend_size): New function.
3630 (gc_process_relocs): Save the size of the reloc for use by ICF.
3631 * icf.cc (get_section_contents): Get the addend from the text section
3632 for SHT_REL relocation sections.
3633 * icf.h (Icf::Reloc_addend_size_info): New typedef.
3634 (Icf::Reloc_info): Add new member reloc_addend_size_info.
3635 * int_encoding.h (read_from_pointer): New overloaded function.
3636 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
3637 * testsuite/icf_sht_rel_addend_test.sh: New file.
3638 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
3639 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
3640
6ea55b82
RW
36412010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3642
3643 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
3644 * Makefile.in: Regenerate.
3645 * testsuite/Makefile.in: Regenerate.
3646
9691462b
ILT
36472010-07-27 Jeffrey Yasskin <jyasskin@google.com>
3648
3649 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
3650 * gold/testsuite/debug_msg.cc: Likewise.
3651 * gold/testsuite/odr_violation1.cc
3652 * gold/testsuite/odr_violation2.cc
3653
76897331
CC
36542010-07-21 Cary Coutant <ccoutant@google.com>
3655
3656 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
3657 string, and length fields.
3658 (Output_merge_string::Merged_strings_list): New type.
3659 (Output_merge_string::Merged_strings_lists): New typedef.
3660 (Output_merge_string): Replace merged_strings_ with
3661 merged_strings_lists_.
3662 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
3663 Merged_strings_list per input object and section. Don't store pointer
3664 to the string. Don't store length with each merged string entry.
3665 (Output_merge_string::finalize_merged_data): Loop over list of merged
3666 strings lists. Recompute length of each merged string.
3667
78384e8f
CC
36682010-07-15 Cary Coutant <ccoutant@google.com>
3669
3670 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
3671 here.
3672
783659f9
ILT
36732010-07-14 Ian Lance Taylor <iant@google.com>
3674
3675 * descriptors.cc (Descriptors::open): Report correct name in error
3676 message.
3677
131687b4
DK
36782010-07-13 Doug Kwan <dougkwan@google.com>
3679
3680 * arm.cc (Arm_input_section::Arm_input_section): For a
3681 SHT_ARM_EXIDX section, always keeps the input sections.
3682 (Arm_input_section::set_exidx_section_link): New method.
3683 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
3684 has_errors_ to false.
3685 (Arm_exidx_input_section::has_errors,
3686 Arm_exidx_input_section::set_has_errors): New methods.
3687 (Arm_exidx_input_section::has_errors_): New data member.
3688 (Arm_relobj::get_exidx_shndx_list): New method.
3689 (Arm_output_section::append_text_sections_to_list): Do not skip
3690 section without SHF_EXECINSTR.
3691 (Arm_output_section::fix_exidx_coverage): Skip input sections with
3692 errors.
3693 (Arm_relobj::make_exidx_input_section): Add new parameter for text
3694 section header. Make error messages more verbose. Check for
3695 a non-executable section linked to an EXIDX section.
3696 (Arm_relobj::do_read_symbols): Remove error checking, which has been
3697 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
3698 check that there is no deferred EXIDX section if we exit early.
3699 Instead of not making an EXIDX section in case of an error, make one
3700 and set the has_errors flag of it.
3701 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
3702 in a relocatable link.
3703 (Target_arm::do_relax): Look for the EXIDX output section instead of
3704 assuming that it is called .ARM.exidx.
3705 (Target_arm::fix_exidx_coverage): Add a new parameter for input
3706 section list. Do not check for SHF_EXECINSTR section flags but
3707 skip any input section with errors.
3708 * output.cc (Output_section::Output_section): Initialize
3709 always_keeps_input_sections_ to false.
3710 (Output_section::add_input_section): Check for
3711 always_keeps_input_sections_.
3712 * output.h (Output_section::always_keeps_input_sections,
3713 Output_section::set_always_keeps_input_sections): New methods.
3714 (Output_section::always_keeps_input_sections): New data member.
3715
69517287
RÁE
37162010-07-13 Rafael Espindola <espindola@google.com>
3717
3718 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
3719 * fileread.h (Input_file): Add try_extra_search_path and find_file.
3720
82742395
ILT
37212010-07-13 Philip Herron <herron.philip@googlemail.com>
3722 Ian Lance Taylor <iant@google.com>
3723
3724 * output.h (Output_section_lookup_maps::add_merge_section):
3725 Correct check of whether value was inserted.
3726 (Output_section_lookup_maps::add_merge_input_section): Likewise.
3727 (Output_section_lookup_maps::add_relaxed_input_section):
3728 Likewise.
3729 * arm.cc (Target_arm::got_section): Remove used local os.
3730 * i386.cc (Target_i386::got_section): Likewise.
3731 * x86_64.cc (Target_x86_64::got_section): Likewise.
3732 * sparc.cc (Target_sparc::got_section): Likewise.
3733 (Target_sparc::relocate): Remove unused local have_got_offset.
3734 * powerpc.cc (Target_powerpc::relocate): Likewise.
3735
f2d707b5
ILT
37362010-07-13 Ian Lance Taylor <iant@google.com>
3737
241531d6
ILT
3738 * compressed_output.cc (zlib_decompress): Fix signature in
3739 !HAVE_ZLIB_H case.
3740
f2d707b5
ILT
3741 * archive.cc (Archive::include_member): Unlock an external member
3742 of a thin archive. Don't bother to delete an object we know is
3743 NULL.
3744
a2e47362
CC
37452010-07-12 Cary Coutant <ccoutant@google.com>
3746
3747 * compressed_output.cc (zlib_decompress): New function.
3748 (get_uncompressed_size): New function.
3749 (decompress_input_section): New function.
3750 * compressed_output.h (get_uncompressed_size): New function.
3751 (decompress_input_section): New function.
3752 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
3753 Handle compressed debug sections.
3754 * layout.cc (is_compressed_debug_section): New function.
3755 (Layout::output_section_name): Map compressed section names to
3756 canonical names.
3757 * layout.h (is_compressed_debug_section): New function.
3758 (is_debug_info_section): Recognize compressed debug sections.
3759 * merge.cc: Include compressed_output.h.
3760 (Output_merge_data::do_add_input_section): Handle compressed
3761 debug sections.
3762 (Output_merge_string::do_add_input_section): Handle compressed
3763 debug sections.
3764 * object.cc: Include compressed_output.h.
3765 (Sized_relobj::Sized_relobj): Initialize new data members.
3766 (build_compressed_section_map): New function.
3767 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
3768 * object.h (Object::section_is_compressed): New method.
3769 (Object::do_section_is_compressed): New method.
3770 (Sized_relobj::Compressed_section_map): New type.
3771 (Sized_relobj::do_section_is_compressed): New method.
3772 (Sized_relobj::compressed_sections_): New data member.
3773 * output.cc (Output_section::add_input_section): Handle compressed
3774 debug sections.
3775 * reloc.cc: Include compressed_output.h.
3776 (Sized_relobj::write_sections): Handle compressed debug sections.
3777
ce279a62
CC
37782010-07-08 Cary Coutant <ccoutant@google.com>
3779
3780 * resolve.cc (Symbol_table::resolve): Remember whether undef was
3781 weak when resolving to a dynamic def.
3782 (Symbol_table::should_override): Add adjust_dyndef flag; set it
3783 for weak undef/dynamic def cases. Adjust callers.
3784 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
3785 undef_binding_weak_.
3786 (Symbol_table::sized_write_globals): Adjust symbol binding.
3787 (Symbol_table::sized_write_symbol): Add binding parameter.
3788 * symtab.h (Symbol::set_undef_binding): New method.
3789 (Symbol::is_undef_binding_weak): New method.
3790 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
3791 (Symbol_table::should_override): Add new parameter.
3792 (Symbol_table::sized_write_symbol): Add new parameter.
3793
3794 * testsuite/weak_undef_file1.cc: Add new test case.
3795 * testsuite/weak_undef_file2.cc: Fix header comment.
3796 * testsuite/weak_undef_test.cc: Add new test case.
3797
b2286c10
DK
37982010-06-29 Doug Kwan <dougkwan@google.com>
3799
3800 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
3801 Initialize USE_SYMBOL_.
3802 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
3803 definition.
3804 (Arm_reloc_property::uses_symbol_): New data member declaration.
3805 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
3806 uses symbol value and symbol is undefined but not weakly undefined.
3807
4802450a
RÁE
38082010-06-28 Rafael Espindola <espindola@google.com>
3809
3810 * plugin.cc (Plugin::load): Use dlerror.
3811
e5ca47ba
ILT
38122010-06-26 Jeffrey Yaskin <jyasskin@google.com>
3813
3814 * symtab.cc (detect_odr_violations): When reporting an ODR
3815 violation, report an object where the symbol is defined.
3816
8a75a161
DK
38172010-06-25 Doug Kwan <dougkwan@google.com>
3818
3819 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
3820 (Target_arm::section_may_have_icf_unsafe_pointers): New method
3821 definition.
3822 (Target_arm::Scan::local_reloc_may_be_function_pointer,
3823 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
3824 target hook to detect function points.
3825 (Target_arm::Scan::possible_function_pointer_reloc): New method.
3826 * icf.h (Icf::check_section_for_function_pointers): Change type of
3827 parameter SECTION_NAME to const reference to std::string. Use
3828 target hook to determine if section may have unsafe pointers.
3829 * target.h (Target::section_may_have_icf_unsafe_pointers): New
3830 method definition.
3831
42218b9f
RÁE
38322010-06-21 Rafael Espindola <espindola@google.com>
3833
3834 * fileread.cc (Input_file::find_fie): New
3835 (Input_file::open): Use Input_file::find_fie.
3836 * fileread.h (Input_file::find_fie): New
3837 * plugin.cc (set_extra_library_path): New.
3838 (Plugin::load): Add set_extra_library_path to the transfer vector.
3839 (Plugin_manager::set_extra_library_path): New.
3840 (Plugin_manager::add_input_file): Use the extra search path if set.
3841 (set_extra_library_path(): New.
3842 * plugin.h (Plugin_manager): Add set_extra_library_path and
3843 extra_search_path_.
3844
a0506cca
CC
38452010-06-19 Cary Coutant <ccoutant@google.com>
3846
3847 * layout.cc (gdb_sections): Add .debug_types.
3848 (lines_only_debug_sections): Likewise.
3849
6508b958
RÁE
38502010-06-18 Rafael Espindola <espindola@google.com>
3851
3852 * plugin.cc (add_input_file,add_input_library)
3853 (Plugin_manager::add_input_file): Make filename arguments const.
3854 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
3855 const.
3856
3e235302
DK
38572010-06-16 Doug Kwan <dougkwan@google.com>
3858
3859 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
3860 .ARM.attributes section if we have not merged any input
3861 attributes sections.
3862
106e8a6c
DK
38632010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3864
3865 * arm.cc: Allow combining objects with no EABI version
3866 information.
3867
91ff43fe
RÁE
38682010-06-15 Rafael Espindola <espindola@google.com>
3869
3870 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
3871
68ed838c
ILT
38722010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3873
3874 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
3875 (struct iovec): Correct !HAVE_READV definition.
3876
f3a2388f
CC
38772010-06-10 Cary Coutant <ccoutant@google.com>
3878
3879 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
3880 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
3881 reloc sections.
3882 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
3883
3884 PR 11683
3885 * symtab.h (Symbol::is_placeholder): New member function.
3886 * target-reloc.h (relocate_section): Check for placeholder symbols.
3887
3888 * testsuite/Makefile.am (plugin_test_8): New test.
3889 (plugin_test_9): New test.
3890 * testsuite/Makefile.in: Regenerate.
3891
e1df38aa
NC
38922010-06-09 Nick Clifton <nickc@redhat.com>
3893
3894 * yyscript.y (input_list_element): Allow strings prefixed with
3895 the '-' character. Treat these as libraries.
3896 * script.cc (script_add_library): New function. Adds a library
3897 specified by "-l<name>" found in an input script.
3898 * script-c.h: Add prototype for script_add_library.
3899
25bbe950
DK
39002010-06-07 Doug Kwan <dougkwan@google.com>
3901
3902 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
3903 Restrict stub-group size to be within long conditional branch
3904 range when working around cortex-A8 erratum.
3905
0f32ea4c
ILT
39062010-06-07 Damien Diederen <dd@crosstwine.com>
3907
3908 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
3909 #ifdef typo.
3910
8fe2a369
ST
39112010-06-03 Sriraman Tallam <tmsriram@google.com>
3912
3913 PR gold/11658
3914 * output.cc
3915 (Output_section::Input_section_sort_entry::compare_section_ordering):
3916 Change to return non-zero correctly.
3917 (Output_section::Input_section_sort_section_order_index_compare
3918 ::operator()): Change to fix ambiguity in comparisons.
3919
6e9ba2ca
ST
39202010-06-01 Sriraman Tallam <tmsriram@google.com>
3921
3922 * gold.h (is_wildcard_string): New function.
3923 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
3924 (Layout::layout_eh_frame): Ditto.
3925 (Layout::find_section_order_index): New method.
3926 (Layout::read_layout_from_file): New method.
3927 * layout.h (Layout::find_section_order_index): New method.
3928 (Layout::read_layout_from_file): New method.
3929 (Layout::input_section_position_): New private member.
3930 (Layout::input_section_glob_): New private member.
3931 * main.cc (main): Call read_layout_from_file here.
3932 * options.h (--section-ordering-file): New option.
3933 * output.cc (Output_section::input_section_order_specified_): New
3934 member.
3935 (Output_section::Output_section): Initialize new member.
3936 (Output_section::add_input_section): Add new parameter.
3937 Keep input sections when --section-ordering-file is used.
3938 (Output_section::set_final_data_size): Sort input sections when
3939 section ordering file is specified.
3940 (Output_section::Input_section_sort_entry): Add new parameter.
3941 Check sorting type.
3942 (Output_section::Input_section_sort_entry::compare_section_ordering):
3943 New method.
3944 (Output_section::Input_section_sort_compare::operator()): Change to
3945 consider section_order_index.
3946 (Output_section::Input_section_sort_init_fini_compare::operator()):
3947 Change to consider section_order_index.
3948 (Output_section::Input_section_sort_section_order_index_compare
3949 ::operator()): New method.
3950 (Output_section::sort_attached_input_sections): Change to sort
3951 according to section order when specified.
e1df38aa
NC
3952 (Output_section::add_input_section<32, true>): Add new parameter.
3953 (Output_section::add_input_section<64, true>): Add new parameter.
3954 (Output_section::add_input_section<32, false>): Add new parameter.
3955 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
3956 * output.h (Output_section::add_input_section): Add new parameter.
3957 (Output_section::input_section_order_specified): New
3958 method.
3959 (Output_section::set_input_section_order_specified): New method.
3960 (Input_section::Input_section): Initialize section_order_index_.
3961 (Input_section::section_order_index): New method.
3962 (Input_section::set_section_order_index): New method.
3963 (Input_section::section_order_index_): New member.
3964 (Input_section::Input_section_sort_section_order_index_compare): New
3965 struct.
3966 (Output_section::input_section_order_specified_): New member.
3967 * script-sections.cc (is_wildcard_string): Delete and move modified
3968 method to gold.h.
3969 (Output_section_element_input::Output_section_element_input): Modify
3970 call to is_wildcard_string.
3971 (Output_section_element_input::Input_section_pattern
3972 ::Input_section_pattern): Ditto.
3973 (Output_section_element_input::Output_section_element_input): Ditto.
3974 * testsuite/Makefile.am (final_layout): New test case.
3975 * testsuite/Makefile.in: Regenerate.
3976 * testsuite/final_layout.cc: New file.
3977 * testsuite/final_layout.sh: New file.
3978
3537c84b
RÁE
39792010-06-01 Rafael Espindola <espindola@google.com>
3980
3981 * plugin.cc (Plugin::load): Pass the output name to the plugin.
3982
105b6afd
RÁE
39832010-06-01 Rafael Espindola <espindola@google.com>
3984
3985 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
3986 visibility of symbols.
3987
29e11421
DK
39882010-05-27 Doug Kwan <dougkwan@google.com>
3989
3990 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
3991 from start of output section instead of address for a local symbol
3992 in a merged or relaxed section when doing a relocatable link.
3993
5e0f337e
RÁE
39942010-05-26 Rafael Espindola <espindola@google.com>
3995
3996 PR 11604
3997 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
3998 adding sections the garbage collector removed.
3999 * gold/testsuite/Makefile.am: Add test.
4000 * gold/testsuite/Makefile.in: Regenerate.
4001 * gold/testsuite/plugin_test_7.sh: New.
4002 * gold/testsuite/plugin_test_7_1.c: New.
4003 * gold/testsuite/plugin_test_7_2.c: New.
4004
f4187277
RÁE
40052010-05-26 Rafael Espindola <espindola@google.com>
4006
4007 * script-sections.cc (Output_section_definition::set_section_addresses):
4008 Check for --section-start.
4009
5c388529
DK
40102010-05-26 Doug Kwan <dougkwan@google.com>
4011
4012 * arm.cc (Arm_scan_relocatable_relocs): New class.
4013 (Target_arm::relocate_special_relocatable): New method.
4014 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
4015 (Arm_relocate_functions::thumb_branch_common): Same.
4016 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
4017 instead of Default_scan_relocatable_relocs.
4018 * target-reloc.h (relocate_for_relocatable): Let target handle
4019 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
4020 * target.h (Sized_target::relocate_special_relocatable): New method.
4021
bca1c3ae
ILT
40222010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4023
4024 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
4025
0439c796
DK
40262010-05-23 Doug Kwan <dougkwan@google.com>
4027
4028 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
4029 instead of a cast.
4030 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
4031 with a direct branch, not a conditional branch, to a stub.
4032 * merge.cc (Output_merge_base::record_input_section): New method
4033 defintion.
4034 (Output_merge_data::do_add_input_section): Record input section if
4035 keeps-input-sections flag is set.
4036 (Output_merge_string::do_add_input_section): Ditto.
4037 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
4038 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
4039 INPUT_SECTIONS_.
4040 (Output_merge_base::keeps_input_sections,
4041 Output_merge_base::set_keeps_input_sections,
4042 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
4043 method definitions.
4044 (Output_merge_base::Input_sections): New type declaration.
4045 (Output_merge_base::input_sections_begin,
4046 Output_merge_base::input_sections_end,
4047 Output_merge_base::do_set_keeps_input_sections): New method definitions.
4048 (Output_merge_base::bool keeps_input_sections_,
4049 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
4050 Output_merge_base::input_sections_): New data members.
4051 (Output_merge_data::do_set_keeps_input_sections): New method
4052 defintion.
4053 (Output_merge_string::do_set_keeps_input_sections): Ditto.
4054 * output.cc (Output_section::Input_section::relobj): Move method
4055 defintion from class declaration to here and handle merge sections.
4056 (Output_section::Input_section::shndx): Ditto.
4057 (Output_section::Output_section): Remove initializations of removed
4058 data members and initialize new data member LOOKUP_MAPS_.
4059 (Output_section::add_input_section): Set keeps-input-sections flag
4060 for a newly created merge output section as appropriate. Adjust code
4061 to use Output_section_lookup_maps class.
4062 (Output_section::add_relaxed_input_section): Adjst code for lookup
4063 maps code refactoring.
4064 (Output_section::add_merge_input_section): Add a new parameter
4065 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
4066 class. If adding input section to a newly created merge output
4067 section fails, remove the new merge section.
4068 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 4069 Adjust code for use of the Output_section_lookup_maps class.
0439c796
DK
4070 (Output_section::find_merge_section): Ditto.
4071 (Output_section::build_lookup_maps): New method defintion.
4072 (Output_section::find_relaxed_input_section): Adjust code to use
4073 Output_section_lookup_maps class.
4074 (Output_section::get_input_sections): Export merge sections. Adjust
4075 code to use Output_section_lookup_maps class.
4076 (Output_section:::add_script_input_section): Adjust code to use
4077 Output_section_lookup_maps class. Update lookup maps for merge
4078 sections also.
4079 (Output_section::discard_states): Use Output_section_lookup_maps.
4080 (Output_section::restore_states): Same.
4081 * output.h (Merge_section_properties): Move class defintion out of
4082 Output_section.
4083 (Output_section_lookup_maps): New class.
4084 (Output_section::Input_section::is_merge_section): New method
4085 defintion.
4086 (Output_section::Input_section::relobj): Move defintion out of class
4087 defintion. Declare method only.
4088 (Output_section::Input_section::shndx): Ditto.
4089 (Output_section::Input_section::output_merge_base): New method defintion.
4090 (Output_section::Input_section::u2_.pomb): New union field.
4091 (Output_section::Merge_section_by_properties_map,
4092 Output_section::Output_section_data_by_input_section_map,
4093 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
4094 Remove types.
4095 (Output_section::add_merge_input_section): Add new parameter
4096 KEEPS_INPUT_SECTIONS.
4097 (Output_section::build_lookup_maps): New method declaration.
4098 (Output_section::merge_section_map_,
4099 Output_section::merge_section_by_properties_map_,
4100 Output_section::relaxed_input_section_map_,
4101 Output_section::is_relaxed_input_section_map_valid_): Remove data
4102 members.
4103 (Output_section::lookup_maps_): New data member.
4104
76295588
L
41052010-05-21 Doug Kwan <dougkwan@google.com>
4106
4107 PR gold/11619
4108 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
4109 avoid a compilation error.
4110
d103a984
RÁE
41112010-05-19 Rafael Espindola <espindola@google.com>
4112
4113 * script-sections.cc (Output_section_definition::allocate_to_segment):
4114 Update the phdrs_list even when the output section is NULL.
4115 * testsuite/Makefile.am: Add test.
4116 * testsuite/Makefile.in: Regenerate.
4117 * testsuite/script_test_9.cc: New.
4118 * testsuite/script_test_9.sh: New.
4119 * testsuite/script_test_9.t: New.
4120
6625d24e
DK
41212010-05-19 Doug Kwan <dougkwan@google.com>
4122
4123 * arm.cc (Arm_input_section::original_size): New method.
4124 (Arm_input_section::do_addralign): Add a cast.
4125 (Arm_input_section::do_output_offset): Remove static cast.
4126 (Arm_input_section::original_addralign,
4127 Arm_input_section::original_size_): Change type to uint32_t.
4128 (Arm_input_section::init): Add safe casts for section alignment
4129 and size.
4130 (Arm_input_section::set_final_data_size): Do not set address and
4131 offset of stub table.
4132 (Arm_output_section::fix_exidx_coverage): Change use of of
4133 Output_section::Simple_input_section to that of
4134 Output_section::Input_section.
4135 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
4136 except for the first pass.
4137 * output.cc (Output_section::get_input_sections): Change type of
4138 input_sections to std::list<Input_section>.
4139 (Output_section::add_script_input_section): Rename from
4140 Output_section::add_simple_input_section. Change type of SIS
4141 parameter from Simple_input_section to Input_section.
4142 * output.h (Output_section::Simple_input_section): Remove class.
4143 (Output_section::Input_section): Change class visibility to public.
4144 (Output_section::Input_section::addralign): Use stored alignments
4145 for special input sections if set.
4146 (Output_section::Input_section::set_addralign): New method.
4147 (Output_section::get_input_sections): Change parameter type from
4148 list of Simple_input_section to list of Input_section.
4149 (Output_section::add_script_input_section): Rename from
4150 Output_section::add_simple_input_section. Change first parameter's
4151 type from Simple_input_section to Input_section and remove the
4152 second and third parameters.
4153 * script-sections.cc (Input_section::Input_section_list): Change
4154 type to list of Output_section::Input_section/
4155 (Input_section_info::Input_section_info): Change parameter type of
4156 INPUT_SECTION to Output_section::Input_section.
4157 (Input_section_info::input_section): Change return type.
4158 (Input_section_info::input_section_): Change type to
4159 Output_section::Input_section.
4160 (Output_section_element_input::set_section_addresses): Adjust code
4161 to use Output_section::Input_section instead of
4162 Output_section::Simple_input_section. Adjust code for renaming
4163 of Output_section::add_simple_input_section.
4164 (Orphan_output_section::set_section_addresses): Ditto.
4165
e1e82ea4
RW
41662010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4167
4168 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
4169 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
4170
91e75c8a
RÁE
41712010-05-18 Rafael Espindola <espindola@google.com>
4172
4173 * options.cc (General_options::finalize): Handle -nostdlib.
4174 * options.h (nostdlib): New option.
4175 * script.cc (script_add_search_dir): Handle -nostdlib.
4176
da59ad79
DK
41772010-05-12 Doug Kwan <dougkwan@google.com>
4178
4179 * arm.cc (Target_arm::do_finalize_sections): Create an empty
4180 attributes section only if there no attributes section after merging.
4181 (Target_arm::merge_object_attributes): Move value of
e1df38aa 4182 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
4183 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
4184 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
4185 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
4186 and arm_attr_merge_7.stdout.
4187 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
4188 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
4189 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
4190 arm_attr_merge_7b.o): New rules.
4191 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
4192 arm_attr_merge_7
4193 * testsuite/Makefile.in: Regenerate.
4194 * testsuite/arm_attr_merge.sh: New file.
4195 * testsuite/arm_attr_merge_[67][ab].s: Same.
4196
3e01a7fd
NC
41972010-05-05 Nick Clifton <nickc@redhat.com>
4198
4199 * po/es.po: Updated Spanish translation.
4200
7ad2014a
L
42012010-04-27 H.J. Lu <hongjiu.lu@intel.com>
4202
4203 * Makefile.am (install-exec-local): Properly install gold as
4204 default cross linker.
4205 * Makefile.in: Regenerated.
4206
4fda8867
NC
42072010-04-27 H.J. Lu <hongjiu.lu@intel.com>
4208 Nick Clifton <nickc@redhat.com>
4209
4210 * configure.ac (install_as_default): Define and set to false
4211 unless --enable-gold or --enable-gold=both/gold has been
4212 specified.
4213 * configure: Regenerate.
4214
4215 * Makefile.am (install-exec-local): Install the executable as
4216 'ld.gold'. If install_as_default is true then also install it as
4217 'ld'.
4218 * Makefile.in: Regenerated.
4219
bd288ea2
ILT
42202010-04-24 Ian Lance Taylor <iant@google.com>
4221
4222 * layout.cc (Layout::layout_reloc): In relocatable link don't
4223 combine reloc sections for grouped sections.
4224
ef38fd8a
ST
42252010-04-23 Sriraman Tallam <tmsriram@google.com>
4226
4227 * gc.h (gc_process_relocs): Pass information on relocs pointing to
4228 sections that are not ordinary to icf.
4229 * icf.cc (get_section_contents): Handle relocation pointing to section
4230 with no object or shndx information.
4231 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
4232 * testsuite/Makefile.in: Regenerate.
4233 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
4234 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
4235
f6973bdc
ILT
42362010-04-22 Ian Lance Taylor <iant@google.com>
4237
4238 * expression.cc (Expression::Expression_eval_info): Add
4239 result_alignment_pointer field.
4240 (Expression::eval_with_dot): Add result_alignment_pointer
4241 parameter. Change all callers.
4242 (Expression::eval_maybe_dot): Likewise.
4243 (class Binary_expression): Add alignment_pointer parameter to
4244 left_value and right_value. Change all callers.
4245 (BINARY_EXPRESSION): Set result alignment.
4246 (class Trinary_expression): Add alignment_pointer parameter to
4247 arg2_value and arg3_value. Change all callers.
4248 (Trinary_cond::value): Set result alignment.
4249 (Max_expression::value, Min_expression::value): Likewise.
4250 (Align_expression::value): Likewise.
4251 * script-sections.cc (class Sections_element): Add dot_alignment
4252 parameter to set_section_addresses virtual function. Update
4253 instantiations.
4254 (class Output_section_element): Likewise.
4255 (Script_sections::create_segments): Add dot_alignment parameter.
4256 Change all callers.
4257 (Script_sections::create_segments_from_phdrs_clause): Likewise.
4258 (Script_sections::set_phdrs_clause_addresses): Likewise.
4259 * script-sections.h: Update declarations.
4260 * script.h: Update declarations.
4261 * output.h (Output_segment::set_minimum_p_align): Don't decrease
4262 min_p_align.
4263 * testsuite/script_test_3.t: Set large alignment.
4264 * testsuite/script_test_3.sh: Make sure that at least one LOAD
4265 segment has expected alignment.
4266
9c9c98a5
NC
42672010-04-22 Nick Clifton <nickc@redhat.com>
4268
4269 * po/gold.pot: Updated by the Translation project.
4270 * po/vi.po: Updated Vietnamese translation.
4271
2253bfba
L
42722010-04-22 H.J. Lu <hongjiu.lu@intel.com>
4273
4274 * testsuite/Makefile.am (check_PROGRAMS): Add
4275 icf_virtual_function_folding_test.
4276 * testsuite/Makefile.in: Regenerated.
4277
85fdf906
AH
42782010-04-15 Andrew Haley <aph@redhat.com>
4279
4280 * options.h (merge_exidx_entries): New option.
4281 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
4282 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
4283 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
4284 (Target_arm::merge_exidx_entries): New function.
4285 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
4286 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
4287 to Arm_exidx_fixup constructor.
4288 Add new arg, merge_exidx_entries.
4289 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
4290 Arm_output_section::fix_exidx_coverage.
4291
ce97fa81
ST
42922010-04-18 Sriraman Tallam <tmsriram@google.com>
4293
4294 * icf.cc (get_section_contents): Check for preemptible functions.
4295 Ignore addend when appropriate.
4296 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
4297 section folded.
4298 (add_from_relobj): Check for section folded.
4299 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
4300 * symtab.h (should_add_dynsym_entry): Add new parameter.
4301 * target-reloc.h (scan_relocs): Check for section folded.
4302 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
4303 Check reloc types for function pointers in shared objects.
4304 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
4305 case.
4306 (icf_preemptible_functions_test): New test case.
4307 (icf_string_merge_test): New test case.
4308 * testsuite.Makefile.in: Regenerate.
4309 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
4310 bar_glob. Refactor code.
4311 * testsuite/icf_preemptible_functions_test.cc: New file.
4312 * testsuite/icf_preemptible_functions_test.sh: New file.
4313 * testsuite/icf_string_merge_test.cc: New file.
4314 * testsuite/icf_string_merge_test.sh: New file.
4315 * testsuite/icf_virtual_function_folding_test.cc: New file.
4316 * testsuite/icf_virtual_function_folding_test.sh: New file.
4317
04ceb17c
DK
43182010-04-14 Doug Kwan <dougkwan@google.com>
4319
4320 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
4321 for local symbol recounting if we remove a section due to ICF.
4322 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
4323 there are no regular objects in input.
4324
153e7da4
DK
43252010-04-13 Doug Kwan <dougkwan@google.com>
4326
4327 * arm.cc (Arm_input_section::set_final_data_size): Compute
4328 accurate final data size instead of using current data size.
4329
4dbd9faf
DK
43302010-04-09 Doug Kwan <dougkwan@google.com>
4331
4332 * layout.cc (Layout::choose_output_section): Handle script section
4333 types.
4334 (Layout::make_output_section_for_script): Add section type parameter.
4335 Handle script section types.
4336 * layout.h (Layout::make_output_section_for_script): Add section
4337 type parameter.
4338 * output.cc (Output_section::Output_section): Initialize data member
4339 is_noload_.
4340 (Output_section::do_reset_address_and_file_offset): Do not set address
4341 to 0 if section is a NOLOAD section.
4342 * output.h (Output_section::is_noload): New method.
4343 (Output_section::set_is_noload): Ditto.
4344 (Output_section::is_noload_): New data member.
4345 * script-c.h (Script_section_type): New enum type.
4346 (struct Parser_output_section_header): Add new file section_type.
4347 * script-sections.cc (Sections_element::output_section_name): Add
4348 parameter for returning script section type.
4349 (Output_section_definition::output_section_name): Ditto.
4350 (Output_section_definition::section_type)P; New method.
4351 (Output_section_definiton::script_section_type_name): Ditto.
4352 (Output_section_definition::script_section_type_): New data member.
4353 (Output_section_definition::Output_section_definition): Initialize
4354 data member Output_section_definition::script_section_type_.
4355 (Output_section_definition::create_sections): Pass script section type
4356 to Layout::make_output_section_for_script.
4357 (Output_section_definition::output_section_name): Return script
4358 section type to caller.
4359 (Output_section_definition::set_section_address): Do not advance
4360 dot value and load address if section type is NOLOAD. Set address
4361 of NOLOAD sections regardless of section flags.
4362 (Output_section_definition::print): Print section type if it is
4363 not SCRIPT_SECTION_TYPE_NONE.
4364 (Output_section_definition::section_type): New method.
4365 (Output_section_definition::script_section_type_name): Ditto.
4366 (Script_sections::output_section_name): Add new parameter
4367 PSECTION_TYPE for returning script section type. Pass it to
4368 section elements. Handle discard sections.
4369 (Sort_output_sections::operator()): Handle NOLOAD sections.
4370 * script-sections.h (Script_sections::Section_type): New enum type.
4371 (Script_sections::output_section_name): Add a new parameter for
4372 returning script section type.
4373 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
4374 INFO and NOLOAD.
4375 * yyscript.y (union): Add new field SECTION_TYPE.
4376 (COPY, DSECT, INFO, NOLOAD): New tokens.
4377 (opt_address_and_section_type): Change type to output_section_header.
4378 (section_type): New non-terminal
4379 (section_header): Handle section type.
2253bfba 4380 (opt_address_and_section_type): Return section type value.
4dbd9faf 4381
721ea635
L
43822010-04-09 H.J. Lu <hongjiu.lu@intel.com>
4383
4384 * testsuite/plugin_common_test_1.c (foo): Add prototype.
4385 * testsuite/plugin_common_test_2.c (foo): Likewise.
4386
6bf924b0
DK
43872010-04-08 Doug Kwan <dougkwan@google.com>
4388
4389 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
4390 Output_merge_data.
4391 * output.cc (Output_section::add_merge_input_section): Simplify
4392 code and return status of Output_merge_base::add_input_section.
e1df38aa 4393 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
4394 returns true.
4395
24af6f92
DK
43962010-04-07 Doug Kwan <dougkwan@google.com>
4397
4398 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
4399 if section is marked as containing instructions but has no mapping
4400 symbols.
4401 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
4402 correct section index.
4403 (Arm_relobj::find_linked_text_section): Ditto.
4404
00698fc5
CC
44052010-04-07 Cary Coutant <ccoutant@google.com>
4406
4407 * archive.cc (include_member): Destroy Read_symbols_data object before
4408 releasing file.
4409 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
4410 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
4411 (Read_symbols_data::~Read_symbols_data) New destructor.
4412 (Section_relocs::Section_relocs) New constructor.
4413 (Section_relocs::~Section_relocs) New destructor.
4414 (Read_relocs_data::Read_relocs_data) New constructor.
4415 (Read_relocs_data::~Read_relocs_data) New destructor.
4416 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
4417 pointers to NULL after deleting.
4418
7296d933
DK
44192010-04-07 Doug Kwan <dougkwan@google.com>
4420
4421 * arm.cc: Replace "endianity" with "endianness" in comments.
4422 (Arm_exidx_cantunwind): Ditto.
4423 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
4424 (Arm_relobj::merge_flags_and_attributes): New method.
4425 (Arm_relobj::merge_flags_and_attributes_): New data member.
4426 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
4427 (Arm_relobj::scan_sections_for_stubs): Ditto.
4428 (Arm_relobj::do_read_symbols): Check to see if we really want to
4429 merge processor-specific flags and attributes. Exit early if
4430 an object is empty except for section names and the undefined symbol.
4431 (Target_arm::do_finalize_sections): Move check for ELF format to
4432 Arm_relobj::do_read_symbols. Merge processor specific flags and
4433 attributes from a regular object only when we have determined that
4434 it is aapropriate. Do not create an .ARM.attributes section in
4435 output if there is no regular input object.
4436 (Target_arm::merge_processor_specific_flags): Check
4437 --warn-mismatch before printing any error.
4438 (Target_arm::merge_object_attributes): Ditto.
4439 * gold.cc (queue_middle_tasks): Handle the case in which there is
4440 no regular object in input.
4441 * options.cc (General_options::parse_EB): New method.
4442 (General_options::parse_EL): Same.
4443 (General_options::General_options): Initialize endianness_.
4444 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
4445 New options.
4446 (General_options::Endianness): New enum.
4447 (General_options::endianness): New method.
4448 (General_options::endianness_): New data member.
4449 * parameters.cc (Parameters::set_options): Check target endianness.
4450 (Parameters::set_target_once): Ditto.
4451 (Parameters::check_target_endianness): New method.
4452 (parameters_force_valid_target): If either -EL or -EB is specified,
4453 use it to define endianness of default target.
4454 * parameters.h (Parameters::check_target_endianness): New method
4455 declaration.
4456 * target.h (class Target): Change "endianity" to "endianness"
4457 in comments.
4458
efc8d4f2
RW
44592010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4460
4461 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
4462 * configure: Regenerate.
4463 * Makefile.in: Regenerate.
4464 * testsuite/Makefile.in: Regenerate.
4465
be234d88
CC
44662010-04-06 Cary Coutant <ccoutant@google.com>
4467
4468 gcc PR lto/42757
4469 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
4470 prevailing definitions of common symbols.
4471 * testsuite/plugin_test_6.sh: New test case.
4472 * testsuite/plugin_common_test_1.c: New test case.
4473 * testsuite/plugin_common_test_2.c: New test case.
4474 * testsuite/Makefile.am (plugin_test_6): New test case.
4475 * testsuite/Makefile.in: Regenerate.
4476
bd32c6bd
NC
44772010-04-06 Nick Clifton <nickc@redhat.com>
4478
4479 * po/vi.po: New Vietnamese translation.
4480
323c532f
DK
44812010-03-30 Doug Kwan <dougkwan@google.com>
4482
4483 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
4484
4fcd97eb
DK
44852010-03-25 Doug Kwan <dougkwan@google.com>
4486
4487 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
4488 to avoid a conversion warning on a 32-bit host.
4489
4ebf39db
ILT
44902010-03-24 Ian Lance Taylor <iant@google.com>
4491
4492 * testsuite/script_test_3.t: Add a TLS segment.
4493 * testsuite/Makefile.am (check_PROGRAMS): Add
4494 tls_phdrs_script_test.
4495 (tls_phdrs_script_test_SOURCES): Define.
4496 (tls_phdrs_script_test_DEPENDENCIES): Define.
4497 (tls_phdrs_script_test_LDFLAGS): Define.
4498 (tls_phdrs_script_test_LDADD): Define.
4499 * testsuite/Makefile.in: Rebuild.
4500
4a599bdd
CC
45012010-03-23 Cary Coutant <ccoutant@google.com>
4502
4503 * fileread.cc (find_or_make_view): Fix comment.
4504
6c93b22c
ILT
45052010-03-23 Ian Lance Taylor <iant@google.com>
4506
4507 * script-sections.cc (class Orphan_section_placement): Define
4508 PLACE_TLS and PLACE_TLS_BSS.
4509 (Orphan_section_placement::Orphan_section_placement): Initialize
4510 new places.
4511 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
4512 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
4513 (tls_script_test_SOURCES): Define.
4514 (tls_script_test_DEPENDENCIES): Define.
4515 (tls_script_test_LDFLAGS): Define.
4516 (tls_script_test_LDADD): Define.
4517 * testsuite/Makefile.in: Rebuild.
4518
a2c7281b
DK
45192010-03-22 Doug Kwan <dougkwan@google.com>
4520
4521 * arm.cc (Arm_relocate_functions::abs8,
4522 Arm_relocate_functions::abs16): Use correct check for overflow
4523 specified in the ARM ELF specs.
4524 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
4525 target of a BLX instruction specially.
4526 (Reloc_stub::stub_type_for_reloc): Ditto.
4527 (Relocate::relocate): Use symbolic names instead of numeric relocation
4528 codes to report error.
4529 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
4530 workaround.
4531 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
4532 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
4533 thumb2_blx_out_of_range.stdout
4534 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
4535 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
4536 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
4537 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
4538 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
4539 thumb2_blx_in_range, thumb2_blx_in_range.o,
4540 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
4541 thumb2_blx_out_of_range.o): New rules.
4542 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
4543 thumb2_blx_in_range and thumb2_blx_out_of_range.
4544 * testsuite/Makefile.in: Regenerate.
4545 * arm_branch_in_range.sh: Add tests for THUMB BLX.
4546 * testsuite/thumb_blx_in_range.s: New file.
4547 * testsuite/thumb_blx_out_of_range.s: New file.
4548
b0193076
RÁE
45492010-03-22 Rafael Espindola <espindola@google.com>
4550
4551 * archive.cc (Should_include): Move to archive.h.
4552 (should_include_member): Make it a member of Archive.
4553 (Lib_group): New.
4554 (Add_lib_group_symbols): New.
4555 * archive.h: Include options.h.
4556 (Archive_member): Moved from Archive.
4557 (Should_include): Moved from archive.cc.
4558 (Lib_group): New.
4559 (Add_lib_group_symbols): New.
4560 * dynobj.cc (do_should_include_member): New.
4561 * dynobj.h (do_should_include_member): New.
4562 * gold.cc (queue_initial_tasks): Update call to queue.
4563 * main.cc (main): Print lib group stats.
4564 * object.cc (do_should_include_member): New.
4565 * object.h: Include archive.h.
4566 (Object::should_include_member): New.
4567 (Object::do_should_include_member): New.
4568 (Sized_relobj::do_should_include_member): New.
4569 * options.cc (General_options::parse_start_lib): New.
4570 (General_options::parse_end_lib): New.
4571 (Input_arguments::add_file): Handle lib groups.
4572 (Input_arguments::start_group): Check we are not in a lib.
4573 (Input_arguments::start_lib): New.
4574 (Input_arguments::end_lib): New.
4575 * options.h (General_options): Add start_lib and end_lib.
4576 (Input_argument::lib_): New.
4577 (Input_argument::lib): New.
4578 (Input_argument::is_lib): New.
4579 (Input_file_lib): New.
4580 (Input_arguments::in_lib_): New.
4581 (Input_arguments::in_lib): New.
4582 (Input_arguments::start_lib): New.
4583 (Input_arguments::end_lib_): New.
4584 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
4585 in unused members as preempted.
4586 (Sized_pluginobj::do_should_include_member): New.
4587 * plugin.h (Sized_pluginobj::do_should_include_member): New.
4588 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
4589 return the blocker.
4590 (Read_symbols::do_whole_lib_group): New.
4591 (Read_symbols::do_lib_group): New.
4592 (Read_symbols::do_read_symbols): Handle lib groups.
4593 (Read_symbols::get_name): Handle lib groups.
4594 * readsyms.h (Read_symbols): Add an archive member pointer.
4595 (Read_symbols::do_whole_lib_group): New.
4596 (Read_symbols::do_lib_group): New.
4597 (Read_symbols::member_): New.
4598 * script.cc (read_input_script): Update call to queue_soon.
4599
d099120c
DK
46002010-03-19 Doug Kwan <dougkwan@google.com>
4601
4602 * arm.cc (Stub_table::Stub_table): Initialize new data members
4603 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
4604 (Stub_table::add_reloc_stub): Assign stub offset and update
4605 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
4606 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
4607 New data members.
4608 (Stub_table::update_data_size_and_addralign): Use
4609 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
4610 instead of going over all reloc stubs.
4611 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
4612 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
4613 Stringpool_template::offset_ to size of Stringpool_char.
4614 (Stringpool_template::new_key_offset): Remove code to initialize
4615 Stringpool_template::offset_.
4616 * stringpool.h (Stringpool_template::set_no_zero_null): Set
4617 Stringpool_template::offset_ to zero.
4618
1aa37384
DK
46192010-03-15 Doug Kwan <dougkwan@google.com>
4620
4621 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
4622 offset_.
4623 (Stringpool_template::new_key_offset): New method.
4624 (Stringpool_template::add_string): Assign offsets when adding new
4625 strings.
4626 (Stringpool_template::set_string_offsets): Do not set string offsets
4627 when not optimizing.
4628 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
4629 member size_.
4630 (Chunked_vector::clear): Clear size_.
4631 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
4632 (Chunked_vector::size): Return size_.
4633 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 4634 (Chunked_vector::size_): New data member.
1aa37384
DK
4635 (Stringpool_template::set_no_zero_null): Assert string set is empty.
4636 (Stringpool_template::new_key_offset): New method declaration.
4637 (Stringpool_template::offset_): New data member.
4638
b672b057
RÁE
46392010-03-15 Rafael Espindola <espindola@google.com>
4640
4641 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
4642 Add_symbols' constructor.
4643 * readsyms.h (Add_symbols): Remove the input_group member.
4644
b6848d3c
ILT
46452010-03-10 Ian Lance Taylor <iant@google.com>
4646
4647 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
4648 target to ask whether a reference to a symbol requires a stack
4649 split.
4650 * target.h (Target::is_call_to_non_split): New function.
4651 (Target::do_is_call_to_non_split): Declare virtual function.
4652 * target.cc: Include "symtab.h".
4653 (Target::do_is_call_to_non_split): New function.
4654 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
4655
a2a5469e
CC
46562010-03-10 Cary Coutant <ccoutant@google.com>
4657
4658 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
4659 (File_read::open[1]): Remove initial mapping of whole_file_view_.
4660 (File_read::open[2]): Add whole_file_view_ to list of views.
4661 (File_read::make_view): Remove test of whole_file_view_.
4662 (File_read::find_or_make_view): Create whole_file_view_ if
4663 necessary.
4664 (File_read::clear_views): Replace bool parameter with enum;
4665 adjust all callers. Don't delete views with permanent data;
4666 do delete cached views and views from archives if
4667 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
4668 if clearing the corresponding view.
4669 * fileread.h (File_read::Clear_views_mode): New enum.
4670 (File_read::View::is_permanent_view): New method.
4671 (File_read::clear_views): Replace bool parameter
4672 with enum; adjust all callers.
4673 * options.h (General_options): Change keep_files_mapped option;
4674 add map_whole_files.
4675 * readsyms.cc (Add_symbols::run): Delete sd_ object before
4676 releasing the file.
4677 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
4678 the file.
4679
8861f32b
DM
46802010-03-10 David S. Miller <davem@davemloft.net>
4681
4682 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
4683
d62d0f5f
ST
46842010-03-09 Sriraman Tallam <tmsriram@google.com>
4685
4686 * icf.cc (get_section_contents): Add '@' marker after processing the
4687 merge reloc.
4688
9177756d
DK
46892010-03-08 Doug Kwan <dougkwan@google.com>
4690
4691 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
4692 due to a conversion warning.
4693 (Arm_relobj::update_output_local_symbol_count): Check for local
4694 symbol with unset output index.
4695
9e9e071b
ILT
46962010-03-05 Ian Lance Taylor <iant@google.com>
4697
4698 * options.h (class General_options): Add --spare-dynamic-tags.
4699 * output.cc (Output_data_dynamic::set_final_data_size): Implement
4700 --spare-dynamic-tags.
4701
a81ee015
ILT
47022010-03-05 Ian Lance Taylor <iant@google.com>
4703
4704 * incremental.cc: Include "libiberty.h".
4705
44ec90b9
RO
47062010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4707
4708 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
4709 function, is_info_ member.
4710 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
4711 (Versions::Versions): Update caller.
4712 (Versions::define_base_version): Likewise.
4713 (Versions::add_def): Likewise.
4714
0897ed3b
ST
47152010-03-03 Sriraman Tallam <tmsriram@google.com>
4716
4717 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
4718 (Scan::possible_function_pointer_reloc): New function.
4719 (Scan::local_reloc_may_be_function_pointer): Change to call
4720 possible_function_pointer_reloc.
4721 (Scan::global_reloc_may_be_function_pointer): Ditto.
4722 * icf.h (Icf::check_section_for_function_pointers): Change to reject
4723 relocations in ".data.rel.ro._ZTV" section.
4724 * testsuite/icf_safe_so_test.sh: Change to pass i386.
4725 * testsuite/icf_safe_so_test.cc: Ditto.
4726 * testsuite/icf_safe_test.cc: Ditto.
4727 * testsuite/icf_safe_test.sh: Ditto.
4728
d3bbad62
ILT
47292010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4730 Ian Lance Taylor <iant@google.com>
4731
4732 * target-reloc.h (relocate_section): Check the symbol table index
4733 for -1U before setting the local symbol index.
4734 (scan_relocatable_relocs): If copying the relocation, record that
4735 the local symbol is required.
4736 * object.h (Symbol_value::is_output_symtab_index_set): New
4737 function.
4738 (Symbol_value::may_be_discarded_from_output_symtab): New
4739 function.
4740 (Symbol_value::has_output_symtab_entry): New function.
4741 (Symbol_value::needs_output_symtab_entry): Remove.
4742 (Symbol_value::output_symtab_index): Make sure the symbol index is
4743 set.
4744 (Symbol_value::set_output_symtab_index): Make sure the symbol
4745 index is not set. Make sure the new index is valid.
4746 (Symbol_value::set_must_have_output_symtab_entry): New function.
4747 (Symbol_value::has_output_dynsym_entry): New function.
4748 (Symbol_value::set_output_dynsym_index): Make sure the new index
4749 is valid.
4750 (Sized_relobj::set_must_have_output_symtab_entry): New function.
4751 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
4752 local symbol if permitted.
4753 (Sized_relobj::do_finalize_local_symbols): Call
4754 is_output_symtab_index_set rather than needs_output_symtab_entry.
4755 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
4756 rather than needs_output_symtab_entry. Call
4757 has_output_dynsym_entry rather than needs_output_dynsym_entry.
4758 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
4759 is_output_symtab_index_set rather than needs_output_symtab_entry.
4760 * testsuite/discard_locals_relocatable_test.c: New file.
4761 * testsuite/discard_locals_test.sh: Test -r.
4762 * testsuite/Makefile.am (check_DATA): Add
4763 discard_locals_relocatable_test1.syms,
4764 discard_local_relocatable_test2.syms.
4765 (MOSTLYCLEANFILES): Likewise. Also add
4766 discard_locals_relocatable_test1.lout and
4767 discard_locals_relocatable_test2.out.
4768 (discard_locals_relocatable_test1.syms): New target.
4769 (discard_locals_relocatable_test.o): New target.
4770 (discard_locals_relocatable_test1.out): New target.
4771 (discard_locals_relocatable_test2.syms): New target.
4772 (discard_locals_relocatable_test2.out): New target.
4773 (various): Add missing ../ld-new dependencies.
4774 * testsuite/Makefile.in: Rebuild.
4775
7e8ccf26
NC
47762010-03-03 Nick Clifton <nickc@redhat.com>
4777
4778 * po/fi.po: New Finnish translation.
4779
2a0ff005
DK
47802010-03-01 Doug Kwan <dougkwan@google.com>
4781
4782 * layout.cc (Layout::Layout): Force section types of .init_array*,
4783 .preinit_array* and .fini_array* sections.
4784 * output.cc (Output_section::Input_section_sort_entry::has_priority):
4785 Fix check of return value of std::string::find.().
4786 (Output_section::Input_section_sort_compare::operator()): Remove
4787 comment about .init_array.
4788 (Output_section::Input_section_sort_init_fini_compare::operator()):
4789 New method.
4790 (Output_section::sort_attached_input_sections): Handle .init_array
4791 and .fini_array specially.
4792 * output.h (Output_section::Inut_section_sort_compare): Update
4793 comment.
4794 (Output_section::Input_section_sort_init_fini_compare): New struct.
4795
c3e4ae29
DK
47962010-02-26 Doug Kwan <dougkwan@google.com>
4797
4798 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
4799 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
4800 * testsuite/debug_msg.sh: Avoid matching source line number for
4801 use of global variable undef_int.
4802
2fd9ae7a
DK
48032010-02-26 Doug Kwan <dougkwan@google.com>
4804
4805 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
4806 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
4807 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
4808 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
4809 * options.cc (General_options::General_options): Initialize member
4810 fix_v4bx_.
4811 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
4812 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
4813 and rm_no_fix_v4bx.stdout
4814 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
4815 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
4816 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
4817 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
4818 and arm_no_fix_v4bx.
4819 * Makefile.in: Regenerate.
4820 * testsuite/arm_fix_v4bx.s: New file.
4821 * testsuite/arm_fix_v4bx.sh: Ditto.
4822
67ec7d0b
DK
48232010-02-24 Doug Kwan <dougkwan@google.com>
4824
4825 * arm.cc (Target_arm::got_section): Make the .got section the first
4826 non RELRO section in the data segment.
4827 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
4828 suffixes of section names.
4829
10165461
DK
48302010-02-24 Doug Kwan <dougkwan@google.com>
4831
4832 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
4833 flags and attributes merging if an input file is a binary file.
4834 * fileread.cc (Input_file::open): Record format of original file.
4835 * fileread.h (Input_file::Format): New enum type.
4836 (Input_file::Input_file): Initialize data member format_.
4837 (Input_file::format): New method definition.
4838 (Input_file::format_):: New data member.
4839
4a54abbb
DK
48402010-02-24 Doug Kwan <dougkwan@google.com>
4841
4842 * arm.cc (Arm_output_data_got): New class.
4843 (ARM_TCB_SIZE): New constant
4844 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
4845 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
4846 If user uses a script with a SECTIONS clause, issue only a warning
4847 for a misplaced EXIDX input section. Otherwise, issue an error.
4848 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
4849 garbage collection.
4850 (Target_arm::got_mode_index_entry): Handle static linking.
4851 (Target_arm::Scan::local): Ditto.
4852 (Target_arm::Scan::global): Ditto.
4853 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
4854 all incorrectly implemented relocations.
e1df38aa 4855 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
4856 Arm_output_section::fix_exidx_coverage.
4857 * layout.cc (Layout::section_name_mapping): Remove trailing dots
4858 from ".ARM.exidx." and ".ARM.extab.".
4859
ca419a6f
ILT
48602010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4861
4862 * arm.cc (Target_arm::do_finalize_sections): Create attribute
4863 section if it does not already exist.
4864 * attributes.cc (Attributes_section_data::Attributes_section_data):
4865 Don't crash if size is zero.
4866
135b9c78
ILT
48672010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4868 Ian Lance Taylor <iant@google.com>
4869
4870 * gold.cc (queue_middle_tasks): If no input files were opened,
4871 exit.
4872 * workqueue.h (Task_function::Task_function): Assert that there is
4873 a blocker.
4874
bb0bfe4f
DK
48752010-02-22 Doug Kwan <dougkwan@google.com>
4876
4877 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
4878 * icf.cc (get_section_contents): Cast snprintf arguments to long long
4879 types to avoid warnings due to different uint64_t implementations
4880 on different hosts.
4881
2a2b6d42
DK
48822010-02-21 Doug Kwan <dougkwan@google.com>
4883
4884 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
4885 handling of the maximum backward branch offset.
4886 (Arm_relocate_functions::thumb_branch_common): Ditto.
4887 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
4888 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 4889 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
4890 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
4891 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
4892 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
4893 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
4894 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
4895 thumb_bl_out_of_range thumb_bl_out_of_range.o,
4896 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
4897 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
4898 thumb2_bl_out_of_range.o): New rules.
4899 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
4900 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
4901 thumb2_bl_out_of_range
4902 * testsuite/Makefile.in: Regenerate.
4903 * testsuite/arm_bl_in_range.s: New file.
4904 * testsuite/arm_bl_out_of_range.s: Ditto.
4905 * testsuite/arm_branch_in_range.sh: Ditto.
4906 * testsuite/arm_branch_range.t: Ditto.
4907 * testsuite/thumb2_branch_range.t: Ditto.
4908 * testsuite/thumb_bl_in_range.s: Ditto.
4909 * testsuite/thumb_bl_out_of_range.s: Ditto.
4910 * testsuite/thumb_branch_range.t: Ditto.
4911
b487ad64
ST
49122010-02-20 Sriraman Tallam <tmsriram@google.com>
4913
4914 * gc.h (gc_process_relocs): Change vectors to point to the new list.
4915 Add reloc offset information.
4916 * icf.cc (get_section_contents): Change iterators to point to the new
4917 vectors. Add reloc offset information to the contents.
4918 * icf.h (Icf::Sections_reachable_info): New typedef.
4919 (Icf::Sections_reachable_list): New typedef.
4920 (Icf::Offset_info): New typedef.
4921 (Icf::Reloc_info): New struct typedef.
4922 (Icf::Reloc_info_list): New typedef.
4923 (Icf::symbol_reloc_list): Delete method.
4924 (Icf::addend_reloc_list): Delete method.
4925 (Icf::section_reloc_list): Delete method.
4926 (Icf::reloc_info_list): New method.
4927 (Icf::reloc_info_list_): New member.
4928
f96accdf
DK
49292010-02-19 Doug Kwan <dougkwan@google.com>
4930
4931 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
4932 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
4933 * arm.cc (Arm_relocation_functions): New forward declaration.
4934 (Target_arm::Target_arm): Initialize new data members
4935 got_mod_index_offset_ and tls_base_symbol_defined_.
4936 (Target_arm::Relocate::relocate_tls): New method.
4937 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
4938 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
4939 New methods.
4940 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
4941 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
4942 (Target_arm::got_mod_index_offset_,
4943 Target_arm::tls_base_symbol_defined_): New data members.
4944 (Target_arm::Scan::local, Target::Scan::global,
4945 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
4946 relocations.
4947
c8761b9a
DK
49482010-02-18 Doug Kwan <dougkwan@google.com>
4949
4950 * arm.cc (Arm_relobj::find_linked_text_section): New method.
4951 (Arm_relobj::make_exidx_input_section): Pass section index of linked
4952 text section as a parameter becuase some broken tools may not set
4953 the link in section header.
4954 (Target_arm::has_got_section): New method.
4955 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
4956 without any mapping symbol as data only. Remove warning.
4957 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
4958 link in its section header, try to discover the link by inspecting the
4959 REL31 relocation at the beginning of the section.
4960 (Target_arm::Scan::check_non_pic): Report name of offending relocation
4961 in error message.
4962 (Target_arm::Scan::global): Treat any reference to the symbol
4963 _GLOBAL_OFFSET_TABLE_ as a GOT access.
4964
21bb3914
ST
49652010-02-12 Sriraman Tallam <tmsriram@google.com>
4966
4967 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
4968 (Scan::global_reloc_may_be_function_pointer): New function.
4969 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
4970 (Scan::global_reloc_may_be_function_pointer): New function.
4971 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
4972 (Scan::global_reloc_may_be_function_pointer): New function.
4973 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
4974 (Scan::global_reloc_may_be_function_pointer): New function.
4975 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
4976 (Scan::global_reloc_may_be_function_pointer): New function.
4977 (Scan::possible_function_pointer_reloc): New function.
4978 (Target_x86_64::can_check_for_function_pointers): New function.
4979 * gc.h (gc_process_relocs): Scan relocation types to determine if
4980 function pointers were taken for targets that support it.
4981 * icf.cc (Icf::find_identical_sections): Include functions for
4982 folding in safe ICF whose pointer is not taken.
4983 * icf.h (Secn_fptr_taken_set): New typedef.
4984 (fptr_section_id_): New member.
4985 (section_has_function_pointers): New function.
4986 (set_section_has_function_pointers): New function.
4987 (check_section_for_function_pointers): New function.
4988 * options.h: Fix comment for safe ICF option.
4989 * target.h (can_check_for_function_pointers): New function.
4990 * testsuite/Makefile.am: Add icf_safe_so_test test case.
4991 Modify icf_safe_test for X86-64.
4992 * testsuite/Makefile.in: Regenerate.
4993 * testsuite/icf_safe_so_test.cc: New file.
4994 * testsuite/icf_safe_so_test.sh: New file.
4995 * testsuite/icf_safe_test.cc (kept_func_3): New function.
4996 (main): Change to take pointer to function kept_func_3.
4997 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
4998 folding is done correctly for X86-64.
4999
0da6fa6c
DM
50002010-02-12 David S. Miller <davem@davemloft.net>
5001
5002 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
5003 is_symbolless parameter.
5004 (Output_reloc<SHT_REL>::is_symbolless): New.
5005 (Output_reloc<SHT_REL>::is_symbolless_): New.
5006 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
5007 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
5008 (Output_reloc<SHT_RELA>::is_symbolless): New.
5009 (Output_data_reloc::add_global): Handle is_symbolless.
5010 (Output_data_reloc::add_global_relative): Likewise.
5011 (Output_data_reloc::add_local): Likewise.
5012 (Output_data_reloc::add_local_relative): Likewise.
5013 (Output_data_reloc::add_symbolless_global_addend): New.
5014 (Output_data_reloc::add_symbolless_local_addend): New.
5015 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
5016 is_symbolless.
5017 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
5018 instead of ->is_relative_
5019 (Output_reloc::write): Likewise.
5020 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
5021 (Output_reloc::write_rel): Simplify.
5022
5023 * sparc.cc (Target_sparc::Scan::local): Use
5024 ->add_symbolless_local_addend as needed.
5025 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
5026 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
5027 based upon relocation offset.
5028
e4782e83
DK
50292010-02-11 Doug Kwan <dougkwan@google.com>
5030
5031 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
5032 (Target_arm::Scan::global): Ditto. Also remove a comment before the
5033 beginning of function.
5034 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
5035 and MOVT_ABS relocations. Those are non issued in scanning. Fix
5036 parameter is_32bit in calls to should_apply_static_reloc.
5037 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
5038 (check_DATA): Add arm_abs_global.stdout.
5039 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
5040 arm_abs_global.stdout): New rules.
5041 (MOSTLLYCLEANFILES): Add arm_abs_global
5042 * Makefile.in: Regenerate.
5043 * testsuite/arm_abs_global.s: New file.
5044 * testsuite/arm_abs_global.sh: Ditto.
5045 * testsuite/arm_abs_lib.s: Ditto.
5046
93ceb764
ILT
50472010-02-11 Ian Lance Taylor <iant@google.com>
5048
5049 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
5050 Read_relocs task.
5051 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
5052 Allocate_commons_task first.
5053 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
5054 task, rather than symtab_lock_.
5055 (Gc_process_relocs::~Gc_process_relocs): New function.
5056 (Gc_process_relocs::is_runnable): Check this_blocker_.
5057 (Gc_process_relocs::locks): Use next_blocker_ rather than
5058 blocker_.
5059 (Scan_relocs::~Scan_relocs): New function.
5060 (Scan_relocs::is_runnable): Check this_blocker_ rather than
5061 symtab_lock_.
5062 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
5063 next_blocker_.
5064 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
5065 fields. Add this_blocker_ and next_blocker_ fields. Adjust
5066 constructor accordingly.
5067 (class Gc_process_relocs): Likewise.
5068 (class Scan_relocs): Likewise.
5069 * common.h (class Allocate_commons_task): Remove symtab_lock_
5070 field, and corresponding constructor parameter.
5071 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
5072 symtab_lock_.
5073 (Allocate_commons_task::locks): Likewise.
5074
114dfbe1
ILT
50752010-02-11 Ian Lance Taylor <iant@google.com>
5076
5077 * gold-threads.h (class Once): Define.
5078 (class Initialize_lock): Rewrite as child of Once.
5079 * gold-threads.cc (class Once_initialize): Define.
5080 (once_pointer_control): New static variable.
5081 (once_pointer, once_arg): New static variables.
5082 (c_run_once): New static function.
5083 (Once::Once, Once::run_once, Once::internal_run): New functions.
5084 (class Initialize_lock_once): Remove.
5085 (initialize_lock_control): Remove.
5086 (initialize_lock_pointer): Remove.
5087 (initialize_lock_once): Remove.
5088 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
5089 (Initialize_lock::initialize): Rewrite.
5090 (Initialize_lock::do_run_once): New function.
5091 * archive.cc (Archive::interpret_header): Only clear name if it is
5092 not already empty.
5093 * fileread.cc: Include "gold-threads.h"
5094 (file_counts_lock): New static variable.
5095 (file_counts_initialize_lock): Likewise.
5096 (File_read::release): Only increment counts when using --stats.
5097 Use a lock around the increment.
5098 * parameters.cc (class Set_parameters_target_once): Define.
5099 (set_parameters_target_once): New static variable.
5100 (Parameters::Parameters): Move here from parameters.h.
5101 (Parameters::set_target): Rewrite.
5102 (Parameters::set_target_once): New function.
5103 (Parameters::clear_target): Move here and rewrite.
5104 * parameters.h (class Parameters): Update declarations. Add
5105 set_parameters_target_once_ field.
5106 (Parameters::Parameters): Move to parameters.cc.
5107 (Parameters::clear_target): Likewise.
5108 * readsyms.cc (Read_symbols::do_group): Create a Start_group
5109 task.
5110 (Start_group::~Start_group): New function.
5111 (Start_group::is_runnable): New function.
5112 (Start_group::locks, Start_group::run): New functions.
5113 (Finish_group::run): Change saw_undefined to size_t.
5114 * readsyms.h (class Start_group): Define.
5115 (class Finish_group): Change saw_undefined_ field to size_t.
5116 (Finish_group::Finish_group): Remove saw_undefined and
5117 this_blocker parameters. Change all callers.
5118 (Finish_group::set_saw_undefined): New function.
5119 (Finish_group::set_blocker): New function.
5120 * symtab.h (class Symbol_table): Change saw_undefined to return
5121 size_t. Change saw_undefined_ field to size_t.
5122 * target-select.cc (Set_target_once::do_run_once): New function.
5123 (Target_selector::Target_selector): Initialize set_target_once_
5124 field. Don't initialize lock_ and initialize_lock_ fields.
5125 (Target_selector::instantiate_target): Rewrite.
5126 (Target_selector::set_target): New function.
5127 * target-select.h (class Set_target_once): Define.
5128 (class Target_selector): Update declarations. Make
5129 Set_target_once a friend. Remove lock_ and initialize_lock_
5130 fields. Add set_target_once_ field.
5131
fa17a3f4
ILT
51322010-02-10 Ian Lance Taylor <iant@google.com>
5133
5134 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
5135 queueing any tasks.
5136 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
5137 (queue_middle_tasks): Add all blockers before queueing any tasks.
5138 (queue_final_tasks): Likewise.
5139 * token.h (Task_token::add_blockers): New function.
5140 * object.h (Input_objects::number_of_relobjs): New function.
5141
c7177d31
ILT
51422010-02-10 Ian Lance Taylor <iant@google.com>
5143
5de0e392
ILT
5144 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
5145 shared, not if not position independent.
5146 * x86_64.cc (Relocate::relocate_tls): Likewise.
5147 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
5148 (tls_pie_pic_test): New target.
5149 * testsuite/Makefile.in: Rebuild.
5150
c7177d31
ILT
5151 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
5152 (tls_test_main_pie.o, tls_test_pie.o): New targets.
5153 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
5154 * testsuite/Makefile.in: Rebuild.
5155
684b268a
DM
51562010-02-09 David S. Miller <davem@davemloft.net>
5157
5158 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
5159 R_SPARC_RELATIVE using ->add_local_relative().
5160 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
5161
612a8d3d
DM
5162 * output.h (Output_data_dynamic::add_section_size): New method
5163 that takes two Output_data objects.
5164 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
5165 entry param. Handle it in initializers.
5166 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
5167 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
5168 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
5169 arg.
5170 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
5171 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
5172 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
5173 for dynrel_includes_plt.
5174 * i386.cc (Target_i386::do_finalize_sections): Likewise.
5175 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5176 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
5177 before .rela.plt
5178 (Target_sparc::do_finalize_sections): Update to pass true for
5179 dynrel_includes_plt.
5180 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
5181 output before .rela.plt
5182 (Target_powerpc::do_finalize_sections): Update to pass true for
5183 dynrel_includes_plt when 32-bit.
5184
cb1be87e
DK
51852010-02-08 Doug Kwan <dougkwan@google.com>
5186
5187 * arm.cc (Arm_relobj::simple_input_section_output_address): New
5188 method.
5189 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
5190 Arm_relobj::scan_section_for_cortex_a8_stubs,
5191 Arm_relobj::do_relocation_section): Instead of calling
5192 Output_section::output_address, use faster
5193 Arm_relobj::simple_input_section_output_address.
5194
705b5121
DM
51952010-02-08 David S. Miller <davem@davemloft.net>
5196
5197 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
5198 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
5199 relocation helper function.
5200
024c4466
DM
5201 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
5202 just like R_SPARC_GOT{10,13,22}.
5203 (Target_sparc::Scan::local): Likewise.
5204 (Target_sparc::Relocate:relocate): Likewise.
5205
9109c078
ILT
52062010-02-06 Ian Lance Taylor <iant@google.com>
5207
5208 * configure.ac: Rewrite targetobjs duplicate removal code to use
5209 only shell constructs.
5210 * configure: Rebuild.
5211
cf846138
DK
52122010-02-05 Doug Kwan <dougkwan@google.com>
5213
5214 PR 11247
5215 * arm.cc (Arm_relobj::section_is_scannable): New method.
5216 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
5217 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
5218
6cfaf60b
DK
52192010-02-04 Doug Kwan <dougkwan@google.com>
5220
5221 PR 11247
5222 * arm-reloc-property.cc (cstdio): Include.
5223 * configure.ac (targetobjs): Remove duplicates.
5224 * configure: Regenerate.
5225 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
5226 big and little endian version for a given address size.
5227
5c57f1be
DK
52282010-02-03 Doug Kwan <dougkwan@google.com>
5229
5230 * arm-reloc-property.cc
5231 (Arm_reloc_property_table::reloc_name_in_error_message): New method
5232 definition.
5233 * arm-reloc-property.h
5234 (Arm_reloc_property_table::get_implemented_static_reloc_property):
5235 New method definition.
5236 (Arm_reloc_property_table::reloc_name_in_error_message): New method
5237 declaration.
5238 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
5239 overflow to N.
5240 (GOT_PREL): Change implemented to Y.
5241 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
5242 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
5243 (Arm_relocate_functions::movw_abs_nc): Remove method.
5244 (Arm_relocate_functions::movt_abs): Ditto.
5245 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
5246 (Arm_relocate_functions::thm_movt_abs): Ditto.
5247 (Arm_relocate_functions::movw_rel_nc): Ditto.
5248 (Arm_relocate_functions::movw_rel): Ditto.
5249 (Arm_relocate_functions::movt_rel): Ditto.
5250 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
5251 (Arm_relocate_functions:thm_movw_rel): Ditto.
5252 (Arm_relocate_functions:thm_movt_rel): Ditto.
5253 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
5254 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
5255 New method definitions.
5256 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
5257 (Arm_relocation_functions::arm_grp_ldr): Ditto.
5258 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
5259 (Arm_relocation_functions::arm_grp_ldc): Ditto.
5260 (Target_arm::Relocate::relocate): Check for non-static or
5261 unimplemented relocation code and exit early. Change calls to
5262 Target_arm::reloc_uses_thumb_bit and
5263 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
5264 instead. Refactor code to handle similar relocations to increase
5265 code sharing. Remove check for unsupported relocation code in switch
5266 statement.
5267 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
5268 relocation property table to find out size. Change error message to
5269 print out the name of a relocation code instead of the numeric value.
5270 (Target_arm::scan_reloc_for_stub): Use relocation property table
5271 instead of calling Target_arm::reloc_uses_thumb_bit().
5272
218c5831
DK
52732010-02-02 Doug Kwan <dougkwan@google.com>
5274
5275 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
5276 types of relaxed input section.
5277
0d31c79d
DK
52782010-02-02 Doug Kwan <dougkwan@google.com>
5279
5280 * Makefile.am (HFILES): Add arm-reloc-property.h.
5281 (DEFFILES): New.
5282 (TARGETSOURCES): Add arm-reloc-property.cc
5283 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
5284 (libgold_a_SOURCES): $(DEFFILES)
5285 * Makefile.in: Regenerate.
5286 * arm-reloc-property.cc: New file.
5287 * arm-reloc-property.h: New file.
5288 * arm-reloc.def: New file.
5289 * arm.cc: Update comments.
5290 (arm-reloc-property.h): New included header.
5291 (arm_reloc_property_table): New global variable.
5292 (Target_arm::do_select_as_default_target): New method definition.
5293 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
5294 arm-reloc-property to targ_extra_obj.
5295 * parameters.cc (set_parameters_target): Call
5296 Target::select_as_default_target().
5297 * target.h (Target::select_as_default_target): New method definition.
5298 (Target::do_select_as_default_target): Same.
5299
546c7457
DK
53002010-02-01 Doug Kwan <dougkwan@google.com>
5301
5302 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
5303 first_output_text_section_.
5304 (Arm_exidx_fixup::first_output_text_section): New method definition.
5305 (Arm_exidx_fixup::first_output_text_section_): New data member.
5306 (Arm_exidx_fixup::process_exidx_section): Record the first text
5307 output section seen.
5308 (Arm_output_section::fix_exidx_coverage): Set correct linked section
5309 and entsize in output section header.
5310
11b861d5
DK
53112010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5312
5313 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
5314 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
5315 (Arm_relocate_functions::thm_alu11): New Method.
5316 (Arm_relocate_functions::thm_pc8): New Method.
5317 (Arm_relocate_functions::thm_pc12): New Method.
5318 (Target_arm::Scan::local): Handle the relocations.
5319 (Target_arm::Scan::global): Likewise.
5320 (Target_arm::Relocate::relocate): Likewise.
5321 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
5322
c9a2c125
DK
53232010-01-29 Doug Kwan <dougkwan@google.com>
5324
5325 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
5326 of relocation types as ld.
5327
1521477a
DK
53282010-01-29 Doug Kwan <dougkwan@google.com>
5329
5330 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
5331 to public.
5332 (Arm_relocate_functions::thumb_branch_common): Ditto.
5333 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
5334 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
5335 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
5336 Arm_relocate_functions::jump24): Remove.
5337 (Target_arm::Relocate::relocate): Adjust code to call
5338 Arm_relocation_functions::arm_branch_common and
5339 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 5340 wrappers. Merge switch-cases together to reduce source code size.
1521477a 5341
e7eca48c
DK
53422010-01-29 Doug Kwan <dougkwan@google.com>
5343
5344 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
5345 output_local_symbol_count_needs_update_.
5346 (Arm_relobj::output_local_symbol_count_needs_update,
5347 Arm_relobj::set_output_local_symbol_count_needs_update,
5348 Arm_relobj::update_output_local_symbol_count): New methods.
5349 (Arm_relobj::output_local_symbol_count_needs_update_): New data
5350 member.
5351 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
5352 of pointed function as in a R_ARM_PREL31 relocation.
5353 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
5354 for output local symbol count updating.
5355 (Target_arm::do_relax): Update output local symbol counts in objects
5356 if necessary.
5357 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
5358
02961d7e
ILT
53592010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5360
5361 * arm.cc: Added support for the ARM relocations:
5362 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
5363 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
5364 (Arm_relocate_functions::movw_rel_nc): Renamed (was
5365 movw_prel_nc).
5366 (Arm_relocate_functions::movw_rel): New method.
5367 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
5368 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
5369 thm_movw_prel_nc).
5370 (Arm_relocate_functions::thm_movw_rel): New method.
5371 (Arm_relocate_functions::thm_movt_rel): Renamed (was
5372 thm_movt_prel).
5373 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
5374 relocations.
5375 (Target_arm::Scan::global): Likewise.
5376 (Target_arm::Relocate::relocate): Likewise.
5377 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5378 Likewise.
5379
b10d2873
ILT
53802010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5381
5382 * arm.cc: Added support for ARM group relocations.
5383 (Target_arm::reloc_needs_sym_origin): New method.
5384 (Arm_relocate_functions::calc_grp_kn): New method.
5385 (Arm_relocate_functions::calc_grp_residual): New method.
5386 (Arm_relocate_functions::calc_grp_gn): New method.
5387 (Arm_relocate_functions::arm_grp_alu): New Method.
5388 (Arm_relocate_functions::arm_grp_ldr): New Method.
5389 (Arm_relocate_functions::arm_grp_ldrs): New Method.
5390 (Arm_relocate_functions::arm_grp_ldc): New Method.
5391 (Target_arm::Scan::local): Handle the ARM group relocations.
5392 (Target_arm::Scan::global): Likewise.
5393 (Target_arm::Relocate::relocate): Likewise.
5394 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5395 Likewise.
5396
2b328d4e
DK
53972010-01-26 Doug Kwan <dougkwan@google.com>
5398
5399 * arm.cc (set): Include.
5400 (class Arm_exidx_fixup): Change type of last_input_section_ to const
5401 pointer type.
5402 (Arm_output_section::Text_section_list): New type.
5403 (Arm_output_section::append_text_sections_to_list): New method.
5404 (Arm_output_section::fix_exidx_coverage): Ditto.
5405 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
5406 (Arm_relobj::convert_input_section_to_relaxed_section): Use
5407 Relobj::set_section_offset() instead of
5408 Sized_relobj::invalidate_section_offset().
5409 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
5410 parameter for section headers. Ignore relocation sections for
5411 unallocated sections and EXIDX sections.
5412 (Target_arm::fix_exidx_coverage): New method.
5413 (Target_arm::output_section_address_less_than): New type.
5414 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
5415 linked text section instead of the EXIDX section.
5416 (Arm_output_section::create_stub_group): Add an assertion to check
5417 that this is not an EXIDX output section.
5418 (Arm_output_section::append_text_sections_to_list): New method.
5419 (Arm_output_section::fix_exidx_coverage): Ditto.
5420 (Arm_relobj::scan_sections_for_stubs): Adjust call to
5421 Arm_relobj::section_needs_reloc_stub_scanning.
5422 (Target_arm::do_relax): Fix EXIDX output section coverage in the
5423 first pass.
5424 (Target_arm::fix_exidx_coverage): New method.
5425 * object.h (Relobj::set_output_section): New method.
5426 (Sized_relobj::invalidate_section_offset): Remove method.
5427 (Sized_relobj::do_invalidate_section_offset): Remove method.
5428 (Sized_relobj::do_set_section_offset): Handle offset value -1.
5429
c7f3c371
DK
54302010-01-25 Doug Kwan <dougkwan@google.com>
5431
5432 * arm.cc (Arm_exidx_merged_section::do_output_offset):
5433 Fix warning due to signed and unsigned comparison on a 32-bit host.
5434
8923b24c
DK
54352010-01-22 Doug Kwan <dougkwan@google.com>
5436
5437 * arm.cc (Target_arm::do_relax): Record an output section for section
5438 offset adjustment it contains any stub table that has changed.
5439 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
5440 offsets in an output section if necessary.
5441 * output.cc (Output_section::Output_section): Initialize
5442 section_offsets_need_adjustments_.
5443 (Output_section::add_input_section_for_script): Renamed to
5444 Output_section::add_simple_input_section.
5445 (Output_section::save_states): Add a comment.
5446 (Output_section::discard_states): New method defintion.
5447 (Output_section::adjust_section_offsets): Same.
5448 * output.h (Output_section::add_input_section_for_script): Renamed to
5449 Output_section::add_simple_input_section.
5450 (Output_section::discard_states): New method declaration.
5451 (Output_section::adjust_section_offsets): Same.
5452 (Output_section::section_offsets_need_adjustment,
5453 Output_section::set_section_offsets_need_adjustment): New method
5454 definitions.
5455 (Output_section::section_offsets_need_adjustment_): New data member.
5456 * script-sections.cc
5457 (Output_section_element_input::set_section_address): Adjust code for
5458 renaming of Output_section::add_input_section_for_script.
5459 (Orphan_output_section::set_section_address): Same.
5460
9b2fd367
DK
54612010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5462
5463 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
5464 Fix_v4bx enum values .
5465 * gold/options.h (General_options): New option definitions.
5466 (General_options::fix_v4bx): New method.
5467 (General_options::Fix_v4bx): New enum.
5468 * gold/options.cc (General_options::parse_fix_v4bx): New method.
5469 (General_options::parse_fix_v4bx_interworking): New method.
5470
80d0d023
DK
54712010-01-22 Doug Kwan <dougkwan@google.com>
5472
5473 * arm.cc (Arm_exidx_fixup): New class.
5474
af2cdeae
DK
54752010-01-21 Doug Kwan <dougkwan@google.com>
5476
5477 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
5478 classes.
5479 (Arm_exidx_section_offset_map): New type.
5480
993d07c1
DK
54812010-01-21 Doug Kwan <dougkwan@google.com>
5482
5483 * arm.cc (Arm_exidx_input_section): New class.
5484 (Arm_relobj::exidx_input_section_by_link,
5485 Arm_relobj::exidx_input_section_by_shndx,
5486 Arm_relobj::make_exidx_input_section): New methods.
5487 (read_arm_attributes_section): Remove.
5488 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
5489 information about them.
5490 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
5491 to here.
5492
5ac169d4
DK
54932010-01-20 Doug Kwan <dougkwan@google.com>
5494
5495 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
5496 Input_section_specifier to Section_id.
5497 (Target_arm::new_arm_input_section: Adjust code for change of key
5498 type.
5499 (Target_arm::find_arm_input_section): Ditto.
5500 * gc.h (object.h): Include for Section_id nand Section_id_hash.
5501 (Section_id): Remove.
5502 (Garbage_collection::Section_id_hash): Remove.
5503 * icf.h (object.h): Include for Section_id nand Section_id_hash.
5504 (Section_id): Remove.
5505 (Icf::Section_id_hash): Remove.
5506 * object.h (Section_id, Const_section_id, Section_id_hash,
5507 Const_section_id_hash): New type definitions.
5508 * output.cc (Output_section::add_relaxed_input_section): Change to
5509 use Const_section_id instead of Input_section_specifier as key type.
5510 (Output_section::add_merge_input_section): Ditto.
5511 (Output_section::build_relaxation_map): Change to use Section_id
5512 instead of Input_section_specifier as key type.
5513 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5514 Ditto.
5515 (Output_section::convert_input_sections_to_relaxed_sections): Change
5516 to use Const_section_id instead of Input_section_specifier as key type.
5517 (Output_section::find_merge_section): Ditto.
5518 (Output_section::find_relaxed_input_section): Ditto.
5519 * output.h (Input_section_specifier): Remove class.
5520 (Output_section::Output_section_data_by_input_section_map): Change
5521 key type to Const_section_id.
5522 (Output_section::Output_relaxed_input_section_by_input_section_map):
5523 Ditto.
5524 (Output_section::Relaxation_map): Change key type to Section_id.
5525
a2162063
ILT
55262010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5527
5528 * gold/arm.cc: Added support for R_ARM_V4BX relocation
5529 (class Arm_v4bx_stub): New class.
5530 (DEF_STUBS): Updated definition to support v4_veneer_bx.
5531 (Stub_factory::make_arm_v4bx_stub): New method.
5532 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
5533 (Stub_table::empty): Handle v4bx stubs.
5534 (Stub_table::add_arm_v4bx_stub): New method.
5535 (Stub_table::find_arm_v4bx_stub): New method.
5536 (Arm_relocate_functions::v4bx): New method.
5537 (Target_arm::fix_v4bx): New method.
5538 (Target_arm::Target_arm): Handle R_ARM_V4BX.
5539 (Stub_table::relocate_stubs): Likewise.
5540 (Stub_table::do_write): Likewise.
5541 (Stub_table::update_data_size_and_addralign): Likewise.
5542 (Stub_table::finalize_stubs): Likewise.
5543 (Target_arm::Scan::local): Likewise.
5544 (Target_arm::Scan::global): Likewise.
5545 (Target_arm::do_finalize_sections): Likewise.
5546 (Target_arm::Relocate::relocate): Likewise.
5547 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5548 Likewise.
5549 (Target_arm::scan_reloc_for_stub): Likewise.
5550 (Target_arm::scan_reloc_section_for_stubs): Likewise.
5551
5696ab0b
ILT
55522010-01-19 Ian Lance Taylor <iant@google.com>
5553
5554 * output.cc (Output_section_headers::do_sized_write): Write large
5555 segment count to sh_info field.
5556 (Output_file_header::do_sized_write): For large segment count,
5557 write PN_XNUM to e_phnum field.
5558
800d0f56
ILT
55592010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5560
5561 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
5562 (Arm_relocate_functions::thm_jump8): New function.
5563 (Arm_relocate_functions::thm_jump11): New function.
5564 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
5565 R_ARM_THM_JUMP11.
5566 (Target_arm::Scan::global): Likewise.
5567 (Target_arm::Relocate::relocate): Likewise.
5568 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5569 Likewise.
5570
41263c05
DK
55712010-01-14 Doug Kwan <dougkwan@google.com>
5572
5573 * arm.cc (map, utility): Include headers.
5574 (Target_arm::apply_cortex_a8_workaround): New method.
5575 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
5576 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
5577 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
5578 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
5579 the --[no-]fix-cortex-a8 command line options.
5580 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
5581 (Target_arm::relocate_stub): Use addend in instruction template.
5582 * options.h (DEFINE_bool): Set the user-set flag.
5583 (General_options): Add --[no-]-fix-cortex options.
5584 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 5585 : Update fast look-up map after conversion.
41263c05 5586
459e9b03
ST
55872010-01-14 Sriraman Tallam <tmsriram@google.com>
5588
5589 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
5590 in the first pass of do_layout.
5591
b521dfe4
DK
55922010-01-13 Doug Kwan <dougkwan@google.com>
5593
5594 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
5595 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
5596 apparent compiler problem of not folding static constant integral
5597 data members of elfcpp::Elf_sizes<32>.
5598
44272192
DK
55992010-01-13 Doug Kwan <dougkwan@google.com>
5600
5601 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
5602 Arm_relobj::section_needs_cortex_a8_stub_scanning,
5603 Arm_relobj::scan_section_for_cortex_a8_erratum,
5604 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
5605 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
5606 sections to scan for relocation stubs into a new method
5607 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
5608 relocation and Cortex-A8 stub scanning.
5609 (Target_arm::do_relax): Force stubs to be after stubbed sections
5610 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 5611 the beginning of a new relaxation pass. Update a comment.
44272192
DK
5612 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
5613
44b71ece
ILT
56142010-01-12 Ian Lance Taylor <iant@google.com>
5615
5616 * target-reloc.h (visibility_error): New inline function.
5617 (relocate_section): Call visibility_error.
5618 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
5619 (MOSTLYCLEANFILES): Likewise.
5620 (protected_4_pic.o, protected_3.err): New targets.
5621 * testsuite/protected_4.cc: New file.
5622
a120bc7f
DK
56232010-01-12 Doug Kwan <dougkwan@google.com>
5624
5625 * arm.cc (Cortex_a8_reloc): New class.
5626 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
5627 and cortex_a8_relocs_info_.
5628 (Target_arm::fix_cortex_a8): New method definition.
5629 (Target_arm::Cortex_a8_relocs_info): New type.
5630 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
5631 New data member declarations.
5632 (Target_arm::scan_reloc_for_stub): Record information about
5633 relocations for THUMB branches that might be exempted from the
5634 Cortex-A8 workaround.
5635 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
5636 at the beginning of a relaxation pass.
5637
20138696
DK
56382010-01-12 Doug Kwan <dougkwan@google.com>
5639
5640 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
5641 (Arm_relobj::Mapping_symbol_position,
5642 Arm_reloj::Mapping_symbol_position_less,
5643 Arm_relobj::Mapping_symbols_info): New types.
5644 (Target_arm::is_mapping_symbol_name): New method definition.
5645 (Arm_relobj::do_count_local_symbols): Save information about mapping
5646 symbols.
5647
089d69dc
DK
56482010-01-11 Doug Kwan <dougkwan@google.com>
5649
5650 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
5651 Arm_relocate_functions::thumb32_branch_upper,
5652 Arm_relocate_functions::thumb32_branch_lower,
5653 Arm_relocate_functions::thumb32_cond_branch_offset,
5654 Arm_relocate_functions::thumb32_cond_branch_upper,
5655 Arm_relocate_functions::thumb32_cond_branch_lower,
5656 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
5657 branch offset encoding.
5658 (Arm_relocate_functions::thumb_branch_common): Use new branch
5659 offset encoding methods to avoid code duplication.
5660 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
5661 (Stub_addend_reader::operator()): Use new branch encoding method
5662 to avoid code duplication.
5663
99e5bff2
DK
56642010-01-11 Doug Kwan <dougkwan@google.com>
5665
5666 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
5667 (Target_arm::do_finalize_sections): Define special EXIDX section
5668 symbols only if referenced.
5669 * gc.h (Garbage_collection::add_reference): New method.
5670 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
5671 code duplication.
5672
98e090bd
ILT
56732010-01-11 Ian Lance Taylor <iant@google.com>
5674
d0a91bd8
ILT
5675 * script.cc (Version_script_info::build_expression_list_lookup):
5676 Change complaing about duplicate wildcard match from error to
5677 warning.
5678
98e090bd
ILT
5679 * script.cc (class Lazy_demangler): Recreate--revert part of patch
5680 of 2009-12-30.
5681 (Version_script_info::Version_script_info): Initialize globs_,
5682 default_version_, default_is_global_, and exact_. Don't
5683 initialize globals_ or locals_.
5684 (Version_script_info::build_lookup_tables): Build local symbols
5685 first.
5686 (Version_script_info::unquote): New function.
5687 (Version_script_info::add_exact_match): New function.
5688 (Version_script_info::build_expression_list_lookup): Remove lookup
5689 parameter. Add is_global parameter. Change all callers. Handle
5690 wildcard pattern specially. Unquote pattern. Call
5691 add_exact_match.
5692 (Version_script_info::get_name_to_match): New function.
5693 (Version_script_info::get_symbol_version): New function.
5694 (Version_script_info::get_symbol_version_helper): Remove.
5695 (Version_script_info::check_unmatched_names): Call unquote.
5696 * script.h (class Version_script_info): Change get_symbol_version
5697 to be non-inline and add is_global parameter; change all callers.
5698 Rewrite symbol_is_local. Update declarations. Define struct
5699 Version_tree_match, Exact, Globs. Don't define struct Lookup.
5700 Remove globals_ and locals_ members. Add exact_, globs_,
5701 default_version_, is_global_.
5702 (Version_script_info::Glob): Remove pattern, add expression and
5703 is_global. Update constructor. Change all callers.
5704 * dynobj.cc (Versions::finalize): Mark the version symbol as the
5705 default version.
5706 (Versions::symbol_section_contents): If a symbol is undefined, or
5707 defined in a dynamic object, set the version index to
5708 VER_NDX_LOCAL.
5709 * symtab.cc (Symbol_table::add_from_relobj): Don't call
5710 symbol_is_local.
5711 (Symbol_table::add_from_pluginobj): Likewise.
5712 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
5713
d56962d3
DK
57142010-01-11 Doug Kwan <dougkwan@google.com>
5715
5716 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
5717 (incremental_dump_LDADD): Add linking option for libintl.
5718 * Makefile.in: Regenerate.
5719
94e6ee91
L
57202010-01-11 H.J. Lu <hongjiu.lu@intel.com>
5721
5722 PR gold/11144
5723 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
5724 instead of -Ds.
5725 * testsuite/Makefile.in: Regenerated.
5726
e96c574b
DK
57272010-01-10 Doug Kwan <dougkwan@google.com>
5728
5729 * options.h (DEFINE_var): Use parentheses around argument varname__
5730 in macro body to avoid any unintended subsequent substitutions.
5731
7198066b
ILT
57322010-01-10 Ian Lance Taylor <iant@google.com>
5733
ba4d53bf
ILT
5734 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
5735 candidates before doing symbol resolution.
5736
7198066b
ILT
5737 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
5738 ODR candidates if only one is weak.
5739
a2beed37
ILT
57402010-01-08 Ian Lance Taylor <iant@google.com>
5741
5742 * script.cc (Version_script_info::build_expression_list_lookup):
5743 Don't warn about ambiguous version, just record the ambiguity.
5744 (Version_script_info::get_symbol_version_helper): Give error if
5745 version is ambiguous.
5746
2fb7225c
DK
57472010-01-08 Doug Kwan <dougkwan@google.com>
5748
5749 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
5750 prev_data_size_ and prev_addralign_. Remove initializer for
5751 deleted data member has_been_changed_.
5752 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
5753 to determine if the table is empty.
5754 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
5755 Remove.
5756 (Stub_table::add_reloc_stub): Define method in class definition
5757 instead of just declaring it there.
5758 (Stub_table::add_cortex_a8_stub): New method definition.
5759 (Stub_table::update_data_size_and_addralign): Ditto.
5760 (Stub_table::finalize_stubs): Ditto.
5761 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
5762 (Stub_table::do_addralign_): Return address alignment in the
5763 (Stub_table::do_reset_address_and_file_offset): Define method in
5764 class definition instead of declaring it there. Set current data
5765 size to be the data size of the previous pass.
5766 (Stub_table::set_final_data_size): Use current data size as the
5767 final data size.
5768 (Stub_table::relocate_stub): Change parameter type of stub from
5769 Reloc_stub pointer to Stub pointer.
5770 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
5771 (Stub_table::Cortex_a8_stub_list): New typedef.
5772 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
5773 Stub_table::prev_addralign_): New data member.
5774 (Arm_relobj::Arm_relobj): Initialize data member
5775 section_has_cortex_a8_workaround_.
5776 (Arm_relobj::section_has_cortex_a8_workaround,
5777 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
5778 definitions.
5779 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
5780 declarations.
5781 (Target_arm::relocate_stub): Change parameter type of stub from
5782 Reloc_stub pointer to Stub pointer.
5783 (Insn_template::size, Insn_template::alignment): Handle
5784 THUMB16_SPECIAL_TYPE.
5785 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
5786 Stub_table::update_data_size_and_addralign,
5787 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
5788 definitions.
5789 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
5790 (Stub_table::do_write): Ditto.
5791 (Target_arm::do_relax): Adjust code for changes in Stub_table.
5792
880cd20d
ILT
57932010-01-08 Ian Lance Taylor <iant@google.com>
5794
5795 PR 11108
5796 * symtab.h (class Symbol): Remove fields is_target_special_ and
5797 has_plt_offset_. Add field is_defined_in_discarded_section_.
5798 (Symbol::is_defined_in_discarded_section): New function.
5799 (Symbol::set_is_defined_in_discarded_section): New function.
5800 (Symbol::has_plt_offset): Rewrite.
5801 (Symbol::set_plt_offset): Verify that new offset is not -1U.
5802 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
5803 Don't initialize is_target_special_ or has_plt_offset_.
5804 Initialize is_defined_in_discarded_section_.
5805 (Symbol_table::add_from_relobj): If appropriate, set
5806 is_defined_in_discarded_section.
5807 * resolve.cc (Symbol::override_base_with_special): Don't test
5808 is_target_special_. Change has_plt_offset_ to has_plt_offset().
5809 * target-reloc.h (relocate_section): Do special handling for
5810 symbols defined in discarded sections for global symbols as well
5811 as local symbols.
5812
2703e3eb
ILT
58132010-01-08 Ian Lance Taylor <iant@google.com>
5814
5815 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
5816 the SHT_SYMTAB case.
5817
339d40a3
ILT
58182010-01-08 Ian Lance Taylor <iant@google.com>
5819
5820 * object.cc (Sized_relobj::do_layout): Don't get confused if
5821 layout_eh_frame returns NULL.
5822
abecea76
ILT
58232010-01-08 Ian Lance Taylor <iant@google.com>
5824
5825 PR 11084
5826 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
5827 dynamic symbol table, use the normal symbol table.
5828 (Sized_dynobj::do_read_symbols): Remove assertion about type of
5829 symbol table.
5830
6b7dd3f3
ILT
58312010-01-08 Ian Lance Taylor <iant@google.com>
5832
5833 PR 11072
5834 * layout.cc (Layout::include_section): Remove .gnu_debuglink
5835 sections.
5836
36c50e63
L
58372010-01-08 H.J. Lu <hongjiu.lu@intel.com>
5838
5839 * version.cc (print_version): Change to "Copyright 2010".
5840
e291e7b9
ILT
58412010-01-08 Ian Lance Taylor <iant@google.com>
5842
5843 PR 10287
5844 PR 11063
5845 * i386.cc (class Target_i386): Change return type of plt_section
5846 to be non-const.
5847 (class Output_data_plt_i386): Add tls_desc_rel_ field.
5848 (Output_data_plt_i386::Output_data_plt_i386): Initialize
5849 tls_desc_rel_ field.
5850 (Output_data_plt_i386::rel_tls_desc): New function.
5851 (Target_i386::rel_tls_desc_section): New function.
5852 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
5853 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
5854 R_386_TLS_DESC reloc in rel_tls_desc_section.
5855 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
5856 Define struct Tlsdesc_info.
5857 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
5858 (Target_x86_64::do_reloc_symbol_index): New function.
5859 (Target_x86_64::add_tlsdesc_info): New function.
5860 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
5861 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
5862 tlsdesc_rel_ field.
5863 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
5864 all callers.
5865 (Output_data_plt_x86_64::rela_tlsdesc): New function.
5866 (Target_x86_64::rela_tlsdesc_section): New function.
5867 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
5868 handling.
5869 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
5870 (Target_x86_64::do_reloc_addend): New function.
5871 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
5872 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
5873 declarations. Define TARGET_CODE. Add arg field to u1_ union.
5874 (Output_reloc::type): New function.
5875 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
5876 (Output_reloc::is_target_specific): New function.
5877 (Output_reloc::target_arg): New function.
5878 (class Output_reloc) [SHT_RELA]: Add four new constructors for
5879 absolute relocs and target specific relocs.
5880 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
5881 add_target_specific.
5882 (class Output_data_reloc) [SHT_RELA]: Likewise.
5883 * output.cc (Output_reloc::Output_reloc): Add four new versions
5884 for absolute relocs and target specific relocs.
5885 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
5886 (Output_reloc::get_symbol_index): Likewise.
5887 (Output_reloc::local_section_offset): Check that local_sym_index_
5888 is not TARGET_CODE or 0.
5889 (Output_reloc::symbol_value): Likewise.
5890 (Output_reloc::write) [SHT_RELA]: Call target for target specific
5891 reloc.
5892 * target.h (class Target): Add reloc_symbol_index and reloc_addend
5893 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
5894 functions.
5895 * layout.cc (add_target_dynamic_tags): Use output section for
5896 DT_PLTRELSZ and DT_JMPREL.
5897
3a44184e
ILT
58982010-01-07 Ian Lance Taylor <iant@google.com>
5899
5900 PR 11061
5901 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
5902 function.
5903 (class Output_data_reloc_generic): Define.
5904 (class Output_data_reloc_base): Change base class to
5905 Output_data_reloc_generic. Change add() method to call
5906 bump_relative_reloc_count for a relative reloc. Remove
5907 sort_relocs_ field.
5908 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
5909 to sort_relocs().
5910 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
5911 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
5912 appropriate.
5913 * layout.h (class Layout): Update declaration.
5914
ea715a34
ILT
59152010-01-07 Ian Lance Taylor <iant@google.com>
5916
5917 * output.h (class Output_data): Add const version of
5918 output_section and do_output_section.
5919 (class Output_section_data): Add const version of
5920 do_output_section.
5921 (class Output_section): Likewise.
5922 * layout.cc (Layout::add_target_dynamic_tags): New function.
5923 * layout.h (class Layout): Update declarations.
5924 * arm.cc (Target_arm::do_finalize_sections): Use
5925 add_target_dynamic_tags.
5926 * i386.cc (Target_i386::do_finalize_sections): Likewise.
5927 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
5928 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
5929 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5930
659948a4
ILT
59312010-01-07 Ian Lance Taylor <iant@google.com>
5932
5933 PR 11042
5934 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
5935 object as needed.
5936
9d3b86f6
ILT
59372010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
5938 Ian Lance Taylor <iant@google.com>
5939
5940 PR 11019
5941 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
5942 Xindex::read_symtab_xindex.
5943
bb0d3eb0
DK
59442010-01-07 Doug Kwan <dougkwan@google.com>
5945
5946 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
5947 (Insn_template::thumb16_bcond_insn): New method declaration.
5948 (Insn_template): Fix spelling.
5949 (Stub::thumb16_special): New method declaration.
5950 (Stub::do_write): Define virtual method which was previously pure
5951 virtual.
5952 (Stub::do_thumb16_special): New method declaration.
5953 (Stub::do_fixed_endian_write): New template member.
5954 (Reloc_stub::do_write): Remove.
5955 (Reloc_stub::do_fixed_endian_write): Remove.
5956 (Cortex_a8_stub): New class definition.
5957 (Stub_factory::make_cortex_a8_stub): New method definition.
5958 (Stub_factory::Stub_factory): Add missing static storage class
5959 qualifier for elf32_arm_stub_a8_veneer_blx.
5960
ffeef7df
ILT
59612010-01-07 Ian Lance Taylor <iant@google.com>
5962
dc3f80fe
ILT
5963 PR 10980
5964 * options.h (class General_options): Add --warn-unresolved-symbols
5965 and --error-unresolved-symbols.
5966 * errors.cc (Errors::undefined_symbol): Implement
5967 --warn-unresolved-symbols.
5968
ffeef7df
ILT
5969 * options.h (class General_options): Add -z text and -z textoff.
5970 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
5971
f1ec9ded
ST
59722010-01-06 Sriraman Tallam <tmsriram@google.com>
5973
5974 * gc.h (Garbage_collection::Cident_section_map): New typedef.
5975 (Garbage_collection::cident_sections): New function.
5976 (Garbage_collection::add_cident_section): New function.
5977 (Garbage_collection::cident_sections_): New member.
5978 (gc_process_relocs): Add references to sections whose names are C
5979 identifiers.
5980 * gold.h (cident_section_start_prefix): New constant.
5981 (cident_section_stop_prefix): New constant.
5982 (is_cident): New function.
5983 * layout.cc (Layout::define_section_symbols): Replace string constants
5984 with the newly defined constants.
5985 * object.cc (Sized_relobj::do_layout): Track sections whose names are
5986 C identifiers.
5987 * testsuite/Makefile.am: Add gc_orphan_section_test.
5988 * testsuite/Makefile.in: Regenerate.
5989 * testsuite/gc_orphan_section_test.cc: New file.
5990 * testsuite/gc_orphan_section_test.sh: New file.
5991
6eda8c29
ILT
59922010-01-06 Ian Lance Taylor <iant@google.com>
5993
b9674e17
ILT
5994 PR 10980
5995 * options.h (class General_options): Add --warn-shared-textrel.
5996 * layout.cc (Layout::finish_dynamic_section): Implement
5997 --warn-shared-textrel.
5998
6eda8c29
ILT
5999 PR 10980
6000 * options.h (class General_options): Add --warn-multiple-gp.
6001
32dcd44e
ILT
60022010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6003
6004 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
6005 $(THREADSLIB) and $(LIBDL).
6006 * Makefile.in: Rebuild.
6007
a192ba05
ILT
60082010-01-06 Ian Lance Taylor <iant@google.com>
6009
6010 PR 10980
6011 * options.cc (General_options::parse_section_start): New function.
6012 (General_options::section_start): New function.
6013 (General_options::General_options): Initialize all members.
6014 * options.h: Include <map>
6015 (class General_options): Add --section-start. Add section_starts_
6016 member.
6017 * layout.cc (Layout::attach_allocated_section_to_segment): If
6018 --section-start was used, set the address of the segment. Remove
6019 local sort_sections.
6020 (Layout::relaxation_loop_body): If the address of the load segment
6021 has been set by --section-start, don't use it.
6022 * output.h (Output_segment::update_flags_for_output_section): New
6023 function.
6024 * output.cc (Output_segment::add_output_section): Call
6025 update_flags_for_output_section.
6026
dde3f402
ILT
60272010-01-05 Ian Lance Taylor <iant@google.com>
6028
62dfdd4d
ILT
6029 PR 10980
6030 * options.h (class General_options): Add --undefined-version.
6031 * script.cc (struct Version_expression): Add was_matched_by_symbol
6032 field.
6033 (Version_script_info::matched_symbol): New function.
6034 (Version_script_info::get_symbol_version_helper): Call
6035 matched_symbol.
6036 (Version_script_info::check_unmatched_names): New function.
6037 * script.h (class Version_script_info): Update declarations.
6038 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
6039
9c4ae156
ILT
6040 * options.h (class General_options): Use DEFINE_bool_alias for
6041 allow_multiple_definition.
6042 * resolve.cc (Symbol_table::should_override): Don't test
6043 allow_multiple_definition.
6044
dde3f402
ILT
6045 PR 10980
6046 * options.h (class General_options): Add --cref.
6047 * main.cc (main): Print cref table if --cref. Don't close mapfile
6048 until after printing cref table.
6049 * cref.cc: Include "symtab.h".
6050 (class Cref_inputs): Define Cref_table_compare and Cref_table.
6051 (Cref_table_compare::operator()): New function.
6052 (Cref_inputs::gather_cref): New function.
6053 (filecol): New static const.
6054 (Cref_inputs::print_cref): New function.
6055 (Cref::print_cref): New function.
6056 * cref.h: Include <cstdio>.
6057 (class Cref): Update declarations.
6058 * mapfile.h (Mapfile::file): New function.
6059 * object.h (class Object): Define Symbols. Declare virtual
6060 do_get_global_symbols.
6061 (Object::get_global_symbols): New function.
6062 * object.cc (Input_objects::add_object): Pass object to cref_ if
6063 --cref.
6064 (Input_objects::archive_start): Likewise.
6065 (Input_objects::archive_stop): Likewise.
6066 (Input_objects::print_cref): New function.
6067 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
6068 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
6069 --cref.
6070 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
6071 function.
6072 * plugin.h (class Sized_pluginobj): Update declarations.
6073
8781f709
ILT
60742010-01-05 Ian Lance Taylor <iant@google.com>
6075
6076 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
6077 to is_default_version. Rename insdef to insdefault.
6078 (Symbol_table::add_from_relobj): Rename def to is_default_version
6079 and local to is_forced_local.
6080 (Symbol_table::add_from_pluginobj): Likewise.
6081 (Symbol_table::add_from_dynobj): Likewise.
6082 (Symbol_table::define_special_symbol): Rename insdef to
6083 insdefault.
6084
fe35d28d
ILT
60852010-01-04 Ian Lance Taylor <iant@google.com>
6086
30bc8c46
ILT
6087 PR 10980
6088 * options.h (class General_options): Add
6089 --allow-multiple-definition and -z muldefs.
6090 * resolve.cc (Symbol_table::should_override): Don't warn about a
6091 multiple symbol definition if --allow-multiple-definition or -z
6092 muldefs.
6093
7eaea549
ILT
6094 PR 10980
6095 * options.h (class General_options): Add --add-needed and
6096 --copy-dt-needed-entries. Tweak --as-needed help entry.
6097 * object.cc (Input_objects::check_dynamic_dependencies): Give an
6098 error if --copy-dt-needed-entries aka --add-needed is used and
6099 would cause a change in behaviour.
6100
fe35d28d
ILT
6101 PR 10980
6102 * options.h (class General_options): Add -G as a short version of
6103 --shared. Add no-op options -assert, -g, and -i.
6104
55a2bb35
ST
61052010-01-04 Sriraman Tallam <tmsriram@google.com>
6106
6107 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
6108 check for .text or .gnu.linkonce.t sections.
6109 * icf.cc (Icf::find_identical_sections): Ditto.
6110 Change the detection for mangled function name within the section
6111 name.
6112 * icf.h (is_section_foldable_candidate): New function.
6113
719328e1
ILT
61142009-12-30 Ian Lance Taylor <iant@google.com>
6115
6116 PR 10980
6117 * options.h (class General_options): Permit two dashes with
6118 --retain-symbols-file.
6119
d7bb5745
ILT
61202009-12-30 Ian Lance Taylor <iant@google.com>
6121
403a15dd
ILT
6122 PR 10979
6123 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
6124 don't put the file header and segment headers in the text
6125 segment.
6126
eda294df
ILT
6127 PR 10979
6128 * common.cc (Sort_commons::operator()): Stabilize sort when both
6129 entries are NULL.
6130 (Symbol_table::do_allocate_commons_list): When allocating common
6131 symbols, skip a symbol which is no longer common.
6132 * symtab.h (Symbol::is_common): Test whether the symbol comes from
6133 an object before checking its type.
6134 * testsuite/common_test_2.c: New file.
6135 * testsuite/common_test_3.c: New file.
6136 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
6137 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
6138 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
6139 (common_test_2_pic.o, common_test_2.so): New targets.
6140 (common_test_3_pic.o, common_test_3.so): New targets.
6141 * testsuite/Makefile.in: Rebuild.
6142
d7bb5745
ILT
6143 PR 10979
6144 * script.cc (read_input_script): If we see a new SECTIONS clause,
6145 and we have added an input section, give an error.
6146 * layout.h (class Layout): Add have_added_input_section function.
6147 Add have_added_input_section_ field.
6148 * layout.cc (Layout::Layout): Initialize
6149 have_added_input_section_.
6150 (Layout::layout): Set have_added_input_section_.
6151 (Layout::layout_eh_frame): Likewise.
6152
fc59c572
ILT
61532009-12-30 Ian Lance Taylor <iant@google.com>
6154
6155 PR 10931
6156 * options.h (class General_options): Add --sort-common option.
6157 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
6158 * common.cc (Sort_common): Add sort_order parameter to
6159 constructor. Add sort_order_ field.
6160 (Sort_commons::operator): Check sort_order_.
6161 (Symbol_table::allocate_commons): Determine the sort order.
6162 (Symbol_table::do_allocate_commons): Add sort_order parameter.
6163 Change all callers.
6164 (Symbol_table::do_allocate_commons_list): Likewise.
6165
1c74fab0
ILT
61662009-12-30 Ian Lance Taylor <iant@google.com>
6167
6168 PR 10916
6169 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
6170 symbols from this object, don't change the visibility of an
6171 undefined symbol.
6172 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
6173
6affe781
ILT
61742009-12-30 Ian Lance Taylor <iant@google.com>
6175
6176 PR 10861
6177 * script.h (class Version_script_info): Define Language enum.
6178 Update declarations. Define Glob, Exact, and Lookup types. Add
6179 new fields globals_, locals_, and is_finalized_.
6180 * script.cc: Various formatting fixes.
6181 (class Parser_closure): Change language_stack_ from a vector of
6182 std::string to one of Version_script_info::Language. Adjust all
6183 uses accordingly.
6184 (class Lazy_demangler): Remove.
6185 (struct Version_expression): Change language from std::string to
6186 Version_script_info::Language.
6187 (Version_script_info::Version_script_info): New function.
6188 (Version_script_info::~Version_script_info): Don't call clear.
6189 (Version_script_info::finalize): New function.
6190 (Version_script_info::build_lookup_tables): New function.
6191 (Version_script_info::build_expression_list_lookup): New
6192 function.
6193 (Version_script_info::get_symbol_version_helper): Rewrite to use
6194 lookup tables.
6195 (Version_script_info::print_expression_list): Adjust to use
6196 Version_script_info::Language.
6197 (script_push_lex_into_version_mode): Check that the version script
6198 has not been finalized.
6199 (version_script_push_lang): Change language string to
6200 Version_script_info::Language.
6201 * options.cc (Command_line::version_script): New function.
6202 * options.h (class General_options): Add finalize_dynamic_list
6203 function. Change version_script from declaration to definition.
6204 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
6205 * testsuite/version_script.map: Remove duplicate def of foo.
6206 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
6207 version_script.map.
6208 * testsuite/Makefile.in: Rebuild.
6209
818bf354
ILT
62102009-12-30 Ian Lance Taylor <iant@google.com>
6211
6212 PR 10843
6213 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
6214 if the input symbol index is 0, make the output symbol index 0.
6215
ebcc8304
ILT
62162009-12-30 Ian Lance Taylor <iant@google.com>
6217
6218 PR 10670
6219 * options.h (class General_options): Add -x/--discard-all.
6220 * object.cc (Sized_relobj::do_count_local_symbols): Handle
6221 --discard-all. If the local symbol needs a dynamic entry, check
6222 that before handling --discard-locals.
6223
176fe33f
ILT
62242009-12-30 Ian Lance Taylor <iant@google.com>
6225
bb321bb1
ILT
6226 PR 10450
6227 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
6228 flags to PF_R.
6229 (Output_segment::add_output_section): Don't change the flags if
6230 the type is PT_TLS.
6231
176fe33f
ILT
6232 PR 10450
6233 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
6234 GNU hash table if they need a dynamic value. Otherwise, don't add
6235 them if they are defined in a dynamic object or are forced local.
6236
e8cd95c7
ILT
62372009-12-29 Ian Lance Taylor <iant@google.com>
6238
1b81fb71
ILT
6239 PR 10450
6240 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
6241 .gnu.hash table for a 32-bit target.
6242
8d6d383d
ILT
6243 PR 10450
6244 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
6245 regular and a dynamic object only needs a dynamic symbol table
6246 entry if it is externally visible.
6247
e785ec03
ILT
6248 PR 10450
6249 * i386.cc (class Target_i386): Initialize global_offset_table_ in
6250 constructor. Add global_offset_table_ field.
6251 (Target_i386::got_section): Set global_offset_table_.
6252 (Target_i386::do_finalize_sections): Set global_offset_table_
6253 size.
6254 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
6255 in constructor. Add global_offset_table_ field.
6256 (Target_x86_64::got_section): Set global_offset_table_.
6257 (Target_x86_64::do_finalize_sections): Set global_offset_table_
6258 size.
6259
1a2dff53
ILT
6260 * layout.cc (Layout::Layout): Initialize increase_relro_.
6261 (Layout::get_output_section): Add is_relro, is_last_relro, and
6262 is_first_non_relro parameters. Change all callers.
6263 (Layout::choose_output_section): Likewise.
6264 (Layout::add_output_section_data): Likewise.
6265 (Layout::make_output_section): Likewise.
6266 (Layout::set_segment_offsets): Clear increase_relro when using a
6267 linker script.
6268 * layout.h (class Layout): Add increase_relro method. Add
6269 increase_relro_ field. Update declarations.
6270 * output.cc (Output_section::Output_section): Initialize
6271 is_last_relro_ and is_first_non_relro_.
6272 (Output_segment::add_output_section): Group relro sections is
6273 do_sort is true. Handle is_last_relro and is_first_non_relro.
6274 (Output_segment::maximum_alignment): Remove relro handling.
6275 (Output_segment::set_section_addresses): Add increase_relro
6276 parameter. Change all callers. Add initial alignment to align
6277 relro sections on separate page. Remove old relro handling.
6278 (Output_segment::set_section_list_addresses): Remove in_relro
6279 parameter. Change all callers.
6280 (Output_segment::set_offset): Add increase parameter. Change all
6281 callers. Remove old relro handling.
6282 * output.h (class Output_section): Add new methods: is_last_relro,
6283 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
6284 Add is_last_relro_ and is_first_non_relro_ fields.
6285 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
6286 Create separate .got.plt section. Call increase_relro.
6287 * x86_64.cc (Target_x86_64::got_section): Likewise.
6288 * testsuite/relro_script_test.t: Add .got.plt.
6289
f0ba79e2
ILT
6290 PR 10450
6291 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
6292 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
6293 (Layout::finalize): Call set_dynamic_symbol_size.
6294 (Layout::set_dynamic_symbol_size): New function.
6295 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
6296 set_dynamic_symbol_size.
6297
e8cd95c7
ILT
6298 PR 10450
6299 * output.h (class Output_section): Add is_entsize_zero_ field.
6300 * output.cc (Output_section::Output_section): Initialize
6301 is_entsize_zero_.
6302 (Output_section::set_entsize): If two different entsizes are
6303 requested, force it to zero.
6304 (Output_section::add_input_section): Set flags for .debug_str
6305 before updating section flags. Set entsize.
6306 (Output_section::update_flags_for_input_section): Set SHF_MERGE
6307 and SHF_STRING if all input sections have those flags.
6308
3e1b9a8a
RÁE
63092009-12-29 Rafael Espindola <espindola@google.com>
6310
6311 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
6312 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
6313 reporting.
3e1b9a8a 6314
3dcad376
ST
63152009-12-29 Sriraman Tallam <tmsriram@google.com>
6316
6317 * options.cc (General_options::parse_version): Allow -v to exit
6318 without an error if there is nothing to link.
6319
084e2665
ILT
63202009-12-29 Ian Lance Taylor <iant@google.com>
6321
6322 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
6323 using a version of gcc before 4.1.
6324 * configure: Rebuild.
6325
250acde3
CD
63262009-12-28 Chris Demetriou <cgd@google.com>
6327
6328 * attributes.cc (Output_attributes_section_data::do_write): Use
6329 std::vector::front rather than std::vector::data.
6330
99fff23b
ILT
63312009-12-28 Ian Lance Taylor <iant@google.com>
6332
6333 * symtab.h (class Symbol_table): Add enum Defined.
6334 * resolve.cc (Symbol_table::should_override): Add defined
6335 parameter. Change all callers. Test whether object is NULL
6336 before calling a method on it.
6337 (Symbol_table::report_resolve_problem): Add defined parameter.
6338 Change all callers.
6339 (Symbol_table::should_override_with_special): Likewise.
6340 * symtab.cc (Symbol_table::define_in_output_data): Add defined
6341 parameter. Change all callers.
6342 (Symbol_table::do_define_in_output_data): Likewise.
6343 (Symbol_table::define_in_output_segment): Likewise.
6344 (Symbol_table::do_define_in_output_segment): Likewise.
6345 (Symbol_table::define_as_constant): Likewise.
6346 (Symbol_table::do_define_as_constant): Likewise.
6347 * script.h (class Symbol_assignment): Add is_defsym parameter to
6348 constructor; change all callers.
6349 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
6350 parameter. Change all callers. Add is_defsym_ field.
6351 (class Parser_closure): Add parsing_defsym parameter to
6352 constructor; change all callers. Add parsing_defsym accessor
6353 function. Add parsing_defsym_ field.
6354
556bd683
ILT
63552009-12-28 Ian Lance Taylor <iant@google.com>
6356
6357 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 6358 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 6359
1782c879
ILT
63602009-12-23 Ian Lance Taylor <iant@google.com>
6361
6362 * i386.cc (Target_i386::do_calls_non_split): Recognize
6363 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
6364 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
6365 -fsplit-stack prologue when using %r11.
1782c879 6366
329ca2b1
ST
63672009-12-21 Sriraman Tallam <tmsriram@google.com>
6368
6369 * options.cc (General_options::parse_version): Make -v continue and do
6370 the link like GNU ld does.
6371
d675ff46
RÁE
63722009-12-17 Rafael Avila de Espindola <espindola@google.com>
6373
6374 * Makefile.am (CCFILES): Add timer.cc.
6375 (HFILES): Add timer.h.
6376 * configure.ac: Check for sysconf and times.
6377 * main.cc: include timer.h.
6378 (main): Use Timer instead of get_run_time.
6379 * timer.cc: New.
6380 * timer.h: New.
6381 * workqueue.cc: include timer.h.
6382 (Workqueue::find_and_run_task):
6383 Report user, sys and wall time.
6384 * Makefile.in: Regenerate.
6385 * config.in: Regenerate.
6386 * configure: Regenerate.
6387
d6344fb5
DK
63882009-12-16 Doug Kwan <dougkwan@google.com>
6389
6390 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
6391 sections.
6392 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
6393 relaxed input sections.
6394 * output.cc (Output_section::find_relaxed_input_section): Change
6395 return type to Output_relaxed_input_section pointer. Adjust code
6396 for new type of relaxed_input_section_map_.
6397 * output.h (Output_section::find_relaxed_input_section): Change
6398 return type to Output_relaxed_input_section pointer.
6399 (Output_section::Output_relaxed_input_section_by_input_section_map):
6400 New type.
6401 (Output_section::relaxed_input_section_map_): Change type to
6402 Output_section::Output_relaxed_input_section_by_input_section_map.
6403 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
6404 input section.
6405
0e0d5469
ILT
64062009-12-15 Ian Lance Taylor <iant@google.com>
6407
6408 * layout.cc (Layout::create_shstrtab): Only write out after input
6409 sections if we are compressing debug sections.
6410
0649a889
ILT
64112009-12-15 Ian Lance Taylor <iant@google.com>
6412
6413 * archive.cc (Archive::add_symbols): Only look up a symbol without
6414 a version if there is, in fact, a version.
6415
2ea97941
ILT
64162009-12-14 Ian Lance Taylor <iant@google.com>
6417
6418 Revert -Wshadow changes, all changes from:
6419 2009-12-11 Doug Kwan <dougkwan@google.com>
6420 2009-12-11 Nick Clifton <nickc@redhat.com>
6421 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
6422
b0eec2cc
DK
64232009-12-11 Doug Kwan <dougkwan@google.com>
6424
6425 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
6426 due to -Wshadow.
6427 * attributes.cc (Object_attribute::size): Ditto.
6428 (Attributes_section_data::size): Ditto.
6429 (Attributes_section_data::Attributes_section_data): Ditto.
6430 (Output_attributes_section_data::do_write): Ditto.
6431 * attributes.h (Object_attribute::set_type): Ditto.
6432 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
6433
91d6fa6a
NC
64342009-12-11 Nick Clifton <nickc@redhat.com>
6435
6436 * archive.cc: Fix shadowed variable warnings.
6437 * arm.cc: Likewise.
6438 * compressed_output.cc: Likewise.
6439 * compressed_output.h: Likewise.
6440 * configure: Likewise.
6441 * dwarf_reader.cc: Likewise.
6442 * dynobj.cc: Likewise.
6443 * dynobj.h: Likewise.
6444 * ehframe.cc: Likewise.
6445 * ehframe.h: Likewise.
6446 * errors.cc: Likewise.
6447 * expression.cc: Likewise.
6448 * fileread.cc: Likewise.
6449 * fileread.h: Likewise.
6450 * freebsd.h: Likewise.
6451 * i386.cc: Likewise.
6452 * icf.cc: Likewise.
6453 * incremental.h: Likewise.
6454 * layout.cc: Likewise.
6455 * layout.h: Likewise.
6456 * mapfile.cc: Likewise.
6457 * merge.cc: Likewise.
6458 * merge.h: Likewise.
6459 * object.cc: Likewise.
6460 * object.h: Likewise.
6461 * options.h: Likewise.
6462 * output.cc: Likewise.
6463 * output.h: Likewise.
6464 * parameters.cc: Likewise.
6465 * plugin.cc: Likewise.
6466 * powerpc.cc: Likewise.
6467 * reduced_debug_output.cc: Likewise.
6468 * reduced_debug_output.h: Likewise.
6469 * reloc.cc: Likewise.
6470 * reloc.h: Likewise.
6471 * resolve.cc: Likewise.
6472 * script-sections.cc: Likewise.
6473 * script.cc: Likewise.
6474 * script.h: Likewise.
6475 * sparc.cc: Likewise.
6476 * symtab.cc: Likewise.
6477 * symtab.h: Likewise.
6478 * target-select.cc: Likewise.
6479 * target-select.h: Likewise.
6480 * token.h: Likewise.
6481 * workqueue.cc: Likewise.
6482 * workqueue.h: Likewise.
6483 * x86_64.cc: Likewise.
6484
a0351a69
DK
64852009-12-10 Doug Kwan <dougkwan@google.com>
6486
6487 * arm.cc (attributes.h): New include.
6488 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
6489 (Arm_relobj::~Arm_relobj): Delete object pointed by
6490 attributes_section_data_.
6491 (Arm_relobj::attributes_section_data): New method definition.
6492 (Arm_relobj::attributes_section_data_): New data member declaration.
6493 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
6494 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
6495 attributes_section_data_.
6496 (Arm_dynobj::attributes_section_data): New method definition.
6497 (Arm_dynobj::attributes_section_data_): New data member declaration.
6498 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
6499 initialization value of may_use_blx_ to false.
6500 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
6501 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
6502 object attributes to compute results instead of hard-coding.
6503 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
6504 Target_arm::get_secondary_compatible_arch,
6505 Target_arm::set_secondary_compatible_arch
6506 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
6507 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
6508 New method declarations.
6509 (Target_arm::get_aeabi_object_attribute): New method definition.
6510 (Target_arm::attributes_section_data_): New data member declaration.
6511 (read_arm_attributes_section): New template definition.
6512 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
6513 (Arm_dynobj::do_read_symbols): Ditto.
6514 (Target_arm::do_finalize_sections): Merge attributes sections from
6515 input. Check for BLX use after attributes section merging.
6516 Fix __exidx_start and __exidx_end visibility. Create an
6517 .ARM.attributes section if necessary.
6518 (Target_arm::get_secondary_compatible_arch,
6519 Target_arm::set_secondary_compatible_arch,
6520 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
6521 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 6522 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
6523 New method definitions.
6524
b59befec
ILT
65252009-12-09 Ian Lance Taylor <iant@google.com>
6526
6527 * plugin.cc (Plugin::load): Don't cast from void* to a function
6528 pointer.
6529
1276bc89
ILT
65302009-12-09 Ian Lance Taylor <iant@google.com>
6531
6532 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
6533 information fields.
6534
2f2de248
L
65352009-12-09 H.J. Lu <hongjiu.lu@intel.com>
6536
6537 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
6538 Replace two_file_shared_1.so with two_file_shared_2.so.
6539 * testsuite/Makefile.in: Regenerated.
6540
4f787271
DK
65412009-12-08 Doug Kwan <dougkwan@google.com>
6542
6543 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
6544 (HFILES): Add attributes.h and int_encoding.h.
6545 * Makefile.in: Regenerate.
6546 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
6547 function definitions to int_encoding.cc
6548 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
6549 prototypes to int_encoding.h
6550 * reduced_debug_output.cc (int_encoding.h): New include.
6551 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
6552 function definitions to int_encoding.cc
6553 (insert_into_vector, read_from_pointer): Move template definitions to
6554 int_encoding.h
6555 * attributes.cc: New file.
6556 * attributes.h: New file.
6557 * int_encoding.cc: New file.
6558 * int_encoding.h: New file.
6559
20b52f1a
RÁE
65602009-12-07 Rafael Avila de Espindola <espindola@google.com>
6561
6562 PR gold/11055
6563 * incremental-dump.cc (dump_incremental_inputs): New.
6564 (main): Use dump_incremental_inputs.
6565
53d7974c
L
65662009-12-07 H.J. Lu <hongjiu.lu@intel.com>
6567
6568 PR gold/10893
6569 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
6570 checking elfcpp::STT_FUNC.
6571 (Target_i386::Relocate::relocate): Likewise.
6572 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
6573
6574 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
6575 symbols from shared libraries into normal FUNC symbols.
6576
6577 * symtab.h (Symbol): Add is_func and use it.
6578
05a352e6
DK
65792009-12-05 Doug Kwan <dougkwan@google.com>
6580
6581 * arm.cc (Target_arm::arm_info): Initialize new fields
6582 attributes_section and attributes_vendor.
6583 * i386.cc (Target_i386::i386_info): Same.
6584 * object.cc (Sized_relobj::do_layout): Skip attribute section.
6585 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
6586 fields attributes_section and attributes_vendor.
53d7974c 6587 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
6588 * target.h (Target::attributes_section, Target::attributes_vendor,
6589 Target::is_attributes_section, Target::attribute_arg_type,
6590 Target::attributes_order): New method definitions.
6591 (Target::Target_info::attributes_section,
6592 Target::Target_info::attributes_vendor): New fields.
6593 (Target::do_attribute_arg_type, Target::do_attributes_order): New
6594 virtual method definitions.
6595 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
6596 attributes_section and attributes_vendor.
6597 * testsuite/testfile.cc (Target_test::test_target_info): Same.
6598
f4e5969c
DK
65992009-12-05 Doug Kwan <dougkwan@google.com>
6600
6601 * arm.cc: Update comments about interworking and stub generation.
6602 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
6603 considered as non-PIC.
6604 (Arm_relocate_functions::base_abs): Fix formatting.
6605 (Arm_relocate_functions::got_prel): Fix comment. Change interface
6606 of function to use GOT entry address instead of offset.
6607 (Target_arm::Scan::global): Issue an error if a symbol would need a
6608 PLT does not get one because it is untyped. Remove code to create
6609 dynamic symbols for relative branches.
6610 (Target_arm::Relocate::relocate: Use 0 instead of false since function
6611 takes unsigned integer instead of boolean.
6612
1abce4a6
L
66132009-12-05 H.J. Lu <hongjiu.lu@intel.com>
6614
6615 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
6616 (two_file_test_LDADD): Likewise.
6617 (common_test_1_LDADD): Likewise.
6618 (exception_test_LDADD) Likewise.
6619 (weak_test_LDADD): Likewise.
6620 (many_sections_test_LDADD): Likewise.
6621 (initpri1_LDADD): Likewise.
6622 (script_test_1_LDADD): Likewise.
6623 (script_test_2_LDADD): Likewise.
6624 (justsyms_LDADD): Likewise.
6625 (binary_test_LDADD): Likewise.
6626 (large_LDADD): Likewise.
6627 * testsuite/Makefile.in: Regenerated.
6628
adcf2816 66292009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 6630
adcf2816
L
6631 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
6632 (Symbol_table::override_with_special): Likewise.
6633 (Symbol_table::add_from_object): Likewise.
6634
28e67f5d
RÁE
66352009-12-04 Rafael Avila de Espindola <espindola@google.com>
6636
6637 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
6638 Don't set the data_offset twice.
6639
ae10a101
RÁE
66402009-12-04 Rafael Avila de Espindola <espindola@google.com>
6641
6642 * testsuite/Makefile.in: Regenerate.
6643
f59f41f3
DK
66442009-12-03 Doug Kwan <dougkwan@google.com>
6645
6646 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
6647 (Target_arm::do_finalize_sections): Add parameter for symbol table
6648 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
6649 * i386.cc (Target_i386::do_finalize_sections): Add an additional
6650 parameter for symbol table pointer.
6651 * layout.cc (Layout::finalize): Call Target::finalize_sections with
6652 an additional parameter for a pointer to symbol table.
6653 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
6654 parameter for a symbol table pointer.
6655 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
6656 * target.h (Target::finalize_sections, Target::do_finalize_sections):
6657 Ditto.
6658 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
6659 parameter for a symbol table pointer.
6660
ca55d848
RÁE
66612009-12-03 Rafael Avila de Espindola <espindola@google.com>
6662
6663 * incremental.cc (Incremental_inputs_header)
6664 (Incremental_inputs_header_write, Incremental_inputs_entry)
6665 (Incremental_inputs_entry_write): Move ...
6666 * incremental.h (Incremental_inputs_header)
6667 (Incremental_inputs_header_write, Incremental_inputs_entry)
6668 (Incremental_inputs_entry_write): here.
6669
3aec4f9c
RÁE
66702009-12-02 Rafael Avila de Espindola <espindola@google.com>
6671
6672 * incremental.cc (make_sized_incremental_binary): Set the target.
6673 Error if it is incompatible.
6674 * output.h (Output_file): Add filename method.
6675
9c0ae74d
RÁE
66762009-12-02 Rafael Avila de Espindola <espindola@google.com>
6677
6678 * incremental.cc (Incremental_inputs_entry): Remove unused argument
6679 from the get_* methods.
6680
a45500ae
RÁE
66812009-12-02 Rafael Avila de Espindola <espindola@google.com>
6682
6683 * incremental-dump.cc (main): Check that the offeset of a script is 0.
6684 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
6685 Write 0 for the data_offset of scripts.
6686
325e6408
RÁE
66872009-12-02 Rafael Avila de Espindola <espindola@google.com>
6688
6689 * testsuite/Makefile.am: Add the incremental_test.sh test.
6690 * testsuite/incremental_test.sh: New.
6691 * testsuite/incremental_test_1.c: New.
6692 * testsuite/incremental_test_2.c: New.
6693
954c3e2e
RÁE
66942009-12-01 Rafael Avila de Espindola <espindola@google.com>
6695
6696 * incremental-dump.cc (main): Fix typos.
6697
f8086623
RÁE
66982009-11-27 Rafael Avila de Espindola <espindola@google.com>
6699
6700 PR gold/11025
6701 * incremental-dump.cc (main): Use llu to print 64 bit values.
6702
3b0dd6ac
L
67032009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
6704 H.J. Lu <hongjiu.lu@intel.com>
6705
6706 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
6707 $(LIBDL).
6708 (incremental_dump_LDADD): Likewise.
6709 * Makefile.in: Regenerated.
6710
a6d1ef57 67112009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 6712
a6d1ef57
DK
6713 Revert:
6714
6715 2009-11-25 Doug Kwan <dougkwan@google.com>
6716
6717 * arm.cc (Target_arm::Target_arm): Move method definition
6718 outside of class definition. Add code to handle
6719 --target1-rel, --target1-abs and --target2= options.
6720 (Target_arm::get_reloc_reloc_type): Change method to be
6721 non-static and const.
6722 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
6723 New data member declaration.
6724 (Target_arm::Scan::local, Target_arm::Scan::global,
6725 Target_arm::Relocate::relocate,
6726 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
6727 Adjust call to Target_arm::get_real_reloc_type.
6728 (Target_arm::get_real_reloc_type): Use command line options
6729 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
6730 * options.h (--target1-rel, --target1-abs, --target2): New
6731 ARM-only options.
6732
50aeb7d4
DK
67332009-11-25 Doug Kwan <dougkwan@google.com>
6734
6735 * arm.cc (Target_arm::Target_arm): Move method definition outside of
6736 class definition. Add code to handle --target1-rel, --target1-abs
6737 and --target2= options.
6738 (Target_arm::get_reloc_reloc_type): Change method to be non-static
6739 and const.
6740 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
6741 member declaration.
6742 (Target_arm::Scan::local, Target_arm::Scan::global,
6743 Target_arm::Relocate::relocate,
6744 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
6745 call to Target_arm::get_real_reloc_type.
6746 (Target_arm::get_real_reloc_type): Use command line options to
6747 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
6748 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
6749 options.
6750
51938283
DK
67512009-11-25 Doug Kwan <dougkwan@google.com>
6752
6753 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
6754 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
6755 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
6756 formatting.
6757 (Arm_relocate_functions::thm_call): Replace body with a call to
6758 Arm_relocate_functions::thumb_branch_common.
6759 (Arm_relocate_functions::thm_jump24,
6760 Arm_relocate_functions::thm_xpc22): New method definitions.
6761 (Arm_relocate_functions::thumb_branch_common): New method definition.
6762 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
6763 operator.
6764 (Target_arm::Relocate::relocate): Adjust call to thm_call.
6765 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
6766
e2b8f3c4
RÁE
67672009-11-24 Rafael Avila de Espindola <espindola@google.com>
6768
6769 * Makefile.am: Build incremental-dump
6770 * Makefile.in: Regenerate.
6771 * incremental-dump.cc: New.
6772 * incremental.cc (Incremental_inputs_header_data,
6773 Incremental_inputs_entry_data): Move to incremental.h
6774 * incremental.h: (Incremental_inputs_header_data,
6775 Incremental_inputs_entry_data): Move from incremental.cc
6776
bcba9aec
RÁE
67772009-11-24 Rafael Avila de Espindola <espindola@google.com>
6778
6779 * incremental.cc (Incremental_inputs_header,
6780 Incremental_inputs_header_write, Incremental_inputs_entry,
6781 Incremental_inputs_entry_write): Add a typedef with the data type.
6782
7c3afe08
RÁE
67832009-11-24 Rafael Avila de Espindola <espindola@google.com>
6784
6785 * incremental.cc (Incremental_inputs_header,
6786 Incremental_inputs_header_write, Incremental_inputs_entry,
6787 Incremental_inputs_entry_write): Update comment about which
6788 type has the filed descriptions.
6789
d204b6e9
DK
67902009-11-15 Doug Kwan <dougkwan@google.com>
6791
6792 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
6793 (Arm_relocate_functions::arm_branch_common): Change method defintion
6794 in class definition to a method declaration and update list of formal
6795 parameters.
6796 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
6797 Arm_relocation_functions::jump24): Adjust call to
6798 Arm_relocate_functions::arm_branch_common. Update list of formal
6799 parameters.
6800 (Arm_relocate_functions::xpc25): New method definition.
6801 (Arm_relocate_functions::arm_branch_common): Move method defintion
6802 out from class definition. Use stubs for mode-switching and extending
6803 branch ranges.
6804 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
6805 specially. Change code to enable use of stubs in ARM branches.
6806
43d12afe
DK
68072009-11-10 Doug Kwan <dougkwan@google.com>
6808
6809 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
6810 in method declaration.
6811 (Target_arm::relocate_stub): New method declaration.
6812 (Target_arm::default_target): Change to return a pointer instead of
6813 a const reference.
6814 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
6815 Target_arm::default_target.
6816 (Arm_Relobj::do_relocate_sections): Remove options paramater in
6817 method definition.
6818 (Target_arm::relocate_section): Adjust view.
6819 (Target_arm::relocate_stub): New method definition.
6820
ac33a407
DK
68212009-11-10 Doug Kwan <dougkwan@google.com>
6822
6823 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
6824 a format warning.
6825 * incremental.cc (open_incremental_binary): Initialized local
6826 variables to avoid warnings.
6827 * object.cc (make_elf_object): Ditto.
6828 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
6829 a format warning.
e1df38aa 6830
88ee28e9
L
6831009-11-09 H.J. Lu <hongjiu.lu@intel.com>
6832
6833 PR gold/10930
6834 * testsuite/plugin_test.c: Include "config.h".
6835
2daedcd6
DK
68362009-11-09 Doug Kwan <dougkwan@google.com>
6837
6838 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
6839 (arm_symbol_value): Remove.
6840 (Arm_relocate_functions::arm_branch_common,
6841 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
6842 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
6843 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
6844 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
6845 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
6846 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
6847 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
6848 Arm_relocate_functions::thm_mobw_abs_nc,
6849 Arm_relocate_functions::thm_mov_abs,
6850 Arm_relocate_functions::movw_prel_nc,
6851 Arm_relocate_functions::thm_movt_abs,
6852 Arm_relocate_functions::movt_prel,
6853 Arm_relocate_functions::thm_movw_prel_nc,
6854 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
6855 (Target_arm::Relocate::relocate): Only decompose address into two
6856 parts if relocation type uses the thumb-bit and pass the actual
6857 bit instead of a flag indicating that the thumb-bit is used. Adjust
6858 calls to methods in Arm_relocate_functions for this change.
6859
1276bc89 68602009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
6861
6862 PR 10925
6863 * reloc.cc: Instantiate
6864 Sized_relobj::initialize_input_to_output_maps and
6865 Sized_relobj:free_input_to_output_maps.
6866
e53ad1b5
ILT
68672009-11-06 Ian Lance Taylor <iant@google.com>
6868
6869 PR 10876
6870 * defstd.cc (in_segment): Set only_if_ref true for "end".
6871
eb44217c
DK
68722009-11-06 Doug Kwan <dougkwan@google.com>
6873
6874 * arm.cc (class Reloc_stub): Correct a comment.
6875 (Target_arm::Target_arm): Initialize arm_input_section_map_.
6876 (Target_arm::scan_section_for_stubs): New method declaration.
6877 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
6878 Change methods from private to protected.
6879 (Target_arm::do_may_relax): New method definition.
6880 (Target_arm::do_relax, Target_arm::group_sections,
6881 Target_arm::scan_reloc_for_stub,
6882 Target_arm::scan_reloc_section_for_stubs): New method declarations.
6883 (Target_arm::arm_input_section_map_): New data member declaration.
6884 (Target_arm::scan_reloc_for_stub,
6885 Target_arm::scan_reloc_section_for_stubs,
6886 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
6887 Target_arm::do_relax): New method definitions.
6888
5d329b7d
ILT
68892009-11-06 Mikolaj Zalewski <mikolaj@google.com>
6890
6891 * configure.ac: Check for (struct stat)::st_mtim
6892 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
6893 * config.in: Regenerate.
6894 * configure: Regenerate.
6895
96a0d71b
ILT
68962009-11-05 Ian Lance Taylor <iant@google.com>
6897
6898 PR 10910
6899 * output.cc (Output_segment::add_output_section): Add missing
6900 return statement.
6901
594c8e5e
ILT
69022009-11-04 Ian Lance Taylor <iant@google.com>
6903
6904 PR 10880
6905 * object.h (class Object): Add is_needed and set_is_needed
6906 methods. Add is_needed_ field. Make bool fields into bitfields.
6907 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
6908 defined in a dynamic object and referenced by a regular object,
6909 set is_needed for the dynamic object.
6910 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
6911 if the file is marked with as_needed and it is not needed.
6912
22b127cc
ILT
69132009-11-04 Ian Lance Taylor <iant@google.com>
6914
6915 PR 10887
6916 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
6917 tags if data is discarded by linker script.
6918 * i386.cc (Target_i386::do_finalize_sections): Likewise.
6919 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
6920 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
6921 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
6922
f5c870d2
ILT
69232009-11-04 Ian Lance Taylor <iant@google.com>
6924
6925 * layout.cc (Layout::get_output_section): Add is_interp and
6926 is_dynamic_linker_section parameters. Change all callers.
6927 (Layout::choose_output_section): Likewise.
6928 (Layout::make_output_section): Likewise.
6929 (Layout::add_output_section_data): Add is_dynamic_linker_section
6930 parameter. Change all callers.
6931 * layout.h (class Layout): Update declarations.
6932 * output.h (class Output_section): Add is_interp, set_is_interp,
6933 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
6934 Add is_interp_, is_dynamic_linker_section_ fields. Change
6935 generate_code_fills_at_write_ to a bitfield.
6936 * output.cc (Output_section::Output_sections): Initialize new
6937 fields.
6938 (Output_segment::add_output_section): Add do_sort parameter.
6939 Change all callers.
6940
1ae4d23b
ILT
69412009-11-03 Ian Lance Taylor <iant@google.com>
6942
6943 PR 10860
6944 * options.h (class General_options): Add --warn-common.
6945 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
6946 merging two common symbols.
6947 (Symbol_table::should_override): Handle --warn-common when merging
6948 a common symbol with a defined symbol. Use report_resolve_problem
6949 for multiple definitions.
6950 (Symbol_table::report_resolve_problem): New function.
6951 * symtab.h (class Symbol_table): Declare report_resolve_problem.
6952
55da9579
DK
69532009-11-03 Doug Kwan <dougkwan@google.com>
6954
6955 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
6956 stub_factory_.
6957 (Target_arm::stub_factory): New method definition.
6958 (Target_arm::new_arm_input_section,
6959 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
6960 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 6961 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
6962 New type definitions.
6963 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
6964 member declarations.
6965 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
6966 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
6967 New method definitions.
6968
37a9ac43
ILT
69692009-11-03 Ian Lance Taylor <iant@google.com>
6970
6971 * options.h (class General_options): Add --warn_constructors.
6972
b3d6a3d4
ILT
69732009-11-03 Ian Lance Taylor <iant@google.com>
6974
6975 PR 10893
6976 * defstd.cc (in_section): Add entries for __rel_iplt_start,
6977 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
6978
934b01dd
ILT
69792009-11-03 Ian Lance Taylor <iant@google.com>
6980
6981 PR 10895
6982 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
6983 --msgid-bugs-address.
6984 (install-pdf): New target.
6985 (install-data_yes): Look up one directory to find mkinstalldirs.
6986
03c1939b
L
69872009-11-03 H.J. Lu <hongjiu.lu@intel.com>
6988
6989 * po/Make-in (.po.gmo): Don't generate .gmo files in source
6990 tree.
6991
ebd95253
DK
69922009-10-30 Doug Kwan <dougkwan@google.com>
6993
6994 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
6995
e9bbb538
DK
69962009-10-30 Doug Kwan <dougkwan@google.com>
6997
6998 * arm.cc (Stub_addend_reader): New struct template definition
6999 and partial specializations.
7000 (Stub_addend_reader::operator()): New method definition for a
7001 partially specialized template.
7002
d5b40221
DK
70032009-10-30 Doug Kwan <dougkwan@google.com>
7004
7005 * arm.cc (Arm_relobj::processor_specific_flags): New method
7006 definition.
7007 (Arm_relobj::do_read_symbols): New method declaration.
7008 (Arm_relobj::processor_specific_flags_): New data member declaration.
7009 (Arm_dynobj): New class definition.
7010 (Target_arm::do_finalize_sections): Add input_objects parameter.
7011 (Target_arm::do_adjust_elf_header): New method declaration.
7012 (Target_arm::are_eabi_versions_compatible,
7013 (Target_arm::merge_processor_specific_flags): New method declaration.
7014 (Target_arm::do_make_elf_object): New overloaded method definitions
7015 and declaration.
7016 (Arm_relobj::do_read_symbols): New method definition.
7017 (Arm_dynobj::do_read_symbols): Ditto.
7018 (Target_arm::do_finalize_sections): Add input_objects parameters.
7019 Merge processor-specific flags from all input objects.
7020 (Target_arm::are_eabi_versions_compatible,
7021 Target_arm::merge_processor_specific_flags,
7022 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
7023 New method definitions.
7024 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
7025 Input_objects pointer type parameter.
7026 * layout.cc (Layout::finalize): Pass input objects to target's.
7027 finalize_sections function.
7028 * output.cc (Output_file_header::do_sized_write): Set ELF file
7029 header's processor-specific flags.
7030 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
7031 Input_objects pointer type parameter.
7032 * sparc.cc (Target_sparc::do_finalize_sections): Same.
7033 * target.h (Input_objects): New forward class declaration.
7034 (Target::processor_specific_flags,
7035 Target::are_processor_specific_flags_sect): New method definitions.
7036 (Target::finalize_sections): Add input_objects parameter.
7037 (Target::Target): Initialize processor_specific_flags_ and
7038 are_processor_specific_flags_set_.
7039 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
7040 parameter.
7041 (Target::set_processor_specific_flags): New method definition.
7042 (Target::processor_specific_flags_,
7043 Target::are_processor_specific_flags_set_): New data member
7044 declarations.
7045 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
7046 Input_objects pointer type parameter.
7047
ebabffbd
DK
70482009-10-30 Doug Kwan <dougkwan@google.com>
7049
7050 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
7051
ad0f2072
ILT
70522009-10-28 Ian Lance Taylor <iant@google.com>
7053
7054 * object.h (class Relobj): Drop options parameter from
7055 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
7056 do_scan_relocs, do_relocate. Change all callers.
7057 (class Sized_relobj): Drop options parameters from
7058 do_gc_process_relocs, do_scan_relocs, do_relocate,
7059 do_relocate_sections, relocate_sections, emit_relocs_scan,
7060 emit_relocs_scan_reltype. Change all callers.
7061 (struct Relocate_info): Remove options field and all references to
7062 it.
7063 * reloc.h (class Read_relocs): Remove options constructor
7064 parameter and options_ field. Change all callers.
7065 (class Gc_process_relocs, class Scan_relocs): Likewise.
7066 (class Relocate_task): Likewise.
7067 * target-reloc.h (scan_relocs): Remove options parameter. Change
7068 all callers.
7069 (scan_relocatable_relocs): Likewise.
7070 * target.h (class Sized_target): Remove options parameter from
7071 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
7072 all callers.
7073 * gc.h (gc_process_relocs): Remove options parameter. Change all
7074 callers.
7075 * arm.cc: Update functions to remove options parameters.
7076 * i386.cc: Likewise.
7077 * powerpc.cc: Likewise.
7078 * sparc.cc: Likewise.
7079 * x86_64.cc: Likewise.
7080 * testsuite/testfile.cc: Likewise.
7081
8ffa3667
DK
70822009-10-28 Doug Kwan <dougkwan@google.com>
7083
7084 * arm.cc (Arm_relobj): New class definition.
e1df38aa 7085 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
7086 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
7087 New method definitions.
7088
40f36857
CC
70892009-10-28 Cary Coutant <ccoutant@google.com>
7090
7091 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
7092 (Plugin::cleanup_done_): New member.
7093 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
7094 (Plugin_manager::cleanup_done_): Remove.
7095 (Plugin_manager::add_input_file): Edit error message.
7096 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
7097 (Plugin_manager::cleanup): Remove use of cleanup_done_.
7098
2c849493
ILT
70992009-10-27 Mikolaj Zalewski <mikolajz@google.com>
7100
7101 * fileread.cc: (File_read::View::~View): Use the new
7102 data_ownership_ filed.
7103 (File_read::~File_read): Dispose the new whole_file_view_.
7104 (File_read::open): Mmap the whole file if needed.
7105 (File_read::open): Use whole_file_view_ instead of contents_.
7106 (File_read::find_view): Use whole_file_view_ if applicable.
7107 (File_read::do_read): Use whole_file_view_ instead of contents_.
7108 (File_read::make_view): Use whole_file_view_ instead of contents_,
7109 update File_read::View::View call.
7110 (File_read::find_or_make_view): Update File_read::View::View
7111 call.
7112 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
7113 remove contents_
7114 (File_read::View::Data_ownership): New enum.
7115 (File_read::View::View): Replace bool mapped_ with Data_ownership
7116 argument.
7117 (File_read::View::mapped_): Remove (replaced by data_ownership_).
7118 (File_read::View::data_ownership_): New field.
7119 (File_read::contents_): Remove (replaced by whole_file_view_).
7120 (File_read::whole_file_view_): New field.
7121 * options.h (class General_options): Add --keep-files-mapped.
7122
24998053
CC
71232009-10-27 Cary Coutant <ccoutant@google.com>
7124
7125 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
7126 * testsuite/Makefile.am (plugin_test_5): New test case.
7127 * testsuite/Makefile.in: Regenerate.
7128
72adc4fa
DK
71292009-10-25 Doug Kwan <dougkwan@google.com>
7130
7131 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
7132 from private to protected to allow access by child class.
7133 (Sized_relobj::do_relocate_sections): New method declaration.
7134 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 7135 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
7136 Sized_relobj::relocate_sections. Instantiate template explicitly
7137 for different target sizes and endianity.
7138
07f508a2
DK
71392009-10-24 Doug Kwan <dougkwan@google.com>
7140
7141 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
7142 (Arm_input_section::as_arm_input_section): New method.
7143 (Arm_output_section): New class definition.
7144 (Arm_output_section::create_stub_group,
7145 Arm_output_section::group_sections): New method definitions.
7146
10ad9fe5
DK
71472009-10-22 Doug Kwan <dougkwan@google.com>
7148
7149 * arm.cc (Arm_input_section): New class definition.
7150 (Arm_input_section::init, Arm_input_section:do_write,
7151 Arm_input_section::set_final_data_size,
7152 Arm_input_section::do_reset_address_and_file_offset): New method
7153 definitions.
7154
56ee5e00
DK
71552009-10-21 Doug Kwan <dougkwan@google.com>
7156
7157 * arm.cc (Stub_table, Arm_input_section): New forward class
7158 declarations.
7159 (Stub_table): New class defintion.
7160 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
7161 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
7162 New method definition.
7163
b569affa
DK
71642009-10-21 Doug Kwan <dougkwan@google.com>
7165
7166 * arm.cc: Update copyright comments.
7167 (Target_arm): New forward class template declaration.
7168 (Arm_address): New type.
7169 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
7170 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
7171 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
7172 constants.
7173 (Insn_template): Same.
7174 (DEF_STUBS): New macro.
7175 (Stub_type): New enum type.
7176 (Stub_template): New class definition.
7177 (Stub): Same.
7178 (Reloc_stub): Same.
7179 (Stub_factory): Same.
7180 (Target_arm::Target_arm): Initialize may_use_blx_ and
7181 should_force_pic_veneer_.
7182 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
7183 Target_arm::should_force_pic_veneer,
7184 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
7185 Target_arm::using_thumb_only, Target_arm:;default_target): New
7186 method defintions.
7187 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
7188 New data member declarations.
7189 (Insn_template::size, Insn_template::alignment): New method defintions.
7190 (Stub_template::Stub_template): New method definition.
7191 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
7192 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
7193 (Stub_factory::Stub_factory): New method definition.
7194 * gold.h (string_hash): New template.
7195 * output.h (Input_section_specifier::hash_value): Use
7196 gold::string_hash.
7197 (Input_section_specifier::string_hash): Remove.
7198 * stringpool.cc (Stringpool_template::string_hash): Use
7199 gold::string_hash.
7200
6c172549
DK
72012009-10-20 Doug Kwan <dougkwan@google.com>
7202
7203 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
7204 symbols of relaxed input sections.
7205 * output.h (Output_section::find_relaxed_input_section): Make
7206 method public.
7207
c5617f2f
DK
72082009-10-16 Doug Kwan <dougkwan@google.com>
7209
7210 * dynobj.cc (Versions::Versions): Initialize version_script_.
7211 Only insert base version symbol definition for a shared object
7212 if version script defines any version versions.
7213 (Versions::define_base_version): New method definition.
7214 (Versions::add_def): Check that base version is not needed.
7215 (Versions::add_need): Define base version lazily.
7216 * dynobj.h (Versions::define_base_version): New method declaration.
7217 (Versions::needs_base_version_): New data member declaration.
7218 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
7219 (check_DATA): Add no_version_test.stdout.
7220 (libno_version_test.so, no_version_test.o no_version_test.stdout):
7221 New make rules.
7222 * testsuite/Makefile.in: Regenerate.
7223 * testsuite/no_version_test.c: New file.
7224 * testsuite/no_version_test.sh: Ditto.
7225
3c12dcdb
DK
72262009-10-16 Doug Kwan <dougkwan@google.com>
7227
7228 * expression.cc (class Segment_start_expression): New class definition.
7229 (Segment_start_expression::value): New method definition.
7230 (script_exp_function_segment_start): Return a new
7231 Segment_start_expression.
7232 * gold/script-c.h (script_saw_segment_start_expression): New function
7233 prototype.
7234 * script-sections.cc (Script_sections::Script_sections): Initialize
7235 SAW_SEGMENT_START_EXPRESSION_ to false.
7236 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
7237 and -Tbbs options to specify section addresses if given in
7238 command line and no SEGMENT_START expression is seen in a script.
7239 * script-sections.h (Script_sections::saw_segment_start_expression,
7240 Script_sections::set_saw_segment_start_expression): New method
7241 definition.
7242 (Script_sections::saw_segment_start_expression_): New data member
7243 declaration.
7244 * script.cc (script_saw_segment_start_expression): New function.
7245 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
7246 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
7247 script_test_7.sh and script_test_8.sh.
7248 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
7249 script_test_8.stdout.
7250 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
7251 (script_test_6, script_test_6.stdout, script_test_7,
7252 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
7253 * Makefile.in: Regenerate.
7254 * testsuite/script_test_6.sh: New file.
7255 * testsuite/script_test_6.t: Same.
7256 * testsuite/script_test_7.sh: Same.
7257 * testsuite/script_test_7.t: Same.
7258 * testsuite/script_test_8.sh: Same.
7259
64b1ae37
DK
72602009-10-16 Doug Kwan <dougkwan@google.com>
7261
7262 * output.cc (Output_segment::set_section_list_address): Cast
7263 expressions to unsigned long long type to avoid format warnings.
7264
661be1e2
ILT
72652009-10-15 Ian Lance Taylor <iant@google.com>
7266
12edd763 7267 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 7268 dot assignment to script_sections_.
12edd763
ILT
7269 * script-sections.cc (Script_sections::add_dot_assignment):
7270 Initialize if necessary.
7271
68b6574b
ILT
7272 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
7273 program headers with no load segment if there is a linker script.
7274
661be1e2
ILT
7275 * layout.cc (Layout::set_segment_offsets): Align the file offset
7276 to the segment aligment for -N or -n with no load segment.
7277 * output.cc (Output_segment::add_output_section): Don't crash if
7278 the first section is a TLS section.
7279 (Output_segment::set_section_list_addresses): Print an error
7280 message if the address moves backward in a linker script.
7281 * script-sections.cc
7282 (Output_section_element_input::set_section_addresses): Don't
7283 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
7284 (Orphan_output_section::set_section_addresses): Likewise.
7285
f15f61a7
DK
72862009-10-15 Doug Kwan <dougkwan@google.com>
7287
7288 * layout.cc (Layout::finish_dynamic_section): Generate tags
7289 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
7290 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
7291 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
7292
82bb573a
ILT
72932009-10-14 Ian Lance Taylor <iant@google.com>
7294
7295 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
7296 fields.
7297 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
7298 data_shdr fields of relinfo.
7299 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
7300 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
7301 R_386_TLS_LDO_32, adjust based on section flags.
7302 (Target_i386::Relocate::fix_up_ldo): Remove.
7303
374ad285
ILT
73042009-10-13 Ian Lance Taylor <iant@google.com>
7305
7306 Add support for -pie.
7307 * options.h (class General_options): Add -pie and
7308 --pic-executable.
7309 (General_options::output_is_position_independent): Test -pie.
7310 (General_options::output_is_executable): Return true if not shared
7311 and not relocatable.
7312 (General_options::output_is_pie): Remove.
7313 * options.cc (General_options::finalize): Reject incompatible uses
7314 of -pie.
7315 * gold.cc (queue_middle_tasks): A -pie link is not static.
7316 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
7317 * symtab.cc (Symbol::final_value_is_known): Return false if
7318 output_is_position_independent.
7319 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
7320 output_is_position_independent.
7321 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
7322 output_is_position_independent.
7323 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
7324 output_is_position_independent.
7325 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
7326 two_file_pie_test.
7327 (basic_pie_test.o, basic_pie_test): New targets.
7328 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
7329 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
7330 (two_file_pie_test): New target.
7331 * testsuite/Makefile.in: Rebuild.
7332 * README: Remove note saying that -pie is not supported.
7333
c6585162
ILT
73342009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
7335
7336 * options.h (class General_options): Add -init and -fini.
7337 * layout.cc (Layout::finish_dynamic_section): Emit
7338 given init and fini functions.
7339
032ce4e9
ST
73402009-10-13 Sriraman Tallam <tmsriram@google.com>
7341
7342 * gc.h (gc_process_relocs): Check if icf is enabled using new
7343 function.
7344 * gold.cc (queue_initial_tasks): Likewise.
7345 (queue_middle_tasks): Likewise.
7346 * object.cc (do_layout): Likewise.
7347 * symtab.cc (is_section_folded): Likewise.
7348 * main.cc (main): Likewise.
7349 * reloc.cc (Read_relocs::run): Likewise.
7350 (Sized_relobj::do_scan_relocs): Likewise.
7351 * icf.cc (is_function_ctor_or_dtor): New function.
7352 (Icf::find_identical_sections): Check if function is ctor or dtor when
7353 safe icf is chosen.
7354 * options.h (General_options::icf): Change option to be an enum.
7355 (Icf_status): New enum.
7356 (icf_enabled): New method.
7357 (icf_safe_folding): New method.
7358 (set_icf_status): New method.
7359 (icf_status_): New variable.
7360 * (options.cc) (General_options::finalize): Set icf_status_.
7361 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
7362 icf_test and icf_keep_unique_test to use the --icf enum flag.
7363 * testsuite/icf_safe_test.sh: New file.
e1df38aa 7364 * testsuite/icf_safe_test.cc: New file.
032ce4e9 7365
f345227a
ST
73662009-10-12 Sriraman Tallam <tmsriram@google.com>
7367
7368 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
7369 includes to gc.h and icf.h.
7370 * arm.cc: Include gc.h.
7371 * gold.cc: Likewise.
7372 * i386.cc: Likewise.
7373 * powerpc.cc: Likewise.
7374 * sparc.cc: Likewise.
7375 * x86_64.cc: Likewise.
7376 * gc.h: Include icf.h.
7377
1c7814ed
ILT
73782009-10-11 Ian Lance Taylor <iant@google.com>
7379
7380 * plugin.cc: Include "gold.h" before other header files.
7381
ae3b5189
CD
73822009-10-10 Chris Demetriou <cgd@google.com>
7383
7384 * options.h (Input_file_argument::Input_file_type): New enum.
7385 (Input_file_argument::is_lib_): Replace with...
7386 (Input_file_argument::type_): New member.
7387 (Input_file_argument::Input_file_argument): Take Input_file_type
7388 'type' rather than boolean 'is_lib' as second argument.
7389 (Input_file_argument::is_lib): Use type_.
7390 (Input_file_argument::is_searched_file): New function.
7391 (Input_file_argument::may_need_search): Handle is_searched_file.
7392 * options.cc (General_options::parse_library): Support -l:filename.
7393 (General_options::parse_just_symbols): Update for Input_file_argument
7394 changes.
7395 (Command_line::process): Likewise.
7396 * archive.cc (Archive::get_file_and_offset): Likewise.
7397 * plugin.cc (Plugin_manager::release_input_file): Likewise.
7398 * script.cc (read_script_file, script_add_file): Likewise.
7399 * fileread.cc (Input_file::Input_file): Likewise.
7400 (Input_file::will_search_for): Handle is_searched_file.
7401 (Input_file::open): Likewise.
7402 * readsyms.cc (Read_symbols::get_name): Likewise.
7403 * testsuite/Makefile.am (searched_file_test): New test.
7404 * testsuite/Makefile.in: Regenerate.
7405 * testsuite/searched_file_test.cc: New file.
7406 * testsuite/searched_file_test_lib.cc: New file.
7407
f3048a1d
ILT
74082009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7409 Ian Lance Taylor <iant@google.com>
7410
7411 * descriptor.cc: Include <cstdio> and "binary-io.h".
7412 (Descriptors::open): Open the files in binary mode always.
7413 * script.cc (Lex::get_token): Treat \r as whitespace.
7414
d4780e57
ILT
74152009-10-09 Ian Lance Taylor <iant@google.com>
7416
7417 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
7418
d9a893b8
ILT
74192009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7420 Ian Lance Taylor <iant@google.com>
7421
7422 * configure.ac: Check for readv function also.
7423 * fileread.cc (readv): Define if not HAVE_READV.
7424 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
7425 does not exist.
7426 * config.in: Regenerate.
7427 * configure: Regenerate.
7428
c0a62865
DK
74292009-10-09 Doug Kwan <dougkwan@google.com>
7430
7431 * layout.cc (Layout::make_output_section): Call target hook to make
7432 ordinary output section.
7433 (Layout::finalize): Adjust parameter list of call the
7434 Target::may_relax().
7435 * layout.h (class Layout::section_list): New method.
7436 * merge.h (Output_merge_base::entsize): Change visibility to public.
7437 (Output_merge_base::is_string, Output_merge_base::do_is_string):
7438 New methods.
7439 (Output_merge_string::do_is_string): New method.
7440 * object.cc (Sized_relobj::do_setup): renamed from
7441 Sized_relobj::set_up.
7442 * object.h (Sized_relobj::adjust_shndx,
7443 Sized_relobj::initializ_input_to_output_maps,
7444 Sized_relobj::free_input_to_output_maps): Change visibilities to
7445 protected.
7446 (Sized_relobj::setup): Virtualize.
7447 (Sized_relobj::do_setup): New method declaration.
7448 (Sized_relobj::invalidate_section_offset,
7449 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
7450 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
7451 * options.cc (parse_int): New function.
7452 * options.h (parse_int): New declaration.
7453 (DEFINE_int): New macro.
7454 (stub_group_size): New option.
7455 * output.cc (Output_section::Output_section): Initialize memebers
7456 merge_section_map_, merge_section_by_properties_map_,
7457 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
7458 (Output_section::add_input_section): Handled deferred code-fill
7459 generation and remove an old comment.
7460 (Output_section::add_relaxed_input_section): New method definition.
7461 (Output_section::add_merge_input_section): Use merge section by
7462 properties map to speed to search. Update merge section maps
7463 as appropriate.
7464 (Output_section::build_relaxation_map): New method definition.
7465 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
7466 Same.
7467 (Output_section::relax_input_section): Renamed to
7468 Output_section::convert_input_sections_to_relaxed_sections and change
7469 interface to take a vector of pointers to relaxed sections.
7470 (Output_section::find_merge_section,
7471 Output_section::find_relaxed_input_section): New method definitions.
7472 (Output_section::is_input_address_mapped,
7473 Output_section::output_offset, Output_section::output_address):
7474 Use output section data maps to speed up searching.
7475 (Output_section::find_starting_output_address): Add comments.
7476 (Output_section::do_write,
7477 Output_section::write_to_postprocessing_buffer): Do code-fill
7478 generation as appropriate.
7479 (Output_section::get_input_sections): Invalidate relaxed input section
7480 map.
7481 (Output_section::restore_states): Adjust type of checkpoint .
7482 Invalidate relaxed input section map.
7483 * output.h (Output_merge_base): New class declaration.
7484 (Input_section_specifier): New class defintion.
7485 (class Output_relaxed_input_section) Change base class to
7486 Output_section_data_build.
7487 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
7488 base class initializer.
7489 (Output_section::add_relaxed_input_section): New method declaration.
7490 (Output_section::Input_section): Change visibility to protected.
7491 (Output_section::Input_section::relobj,
7492 Output_section::Input_section::shndx): Handle relaxed input sections.
7493 Output_section::input_sections) Change visibility to protected. Also
7494 define overload to return a non-const pointer.
7495 (Output_section::Merge_section_properties): New class defintion.
7496 (Output_section::Merge_section_by_properties_map,
7497 Output_section::Output_section_data_by_input_section_map,
7498 Output_section::Relaxation_map): New types.
7499 (Output_section::relax_input_section): Rename method to
7500 Output_section::convert_input_sections_to_relaxed_sections and change
7501 interface to take a vector of relaxed section pointers.
7502 (Output_section::find_merge_section,
7503 Output_section::find_relaxed_input_section,
7504 Output_section::build_relaxation_map,
7505 Output_section::convert_input_sections_in_list_to_relaxed_sections):
7506 New method declarations.
7507 (Output_section::merge_section_map_
7508 Output_section::merge_section_by_properties_map_,
7509 Output_section::relaxed_input_section_map_,
7510 Output_section::is_relaxed_input_section_map_valid_,
7511 Output_section::generate_code_fills_at_write_): New data members.
7512 * script-sections.cc
7513 (Output_section_element_input::set_section_addresses): Call
7514 current_data_size and addralign methods of relaxed input sections.
7515 (Orphan_output_section::set_section_addresses): Call current_data_size
7516 and addralign methods of relaxed input sections.
7517 * symtab.cc (Symbol_table::compute_final_value): Extract template
7518 from the body of Symbol_table::sized_finalize_symbol.
7519 (Symbol_table::sized_finalized_symbol): Call
7520 Symbol_table::compute_final_value.
7521 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
7522 (Symbol_table::compute_final_value): New templated method declaration.
7523 * target.cc (Target::do_make_output_section): New method defintion.
7524 * target.h (Target::make_output_section): New method declaration.
7525 (Target::relax): Add more parameters for input objects, symbol table
7526 and layout. Adjust call to do_relax.
7527 (Target::do_make_output_section): New method declaration.
7528 (Target::do_relax): Add parameters for input objects, symbol table
7529 and layout.
7530
d446d6c4
ILT
75312009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7532
7533 * pread.c: Include stdio.h.
7534
bc06c745
ILT
75352009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7536
7537 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
7538 defined.
7539
75aea3d0
ILT
75402009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7541
7542 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
7543 Change read_shndx type to unsigned int.
7544 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
7545 int.
7546 (Sized_dwarf_line_info::read_line_mappings): Likewise.
7547 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
7548 Change read_shndx type to unsigned int.
7549 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
7550 int.
7551 (Sized_dwarf_line_info::read_line_mappings): Likewise.
7552 * layout.cc (Layout::create_symtab_sections): Cast the result of
7553 local_symcount * symsize to off_t in the gold_assert.
7554
be8fcb75
ILT
75552009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7556
7557 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
7558 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
7559 R_ARM_BASE_ABS.
7560 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
7561 (Arm_relocate_functions::thm_abs5): New function.
7562 (Arm_relocate_functions::abs12): New function.
7563 (Arm_relocate_functions::abs16): New function.
7564 (Arm_relocate_functions::base_abs): New function.
7565 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
7566 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
7567 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
7568 R_ARM_BASE_ABS.
7569 (Scan::global): Likewise.
7570 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
7571 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
7572 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
7573 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
7574 R_ARM_BASE_ABS.
7575
c2a122b6
ILT
75762009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7577
7578 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
7579 (Arm_relocate_functions::movt_prel): New function.
7580 (Arm_relocate_functions::thm_movw_prel_nc): New function.
7581 (Arm_relocate_functions::thm_movt_prel): New function.
7582 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
7583 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
7584 (Scan::global, Relocate::relocate): Likewise.
7585 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7586
c4aa1e2d
ILT
75872009-10-09 Mikolaj Zalewski <mikolajz@google.com>
7588
7589 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
7590 Incremental_checker.
7591 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
7592 unsigned int.
7593 (class Incremental_inputs_header): New class.
7594 (Incremental_inputs_header_writer): Edit comment.
7595 (Incremental_inputs_entry): New class.
7596 (Incremental_inputs_entry_writer): Edit comment.
7597 (Sized_incremental_binary::do_find_incremental_inputs_section):
7598 Add *strtab_shndx parameter, fill it.
7599 (Sized_incremental_binary::do_check_inputs): New method.
7600 (Incremental_checker::can_incrementally_link_output_file): Use
7601 Sized_incremental_binary::check_inputs.
7602 (Incremental_inputs::report_command_line): Save command line in
7603 command_line_.
7604 * incremental.h:
7605 (Incremental_binary::find_incremental_inputs_section): New
7606 method.
7607 (Incremental_binary::do_find_incremental_inputs_section): Add
7608 strtab_shndx parameter.
7609 (Incremental_binary::do_check_inputs): New pure virtual method.
7610 (Sized_incremental_binary::do_check_inputs): Declare.
7611 (Incremental_checker::Incremental_checker): Add incremental_inputs
7612 parameter, use it to initialize incremental_inputs_.
7613 (Incremental_checker::incremental_inputs_): New field.
7614 (Incremental_checker::command_line): New method.
7615 (Incremental_checker::inputs): New method.
7616 (Incremental_checker::command_line_): New field.
7617
c549a694
ILT
76182009-10-09 Mikolaj Zalewski <mikolajz@google.com>
7619
7620 * incremental.cc: Include <cstdarg> and "target-select.h".
7621 (vexplain_no_incremental): New function.
7622 (explain_no_incremental): New function.
7623 (Incremental_binary::error): New method.
7624 (Sized_incremental_binary::do_find_incremental_inputs_section): New
7625 method.
7626 (make_sized_incremental_binary): New function.
7627 (open_incremental_binary): New function.
7628 (can_incrementally_link_file): Add checks if output is ELF and has
7629 inputs section.
7630 * incremental.h: Include "elfcpp_file.h" and "output.h".
7631 (Incremental_binary): New class.
7632 (Sized_incremental_binary): New class.
7633 (open_incremental_binary): Declare.
7634 * object.cc (is_elf_object): Use
7635 elfcpp::Elf_recognizer::is_elf_file.
7636 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
7637 * output.h (Output_file::filesize): New method.
7638
fd3c5f0b
ILT
76392009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7640
7641 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
7642 New function.
7643 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
7644 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
7645 function.
7646 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
7647 function.
7648 (Arm_relocate_functions::movw_abs_nc): New function.
7649 (Arm_relocate_functions::movt_abs): New function.
7650 (Arm_relocate_functions::thm_movw_abs_nc): New function.
7651 (Arm_relocate_functions::thm_movt_abs): New function.
7652 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
7653 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
7654 (Scan::global): Likewise.
7655 (Relocate::relocate): Likewise.
7656 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7657
7f5309a5
ILT
76582009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7659
7660 * arm.cc (Arm_relocate_functions::got_prel) New function.
7661 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
7662 (Relocate::relocate): Likewise.
7663 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7664
364c7fa5
ILT
76652009-10-06 Ian Lance Taylor <iant@google.com>
7666
7667 * options.h (class General_options): Define
7668 split_stack_adjust_size parameter.
7669 * object.h (class Object): Add uses_split_stack_ and
7670 has_no_split_stack_ fields. Add uses_split_stack and
7671 has_no_split_stack accessor functions. Declare
7672 handle_split_stack_section.
7673 (class Reloc_symbol_changes): Define.
7674 (class Sized_relobj): Define Function_offsets. Declare
7675 split_stack_adjust, split_stack_adjust_reltype, and
7676 find_functions.
7677 * object.cc (Object::handle_split_stack_section): New function.
7678 (Sized_relobj::do_layout): Call handle_split_stack_section.
7679 * dynobj.cc (Sized_dynobj::do_layout): Call
7680 handle_split_stack_section.
7681 * reloc.cc (Sized_relobj::relocate_sections): Call
7682 split_stack_adjust for executable sections in split_stack
7683 objects. Pass reloc_map to relocate_section.
7684 (Sized_relobj::split_stack_adjust): New function.
7685 (Sized_relobj::split_stack_adjust_reltype): New function.
7686 (Sized_relobj::find_functions): New function.
7687 * target-reloc.h: Include "object.h".
7688 (relocate_section): Add reloc_symbol_changes parameter. Change
7689 all callers.
7690 * target.h (class Target): Add calls_non_split method. Declare
7691 do_calls_non_split virtual method. Declare match_view and
7692 set_view_to_nop.
7693 * target.cc: Include "elfcpp.h".
7694 (Target::do_calls_non_split): New function.
7695 (Target::match_view): New function.
7696 (Target::set_view_to_nop): New function.
7697 * gold.cc (queue_middle_tasks): Give an error if mixing
7698 split-stack and non-split-stack objects with -r.
7699 * i386.cc (Target_i386::relocate_section): Add
7700 reloc_symbol_changes parameter.
7701 (Target_i386::do_calls_non_split): New function.
7702 * x86_64.cc (Target_x86_64::relocate_section): Add
7703 reloc_symbol_changes parameter.
7704 (Target_x86_64::do_calls_non_split): New function.
7705 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
7706 parameter.
7707 * powerpc.cc (Target_powerpc::relocate_section): Add
7708 reloc_symbol_changes parameter.
7709 * sparc.cc (Target_sparc::relocate_section): Add
7710 reloc_symbol_changes parameter.
7711 * configure.ac: Call AM_CONDITIONAL for the default target.
7712 * configure: Rebuild.
7713 * testsuite/Makefile.am (TEST_AS): New variable.
7714 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
7715 (check_DATA): Add split_i386 and split_x86_64 files.
7716 (SPLIT_DEFSYMS): Define.
7717 (split_i386_[1234n].o): New targets.
7718 (split_i386_[124]): New targets.
7719 (split_i386_[1234r].stdout): New targets.
7720 (split_x86_64_[1234n].o): New targets.
7721 (split_x86_64_[124]): New targets.
7722 (split_x86_64_[1234r].stdout): New targets.
7723 (MOSTLYCLEANFILES): Add new executables.
7724 * testsuite/split_i386.sh: New file.
7725 * testsuite/split_x86_64.sh: New file.
7726 * testsuite/split_i386_1.s: New file.
7727 * testsuite/split_i386_2.s: New file.
7728 * testsuite/split_i386_3.s: New file.
7729 * testsuite/split_i386_4.s: New file.
7730 * testsuite/split_i386_n.s: New file.
7731 * testsuite/split_x86_64_1.s: New file.
7732 * testsuite/split_x86_64_2.s: New file.
7733 * testsuite/split_x86_64_3.s: New file.
7734 * testsuite/split_x86_64_4.s: New file.
7735 * testsuite/split_x86_64_n.s: New file.
7736 * testsuite/testfile.cc (Target_test): Update relocation_section
7737 function.
7738 * testsuite/Makefile.in: Rebuild.
7739
e8a9fcda
ILT
77402009-10-06 Ian Lance Taylor <iant@google.com>
7741
7742 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
7743 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
7744 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
7745 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
7746 the address on ldo_addrs_.
7747 (Target_i386::Relocate::fix_up_ldo): New function.
7748
e99daf92
ILT
77492009-10-06 Rafael Espindola <espindola@google.com>
7750
7751 * plugin.cc (add_input_library): New.
7752 (Plugin::load): Add add_input_library to tv.
7753 (Plugin_manager::add_input_file): Add the is_lib argument.
7754 (add_input_file): Update call to Plugin_manager::add_input_file.
7755 (add_input_library): New.
7756 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
7757
966d4097
DK
77582009-09-30 Doug Kwan <dougkwan@google.com>
7759
7760 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
7761 symbol and call Symbol::may_need_copy_reloc to determine if
7762 a copy reloc is needed.
7763 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
7764 nocopyreloc is given in command line.
7765 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
7766 given in command line.
7767 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
7768 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
7769 of the removed Target_i386::may_need_copy_reloc.
7770 * options.h (copyreloc): New option with default value false.
7771 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
7772 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
7773 instead of the removed Target_powerpc::may_need_copy_reloc.
7774 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
7775 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
7776 instead of the removed Target_sparc::may_need_copy_reloc.
7777 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
7778 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
7779 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
7780 instead of the removed Target_x86_64::may_need_copy_reloc.
7781
029ba973
ILT
77822009-09-30 Ian Lance Taylor <iant@google.com>
7783
7784 * object.h (class Object): Remove target_ field, and target,
7785 sized_target, and set_target methods.
7786 (Object::sized_target): Remove.
7787 (class Sized_relobj): Update declarations. Remove sized_target.
7788 * object.cc (Sized_relobj::setup): Remove target parameter.
7789 Change all callers.
7790 (Input_objects::add_object): Don't do anything with the target.
7791 (make_elf_sized_object): Add punconfigured parameter. Change all
7792 callers. Set or test parameter target.
7793 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
7794 Change all callers.
7795 * parameters.cc (Parameters::set_target): Change parameter type to
7796 be non-const.
7797 (Parameters::default_target): Remove.
7798 (set_parameters_target): Change parameter type to be non-const.
7799 (parameters_force_valid_target): New function.
7800 (parameters_clear_target): New function.
7801 * parameters.h (class Parameters): Update declarations. Remove
7802 default_target method. Add sized_target and clear_target
7803 methods. Change target_ to be non-const.
7804 (set_parameters_target): Update declaration.
7805 (parameters_force_valid_target): Declare.
7806 (parameters_clear_target): Declare.
7807 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
7808 as NULL if we aren't searching.
7809 (Add_symbols::run): Don't check for compatible target.
7810 * fileread.cc (Input_file::open_binary): Call
7811 parameters_force_valid_target.
7812 * gold.cc (queue_middle_tasks): Likewise.
7813 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
7814 set_target on object.
7815 * dynobj.h (class Sized_dynobj): Update declarations.
7816 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
7817 make_elf_object returns NULL.
7818 (Archive::include_member): Don't check whether object target is
7819 compatible.
7820 * output.cc (Output_section::add_input_section): Get target from
7821 parameters.
7822 (Output_section::relax_input_section): Likewise.
7823 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
7824 parameters.
7825 (Sized_relobj::do_scan_relocs): Likewise.
7826 (Sized_relobj::relocate_sections): Likewise.
7827 * resolve.cc (Symbol_table::resolve): Likewise.
7828 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
7829 parameter. Change all callers.
7830 (Symbol_table::add_from_object): Get target from parameters.
7831 (Symbol_table::add_from_relobj): Don't check object target.
7832 (Symbol_table::add_from_dynobj): Likewise.
7833 (Symbol_table::define_special_symbol): Get target from
7834 parameters.
7835 * symtab.h (class Symbol_table): Update declaration.
7836 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
7837 parameter. Change all callers. Clear parameter target.
7838 (Binary_test): Test target here.
7839 * testsuite/object_unittest.cc (gold_testsuite): Remove
7840 target_test_pointer parameter. Change all callers.
7841 (Object_test): Test target here.
7842
a6a22b83
ILT
78432009-09-26 Ian Lance Taylor <iant@google.com>
7844
7845 * testsuite/initpri1.c: Don't try to use constructor priorities if
7846 compiling with gcc before 4.3.
7847
6a8f49fe
ILT
78482009-09-22 Mikolaj Zalewski <mikolajz@google.com>
7849
7850 * testsuite/retain_symbols_file_test.sh (check_present): Change
7851 output file name to retain_symbols_file_test.stdout.
7852 (check_absent): Likewise.
7853
8c604651
CS
78542009-09-18 Craig Silverstein <csilvers@google.com>
7855
7856 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
7857 * options.cc: Include <cerrno> and <fstream>.
7858 (General_options::finalize): Parse -retain-symbols-file tag.
7859 * options.h: New flag.
7860 (General_options): New method should_retain_symbol, new
7861 variable symbols_to_retain.
7862 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
7863 should_retain_symbol map.
7864 * testsuite/Makefile.am (retain_symbols_file_test): New test.
7865 * testsuite/Makefile.in: Regenerate.
7866 * testsuite/retain_symbols_file_test.sh: New file.
7867
ca58b19f
NC
78682009-09-18 Nick Clifton <nickc@redhat.com>
7869
7870 * po/es.po: Updated Spanish translation.
7871
20e6d0d6
DK
78722009-09-17 Doug Kwan <dougkwan@google.com>
7873
7874 * debug.h (DEBUG_RELAXATION): New constant.
7875 (DEBUG_ALL): Add DEBUG_RELAXATION.
7876 (debug_string_to_enum): Add relaxation debug option.
7877 * layout.cc
7878 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
7879 Layout::Relaxation_debug_check::read_sections,
7880 Layout::Relaxation_debug_check::read_sections): New method definitions.
7881 (Layout::Layout): Initialize data members
7882 record_output_section_data_from_scrips_,
7883 script_output_section_data_list_ and relaxation_debug_check_.
7884 (Layout::save_segments, Layout::restore_segments,
7885 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
7886 Layout::relaxation_loop_body): New method definitions.
7887 (Layout::finalize): Support relaxation. Move section layout code to
7888 Layout::relaxation_loop_body.
7889 (Layout::set_asection_address_from_script): Move code for orphan
7890 section placement out.
7891 (Layout::place_orphan_sections_in_script): New method definition.
7892 * layout.h (Output_segment_headers, Output_file_header):
7893 New forward class declarations.
7894 (Layout::~Layout): Define.
7895 (Layout::new_output_section_data_from_script): New method definition.
7896 (Layout::place_orphan_sections_in_script): New method declaration.
7897 (Layout::Segment_states): New type declaration.
7898 (Layout::save_segments, Layout::restore_segments,
7899 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
7900 Layout::relaxation_loop_body): New method declarations.
7901 (Layout::Output_section_data_list): New type declaration.
7902 (Layout::Relaxation_debug_check): New class definition.
7903 (Layout::record_output_section_data_from_script_,
7904 Layout::script_output_section_data_list_, Layout::segment_states_,
7905 Layout::relaxation_debug_check_): New data members.
7906 * output.cc: (Output_section_headers::do_size): New method definition.
7907 (Output_section_headers::Output_section_headers): Move size
7908 computation to Output_section_headers::do_size.
7909 (Output_segment_headers::do_size): New method definition.
e1df38aa 7910 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
7911 Output_file_header::do_size and call it.
7912 (Output_file_header::do_size): New method definition.
7913 (Output_data_group::Output_data_group): Adjust call to
7914 Output_section_data.
7915 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
7916 (Output_symtab_xindex::do_write): Add array bound check.
7917 (Output_section::Input_section::print_to_mapfile): Handle
7918 RELAXED_INPUT_SECTION_CODE.
7919 (Output_section::Output_section): Initialize data member checkpoint_.
7920 (Output_section::~Output_section): Delete checkpoint object pointed
7921 by checkpoint_.
7922 (Output_section::add_input_section): Always add an Input_section if
7923 relaxing.
7924 (Output_section::add_merge_input_section): Add assert.
7925 (Output_section::relax_input_section): New method definition.
7926 (Output_section::set_final_data_size): Set load address to zero for
7927 an unallocated section.
7928 (Output_section::do_address_and_file_offset_have_reset_values):
7929 New method definition.
7930 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
7931 Handle relaxed input section.
7932 (Output_section::sort_attached_input_sections): Checkpoint input
7933 section list lazily.
7934 (Output_section::get_input_sections): Change type of input_sections to
7935 list of Simple_input_section pointers. Checkpoint input section list
7936 lazily. Also handle relaxed input sections.
7937 (Output_section::add_input_section_for_script): Take a reference to
7938 a Simple_input_section object instead of Relobj pointer and section
7939 index as parameter. Handle relaxed input sections.
7940 (Output_section::save_states, Output_section::restore_states): New
7941 method definitions.
7942 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
7943 (Output_data::is_data_size_fixed): New method definition.
7944 (Output_data::reset_addresss_and_file_offset): Do not reset data size
7945 if it is fixed.
7946 (Output_data::address_and_file_offset_have_reset_values): New method
7947 definition.
7948 (Output_data::do_address_and_file_offset_have_reset_values): New method
7949 definition.
7950 (Output_data::set_data_size): Check that data size is not fixed.
7951 (Output_data::fix_data_size): New method definition.
7952 (Output_data::is_data_size_fixed_): New data member.
7953 (Output_section_headers::set_final_data_size): New method definition.
7954 (Output_section_headers::do_size): New method declaration.
7955 (Output_segment_headers::set_final_data_size): New method definition.
7956 (Output_segment_headers::do_size): New method declaration.
7957 (Output_file_header::set_final_data_size)::New method definition.
7958 (Output_file_header::do_size)::New method declaration.
7959 (Output_section_data::Output_section_data): Add new parameter
7960 is_data_size_fixed and use it to fix data size.
7961 (Output_data_const::Output_data_const): Adjust call to base class
7962 constructor and fix data size.
7963 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
7964 base class constructor and fix data size.
7965 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
7966 base class constructor and fix data size.
7967 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
7968 class constructor and fix data size.
7969 (Output_data_group::set_final_data_size): New method definition.
7970 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
7971 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
7972 class constructor and fix data size.
7973 (Output_relaxed_input_section): New class definition.
7974 (Output_section::Simple_input_section): New class definition.
7975 (Output_section::get_input_sections): Adjust parameter list.
7976 (Output_section::add_input_section_for_script): Same.
7977 (Output_section::save_states, Output_section::restore_states,
7978 Output_section::do_address_and_file_offset_have_reset_values,
7979 (Output_section::Input_section::Input_section): Handle
7980 RELAXED_INPUT_SECTION_CODE. Add new overload for
7981 Output_relaxed_input_section.
7982 (Output_section::Input_section::is_input_section,
7983 Output_section::Input_section::set_output_section): Handle relaxed
7984 input section.
7985 (Output_section::Input_section::is_relaxed_input_section,
7986 Output_section::Input_section::output_section_data,
7987 Output_section::Input_section::relaxed_input_section): New method
7988 definitions.
7989 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
7990 value.
7991 (Output_section::Input_section::u1_): Update comments.
7992 (Output_section::Input_section::u2_): Add new union member poris.
7993 (Output_section::Checkpoint_output_section): New classs definition.
7994 (Output_section::relax_input_section): New method declaration.
7995 (Output_section::checkpoint_): New data member.
7996 (Output_segment): Update comments.
7997 (Output_segment::Output_segment): Un-privatize copy constructor.
7998 (Output_segment::operator=): Un-privatize.
7999 * script-sections.cc (Output_section_element::Input_section_list):
8000 Change element type to Output_section::Simple_input_section.
8001 (Output_section_element_dot_assignment::set_section_addresses):
8002 Register output section data for relaxation clean up.
8003 (Output_data_exression::Output_data_expression): Adjust call to base
8004 constructor to fix data size.
8005 (Output_section_element_data::set_section_addresses): Register
8006 Output_data_expression object for relaxation clean up.
8007 (struct Input_section_info): Replace Relobj pointer and section index
8008 pair with Output_section::Simple_input_section and Convert struct to a
8009 class.
8010 (Input_section_sorter::operator()): Adjust access to
e1df38aa 8011 Input_section_info data member to use accessors.
20e6d0d6
DK
8012 (Output_section_element_input::set_section_addresses): Use layout
8013 parameter. Adjust code to use Output_section::Simple_input_section
8014 and Input_secction_info classes. Register filler for relaxation
8015 clean up.
8016 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
8017 and section index pair with Output_section::Simple_input_section
8018 class. Adjust code accordingly.
8019 (Phdrs_element::release_segment): New method definition.
8020 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
8021 segment list.
8022 (Script_sections::release_segments): New method definition.
8023 * gold/script-sections.h (Script_sections::release_segments): New
8024 method declaration.
8025 * gold/target.h (Target::may_relax, Target::relax,
8026 Target::do_may_relax, Target::do_relax): New method definitions.
8027
5e445df6
ILT
80282009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8029
8030 * arm.cc (has_signed_unsigned_overflow): New function.
8031 (Arm_relocate_functions::abs8): New function.
8032 (Target_arm::Scan::local): Handle R_ARM_ABS8.
8033 (Target_arm::Scan::global): Likewise.
8034 (Target_arm::relocate::relocate): Likewise.
8035 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
8036 Likewise.
8037
8c604651 80382009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
8039
8040 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
8041 * testsuite/Makefile.in: Regenerate.
8042
1e9cc1c2
NC
80432009-09-11 Nick Clifton <nickc@redhat.com>
8044
8045 * po/gold.pot: Updated by the Translation project.
8046
6a89f575
CC
80472009-09-08 Cary Coutant <ccoutant@google.com>
8048
8049 * output.cc (Output_file::open): Add execute permission to empty file.
8050 * testsuite/Makefile.am (permission_test): New test.
8051 * testsuite/Makefile.in: Regenerate.
8052
fdcac5af
ILT
80532009-09-02 Ian Lance Taylor <iant@google.com>
8054
8055 * output.cc (Output_file::resize): Call map_no_anonymous rather
8056 than map.
8057
44453f85
ILT
80582009-09-01 Mikolaj Zalewski <mikolajz@google.com>
8059
8060 * gold.cc: Include "incremental.h".
8061 (queue_initial_tasks): Call Incremental_checker methods.
8062 * incremental.cc: Include "output.h".
8063 (Incremental_checker::can_incrementally_link_output_file): New
8064 method.
8065 * incremental.h (Incremental_checker): New class.
8066
8067 * output.cc (Output_file::open_for_modification): New method.
8068 (Output_file::map_anonymous): Changed return type to bool. Record
8069 map in base_ field.
8070 (Output_file::map_no_anonymous): New method, broken out of map.
8071 (Output_file::map): Use map_no_anonymous and map_anonymous.
8072 * output.h (class Output_file): Update declarations.
8073
293c1386
CC
80742009-08-24 Cary Coutant <ccoutant@google.com>
8075
8076 * options.h (Command_line::Pre_options): New class.
8077 (Command_line::pre_options): New member.
8078 * options.cc (gold::options::ready_to_register): New variable.
8079 (One_option::register_option): Do nothing if not registering options.
8080 Assert if same short option registered twice.
8081 (General_options::General_options): Turn off option registration when
8082 done constructing.
8083 (Command_line::Pre_options::Pre_options): New constructor.
8084
f773f3d2
CC
80852009-08-24 Cary Coutant <ccoutant@google.com>
8086
06a73cfe
CC
8087 * options.h (General_options::no_keep_memory): Remove incorrect
8088 short option.
f773f3d2 8089
a15af8e2
RW
80902009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8091
8092 * Makefile.am (am__skiplex, am__skipyacc): New.
8093 * Makefile.in: Regenerate.
8094
c462b41b
RW
80952009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8096
14ec8efd
RW
8097 * Makefile.am (AM_CPPFLAGS): Renamed from ...
8098 (INCLUDES): ... this.
8099 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
8100 (AM_CPPFLAGS): Renamed from ...
8101 (INCLUDE): ... this.
8102 * Makefile.in, testsuite/Makefile.in: Regenerate.
8103
81ecdfbb
RW
8104 * Makefile.in: Regenerate.
8105 * aclocal.m4: Likewise.
8106 * config.in: Likewise.
8107 * configure: Likewise.
8108 * testsuite/Makefile.in: Likewise.
8109
c462b41b
RW
8110 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
8111 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
8112 * Makefile.in: Regenerate.
8113 * testsuite/Makefile.in: Regenerate.
8114
2da73f13
CC
81152009-08-19 Cary Coutant <ccoutant@google.com>
8116
8117 * resolve.cc (Symbol_table::resolve): Don't complain about defined
8118 symbols in shared libraries overridden by hidden or internal symbols
8119 in the main program.
8120
2db70501
CD
81212009-08-19 Chris Demetriou <cgd@google.com>
8122
8123 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
8124 checking source file names in error messages.
8125
f733487b
DK
81262009-08-18 Doug Kwan <dougkwan@google.com>
8127
8128 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
8129 an elcpp::Ehdr as parameter. Adjust call to set_target.
8130 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
8131 an elfcpp::Ehdr as parameter.
8132 * object.cc (Object::set_target): Remove the version that looks up
8133 a target and sets it.
8134 (Sized_relobj::setup): Take a Target object instead of
8135 an elfcpp::Ehdr as parameter. Adjust call to set_target.
8136 (make_elf_sized_object): Find target and ask target to
8137 make an ELF object.
8138 * object.h: (Object::set_target): Remove the version that looks up
8139 a target and sets it.
8140 (Sized_relobj::setup): Take a Target object instead of
8141 an elfcpp:Ehdr as parameter.
8142 * target.cc: Include dynobj.h.
8143 (Target::do_make_elf_object_implementation): New.
8144 (Target::do_make_elf_object): New.
8145 * target.h (Target::make_elf_object): New template declaration.
8146 (Target::do_make_elf_object): New method declarations.
8147 (Target::do_make_elf_object_implementation): New template declaration.
8148
cc70f101
ILT
81492009-08-14 Ian Lance Taylor <iant@google.com>
8150
8151 * gold.h (FUNCTION_NAME): Define.
8152 (gold_unreachable): Use FUNCTION_NAME.
8153
ef5e0cb1
ST
81542009-08-12 Sriraman Tallam <tmsriram@google.com>
8155
8156 * icf.cc (Icf::find_identical_sections): Issue a warning when a
8157 symbol in the --keep-unique list is not found.
8158
48c187ce
ST
81592009-08-12 Sriraman Tallam <tmsriram@google.com>
8160
8161 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
8162 been maked as --keep-unique.
8163 (Icf::unfold_section): New function.
8164 * icf.h (Icf::unfold_section): New function.
8165 * options.h (General_options::keep_unique): New option.
8166 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
8167 * testsuite/Makefile.in: Regenerate.
8168 * testsuite/icf_keep_unique_test.sh: New file.
8169 * testsuite/icf_keep_unique_test.cc: New file.
8170
645afe0c
CC
81712009-08-12 Cary Coutant <ccoutant@google.com>
8172
8173 PR 10471
8174 * resolve.cc (Symbol_table::resolve): Check for references from
8175 dynamic objects to hidden and internal symbols.
8176 * testsuite/Makefile.am (hidden_test.sh): New test.
8177 * testsuite/Makefile.in: Regenerate.
8178 * testsuite/hidden_test.sh: New script.
8179 * testsuite/hidden_test_1.c: New test source.
8180 * testsuite/hidden_test_main.c: New test source.
8181
11af873f
DK
81822009-08-11 Doug Kwan <dougkwan@google.com>
8183
8184 * arm.cc: Update comments.
8185 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
8186 segment to locate the .ARM.exidx section if present.
8187
b9f7d72d
DK
81882009-08-09 Doug Kwan <dougkwan@google.com>
8189
8190 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
8191 patch.
8192
ddd3c53c
ST
81932009-08-07 Sriraman Tallam <tmsriram@google.com>
8194 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
8195 compiler warnings.
8196
27721062
ST
81972009-08-06 Sriraman Tallam <tmsriram@google.com>
8198
8199 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
8200 valid tls_segment only for non-debug-section relocations.
8201 * testsuite/Makefile.am: Add gc_tls_test.
8202 * testsuite/Makefile.in: Regenerate.
8203 * testsuite/gc_tls_test.cc: New file.
8204 * testsuite/gc_tls_test.sh: New file.
8205
ef15dade 82062009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 8207
ef15dade
ST
8208 * icf.cc: New file.
8209 * icf.h: New file.
8210 * Makefile.am (CCFILES): Add icf.cc.
8211 (HFILES): Add icf.h
8212 * Makefile.in: Regenerate.
8213 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
8214 * gc.h (gc_process_relocs): Populate lists used by icf to contain
8215 section, symbol and addend information for the relocs.
8216 * gold.cc (queue_middle_tasks): Call identical code folding.
8217 * gold.h: Add defines for multimap.
8218 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
8219 to the call of finalize_local_symbols.
8220 * main.cc (main): Create object of class Icf.
8221 * object.cc (Sized_relobj::do_layout): Allow this function to be
8222 called twice during icf.
8223 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
8224 to sections marked as identical by icf.
8225 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
8226 when available.
8227 (Sized_relobj::do_section_entsize): New function.
8228 * object.h (Object::section_entsize): New function.
8229 (Object::do_section_entsize): New pure virtual function.
8230 (Relobj::finalize_local_symbols): Add new parameter.
8231 (Relobj::do_section_entsize): New function.
8232 * options.h (General_options::icf): New option.
8233 (General_options::icf_iterations): New option.
8234 (General_options::print_icf_sections): New option.
8235 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
8236 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
8237 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
8238 icf.
8239 * symtab.cc (Symbol_table::is_section_folded): New function.
8240 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
8241 to sections marked as identical by icf.
8242 * symtab.h (Symbol_table::set_icf): New function.
8243 (Symbol_table::icf): New function.
8244 (Symbol_table::is_section_folded): New function.
8245 (Symbol_table::icf_): New data member.
8246 * target-reloc.h (relocate_section): Ignore sections folded by icf.
8247 * testsuite/Makefile.am: Add commands to build icf_test.
8248 * testsuite/Makefile.in: Regenerate.
8249 * testsuite/icf_test.sh: New file.
8250 * testsuite/icf_test.cc: New file.
8251
c3b65ac4
CD
82522009-07-24 Chris Demetriou <cgd@google.com>
8253
8254 * layout.cc (is_compressible_debug_section): Fix incorrect
8255 comment about compressed section names.
8256
1caf2c51
ILT
82572009-07-20 Ian Lance Taylor <ian@airs.com>
8258
8259 PR 10419
8260 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
8261
1ef4d87f
ILT
82622009-07-16 Ian Lance Taylor <iant@google.com>
8263
8264 PR 10400
8265 * layout.h: #include <map>.
8266 (class Kept_section): Change from struct to class. Add accessors
8267 and setters. Add section size to Comdat_group mapping. Change
8268 Comdat_group to std::map. Add is_comdat_ field. Add
8269 linkonce_size field in union.
8270 (class Layout): Update declaration of find_or_add_kept_section.
8271 Don't declare find_kept_object.
8272 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
8273 parameter. Add object, shndx, is_comdat, and is_group_name
8274 parameters. Change all callers. Adjust for new Kept_section.
8275 (Layout::find_kept_object): Remove.
8276 * object.cc (Sized_relobj::include_section_group): Update use of
8277 Kept_section. Rename secnum to shndx. Only record
8278 Kept_comdat_section if sections are the same size.
8279 (Sized_relobj::include_linkonce_section): Update use of
8280 Kept_section. Only record Kept_comdat_section if sections are the
8281 same size. Set size of linkonce section.
8282 (Sized_relobj::map_to_kept_section): Update call to
8283 get_kept_comdat_section.
8284 * object.h (class Sized_relobj): Rename fields in
8285 Kept_comdat_section to drop trailing underscores; change object
8286 field to Relobj*. Change Kept_comdat_section_table to store
8287 struct rather than pointer.
8288 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
8289 Add kept_object and kept_shndx parameters. Change all callers.
8290 (Sized_relobj::get_kept_comdat_section): Change return type to
8291 bool. Add kept_object and kept_shndx parameters. Change all
8292 callers.
8293 * plugin.cc (Pluginobj::include_comdat_group): Update call to
8294 Layout::find_or_add_kept_section.
8295
37c3b7b0
ILT
82962009-07-09 Ian Lance Taylor <iant@google.com>
8297
8298 * merge.cc (Object_merge_map::initialize_input_to_output_map):
8299 Reserve space in the hash table.
8300
98fa85cb
ILT
83012009-07-06 Mikolaj Zalewski <mikolajz@google.com>
8302
8303 * fileread.cc (File_read::get_mtime): New method.
8304 * fileread.h (Timespec): New structure.
8305 (File_read::get_mtime): New method.
8306 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
8307 Renamed from timestamp_nsec.
8308 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
8309 Elf_Xword.
e1df38aa 8310 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 8311 timestamp_nsec.
e1df38aa 8312 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
8313 (Incremental_inputs::report_obejct): Save mtime; style fix.
8314 (Incremental_inputs::report_script): Save mtime; style fix.
8315 (Incremental_inputs::finalize_inputs): Style fix.
8316 (Incremental_inputs::finalize): Style fix.
8317 (Incremental_inputs::create_input_section_data): Store inputs
8318 mtime.
8319 * incremental.h (Incremental_inputs::report_script): Add mtime
8320 argument.
8321 (Incremental_inputs::Input_info::Input_info): Intialize only one
8322 union member.
8323 (Incremental_inputs::Input_info::archive): Move to nameless
8324 union.
8325 (Incremental_inputs::Input_info::obejct): Move to nameless union.
8326 (Incremental_inputs::Input_info::script): Move to nameless union.
8327 (Incremental_inputs::mtime): New field.
8328 * script.cc (read_input_script): Pass file mtime to
8329 Incremental_input.
8330 * script.h (Script_info::inputs): Style fix.
8331
c9d70757
ILT
83322009-07-01 Ian Lance Taylor <ian@airs.com>
8333
8334 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
8335 instead of 32.
8336
9c547ec3
ILT
83372009-06-24 Ian Lance Taylor <iant@google.com>
8338
8339 PR 10156
8340 * layout.cc (Layout::choose_output_section): If we find an
8341 existing section, update the flags.
8342 (Layout::create_notes): New function, broken out of
8343 Layout::finalize.
8344 (Layout::finalize): Don't create note sections.
8345 (Layout::create_note): Don't crash if linker script discards
8346 section.
8347 (Layout::create_gold_note): Likewise.
8348 (Layout::create_build_id): Likewise. Don't set
8349 after_input_sections on the section.
8350 (Layout::create_executable_stack_info): Remove target parameter.
8351 Change caller.
8352 * layout.h (class Layout): Declare create_notes. Update
8353 declaration of create_executable_stack_info.
8354 * gold.cc (queue_middle_tasks): Call create_notes.
8355 * output.cc (Output_section::update_flags_for_input_section): Move
8356 here from output.h. If SHF_ALLOC flag is newly set, mark address
8357 invalid.
8358 * output.h (Output_data::mark_address_invalid): New function.
8359 (class Output_section): Only declare, not define,
8360 update_flags_for_input_section. Remove set_flags.
8361
55458500
ILT
83622009-06-24 Ian Lance Taylor <iant@google.com>
8363
8364 * script-sections.cc (Output_section_definition::
8365 set_section_addresses): Rename shadowing local load_address to
8366 laddr.
8367
1307d6cd
ILT
83682009-06-24 Ian Lance Taylor <iant@google.com>
8369
8370 PR 10244
8371 * reloc.cc (relocate_sections): Skip empty relocation sections.
8372
ec3f783e
ILT
83732009-06-23 Ian Lance Taylor <iant@google.com>
8374
8375 PR 10156
8376 * layout.cc (Layout::create_note): Use choose_output_section
8377 rather than make_output_section.
8378
459c9f1c
ILT
83792009-06-23 Ian Lance Taylor <iant@google.com>
8380
8381 PR 10237
8382 * options.cc (General_options::parse_V): Set printed_version_.
8383 (General_options::General_options): Initialize printed_version_.
8384 * options.h (class General_options): Add printed_version_ field.
8385 * gold.cc (queue_initial_tasks): If there are no input files,
8386 don't give a fatal error if we printed the version information.
8387 (queue_middle_tasks): If using -r with a shared object, give a
8388 fatal error rather than an ordinary error.
8389
1518dc8f
ILT
83902009-06-23 Ian Lance Taylor <iant@google.com>
8391
8392 PR 10219
8393 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
8394 (Layout::make_output_section): Set have_stabstr_section_ if we see
8395 a .stab*str section.
8396 (Layout::finalize): Call link_stabs_sections.
8397 (Layout::link_stabs_sections): New file.
8398 * layout.h (class Layout): Add have_stabstr_section_ field.
8399 Declare link_stabs_sections.
8400
3d857b98
DK
84012009-06-23 Doug Kwan <dougkwan@google.com>
8402
8403 * Makefile.am (libgold_a_LIBADD): New.
8404 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
8405 * Makefile.in: Regenerate.
8406 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
8407 * configure: Regenerate.
8408 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
8409 * fileread.cc: Include sys/state.h
8410 * gold.h: Declare memmem and strndup if found missing.
8411 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
8412
0639a6f6
ILT
84132009-06-23 Ian Lance Taylor <iant@google.com>
8414
8415 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
8416 * configure: Rebuild.
8417
8d63875c
ILT
84182009-06-23 Ian Lance Taylor <iant@google.com>
8419
8420 PR 10147
8421 * object.cc (Object::section_contents): Don't try to get a view if
8422 the section has length zero.
8423 (Object::handle_gnu_warning_section): If the section is empty, use
8424 the name of the section as the warning.
8425
f7c8a183
ILT
84262009-06-23 Ian Lance Taylor <iant@google.com>
8427
8428 PR 10133
8429 * stringpool.h (class Stringpool_template): Add optimize_ field.
8430 (Stringpool_template::set_optimize): New function.
8431 * stringpool.cc (Stringpool_template::Stringpool_template):
8432 Initialize optimize_ field.
8433 (Stringpool_template::set_string_offsets): Test local optimize
8434 fild rather than parameter.
8435 * layout.cc (Layout::Layout): Call set_optimize on the section
8436 name stringpool.
8437
e6a307ba
ILT
84382009-06-22 Ian Lance Taylor <iant@google.com>
8439
8440 PR 10030
8441 * yyscript.y: Parse TARGET.
8442 * script.cc (script_set_target): New function.
8443 * script-c.h (script_set_target): Declare.
8444 * options.cc (General_options::string_to_object_format): Rename
8445 from string_to_object_format in anonymous namespace. Change
8446 callers.
8447 * options.h (class General_options): Declare
8448 string_to_object_format.
8449
3ee173de
ILT
84502009-06-22 Ian Lance Taylor <iant@google.com>
8451
8452 * script-sections.cc (Script_sections::create_segments): Don't put
8453 program headers in a PT_LOAD segment if -n or -N.
8454
84552009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
8456
8457 PR 10141
8458 * options.h (class General_options): Add -z lazy and -z now. Sort
8459 -z options into alphabetical order.
8460 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
8461
cd6739a1 84622009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
8463
8464 * layout.cc (Layout::make_output_section): Call
8465 Target::new_output_section.
8466 (Layout::attach_allocated_section_to_segment): Put large section
8467 sections in a separate load segment with the large segment flag
8468 set.
8469 (Layout::segment_precedes): Sort large data segments after other
8470 load segments.
8471 (align_file_offset): New static function.
8472 (Layout::set_segment_offsets): Use align_file_offset.
8473 * output.h (class Output_section): Add is_small_section_ and
8474 is_large_section_ fields.
8475 (Output_section::is_small_section): New function.
8476 (Output_section::set_is_small_section): New function.
8477 (Output_section::is_large_section): New function.
8478 (Output_section::set_is_large_section): New function.
8479 (Output_section::is_large_data_section): New function.
8480 (class Output_segment): Add is_large_data_segment_ field.
8481 (Output_segment::is_large_data_segment): New function.
8482 (Output_segment::set_is_large_data_segment): New function.
8483 * output.cc (Output_section::Output_section): Initialize new
8484 fields.
8485 (Output_segment::Output_segment): Likewise.
8486 (Output_segment::add_output_section): Add assertion that large
8487 data sections always go in large data segments. Force small data
8488 sections to the end of the list of data sections. Force small BSS
8489 sections to the start of the list of BSS sections. For large BSS
8490 sections to the end of the list of BSS sections.
8491 * symtab.h (class Symbol): Declare is_common_shndx.
8492 (Symbol::is_defined): Check Symbol::is_common_shndx.
8493 (Symbol::is_common): Likewise.
8494 (class Symbol_table): Define enum Commons_section_type. Update
8495 declarations. Add small_commons_ and large_commons_ fields.
8496 * symtab.cc (Symbol::is_common_shndx): New function.
8497 (Symbol_table::Symbol_table): Initialize new fields.
8498 (Symbol_table::add_from_object): Put small and large common
8499 symbols in the right list.
8500 (Symbol_table::sized_finalized_symbol): Check
8501 Symbol::is_common_shndx.
8502 (Symbol_table::sized_write_globals): Likewise.
8503 * common.cc (Symbol_table::do_allocate_commons): Allocate new
8504 common symbol lists. Don't call do_allocate_commons_list if the
8505 list is empty.
8506 (Symbol_table::do_allocate_commons_list): Remove is_tls
8507 parameter. Add comons_section_type parameter. Change all
8508 callers. Handle small and large common symbols.
8509 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
8510 Symbol::is_common_shndx.
8511 * resolve.cc (symbol_to_bits): Likewise.
8512 * target.h (Target::small_common_shndx): New function.
8513 (Target::small_common_section_flags): New function.
8514 (Target::large_common_shndx): New function.
8515 (Target::large_common_section_flags): New function.
8516 (Target::new_output_section): New function.
8517 (Target::Target_info): Add small_common_shndx, large_common_shndx,
8518 small_common_section_flags, and large_common_section_flags
8519 fields.
8520 (Target::do_new_output_section): New virtual function.
8521 * arm.cc (Target_arm::arm_info): Initialize new fields.
8522 * i386.cc (Target_i386::i386_info): Likewise.
8523 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
8524 Likewise.
8525 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
8526 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
8527 (Target_x86_64::do_new_output_section): New function.
8528 * configure.ac: Define conditional MCMODEL_MEDIUM.
8529 * testsuite/Makefile.am (check_PROGRAMS): Add large.
8530 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
8531 (large_LDFLAGS): Define.
8532 * testsuite/large.c: New file.
8533 * testsuite/testfile.cc (Target_test::test_target_info):
8534 Initialize new fields.
8535 * configure, testsuite/Makefile.in: Rebuild.
8536
bb04269c
DK
85372009-06-05 Doug Kwan <dougkwan@google.com>
8538
8539 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 8540 * Makefile.in: Regenerate.
bb04269c
DK
8541 * i386.cc (class Target_i386): Define new virtual method to
8542 override do_is_local_label_name in parent.
8543 * object.cc (Sized_relobj::do_count_local_symbols): Discard
8544 local symbols if --discard-locals or -X is given.
8545 * options.h (class General_options): Declare new options
8546 '--discard-locals' and '-X' for discarding locals.
8547 * target.h (class Target): Define new methods is_local_label_name.
8548 Declare new virtual method do_is_local_label_name.
8549 * target.cc: New file.
8550 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
8551 (check_SCRIPTS): Add discard_locals_test.sh.
8552 (check_DATA): Add discard_local_tests.syms.
8553 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
8554 (discard_local_tests.syms, discard_locals_test.o): New make rules.
8555 * testsuite/Makefile.in: Regenerate.
8556 * testsuite/discard_locals_test.c: New file.
8557 * testsuite/discard_locals_test.sh: Same.
8558
805bb01c
DK
85592009-06-05 Doug Kwan <dougkwan@google.com>
8560
8561 * object.cc (Sized_relobj::Sized_relobj): Initialize
8562 discarded_eh_frame_shndx_ to -1U.
8563 (Sized_relobj::do_layout): Record index of a discard .eh_frame
8564 section.
8565 (Sized_relobj::do_count_local_symbols): Skip local symbols in
8566 a discarded .eh_frame section.
8567 (Sized_relobj::do_finalize_local_symbols): Ditto.
8568 * object.h (class Sized_relobj): Declare new member
8569 discarded_eh_frame_shndx_.
8570 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
8571 (local_labels_test.o, local_labels_test): New rules.
8572 * testsuite/Makefile.in: Regenerate.
8573
1dcd334d
DK
85742009-06-04 Doug Kwan <dougkwan@google.com>
8575
8576 * layout.cc (Layout::section_name_mapping): Add mapping for
8577 special ARM sections.
8578
96d49306
DK
85792009-06-03 Doug Kwan <dougkwan@google.com>
8580
8581 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
8582 (utils::has_overflow): Same.
8583
dff16297
ILT
85842009-06-03 Ian Lance Taylor <iant@google.com>
8585
8586 * layout.cc (Layout::section_name_mapping): New array, replacing
8587 Layout::linkonce_mapping.
8588 (Layout::section_name_mapping_count): New variable, replacing
8589 Layout::linkonce_mapping_count.
8590 (Layout::linkonce_output_name): Remove.
8591 (Layout::output_section_name): Rewrite.
8592 * layout.h (class Layout): Rename Linkonce_mapping to
8593 Section_name_mapping, linkonce_mapping to section_name_mapping,
8594 linkonce_mapping_count to section_name_mapping_count. Don't
8595 declare linkonce_output_name.
8596
c121c671
DK
85972009-06-03 Doug Kwan <dougkwan@google.com>
8598
8599 * gold/arm.cc (namespace utils): New.
8600 (Target_arm::reloc_is_non_pic): Define new method.
8601 (class Arm_relocate_functions): New.
8602 (Target_arm::Relocate::relocate): Handle relocation types used by
8603 Android.
8604
07800fab
ILT
86052009-06-03 Ian Lance Taylor <iant@google.com>
8606
8607 * arm.cc (Target_arm::scan::global): Use || instead of |.
8608
c121c671
DK
86092009-06-02 Doug Kwan <dougkwan@google.com>
8610
8611 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
8612 issued_non_pic_error_.
8613 (class Target_arm::Scan): Declare new method check_non_pic.
8614 Define new method symbol_needs_plt_entry.
8615 Declare new data member issued_non_pic_error_.
8616 (class Target_arm::Relocate): Declare new method
8617 should_apply_static_reloc.
8618 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
8619 (Target_arm::Scan::check_non_pic): Define new method.
8620 (Target_arm::Scan::local): Handle a small subset of reloc types used
8621 by Android.
8622 (Target_arm::Scan::local): Same.
8623 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
8624
b19b0c6d
ILT
86252009-05-31 Mikolaj Zalewski <mikolajz@google.com>
8626
8627 * incremental.cc (Incremental_inputs::report_command_line): Filter
8628 out --incremental-* options.
8629
94cdfcff
DK
86302009-05-29 Doug Kwan <dougkwan@google.com>
8631
8632 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
8633 template class.
8634 (class Target_arm): Update comment.
8635 (Target_arm::Target_arm): Initialize new data members GOT_,
8636 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
8637 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
8638 and Target_arm::rel_dyn_section.
8639 Declare new_enum Target_arm::Got_type.
8640 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
8641 and DYNBSS_.
8642 Update commments for member do_dynsym_value.
8643 (Target_arm::got_size, Target_arm::plt_section,
8644 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
8645 new methods inside class defintion.
8646 (Target_arm::got_section): Define new method.
8647 (Target_arm::rel_dyn_section): Same.
8648 (Output_data_plt_arm): New template class.
8649 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
8650 (Output_data_plt_arm:do_adjust_output_section): Define new method.
8651 (Output_data_plt_arm::add_entry): Same.
8652 (Output_data_plt_arm::first_plt_entry): Define new
8653 static data member for PLT instruction template.
8654 (Output_data_plt_arm::plt_entry): Same.
8655 (Output_data_plt_arm::do_write): Define new method.
8656 (Target_arm::make_plt_entry): Same.
8657 (Target_arm::do_finalize_sections): Same.
8658 (Target_arm::do_dynsym_value): Same.
8659
4a657b0d
DK
86602009-05-28 Doug Kwan <dougkwan@google.com>
8661
8662 * Makefile.am (TARGETSOURCES): Add arm.cc.
8663 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
8664 * Makefile.in: Regenerate.
8665 * arm.cc: New file.
8666 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
8667
e7ae8c36
DK
86682009-05-26 Doug Kwan <dougkwan@google.com>
8669
8670 * options.cc (General_options::parse_exclude_libs). Fix a comment.
8671 (General_options::check_excluded_libs): Strip off directories in
8672 archive name before matching like GNU ld does.
8673 * testsuite/Makefile.am (MOSTLYCLEANFILES,
8674 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
8675 (exclude_libs_test_LDFLAGS): Add linker option
8676 -Wl,--exclude-libs,libexclude_libs_test_3
8677 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
8678 an explicit archive without using -l.
8679 (alt/libexclude_libs_test_3.a): New make rule.
8680 * testsuite/Makefile.in: Regenerate.
8681 * testsuite/exclude_libs_test.c : Declare lib3_default().
8682 (main): Call it.
8683 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
8684 * exclude_libs_test_3.c: New file.
8685
f12e7348
NC
86862009-05-26 Nick Clifton <nickc@redhat.com>
8687
8688 * po/id.po: New Indonesian translation.
8689 * po/gold.pot: Updated template file.
8690
4daadc0d
ST
86912009-05-22 Sriraman Tallam <tmsriram@google.com>
8692
e1df38aa 8693 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
8694 gc_comdat_test files. Add -Wl,--gc-sections to build
8695 gc_comdat_test.
8696 * testsuite/Makefile.in: Regenerate.
8697 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
8698
531813ad
ST
86992009-05-21 Sriraman Tallam <tmsriram@google.com>
8700
8701 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
8702 kept comdat section was garbage collected.
8703 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
8704 * testsuite/Makefile.in: Regenerate.
8705 * testsuite/gc_comdat_test.sh: New file.
8706 * testsuite/gc_comdat_test_1.cc: New file.
8707 * testsuite/gc_comdat_test_2.cc: New file.
8708
65514900
CC
87092009-05-19 Doug Kwan <dougkwan@google.com>
8710
8711 * archive.cc (Archive::Archive): Move constructor from archive.h
8712 to here. Initialize no_export_.
8713 (Archive::get_elf_object_for_member): Set no_export flag of object.
8714 * archive.h (Archive::Archive): Move constructor body to
8715 archive.cc.
8716 (Archive::no_export): New method.
8717 (Archive::no_export_): New field.
8718 * object.h (Object::Object): Initialize no_export_ to false.
8719 (Object::no_export, Object::set_no_export): New methods.
8720 (Object::no_export_): New field.
8721 * options.cc (General_options::parse_exclude_libs): New method.
8722 (General_options::check_excluded_libs) Same.
8723 * options.h (exclude_libs): New option.
8724 (General_options::check_excluded_libs): New method declaration.
8725 (General_options::excluded_libs_): New field.
8726 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
8727 default or protected visibility if an object has no-export flag set.
8728 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
8729 (check_SCRIPTS): Add exclude_libs_test.sh.
8730 (check_DATA): Add exclude_libs_test.syms.
8731 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
8732 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
8733 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
8734 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
8735 (exclude_libs_test.syms, libexclude_libs_test_1.a,
8736 libexclude_libs_test_2.a): New rules.
8737 * testsuite/Makefile.in: Regenerate.
8738 * testsuite/exclude_libs_test.c: New file.
8739 * testsuite/exclude_libs_test.sh: Ditto.
8740 * testsuite/exclude_libs_test_1.c: Ditto.
8741 * testsuite/exclude_libs_test_2.c: Ditto.
8742
1b77ea50
ILT
87432009-05-15 Ian Lance Taylor <iant@google.com>
8744
8745 * configure.ac: Check for declarations for cases where libiberty.h
8746 checks HAVE_DECL_xxx.
8747 * configure, config.in: Rebuild.
8748
072fe7ce
ILT
87492009-05-15 Mikolaj Zalewski <mikolajz@google.com>
8750
8751 * gold.h (Incremental_argument_list): Remove (invalid) forward
8752 declaration.
8753 * incremental.cc (Incremental_inputs::report_achive): New method.
8754 (Incremental_inputs::report_object): New method.
8755 (Incremental_inputs::report_script): New method.
8756 (Incremental_inputs::finalize_inputs): New method.
8757 (Incremental_inputs::finalize): Call finalize_inputs().
8758 (Incremental_inputs::sized_create_incremental_inputs_section_data):
8759 Create inputs entries.
8760 * incremental.h (Incremental_input_type): New enum.
8761 (Incremental_inputs::Incremental_input): Initialize new fields.
8762 (Incremental_inputs::report_inputs): New method.
8763 (Incremental_inputs::report_achive): New method.
8764 (Incremental_inputs::report_object): New method.
8765 (Incremental_inputs::report_script): New method.
8766 (Incremental_inputs::finalize_inputs): New method.
8767 (Incremental_inputs::Input_info): New struct.
8768 (Incremental_inputs::Input_info_map): New typedef.
8769 (Incremental_inputs::lock_): New field.
8770 (Incremental_inputs::Inputs_): New field.
8771 (Incremental_inputs::Inputs_map): New field.
8772 * main.cc (main): Call Incremental_input::report_inputs.
8773 * options.h (Input_argument_list): Typedef moved from
8774 Input_arguments.
8775 (Input_file_group::Files): Remove, use ::Input_argument_list.
8776 (Input_file_group::Input_argument_list): Remove, use
8777 ::Input_argument_list.
8778 * plugin.cc (Plugin_manager::add_input_file): Add error in
8779 incremental build.
8780 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
8781 functions.
8782 * script.cc (read_input_script): Call
8783 Incremental_input::report_script.
8784 * script.h (Script_info): New class.
8785
b0481b0b
ILT
87862009-04-27 Ian Lance Taylor <iant@google.com>
8787
8788 * x86_64.cc (do_adjust_output_section): Set entsize to
8789 plt_entry_size.
8790
b22a5a41 87912009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
8792
8793 * output.cc (Output_file::close): After short writes, continue
8794 writing from the correct offset in the buffer being written.
8795
40fde488
CD
87962009-04-23 Chris Demetriou <cgd@google.com>
8797
8798 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
8799 * configure: Regenerate.
8800 * config.in: Regenerate.
8801 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
8802 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
8803
3ce2c28e
ILT
88042009-04-21 Mikolaj Zalewski <mikolajz@google.com>
8805
8806 * incremental.cc (Incremental_inputs_header_data): Renamed from
8807 Incremental_input_header_data.
8808 (Incremental_inputs_header_data::data_size): New field.
8809 (Incremental_inputs_header_data::put_input_file_count): Renamed
8810 from input_file_count.
8811 (Incremental_inputs_header_data::put_command_line_offset): Renamed
8812 from command_line_offset.
8813 (Incremental_inputs_header_data::put_reserved): Renamed from
8814 put_reserved.
8815 (Incremental_inputs_entry_data): Renamed from
8816 Incremental_input_entry_data.
8817 (Incremental_inputs_entry_data::data_size): New field.
8818 (Incremental_inputs::report_command_line): New method.
8819 (Incremental_inputs::finalize): New method.
8820 (Incremental_inputs::create_incremental_inputs_data): New method.
8821 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
8822 * incremental.h: New file.
8823 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
8824 (Layout::finalize): Create incremental inputs section in
8825 incremental builds.
8826 (Layout::create_incremental_info_sections): New method.
8827 * layout.h (Layout::incremental_inputs): New method.
8828 (Layout::create_incremental_info_sections): New method.
8829 (Layout::incremental_inputs_): New field.
8830 * main.cc (main): Notify Incremental_input of the command line.
8831
e55bde5e
ILT
88322009-04-01 Ian Lance Taylor <iant@google.com>
8833 Mikolaj Zalewski <mikolajz@google.com>
8834
8835 * gold.h (reserve_unordered_map): Define, three versions, one for
8836 each version of Unordered_map.
8837 * layout.cc (Layout::Layout): Remove options parameter. Add
8838 number_of_input_files parameter. Don't initialize options_.
8839 Initialize number_of_input_files_ and resized_signatures_. Move
8840 sections_are_attached_.
8841 (Layout::layout_group): Reserve space for group_signatures_.
8842 (Layout::find_or_add_kept_section): Change name parameter to be a
8843 reference. Resize signatures_ map when it gets large enough.
8844 (Layout::layout_eh_frame): Use parameters->options() instead of
8845 this->options_.
8846 (Layout::make_output_section): Likewise.
8847 (Layout::attach_allocated_section_to_segment): Likewise.
8848 (Layout::finalize, Layout::create_executable_stack): Likewise.
8849 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
8850 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
8851 * layout.h (class Layout): Update declarations. Remove options_
8852 field. Add number_of_input_files_ and resized_signatures_
8853 fields. Move sections_are_attached_ field.
8854 * main.cc (main): Pass number of input files to Layout
8855 constructor. Don't pass options.
8856
154b857c
ILT
88572009-03-30 Ian Lance Taylor <iant@google.com>
8858
8859 * ffsll.c (ffsll): Correct implementation.
8860
2f35ab9b
ILT
88612009-03-27 Ian Lance Taylor <iant@google.com>
8862
fd03461a
ILT
8863 * ffsll.c: New file.
8864 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
8865 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
8866 * ftruncate.c (ftruncate): Declare before definition.
8867 * mremap.c (mremap): Likewise.
8868 * pread.c (pread): Likewise.
8869 * configure, Makefile.in, config.in: Rebuild.
8870
2f35ab9b
ILT
8871 * mremap.c: New file.
8872 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
8873 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
8874 (mremap): Declare if HAVE_MREMAP is not defined.
8875 * configure, Makefile.in, config.in: Rebuild.
8876
33aea2fd
CC
88772009-03-27 Cary Coutant <ccoutant@google.com>
8878
8879 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
8880 position independent.
8881 * sparc.cc (Target_sparc::check_non_pic): Likewise.
8882 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
8883
6d479619
CC
88842009-03-24 Cary Coutant <ccoutant@google.com>
8885
8886 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
8887 an executable.
8888 (needs_dynamic_reloc): Likewise.
8889
afc06bb8
ILT
88902009-03-24 Ian Lance Taylor <iant@google.com>
8891
8892 * yyscript.y (file_cmd): Recognize EXTERN.
8893 (extern_name_list, extern_name_list_body): New nonterminals.
8894 * script.cc (script_add_extern): Define.
8895 * script-c.h (script_add_extern): Declare.
8896
f6060a4d
ILT
88972009-03-24 Rafael Avila de Espindola <espindola@google.com>
8898
8899 * object.cc (is_elf_object): Define.
8900 * object.h (is_elf_object): Declare.
8901 * archive.cc (Archive::get_elf_object_for_member): Call
8902 is_elf_object.
33aea2fd 8903 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 8904
26736d8e
ILT
89052009-03-24 Elliott Hughes <enh@google.com>
8906
8907 * output.cc (Output_file::map_anonymous): Define.
8908 (Output_file::map): Use map_anonymous. If the regular mmap fails,
8909 try an anonymous one. Report the size if the mmap fails.
8910 * output.h (class Output_file): Declare map_anonymous.
8911
22fd9730
ILT
89122009-03-24 Ian Lance Taylor <iant@google.com>
8913
8914 * target-select.cc (instantiate_target): Don't acquire the lock if
8915 the instantiated_target_ field has already been set.
8916
cb010894
ILT
89172009-03-23 Ian Lance Taylor <iant@google.com>
8918
7f055c20
ILT
8919 * gold-threads.h (class Initialize_lock): Define.
8920 * gold-threads.cc (class Initialize_lock_once): Define.
8921 (initialize_lock_control): New static variable.
8922 (initialize_lock_pointer): New static variable.
8923 (initialize_lock_once): New static function.
8924 (Initialize_lock::Initialize_lock): Define.
8925 (Initialize_lock::initialize): Define.
8926 * target-select.h: Include "gold-threads.h".
8927 (class Target_selector): Add lock_ and initialize_lock_ fields.
8928 Don't define instantiate_target, just declare it.
8929 * target-select.cc (Target_selector::Target_selector): Initialize
8930 new fields.
8931 (Target_selector::instantiate_target): Define.
8932 * descriptors.h: Include "gold-threads.h".
8933 (class Descriptors): Add initialize_lock_ field.
8934 * descriptors.cc (Descriptors::Descriptors): Initialize new
8935 field.
8936 (Descriptors::open): Use initialize_lock_ field
8937 * errors.h (class Errors): Add initialize_lock_ field.
8938 * errors.cc (Errors::Errors): Initialize new field.
8939 (Errors::initialize_lock): Use initialize_lock_ field.
8940 * powerpc.cc (class Target_selector_powerpc): Remove
8941 instantiated_target_ field. In do_recognize call
8942 instantiate_target rather than do_instantiate_target. In
8943 do_instantiate_target just allocate a new target.
8944 * sparc.cc (class Target_selector_sparc): Likewise.
8945
36959681
ILT
8946 * freebsd.h: New file.
8947 * i386.cc: Include "freebsd.h".
8948 (Target_i386): Derive from Target_freebsd rather than
8949 Sized_target.
8950 (Target_selector_i386): Derive from Target_selector_freebsd rather
8951 than Target_selector.
8952 * x86_64.cc: Include "freebsd.h".
8953 (Target_x86_64): Derive from Target_freebsd rather than
8954 Sized_target.
8955 (Target_selector_x86_64): Derive from Target_selector_freebsd
8956 rather than Target_selector.
8957 * target.h (class Target): Add adjust_elf_header and
8958 do_adjust_elf_header.
8959 * output.cc (Output_file_header:: do_sized_write): Call target
8960 adjust_elf_header routine.
8961 * configure.tgt: Set targ_osabi.
8962 * configure.ac: Define GOLD_DEFAULT_OSABI.
8963 * parameters.cc (Parameters::default_target): Pass
8964 GOLD_DEFAULT_OSABI to select_target.
8965 * target-select.h (class Target_selector): Make instantiate_target
8966 protected rather than private.
8967 * Makefile.am (HFILES): Add freebsd.h.
8968 * configure, Makefile.in, config.in: Rebuild.
8969
cb010894
ILT
8970 * merge.cc (do_add_input_section): Correct pend value. Change
8971 message about last entry not being null terminated from error to
8972 warning.
8973
0e879927
ILT
89742009-03-20 Mikolaj Zalewski <mikolajz@google.com>
8975
8976 * incremental.cc: New file.
8977 * Makefile.am (CCFILES): Add incremental.cc.
8978 * Makefile.in: Rebuild.
8979
41105937
PP
89802009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
8981
8982 * layout.cc (Layout::output_section_name): Preserve names
8983 of '.note.' sections.
e1df38aa 8984
60439920
ILT
89852009-03-19 Ian Lance Taylor <iant@google.com>
8986
8987 * descriptors.cc (Descriptors::open): Check that the options are
8988 valid before using them.
8989
0d371ad3
ILT
89902009-03-18 Ian Lance Taylor <iant@google.com>
8991
8992 * script-sections.h: Include <list>.
8993 (class Script_sections): Change Sections_elements from std::vector
8994 to std::list. Typedef public Elements_iterator. Add
8995 orphan_section_placement_, data_segment_align_start_, and
8996 saw_data_segment_align_ fields. Remove data_segment_align_index_
8997 field.
8998 * script-sections.cc (class Orphan_section_placement): New class.
8999 (class Sections_element): Add virtual functions is_relro and
9000 orphan_section_init. Remove virtual function place_orphan_here.
9001 (class Output_section_definition): Add is_relro and
9002 orphan_section_init. Remove place_orphan_here.
9003 (class Orphan_output_section): Likewise.
9004 (Script_sections::Script_sections): Update for field changes.
9005 (Script_sections::data_segment_align): Set saw_data_segment_align_
9006 and data_segment_align_start_, not data_segment_align_index.
9007 (Script_sections::data_segment_relro_end): Check
9008 saw_data_segment_align_. Use data_segment_align_start_ rather
9009 than data_segment_align_index_.
9010 (Script_sections::place_orphan): Rewrite to use
9011 Orphan_section_placement.
9012
9201d894
ILT
90132009-03-17 Ian Lance Taylor <iant@google.com>
9014
9c5b8369
ILT
9015 * archive.cc (Archive::add_symbols): Check for a version attached
9016 to the symbol name in the archive map.
9017 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
9018 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
9019 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
9020 (ver_test_11.a): New target.
9021 * testsuite/Makefile.in: Rebuild.
9022
9201d894
ILT
9023 * configure.ac: Check for chsize and posix_fallocate. Replace
9024 ftruncate.
9025 * ftruncate.c: New file, from gnulib.
9026 * output.cc (posix_fallocate): Define dummy version if not
9027 HAVE_POSIX_FALLOCATE.
9028 (Output_file::map): Call posix_fallocate rather than lseek and
9029 write.
9030 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
9031 * configure, Makefile.in, config.in: Rebuild.
9032
ef4ab7a8 90332009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 9034
ef4ab7a8
PP
9035 * layout.h (Layout::create_note): Add section_name parameter.
9036 * layout.cc (Layout::create_note): Likewise.
9037 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 9038
8c500701
ILT
90392009-03-17 Ian Lance Taylor <iant@google.com>
9040
e85b18e1
ILT
9041 * descriptors.cc: Include "options.h".
9042 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
9043 (Descriptors::open): Always use O_CLOEXEC when opening a new
9044 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
9045 then set FD_CLOEXEC.
9046
9efe6174
ILT
9047 * sparc.cc (class Target_sparc): Add has_got_section.
9048 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
9049 make sure we have a GOT section.
9050
9051 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
9052 (Target_sparc::Scan::local): Likewise.
9053 (Target_sparc::Scan::global): Likewise.
9054 (Target_sparc::Relocate::relocate): Likewise.
9055 (Target_sparc::Relocate::relocate_tls): Likewise.
9056
8c500701
ILT
9057 * symtab.cc (Symbol_table::define_default_version): New function,
9058 broken out of add_from_object.
9059 (Symbol_table::add_from_object): Call define_default_version.
9060 (Symbol_table::define_special_symbol): Add resolve_oldsym
9061 parameter. Change all callers. If the version for a symbol comes
9062 from a version script, resolve it with the symbol with the same
9063 name with no version. Also add the symbol without a version if
9064 appropriate.
9065 (do_define_in_output_data): If resolving with oldsym, don't delete
9066 sym.
9067 (do_define_in_output_segment): Likewise.
9068 (do_define_as_constant): Likewise.
9069 * symtab.h (class Symbol_table): Update declarations.
9070
f1ed28fb
ILT
90712009-03-13 Ian Lance Taylor <iant@google.com>
9072
15f8229b
ILT
9073 * readsyms.cc (Read_symbols::incompatible_warning): New function.
9074 (Read_symbols::requeue): New function.
9075 (Read_symbols::do_read_symbols): If make_elf_object fails because
9076 the target type is not configured, and the file was searched for,
9077 issue a warning and retry with the next directory.
9078 (Add_symbols::run): If the file has an incompatible format, and
9079 it was searched for, requeue the Read_symbols task. On error,
9080 release the object.
9081 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
9082 dirindex parameter to constructor. Change all callers. Declare
9083 incompatible_warning and requeue.
9084 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
9085 input_argument_ and input_group_ fields. Add them to
9086 constructor. Change all callers.
9087 (class Read_script): Add dirindex_ field. Add it to constructor.
9088 Change all callers.
9089 * archive.cc (Archive::setup): Remove input_objects parameter.
9090 Change all callers.
9091 (Archive::get_file_and_offset): Likewise.
9092 (Archive::read_all_symbols): Likewise.
9093 (Archive::read_symbols): Likewise.
9094 (Archive::get_elf_object_for_member): Remove input_objects
9095 parameter. Add punconfigured parameter. Change all callers.
9096 (Archive::add_symbols): Change return type to bool. Check return
9097 value of include_member.
9098 (Archive::include_all_members): Likewise.
9099 (Archive::include_member): Change return type to bool. Return
9100 false if first included object has incompatible target. Set
9101 included_member_ field.
9102 (Add_archive_symbols::run): If add_symbols returns false, requeue
9103 Read_symbols task.
9104 * archive.h (class Archive): Add included_member_ field.
9105 Initialize it in constructor. Add input_file and searched_for
9106 methods. Update declarations.
9107 (class Add_archive_symbols): Add dirpath_, dirindex_, and
9108 input_argument_ fields. Add them to constructor. Change all
9109 callers.
9110 * script.cc: Include "target-select.h".
9111 (class Parser_closure): Add skip_on_incompatible_target_ and
9112 found_incompatible_target_ fields. Add
9113 skip_on_incompatible_target parameter to constructor. Change all
9114 callers. Add methods skip_on_incompatible_target,
9115 clear_skip_on_incompatible_target, found_incompatible_target, and
9116 set_found_incompatible_target.
9117 (read_input_script): Add dirindex parameter. Change all callers.
9118 If parser finds an incompatible target, requeue Read_symbols
9119 task.
9120 (script_set_symbol): Clear skip_on_incompatible_target in
9121 closure.
9122 (script_add_assertion, script_parse_option): Likewise.
9123 (script_start_sections, script_add_phdr): Likewise.
9124 (script_check_output_format): New function.
9125 * script.h (read_input_script): Update declaration.
9126 * script-c.h (script_check_output_format): Declare.
9127 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
9128 (ignore_cmd): Remove OUTPUT_FORMAT.
9129 * fileread.cc (Input_file::Input_file): Add explicit this.
9130 (Input_file::will_search_for): New function.
9131 (Input_file::open): Add pindex parameter. Change all callers.
9132 * fileread.h (class Input_file): Add input_file_argument method.
9133 Declare will_search_for. Update declarations.
9134 * object.cc (make_elf_object): Add punconfigured parameter.
9135 Change all callers.
9136 * object.h (class Object): Make input_file public. Add
9137 searched_for method.
9138 (make_elf_object): Update declaration.
9139 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
9140 restart search.
9141 * dirsearch.h (class Dirsearch): Update declaration.
9142 * options.h (class General_options): Add --warn-search-mismatch.
9143 * parameters.cc (Parameters::is_compatible_target): New function.
9144 * parameters.h (class Parameters): Declare is_compatible_target.
9145 * workqueue.cc (Workqueue::add_blocker): New function.
9146 * workqueue.h (class Workqueue): Declare add_blocker.
9147
f1ed28fb
ILT
9148 * fileread.cc (Input_file::open): Remove options parameter.
9149 Change all callers.
9150 (Input_file::open_binary): Likewise.
9151 * script.cc (read_input_script): Likewise.
9152 * readsyms.h (class Read_symbols): Remove options_ field. Remove
9153 options parameter from constructor. Change all callers.
9154 (class Read_script): Likewise.
9155 * fileread.h (class Input_file): Update declarations.
9156 * script.h (read_input_script): Update declaration.
9157
34dd024a
NC
91582009-03-10 Nick Clifton <nickc@redhat.com>
9159
9160 * po/es.po: New Spanish translation.
9161
6d71b17c
CC
91622009-03-06 Cary Coutant <ccoutant@google.com>
9163
9164 * options.cc (parse_short_option): Keep dash_z from registering itself.
9165
031cdbed
ILT
91662009-03-03 Ian Lance Taylor <iant@google.com>
9167
9168 PR 9918
9169 * target-reloc.h (relocate_section): Pass output_section to
9170 relocate.
9171 * i386.cc (Target_i386::should_apply_static_reloc): Add
9172 output_section parameter. Change all callers.
9173 (Target_i386::Relocate::relocate): Add output_section parameter.
9174 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
9175 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
9176 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
9177 * testsuite/two_file_shared.sh: New script.
9178 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
9179 (check_DATA): Add two_file_shared.dbg.
9180 (two_file_shared.dbg): New target.
9181 * testsuite/Makefile.in: Rebuild.
9182
15d5fa16
ILT
91832009-03-01 Ian Lance Taylor <iant@google.com>
9184
9185 * configure.ac: Check for byteswap.h.
9186 * configure: Rebuild.
9187 * config.in: Rebuild.
9188
8a4c0b0d
ILT
91892009-03-01 Mikolaj Zalewski <mikolajz@google.com>
9190
9191 * layout.cc (Layout::find_or_add_kept_section): New function.
9192 (Layout::add_comdat): Removed.
9193 * layout.h (struct Kept_section): Move out of class Layout.
9194 Remove trailing underscores from field names. Add group_sections
9195 field. Rename group_ field to is_group. Change all uses.
9196 (class Layout): Declare find_or_add_kept_section, not add_comdat.
9197 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
9198 comdat_groups_ field.
9199 (Sized_relobj::include_section_group): Use
9200 find_or_add_kept_section and Kept_section::group_sections.
9201 (Sized_relobj::include_linkonce_section): Likewise.
9202 * object.cc (class Sized_relobj): Don't define Comdat_group or
9203 Comdat_group_table. Remove find_comdat_group and
9204 add_comdat_group. Remove comdat_groups_ field.
9205 * plugin.cc (include_comdat_group): Use
9206 Layout::find_or_add_kept_section.
9207
b4ecf66b
ILT
92082009-02-28 Ian Lance Taylor <iant@google.com>
9209
14359ca0
ILT
9210 * README: --gc-sections and map files are now supported. Document
9211 some build requirements.
9212
b4ecf66b
ILT
9213 PR 6992
9214 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
9215 relocatable link set the value of the section symbol to zero.
9216 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
9217 relocatable link don't include the section address in the local
9218 symbol value.
9219
0602e05a
ILT
92202009-02-27 Ian Lance Taylor <iant@google.com>
9221
fd9d194f
ILT
9222 PR 6811
9223 * options.h (class Search_directory): Add is_system_directory.
9224 (class General_options): Declare is_in_system_directory.
9225 * options.cc (get_relative_sysroot): Make static.
9226 (get_default_sysroot): Make static.
9227 (General_optoins::is_in_system_directory): New function.
9228 * fileread.cc (Input_file::is_in_system_directory): New function.
9229 * fileread.h (class Input_file): Declare is_in_system_directory.
9230 * object.h (class Object): Add is_in_system_directory.
9231 (class Input_objects): Remove system_library_directory_ field.
9232 * object.cc (Input_objects::add_object): Don't set
9233 system_library_directory_.
9234 (input_objects::found_in_system_library_directory): Remove.
9235 * symtab.cc (Symbol_table::write_globals): Remove input_objects
9236 parameter. Change all callers.
9237 (Symbol_table::sized_write_globals): Likewise.
9238 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
9239 Call Object::is_in_system_directory.
9240 * symtab.h (class Symbol_table): Update declarations.
9241
61edd21f
ILT
9242 PR 5990
9243 * descriptors.h (Open_descriptor): Add is_on_stack field.
9244 * descriptors.cc (Descriptors::open): If the descriptor is on the
9245 top of the stack, remove it. Initialize is_on_stack field.
9246 (Descriptors::release): Only add pod to stack if it is not on the
9247 stack already.
9248 (Descriptors::close_some_descriptor): Clear stack_next and
9249 is_on_stack fields.
9250
e29e076a
ILT
9251 PR 7091
9252 * output.cc (Output_section::find_starting_output_address): Rename
9253 from starting_output_address; add PADDR parameter; change return
9254 type.
9255 * output.h (class Output_section): Declare
9256 find_starting_output_address instead of starting_output_address.
9257 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
9258 section symbol for which we can't find a merge section.
9259
0602e05a
ILT
9260 PR 9836
9261 * symtab.cc (Symbol_table::add_from_object): If the visibility is
9262 hidden or internal, force the symbol to be local.
9263 * resolve.cc (Symbol::override_visibility): Define.
9264 (Symbol::override_base): Use override_visibility.
9265 (Symbol_table::resolve): Likewise.
9266 (Symbol::override_base_with_special): Likewise.
9267 (Symbol_table::override_with_special): If the visibility is hidden
9268 or internal, force the symbol to be local.
9269 * symtab.h (class Symbol): Add set_visibility and
9270 override_visibility.
9271 * testsuite/ver_test_1.sh: New file.
9272 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
9273 (check_DATA): Add ver_test_1.syms.
9274 (ver_test_1.syms): New target.
9275 * testsuite/Makefile.in: Rebuild.
9276
401a9a73
CC
92772009-02-25 Cary Coutant <ccoutant@google.com>
9278
9279 * layout.cc (Layout::choose_output_section): Don't rename sections
9280 when using a linker script that has a SECTIONS clause.
9281 * Makefile.in: Regenerate.
9282
9283 * testsuite/Makefile.am (script_test_5.sh): New test case.
9284 * testsuite/Makefile.in: Regenerate.
9285 * testsuite/script_test_5.cc: New file.
9286 * testsuite/script_test_5.sh: New file.
9287 * testsuite/script_test_5.t: New file.
9288
f488e4b0
CC
92892009-02-13 Rafael Avila de Espindola <espindola@google.com>
9290
9291 * archive.cc (Archive::include_member): Update calls to add_symbols.
9292 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
9293 the Layout argument.
9294 * dynobj.h (do_add_symbols): Add the Layout argument.
9295 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
9296 Layout argument.
9297 * object.h (Object::add_symbols): Add the Layout argument.
9298 (Object::do_add_symbols): Add the Layout argument.
9299 (Sized_relobj::do_add_symbols): Add the Layout argument.
9300 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
9301 Unify the two versions.
9302 (Add_plugin_symbols): Remove.
9303 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
9304 (Sized_pluginobj::do_add_symbols): Unify the two versions.
9305 (Add_plugin_symbols): Remove.
9306 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
9307 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
9308 (Add_symbols::run): Make it work with Pulginobj.
9309
89dd1680
ILT
93102009-02-06 Ian Lance Taylor <iant@google.com>
9311
9312 * object.cc (Sized_relobj::do_layout): Make info message start
9313 with lower case letter.
9314
266d0a74
ILT
93152009-02-06 Mikolaj Zalewski <mikolajz@google.com>
9316
602b464e
ILT
9317 * binary.cc: Fix file comment.
9318
266d0a74
ILT
9319 * options.h (enum Incremental_disposition): Define.
9320 (class General_options): Add new options: --incremental,
9321 --incremental_changed, --incremental_unchanged,
9322 --incremental_unknown. Add incremental_disposition_ and
9323 implicit_incremental_ fields.
9324 (General_options::incremental_disposition): New function.
9325 (class Position_dependent_options): Add incremental_disposition
9326 option.
9327 (Position_dependent_options::copy_from_options): Set incremental
9328 dispositions.
9329 * options.cc (General_options::parse_incremental_changed): New
9330 function.
9331 (General_options::parse_incremental_unchanged): New function.
9332 (General_options::parse_incremental_unknown): New function.
9333 (General_options::General_options): Initialize new fields
9334 incremental_disposition_ and implicit_incremental_.
9335 (General_options::finalize): Check for uasge of --incremental-*
9336 without --incremental.
9337
f073bbf7
CD
93382009-02-06 Chris Demetriou <cgd@google.com>
9339
9340 * gold.h (gold_undefined_symbol): Change to take only a Symbol
9341 pointer and to report location as the file name associated with
9342 the symbol.
9343 (gold_undefined_symbol_at_location): New function to replace the
9344 old gold_undefined_symbol functionality.
9345 * target-reloc.h (relocate_section): Update to use
9346 gold_undefined_symbol_at_location.
9347 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
9348 Call gold_undefined_symbol function rather than gold_error.
9349 * errors.h (Errors::undefined_symbol): Take location as a
9350 string, rather than calculating it from a relocation.
9351 * errors.cc (Errors::fatal): Print "fatal error:" before the
9352 formatted message.
9353 (Errors::error, Errors::error_at_location): Print "error: "
9354 before the formatted message.
9355 (Errors::undefined_symbol): Take location as a string, rather
9356 than calculating it from a relocation.
9357 (gold_undefined_symbol_at_location): New function akin to
9358 old gold_undefined_symbol, calculates location from relocation.
9359 (gold_undefined_symbol): Change to take only a Symbol pointer
9360 and to report location as the file name associated with the symbol.
9361 * testsuite/debug_msg.sh: Update for changed error messages.
9362 * testsuite/undef_symbol.sh: Likewise.
9363
8e94a90c
ILT
93642009-02-04 Duncan Sands <baldrick@free.fr>
9365
9366 PR 9812
9367 * reduced_debug_output.h
9368 (Output_reduced_debug_abbrev_section::failed): Use format for
9369 gold_warning.
9370 (Output_reduced_debug_info_section::faild): Likewise.
9371
88a0e15b
ILT
93722009-01-31 Mikolaj Zalewski <mikolajz@google.com>
9373
9374 * script.cc (Lazy_demangler): New class.
9375 (Version_script_info::get_symbol_version_helper): Demangle a
9376 symbol only once.
9377
5efc7cd2
CC
93782009-01-29 Cary Coutant <ccoutant@google.com>
9379
9380 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
9381 to __tls_get_addr.
9382 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
9383
e0ebcf42
ILT
93842009-01-28 Ian Lance Taylor <iant@google.com>
9385
5efc7cd2 9386 * version.cc (version_string): Bump to 1.9.
75fe7426 9387
e0ebcf42
ILT
9388 * gold.h: Include <cstring> and <stdint.h>.
9389 * version.cc: Include <cstdio>.
9390 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
9391 warning.
9392 * reduced_debug_output.cc (insert_into_vector): Rename from
9393 Insert_into_vector; change all callers. Use Swap_unaligned to
9394 avoid aliasing issue; remove union since it is unnecessary.
9395
8e2813be 93962009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
9397
9398 * Makefile.am (CCFILES): Add gc.cc.
9399 (HFILES): Add gc.h.
9400 * Makefile.in: Regenerate.
9401 * gold.cc (Gc_runner): New class.
9402 (queue_initial_tasks): Call garbage collection related tasks
9403 when corresponding options are invoked.
9404 (queue_middle_gc_tasks): New function.
9405 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
9406 processed early before laying out sections during garbage collection.
9407 * gold.h (queue_middle_gc_tasks): New function.
9408 (is_prefix_of): Move from "layout.cc".
9409 * i386.cc (Target_i386::gc_process_relocs): New function.
9410 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
9411 * main.cc (main): Create object of class "Garbage_collection".
9412 * object.cc (Relobj::copy_symbols_data): New function.
9413 (Relobj::is_section_name_included): New function.
e1df38aa
NC
9414 (Sized_relobj::do_layout): Allow this function to be called twice
9415 during garbage collection and defer layout of section during the
6d03d481
ST
9416 first call.
9417 * object.h (Relobj::get_symbols_data): New function.
9418 (Relobj::is_section_name_included): New function.
9419 (Relobj::copy_symbols_data): New function.
9420 (Relobj::set_symbols_data): New function.
9421 (Relobj::get_relocs_data): New function.
9422 (Relobj::set_relocs_data): New function.
9423 (Relobj::is_output_section_offset_invalid): New pure virtual function.
9424 (Relobj::gc_process_relocs): New function.
9425 (Relobj::do_gc_process_relocs): New pure virtual function.
9426 (Relobj::sd_): New data member.
9427 (Sized_relobj::is_output_section_offset_invalid): New function.
9428 (Sized_relobj::do_gc_process_relocs): New function.
9429 * options.h (General_options::gc_sections): Modify to not be a no-op.
9430 (General_options::print_gc_sections): New option.
9431 * plugin.cc (Plugin_finish::run): Remove function call to
9432 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
9433 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
9434 * reloc.cc (Read_relocs::run): Add task to process relocs and
9435 determine unreferenced sections when doing garbage collection.
9436 (Gc_process_relocs): New class.
9437 (Sized_relobj::do_gc_process_relocs): New function.
9438 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
9439 sections that are garbage collected.
9440 * reloc.h (Gc_process_relocs): New class.
9441 * sparc.cc (Target_sparc::gc_process_relocs): New function.
9442 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
9443 symbols whose corresponding sections are garbage collected.
9444 (Symbol_table::Symbol_table): Add new parameter for the garbage
9445 collection object.
9446 (Symbol_table::gc_mark_undef_symbols): New function.
9447 (Symbol_table::gc_mark_symbol_for_shlib): New function.
9448 (Symbol_table::gc_mark_dyn_syms): New function.
9449 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
9450 as garbage.
9451 (Symbol_table::add_from_object): Likewise.
9452 (Symbol_table::add_from_relobj): When building shared objects, do not
9453 treat externally visible symbols as garbage.
9454 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
9455 table information for static and relocatable links.
9456 * symtab.h (Symbol_table::set_gc): New function.
9457 (Symbol_table::gc): New function.
9458 (Symbol_table::gc_mark_undef_symbols): New function.
9459 (Symbol_table::gc_mark_symbol_for_shlib): New function.
9460 (Symbol_table::gc_mark_dyn_syms): New function.
9461 (Symbol_table::gc_): New data member.
e1df38aa 9462 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
9463 function.
9464 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
9465 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
9466
3b293544
CF
94672009-01-20 Chris Faylor <me.sourceware@sourceware.org>
9468
9469 * options.h (General_options::gc_sections): Define as a no-op for now.
9470 (General_options::no_keep_memory): Ditto.
9471 (General_options::Bshareable): Define.
9472 * options.cc (General_options::finalize): Honor -Bshareable.
9473
83d22aa8
AS
94742009-01-20 Andreas Schwab <schwab@suse.de>
9475
9476 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
9477 read the value in the contents, since we don't use it. Use the
9478 template endianness when writing.
9479 (Relocate::relocate): Use it for R_PPC_REL16_HA.
9480
cd536b21
AS
94812009-01-19 Andreas Schwab <schwab@suse.de>
9482
9483 * configure.tgt (powerpc64-*): Fix targ_obj.
9484
99e9a495
ILT
94852009-01-15 Ian Lance Taylor <iant@google.com>
9486
9487 * object.cc (Sized_relobj::write_local_symbols): Don't write out
9488 local symbols when stripping all symbols.
9489
bbbfea06
CC
94902009-01-14 Cary Coutant <ccoutant@google.com>
9491
99e9a495 9492 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 9493
0f7c0701
CC
94942009-01-14 Cary Coutant <ccoutant@google.com>
9495
9496 * archive.cc (Archive::get_elf_object_for_member): Remove call
9497 to File_read::claim_for_plugin.
9498 * descriptors.cc (Descriptors::open): Remove reference to
9499 is_claimed.
9500 (Descriptors::claim_for_plugin): Remove.
9501 * descriptors.h (Descriptors::claim_for_plugin): Remove.
9502 (Descriptors::is_claimed): Remove.
9503 (claim_descriptor_for_plugin): Remove.
9504 * fileread.cc (File_read::claim_for_plugin): Remove.
9505 * fileread.h (File_read::claim_for_plugin): Remove.
9506 (File_read::descriptor): Reopen descriptor if necessary.
9507 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
9508 (Plugin_manager::all_symbols_read): Add task parameter. Change
9509 all callers.
9510 (Plugin_manager::get_input_file): New function.
9511 (Plugin_manager::release_input_file): New function.
9512 (Pluginobj::Pluginobj): Add filesize parameter and initialize
9513 corresponding data member.
9514 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
9515 and pass to base constructor. Change all callers.
9516 (get_input_file, release_input_file): New functions.
9517 (make_sized_plugin_object): Add filesize parameter. Change all callers.
9518 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
9519 (Plugin_manager::all_symbols_read): Add task parameter.
9520 (Plugin_manager::get_input_file): New function.
9521 (Plugin_manager::release_input_file): New function.
9522 (Plugin_manager::task_): New data member.
9523 (Pluginobj::Pluginobj): Add filesize parameter.
9524 (Pluginobj::filename): New function.
9525 (Pluginobj::descriptor): New function.
9526 (Pluginobj::filesize): New function.
9527 (Pluginobj::filesize_): New data member.
9528 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
9529 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
9530 File_read::claim_for_plugin; use Object::unlock to unlock the file.
9531
9532 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
9533 with archive libraries.
9534 * testsuite/Makefile.in: Regenerate.
9535 * testsuite/plugin_test.c (struct sym_info): New type.
9536 (get_input_file, release_input_file): New static variables.
9537 (onload): Capture new transfer vector entries.
9538 (claim_file_hook): Stop reading at end of file according to filesize.
9539 Factor out parsing of readelf output into separate function.
9540 (all_symbols_read_hook): Exercise get_input_file and release_input_file
9541 APIs and get the source file name from the symbol table. Convert
9542 source file name to corresponding object file name. Print info
9543 message when adding new input files.
9544 (parse_readelf_line): New function.
9545 * testsuite/plugin_test_1.sh: Add checks for new info messages.
9546 * testsuite/plugin_test_2.sh: Likewise.
9547 * testsuite/plugin_test_3.sh: Likewise.
9548 * testsuite/plugin_test_4.sh: New test case.
9549
62a6d109
ILT
95502009-01-07 Ian Lance Taylor <iant@google.com>
9551
9552 * version.cc (version_string): Bump to 1.8.
9553
483620e8
CC
95542008-12-23 Cary Coutant <ccoutant@google.com>
9555
9556 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
9557 * plugin.cc (Plugin_manager::finish): Rename as
9558 layout_deferred_objects. Move cleanup to separate function.
9559 (Plugin_manager::cleanup): New function.
9560 (Plugin_finish::run): Call layout_deferred_objects and cleanup
9561 separately.
9562 * plugin.h (Plugin_manager::finish): Rename as
9563 layout_deferred_objects.
9564 (Plugin_manager::cleanup): New function.
9565 (Plugin_manager::cleanup_done): New field.
9566
d66a9eb3
CC
95672008-12-23 Cary Coutant <ccoutant@google.com>
9568
9569 * plugin.cc (is_visible_from_outside): New function.
9570 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
9571 so we don't return "IR only" status for exported symbols or -r links.
9572
9573 * testsuite/Makefile.am (plugin_test_3): New test case.
9574 * testsuite/Makefile.in: Regenerate.
9575 * testsuite/plugin_test_3.sh: New file.
9576
5995b570
CC
95772008-12-22 Cary Coutant <ccoutant@google.com>
9578
9579 * object.cc (Sized_relobj::layout_section): New function.
9580 (Sized_relobj::do_layout): Defer layout of input sections until after
9581 plugin has provided replacement files.
9582 (Sized_relobj::do_layout_deferred_sections): New function.
9583 * object.h (Relobj::set_section_offset): Remove virtual keyword.
9584 (Relobj::layout_deferred_sections): New function.
9585 (Relobj::do_layout_deferred_sections): New function.
9586 (Sized_relobj::do_layout_deferred_sections): New function.
9587 (Sized_relobj::layout_section): New function.
9588 (Sized_relobj::Deferred_layout): New structure.
9589 (Sized_relobj::deferred_layout_): New field.
9590 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
9591 Change all callers. Layout deferred sections.
9592 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
9593 references.
9594 (Plugin_hook::run): Move code from do_plugin_hook inline.
9595 (Plugin_hook::do_plugin_hook): Remove.
9596 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
9597 (Plugin_manager::finish): Renamed, was cleanup.
9598 (Plugin_manager::should_defer_layout): New function.
9599 (Plugin_manager::add_deferred_layout_object): New function.
9600 (Plugin_manager::Deferred_layout_list): New type.
9601 (Plugin_manager::deferred_layout_objects_): New field.
9602 (Plugin_hook::do_plugin_hook): Remove.
9603
ee769c88
ILT
96042008-12-17 Ian Lance Taylor <iant@google.com>
9605
9606 * options.h (class General_options): Add --no case for
9607 --export-dynamic.
9608
abc8dcba
CC
96092008-12-16 Cary Coutant <ccoutant@google.com>
9610
9611 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
9612 vector.
9613 (Plugin_manager::claim_file): Create plugin object even if
9614 plugin did not call the add_symbols callback.
9615 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
9616 asking for more symbols than were added.
9617 * testsuite/Makefile.am (plugin_test_1): Add test case with
9618 no global symbols.
9619 (empty.syms): New target.
9620 * testsuite/Makefile.in: Regenerate.
9621 * testsuite/plugin_test.c (claim_file_hook): Add new debug
9622 message. Don't call add_symbols if no globals.
9623 (all_symbols_read_hook): Don't provide replacement for empty
9624 claimed file.
9625
b0074644
ILT
96262008-12-12 Ian Lance Taylor <iant@google.com>
9627
68943102
ILT
9628 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
9629 r_type == 0 for a local symbol with r_sym == 0.
9630 (scan_relocatable_relocs): Pass r_sym to
9631 local_non_section_strategy.
9632 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
9633 r_sym parameter.
9634
b0074644
ILT
9635 * configure.ac: Update test for TLS descriptors: they are
9636 supported as of glibc 2.9.
9637 * configure: Rebuild.
9638
c2508178
ILT
96392008-12-11 Ian Lance Taylor <iant@google.com>
9640
9641 PR 7091
9642 * target-reloc.h (Default_scan_relocatable_relocs): For each
9643 function, map r_type == 0 to RELOC_DISCARD.
9644
2756a258
CC
96452008-12-10 Cary Coutant <ccoutant@google.com>
9646
9647 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
9648 object to override a kept COMDAT group from a plugin object.
9649
bb6f53d3
ILT
96502008-12-09 Ian Lance Taylor <iant@google.com>
9651
fbc558e1
ILT
9652 PR 7088
9653 * yyscript.y (file_cmd): Handle INPUT.
9654
bb6f53d3
ILT
9655 * testsuite/initpri1.c: Change all declarations to be full
9656 prototypes by adding void, to avoid compiler warnings.
9657
4674ecfc
CC
96582008-12-05 Rafael Avila de Espindola <espindola@google.com>
9659
9660 * options.cc (General_options::parse_plugin_opt): New.
9661 (General_options::add_plugin): The argument now is just the filename.
9662 (General_options::add_plugin_option): New.
9663 * options.h (plugin_opt): New.
9664 (add_plugin): Change argument name.
9665 (add_plugin_option): New.
9666 * plugin.cc (Plugin::load): Don't parse the plugin option.
9667 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
9668 (Plugin::add_option): New.
9669 (Plugin::args_): Change type.
9670 (Plugin::filename_): New.
9671 (Plugin_manager::add_plugin_option): New.
9672 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
9673 * testsuite/Makefile.in: Regenerate.
9674
fd06b4aa
CC
96752008-12-05 Cary Coutant <ccoutant@google.com>
9676
9677 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
9678 Handle --strip-lto-sections option.
9679 * options.h (strip_lto_sections): New option.
9680
6c52134c
CC
96812008-12-01 Cary Coutant <ccoutant@google.com>
9682
9683 * plugin.cc (ld_plugin_message): Change format parameter to const.
9684 Fix mismatch between new[] and delete.
9685
a45248e0
CC
96862008-11-14 Cary Coutant <ccoutant@google.com>
9687
9688 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
9689 instead of -1U.
9690
c82fbeee
CS
96912008-11-05 Craig Silverstein <csilvers@google.com>
9692
9693 * options.cc (General_options::parse_dynamic_list): New function.
9694 * options.h (General_options): New flags dynamic_list,
9695 dynamic_list_data, dynamic_list_cpp_new, and
9696 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
9697 (General_options::in_dynamic_list): New function.
9698 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
9699 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
9700 (Lex::can_continue_name): Likewise.
9701 (yylex): Likewise.
9702 (read_script_file): New parameter script_options.
9703 (read_dynamic_list): New function.
9704 (Script_options::define_dynamic_list): New function.
9705 (dynamic_list_keyword_parsecodes): New variable.
9706 (dynamic_list_keywords): New variable.
9707 * script.h (Script_options::define_dynamic_list): New function
9708 prototype.
9709 (read_dynamic_list): New function prototype.
9710 * symtab.cc (strprefix): New macro.
9711 (Symbol::should_add_dynsym_entry): Support dynamic_list,
9712 dynamic_list_data, dynamic_list_cpp_new, and
9713 dynamic_list_cpp_typeinfo.
9714 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
9715 (dynamic_list_expr): New rule.
9716 (dynamic_list_nodes): Likewise.
9717 (dynamic_list_node): Likewise.
9718 * testsuite/Makefile.am (dynamic_list): New test.
9719 * testsuite/Makefile.in: Regenerated.
9720 * testsuite/dynamic_list.t: New file.
9721 * testsuite/dynamic_list.sh: New file.
9722
e0bb29a5
CS
97232008-11-05 Craig Silverstein <csilvers@google.com>
9724
9725 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
9726 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
9727 (t11_last): Likewise.
9728 * testsuite/ver_test_6.c (main): Likewise.
9729
4e1e25e0
CC
97302008-10-07 Cary Coutant <ccoutant@google.com>
9731
9732 * options.c (General_options::finalize): Add check for -static and
9733 -shared.
9734 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
9735 is not empty.
9736
92f03fcb
CC
97372008-10-02 Cary Coutant <ccoutant@google.com>
9738
9739 * plugin.cc (make_sized_plugin_object): Fix conditional
9740 compilation to work when not all targets are enabled.
9741
fbd8a257
CC
97422008-09-29 Cary Coutant <ccoutant@google.com>
9743
9744 * archive.cc (Archive::get_file_and_offset): Use filename instead
9745 of name to get library path.
9746 (Archive::include_member): Unlock external member of a thin archive.
9747
9748 * testsuite/Makefile.am (TEST_AR): New variable.
9749 (thin_archive_test_1): New test.
9750 (thin_archive_test_2): New test.
81636b3f
CC
9751 * testsuite/Makefile.in: Regenerate.
9752 * testsuite/thin_archive_main.cc: New file.
9753 * testsuite/thin_archive_test_1.cc: New file.
9754 * testsuite/thin_archive_test_2.cc: New file.
9755 * testsuite/thin_archive_test_3.cc: New file.
9756 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 9757
eff45813
CC
97582008-09-29 Cary Coutant <ccoutant@google.com>
9759
9760 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
9761 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
9762 instead of -1U.
9763 (Sized_relobj::do_finalize_local_symbols): Likewise.
9764 (Sized_relobj::map_to_kept_section): Likewise.
9765 * object.h (Sized_relobj::invalid_address): New constant.
9766 (Sized_relobj::do_output_section_offset): Check for invalid_address
9767 and return -1ULL.
9768 * output.cc (Output_reloc::local_section_offset): Use constant
9769 invalid_address instead of -1U.
9770 (Output_reloc::get_address): Likewise.
9771 (Output_section::output_address): Change -1U to -1ULL.
9772 * output.h (Output_reloc::invalid_address): New constant.
9773 * reloc.cc (Sized_relobj::write_sections): Use constant
9774 invalid_address instead of -1U.
9775 (Sized_relobj::relocate_sections): Likewise.
9776 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
9777 values for merge sections.
9778 * target-reloc.h (relocate_for_relocatable): Use constant
9779 invalid_address instead of -1U.
9780
89fc3421
CC
97812008-09-19 Cary Coutant <ccoutant@google.com>
9782
9783 Add plugin functionality for link-time optimization (LTO).
9784 * configure.ac (plugins): Add --enable-plugins option.
9785 * configure: Regenerate.
9786 * config.in: Regenerate.
9787 * Makefile.am (LIBDL): New variable.
9788 (CCFILES): Add plugin.cc.
9789 (HFILES): Add plugin.h.
9790 (ldadd_var): Add LIBDL.
9791 * Makefile.in: Regenerate.
9792
9793 * archive.cc: Include "plugin.h".
9794 (Archive::setup): Don't preread archive symbols when using a plugin.
9795 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
9796 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
9797 files.
9798 (Archive::include_member): Add symbols from plugin objects.
9799 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
9800 * descriptors.cc (Descriptors::open): Check for file descriptors
9801 abandoned by plugins.
9802 (Descriptors::claim_for_plugin): New function.
9803 * descriptors.h (Descriptors::claim_for_plugin): New function.
9804 (Open_descriptor::is_claimed): New field.
9805 (claim_descriptor_for_plugin): New function.
9806 * fileread.cc (File_read::claim_for_plugin): New function.
9807 * fileread.h (File_read::claim_for_plugin): New function.
9808 (File_read::descriptor): New function.
9809 * gold.cc: Include "plugin.h".
9810 (queue_initial_tasks): Add task to call plugin hooks for generating
9811 new object files.
9812 * main.cc: Include "plugin.h".
9813 (main): Load plugin libraries.
9814 * object.h (Pluginobj): Declare.
9815 (Object::pluginobj): New function.
9816 (Object::do_pluginobj): New function.
9817 (Object::set_target): New function.
9818 * options.cc: Include "plugin.h".
9819 (General_options::parse_plugin): New function.
9820 (General_options::General_options): Initialize plugins_ field.
9821 (General_options::add_plugin): New function.
9822 * options.h (Plugin_manager): Declare.
9823 (General_options): Add --plugin option.
9824 (General_options::has_plugins): New function.
9825 (General_options::plugins): New function.
9826 (General_options::add_plugin): New function.
9827 (General_options::plugins_): New field.
9828 * plugin.cc: New file.
9829 * plugin.h: New file.
9830 * readsyms.cc: Include "plugin.h".
9831 (Read_symbols::do_read_symbols): Check for archive before checking
9832 for ELF file. Call plugin hooks to claim files.
9833 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
9834 from a real object file; force override when processing replacement
9835 files.
9836 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
9837 (Symbol::init_base_object): Likewise.
9838 (Symbol::init_base_output_data): Likewise.
9839 (Symbol::init_base_output_segment): Likewise.
9840 (Symbol::init_base_constant): Likewise.
9841 (Symbol::init_base_undefined): Likewise.
9842 (Symbol::output_section): Assert that object is not a plugin.
9843 (Symbol_table::add_from_pluginobj): New function.
9844 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
9845 undefined.
9846 (Symbol_table::sized_write_globals): Likewise.
9847 (Symbol_table::add_from_pluginobj): Instantiate template.
9848 * symtab.h (Sized_pluginobj): Declare.
9849 (Symbol::in_real_elf): New function.
9850 (Symbol::set_in_real_elf): New function.
9851 (Symbol::in_real_elf_): New field.
9852 (Symbol_table::add_from_pluginobj): New function.
9853
9854 * testsuite/Makefile.am (AM_CFLAGS): New variable.
9855 (LIBDL): New variable.
9856 (LDADD): Add LIBDL.
9857 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
9858 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
9859 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
9860 (MOSTLYCLEANFILES): Likewise.
9861 * testsuite/Makefile.in: Regenerate.
9862 * testsuite/plugin_test.c: New file.
9863 * testsuite/plugin_test_1.sh: New file.
9864 * testsuite/plugin_test_2.sh: New file.
9865
de31bda5
ILT
98662008-09-16 Ian Lance Taylor <iant@google.com>
9867
9c2d0ef9
ILT
9868 * target-reloc.h (relocate_section): Check whether a symbol is
9869 defined by the ABI before reporting an undefined symbol error.
9870 * target.h (Target::is_defined_by_abi): Make parameter const.
9871 (Target::do_is_defined_by_abi): Likewise.
9872 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
9873 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
9874 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
9875 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
9876 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
9877 * testsuite/Makefile.in: Rebuild.
9878
de31bda5
ILT
9879 * fileread.cc (make_view): Add casts to avoid warning.
9880
9fa33bee
AO
98812008-09-16 Alexandre Oliva <aoliva@redhat.com>
9882
9883 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
9884 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
9885
183fd0e3
AO
98862008-09-16 Alexandre Oliva <aoliva@redhat.com>
9887
9888 * options.h (General_options::output_is_executable): New.
9889 (General_options::output_is_pie): New.
9890 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
9891 for shared libraries.
9892 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
9893
7be8330a
CD
98942008-09-11 Chris Demetriou <cgd@google.com>
9895
9896 * options.h (origin): New -z option.
9897 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
9898 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
9899 in DT_FLAGS_1.
9900
a9caad02
CC
99012008-09-05 Cary Coutant <ccoutant@google.com>
9902
9903 * fileread.cc (File_read::make_view): Add check for attempt to map
9904 beyond end of file.
9905
ae6dce4d
CC
99062008-09-05 Cary Coutant <ccoutant@google.com>
9907
9908 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
9909 explicit instantiations.
9910
d7ab2a47
KVH
99112008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
9912
9913 PR gold/6858
9914 * options.cc (General_options::finalize): Allow undefined symbols
9915 in shlibs if linking -shared.
9916
9917 PR gold/6859
9918 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
9919 symbols as not needing a dynsym entry.
9920
1e52a9c1
CS
99212008-08-20 Craig Silverstein <csilvers@google.com>
9922
9923 * fileread.cc (File_read::open): Do not lock the file unless it
9924 was successfully opened.
9925
d85c80a3
CC
99262008-08-14 Cary Coutant <ccoutant@google.com>
9927
9928 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
9929 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
9930 * testsuite/tls_test.cc (struct int128): 128-bit struct
9931 for testing TLS relocs with non-zero addend.
9932 (v12): New TLS variable.
9933 (t12): New test.
9934 (t_last): Add check for v12.
9935 * testsuite/tls_test.h (t12): New function.
9936 * testsuite/tls_test_main.cc (thread_routine): Call new test.
9937
2d924fd9
ILT
99382008-08-13 Ian Lance Taylor <iant@google.com>
9939
9940 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
9941 set tls_segment_ or relro_segment_.
9942 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
9943 when appropriate.
9944 * output.h (Output_section::clear_is_relro): New function.
9945 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
9946 sections specially even when output_data_ is empty.
9947 (Output_segment::maximum_alignment): When first section is relro,
9948 only force alignment for PT_LOAD segments.
9949 * script.cc (script_data_segment_align): New function.
9950 (script_data_segment_relro_end): New function.
9951 * script-c.h (script_data_segment_align): Declare.
9952 (script_data_segment_relro_end): Declare.
9953 * script-sections.h (class Script_sections): Declare
9954 data_segment_align and data_segment_relro_end. Add fields
9955 segment_align_index_ and saw_relro_end_.
9956 * script-sections.cc (class Sections_element): Add set_is_relro
9957 virtual function. Add new bool* parameter to place_orphan_here.
9958 Add get_output_section virtual function.
9959 (class Output_section_definition): Add set_is_relro. Add new
9960 bool* parameter to place_orphan_here. Add get_output_section.
9961 Add is_relro_ field.
9962 (Output_section_definition::Output_section_definition): Initialize
9963 evaluated_address_, evaluated_load_address, evaluated_addralign_,
9964 and is_relro_ fields.
9965 (Output_section_definition::place_orphan_here): Add is_relro
9966 parameter.
9967 (Output_section_definition::set_section_addresses): Set relro for
9968 output section.
9969 (Output_section_definition::alternate_constraint): Likewise.
9970 (class Orphan_output_section): Add new bool* parameter to
9971 place_orphan_here. Add get_output_section.
9972 (Orphan_output_section::place_orphan_here): Add is_relro
9973 parameter.
9974 (Script_sections::Script_sections): Initialize
9975 data_segment_align_index_ and saw_relro_end_.
9976 (Script_sections::data_segment_align): New function.
9977 (Script_sections::data_segment_relro_end): New function.
9978 (Script_sections::place_orphan): Set or clear is_relro.
9979 (Script_sections::set_section_addresses): Force alignment of first
9980 TLS section.
9981 * yyscript.y (exp): Call script_data_segment_align and
9982 script_data_segment_relro_end.
9983 * testsuite/relro_script_test.t: New file.
9984 * testsuite/relro_test.cc (using_script): Declare.
9985 (t1, t2): Test using_script.
9986 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
9987 (relro_script_test_SOURCES): Define.
9988 (relro_script_test_DEPENDENCIES): Define.
9989 (relro_script_test_LDFLAGS): Define.
9990 (relro_script_test_LDADD): Define.
9991 (relro_script_test.so): New target.
9992 * testsuite/Makefile.in: Rebuild.
9993
f827c9a9
CC
99942008-08-06 Cary Coutant <ccoutant@google.com>
9995
9996 * archive.cc (Archive::total_archives, Archive::total_members)
9997 (Archive::total_members_loaded): New variables.
9998 (Archive::setup): Add parameter. Add option to preread
9999 archive symbols.
10000 (Archive::read_armap): Add counter.
10001 (Archive::get_file_and_offset): New function.
10002 (Archive::get_elf_object_for_member): New function.
10003 (Archive::read_all_symbols): New function.
10004 (Archive::read_symbols): New function.
10005 (Archive::add_symbols): Add counters.
10006 (Archive::include_all_members): Use armap to find members if it's
10007 already built.
10008 (Archive::include_member): Skip reading symbols if already read.
10009 Factored code into Archive::get_file_and_offset and
10010 Archive::get_elf_object_for_member. Changed call to
10011 Mapfile::report_include_archive_member.
10012 (Archive::print_stats): New function.
10013 * archive.h: Declare Object and Read_symbols_data classes.
10014 (Archive::Archive): Add initializers for new members.
10015 (Archive::setup): Add parameter.
10016 (Archive::print_stats): New function.
10017 (Archive::total_archives, Archive::total_members)
10018 (Archive::total_members_loaded): New variables.
10019 (Archive::get_file_and_offset): New function.
10020 (Archive::get_elf_object_for_member): New function.
10021 (Archive::read_all_symbols): New function.
10022 (Archive::read_symbols): New function.
10023 (Archive::Archive_member): New class.
10024 (Archive::members_): New member.
10025 (Archive::num_members_): New member.
10026 * main.cc: Include archive.h.
10027 (main): Call Archive::print_stats.
10028 * mapfile.cc (Mapfile::report_include_archive_member): Delete
10029 archive parameter; member_name is now the fully-decorated name.
10030 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
10031 * options.h: (General_options): Add --preread-archive-symbols option.
10032 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
10033 Archive::setup.
10034
de4c45bd
ILT
100352008-08-04 Ian Lance Taylor <iant@google.com>
10036
10037 * symtab.h (Symbol::use_plt_offset): New function.
10038 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
10039 * powerpc.cc (Relocate::relocate): Likewise.
10040 * sparc.cc (Relocate::relocate): Likewise.
10041 * x86_64.cc (Relocate::relocate): Likewise.
10042 * testsuite/weak_plt.sh: New test.
10043 * testsuite/weak_plt_main.cc: New test.
10044 * testsuite/weak_plt_shared.cc: New test.
10045 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
10046 (check_PROGRAMS): Add weak_plt.
10047 (check_DATA): Add weak_plt_shared.so.
10048 (weak_plt_main_pic.o, weak_plt): New targets.
10049 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
10050 * testsuite/Makefile.in: Rebuild.
10051
10052 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
10053 gcctestdir/ld.
10054 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
10055 * testsuite/Makefile.in: Rebuild.
10056
323ee3f4
AM
100572008-08-04 Alan Modra <amodra@bigpond.net.au>
10058
10059 * Makefile.am (POTFILES.in): Set LC_ALL=C.
10060 * Makefile.in: Regenerate.
10061 * po/POTFILES.in: Regenerate.
10062
7c07ecec
ILT
100632008-07-29 Ian Lance Taylor <iant@google.com>
10064
10065 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
10066 symbols before other symbols.
10067 * testsuite/script_test_2.cc (test_addr): Declare.
10068 (test_addr_alias): Declare.
10069 (main): Check that test_addr and test_addr_alias have the right
cd536b21 10070 values.
7c07ecec
ILT
10071 * testsuite/script_test_2.t: Define test_addr_alias and
10072 test_addr.
10073
5778530e
ILT
100742008-07-24 Ian Lance Taylor <iant@google.com>
10075
2a00e4fb
ILT
10076 PR 5990
10077 * descriptors.cc: New file.
10078 * descriptors.h: New file.
10079 * gold-threads.h (class Hold_optional_lock): New class.
10080 * fileread.cc: Include "descriptors.h".
10081 (File_read::~File_read): Release descriptor rather than closing
10082 it.
10083 (File_read::open) [file]: Call open_descriptor rather than open.
10084 Set is_descriptor_opened_.
10085 (File_read::open) [memory]: Assert that descriptor is not open.
10086 (File_read::reopen_descriptor): New function.
10087 (File_read::release): Release descriptor.
10088 (File_read::do_read): Make non-const. Reopen descriptor.
10089 (File_read::read): Make non-const.
10090 (File_read::make_view): Reopen descriptor.
10091 (File_read::do_readv): Likewise.
10092 * fileread.h (class File_read): Add is_descriptor_opened_ field.
10093 Update declarations.
10094 * layout.cc: Include "descriptors.h".
10095 (Layout::create_build_id): Use open_descriptor rather than open.
10096 * output.cc: Include "descriptors.h".
10097 (Output_file::open): Use open_descriptor rather than open.
10098 * archive.cc (Archive::const_iterator): Change Archive to be
10099 non-const.
10100 (Archive::begin, Archive::end): Make non-const.
10101 (Archive::count_members): Likewise.
10102 * archive.h (class Archive): Update declarations.
10103 * object.h (Object::read): Make non-const.
10104 * Makefile.am (CCFILES): Add descriptors.cc.
10105 (HFILES): Add descriptors.h.
10106 * Makefile.in: Rebuild.
10107
801647d1
ILT
10108 PR 6716
10109 * gold.h: Always include <clocale>. Add Solaris workarounds
10110 following code in binutils/sysdep.h.
10111
5edd166e
ILT
10112 PR 6048
10113 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
10114 this->eh_frame_hdr_ is NULL before using it.
10115
c89ad728
ILT
10116 * dynobj.cc (Versions::Versions): Update comment.
10117
aa86f06b
ILT
10118 * dynobj.cc (Versions::Versions): If there is an soname, use it as
10119 the base version name.
10120
5778530e
ILT
10121 * stringpool.cc (Stringpool_template::add_with_length): Set key to
10122 array size plus one.
10123 (Stringpool_template::set_string_offsets): Subtract one from key
10124 before using it as an array index.
10125 (Stringpool_template::get_offset_with_length): Likewise.
10126 (Stringpool_template::write_to_buffer): Likewise.
10127 * stringpool.h (Stringpool_template::get_offset_from_key):
10128 Likewise.
10129
057ead22
ILT
101302008-07-23 Ian Lance Taylor <iant@google.com>
10131
7f649c59
ILT
10132 PR 6658
10133 * object.h (Merged_symbol_value::value): Do our best to handle a
10134 negative addend.
10135
057ead22
ILT
10136 PR 6647
10137 * script.cc (Version_script_info::get_versions): Don't add empty
10138 version tag to return value.
10139 (Version_script_info::get_symbol_version_helper): Change return
10140 type to bool. Add pversion parameter. Change all callers.
10141 (script_register_vers_node): Don't require a non-NULL tag.
10142 * script.h (class Version_script_info): Update declarations.
10143 (Version_script_info::get_symbol_version): Change return type to
10144 bool. Add version parameter. Change all callers.
10145 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
10146 handling. Handle an empty version from a version script.
10147 (Symbol_table::define_special_symbol): Likewise.
10148 * testsuite/ver_test_10.script: New file.
10149 * testsuite/ver_test_10.sh: New file.
10150 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
10151 (check_DATA): Add ver_test_10.syms.
10152 (ver_test_10.syms, ver_test_10.so): New target.
10153 * testsuite/Makefile.in: Rebuild.
10154
58e54ac2
CD
101552008-07-23 Simon Baldwin <simonb@google.com>
10156
10157 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
10158 to zero for undefined symbols from dynamic libraries.
10159
95d14cd3
ILT
101602008-07-23 Ian Lance Taylor <iant@google.com>
10161
10162 * symtab.cc (Symbol_table::resolve): Remove version parameter.
10163 Change all callers.
10164 * symtab.h (class Symbol_table): Update declaration.
10165 * testsuite/ver_test_9.cc: New file.
10166 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
10167 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
10168 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
10169 (ver_test_9.so, ver_test_9.o): New targets.
10170 * testsuite/Makefile.in: Rebuild.
10171
92de84a6
ILT
101722008-07-22 Ian Lance Taylor <iant@google.com>
10173
34810851
ILT
10174 * options.h (class General_options): Define --check-sections.
10175 * layout.cc (Layout::set_segment_offsets): Handle
10176 --check-sections.
10177
af6156ef
ILT
10178 * options.h (class General_options): Define -n/--nmagic and
10179 -N/--omagic.
10180 * options.cc (General_options::finalize): For -n/--nmagic or
10181 -N/--omagic, set -static.
10182 * layout.cc (Layout::attach_allocated_section_to_segment): If
10183 -N/--omagic, don't put read-only and read-write sections in
10184 different segments.
10185 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
10186 finding a read-only segment.
10187 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
10188 don't set the minimum segment alignment to the common page size,
10189 and don't set the file offset to the address modulo the page size.
10190 * script-sections.cc (Script_sections::create_segments): If
10191 -n/--omagic, don't put read-only and read-write sections in
10192 different segments.
10193
92de84a6
ILT
10194 * cref.cc: New file.
10195 * cref.h: New file.
10196 * options.h (class General_options): Add --print-symbol-counts.
10197 * main.cc (main): Issue defined symbol report if requested.
10198 * archive.cc (Archive::interpret_header): Make into a const member
10199 function.
10200 (Archive::add_symbols): Call Input_objects::archive_start and
10201 archive_stop.
10202 (Archive::const_iterator): Define new class.
10203 (Archive::begin, Archive::end): New functions.
10204 (Archive::include_all_members): Rewrite to use iterator.
10205 (Archive::count_members): New function.
10206 * archive.h (class Archive): Update declarations.
10207 (Archive::filename): New function.
10208 * object.cc: Include "cref.h".
10209 (Sized_relobj::Sized_relobj): Initialize defined_count_.
10210 (Sized_relobj::do_get_global_symbol_counts): New function.
10211 (Input_objects::add_object): Add object to cross-referencer.
10212 (Input_objects::archive_start): New function.
10213 (Input_objects::archive_stop): New function.
10214 (Input_objects::print_symbol_counts): New function.
10215 * object.h: Declare Cref and Archive.
10216 (Object::get_global_symbol_counts): New function.
10217 (Object::do_get_global_symbol_counts): New pure virtual function.
10218 (class Sized_relobj): Add defined_count_ field. Update
10219 declarations.
10220 (class Input_objects): Add cref_ field. Update constructor.
10221 Update declarations.
10222 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
10223 defined_count_.
10224 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
10225 symbol counts.
10226 (Sized_dynobj::do_get_global_symbol_counts): New function.
10227 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
10228 defined_count_. Update declarations. Define Symbols typedef.
10229 * symtab.cc (Symbol_table::add_from_relobj): Add defined
10230 parameter. Change all callers.
10231 (Symbol_table::add_from_dynobj): Add sympointers and defined
10232 parameters. Change all callers.
10233 * symtab.h (class Symbol_table): Update declarations.
10234 * Makefile.am (CCFILES): Add cref.cc.
10235 (HFILES): Add cref.h.
10236 * Makefile.in: Rebuild.
10237
3f7c5e1d
CD
102382008-07-22 Simon Baldwin <simonb@google.com>
10239
10240 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
10241 to zero when writing undefined symbols.
10242
e0b64032
ILT
102432008-07-22 Ian Lance Taylor <iant@google.com>
10244
10245 * output.cc (Output_section::add_input_section): Don't try to
10246 merge empty merge sections.
10247
096b02cf
CS
102482008-07-21 Craig Silverstein <csilvers@google.com>
10249
10250 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
10251 Include symbol version in error message.
cd536b21 10252
1d1f116d
CD
102532008-07-20 Chris Demetriou <cgd@google.com>
10254
cd536b21 10255 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
10256 (RANDOM_SEED_CFLAGS): New substituted variable.
10257 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
10258 * configure: Rebuild.
10259 * Makefile.in: Likewise.
10260 * testsuite/Makefile.in: Likewise.
10261
a18f591e
ILT
102622008-07-18 Ian Lance Taylor <iant@google.com>
10263
10264 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
10265 where we see NAME/NULL and NAME/VERSION as separate symbols.
10266 * testsuite/ver_test_main.cc (main): Call t4.
10267 (t4, t4_2a): Define.
10268 * testsuite/ver_test_2.cc (t4_2): Define.
10269 * testsuite/ver_test_2.script: Put t4_2a in VER2.
10270 * testsuite/ver_test_4.cc (t4_2a): Define.
10271 * testsuite/ver_test_4.script: Put t4_2a in VER2.
10272 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
10273
c6e3f6ed
ILT
102742008-07-17 Ian Lance Taylor <iant@google.com>
10275
10276 * dynobj.cc (Versions::add_def): If we give an error about a
10277 missing version, go ahead and create the version anyhow.
10278
ef9beddf
ILT
102792008-07-10 Ian Lance Taylor <iant@google.com>
10280
10281 Handle output sections with more than 0x7fffffff bytes.
10282 * object.h (class Relobj): Change map_to_output_ to
10283 output_sections_, and just keep a section pointer. Change all
10284 uses. Move comdat group support to Sized_relobj.
10285 (Relobj::is_section_specially_mapped): Remove.
10286 (Relobj::output_section): Remove poff parameter. Change all
10287 callers.
10288 (Relobj::output_section_offset): New function.
10289 (Relobj::set_section_offset): Rewrite.
10290 (Relobj::map_to_output): Remove.
10291 (Relobj::output_sections): New function.
10292 (Relobj::do_output_section_offset): New pure virtual function.
10293 (Relobj::do_set_section_offset): Likewise.
10294 (class Sized_relobj): Add section_offsets_ field. Add comdat
10295 group support from Relobj. Update declarations.
10296 (Sized_relobj::get_output_section_offset): New function.
10297 (Sized_relobj::do_output_section_offset): New function.
10298 (Sized_relobj::do_set_section_offset): New function.
10299 * object.cc (Relobj::output_section_address): Remove.
10300 (Sized_relobj::Sized_relobj): Initialize new fields.
10301 (Sized_relobj::include_section_group): Cast find_kept_object to
10302 Sized_relobj.
10303 (Sized_relobj::include_linkonce_section): Likewise.
10304 (Sized_relobj::do_layout): Use separate arrays for output section
10305 and output offset.
10306 (Sized_relobj::do_count_local_symbols): Change map_to_output to
10307 output_sections.
10308 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
10309 output_sections and section_offsets.
10310 (Sized_relobj::write_local_symbols): Likewise.
10311 (map_to_kept_section): Compute output address directly.
10312 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
10313 output_sections and section_offsets.
10314 (Sized_relobj::write_sections): Likewise.
10315 (Sized_relobj::relocate_sections): Likewise.
10316 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
10317 * output.h (class Output_reloc): Update declarations. Change
10318 u2_.relobj to Sized_relobj*.
10319 (class Output_data_reloc): Change add functions to use
10320 Sized_relobj*.
10321 * output.cc (Output_reloc::Output_reloc): Change relobj to
10322 Sized_relobj*.
10323 (Output_reloc::local_section_offset): Change return type to
10324 Elf_Addr. Use get_output_section_offset.
10325 (Output_reloc::get_address): Likewise.
10326 (Output_section::is_input_address_mapped): Don't call
10327 is_section_specially_mapped.
10328 (Output_section::output_offset): Likewise.
10329 (Output_section::output_address): Likewise.
10330 (Output_section::starting_output_address): Likewise.
10331 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
10332 parameter to Sized_relobj*.
10333 (Copy_relocs::need_copy_reloc): Likewise.
10334 (Copy_relocs::save): Likewise.
10335 * copy-relocs.h (class Copy_relocs): Update declarations.
10336 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
10337 Sized_relobj*. Change relobj_ field to Sized_relobj*.
10338 * target-reloc.h (relocate_for_relocatable): Change
10339 offset_in_output_section type to Elf_Addr. Change code that uses
10340 it as well.
10341 * layout.cc (Layout::layout): Always set *off.
10342 * mapfile.cc (Mapfile::print_input_section): Use
10343 output_section_offset.
10344 * i386.cc (Target_i386::copy_reloc): Change object parameter to
10345 Sized_relobj*.
10346 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
10347 * sparc.cc (Target_sparc::copy_reloc): Likewise.
10348 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
10349
5cb66f97
ILT
103502008-07-03 Ian Lance Taylor <iant@google.com>
10351
10352 * layout.cc (Layout::include_section): Do not discard unrecognized
10353 SHT_STRTAB sections.
10354
afe47622
CS
103552008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
10356
10357 * script.cc (Lex::can_continue_name): Make '?' allowable in
10358 version-script names.
10359 * testsuite/version_script.map: Change glob pattern to use '?'
10360
5adf9721
ILT
103612008-06-30 Manish Singh <yosh@gimp.org>
10362
10363 PR 6585
10364 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
10365 Correct typo.
10366
e6fde208
ILT
103672008-06-30 Ian Lance Taylor <iant@google.com>
10368
10369 PR 6660
10370 PR 6682
10371 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
10372 versions]: Don't try to read the value in the contents, since we
10373 don't use it. Use the template endianness when writing.
10374
3f2e6a2d
CC
103752008-06-25 Cary Coutant <ccoutant@google.com>
10376
10377 * fileread.cc (File_read::make_view): Assert on zero-length view.
10378 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
10379 symbol table when there are no symbols to read.
10380
c43d3a48
CS
103812008-06-23 Craig Silverstein <csilvers@google.com>
10382
10383 * version.cc (version_string): Bump to 1.7
10384
5f494ea0
CS
103852008-06-18 Craig Silverstein <csilvers@google.com>
10386
10387 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
10388 constant 0xFFFF to type Valtype.
10389 (Powerpc_relocate_functions::rel16_ha): Likewise.
10390
c42e122e
ILT
103912008-06-17 Ian Lance Taylor <iant@google.com>
10392
f34787f8
ILT
10393 * output.h (Output_section::Input_section): Initialize p2align_ to
10394 zero for Output_section_data constructors.
10395 (Output_section::Input_section::addralign): If not an input
10396 section, return the alignment of the Output_section_data.
10397 * testsuite/copy_test.cc: New file.
10398 * testsuite/copy_test_1.cc: New file.
10399 * testsuite/copy_test_2.cc: New file.
10400 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
10401 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
10402 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
10403 (copy_test_1_pic.o, copy_test_1.so): New targets.
10404 (copy_test_2_pic.o, copy_test_2.so): New targets.
10405 * testsuite/Makefile.in: Rebuild.
10406
c42e122e
ILT
10407 * script-sections.cc (Script_sections::place_orphan): Initialize
10408 local variable exact.
10409
ce3ac18a
DE
104102008-06-13 David Edelsohn <edelsohn@gnu.org>
10411
10412 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
10413
42cacb20
DE
104142008-06-12 David Edelsohn <edelsohn@gnu.org>
10415 David S. Miller <davem@davemloft.net>
10416
10417 * powerpc.cc: New file.
10418 * Makefile.am (TARGETSOURCES): Add powerpc.cc
10419 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
10420 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
10421 * Makefile.in: Rebuild.
10422
7b308235
ILT
104232008-06-09 Ian Lance Taylor <iant@google.com>
10424
10425 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
10426 <exception>.
10427 (throwing, orig_terminate): New static variables.
10428 (terminate_handler): New static function.
10429 (t2): Set terminate handler.
10430
f0b886e3
ILT
104312008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
10432
10433 PR 6584
cd536b21 10434 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
10435 alignment.
10436
3e90f135
CC
104372008-05-30 Cary Coutant <ccoutant@google.com>
10438
10439 * archive.cc (Archive::include_all_members) Correct to step
10440 over symbol table and extended name table in thin archives.
10441
e09ad04a
ILT
104422008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
10443
10444 PR 6407
10445 * target-reloc.h (relocate_for_relocatable): Fix new_offset
10446 calculation.
10447
62b01cb5
ILT
104482008-05-28 Caleb Howe <cshowe@google.com>
10449
10450 * reduced_debug_output.cc: New file.
10451 * reduced_debug_output.h: New file.
92de84a6 10452 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
10453 * options.cc (General_options::finalize): Add strip_debug_non_line
10454 to the strip heirarchy.
10455 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
10456 fields.
10457 * layout.cc: Include "reduced_debug_output.h".
10458 (Layout::Layout): Initialize new fields.
10459 (line_only_debug_sections): New static array.
10460 (is_lines_only_debug_sections): New static inline function.
10461 (Layout::include_section): Handle --strip-debug-non-line.
10462 (Layout::make_output_section): If --strip-debug-non-line, build
10463 new output sections for .debug_abbrev and .debug_info.
10464 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
10465 gold. Warn about possible overflow.
10466 (read_signed_LEB_128): Likewise.
10467 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
10468 (read_signed_LEB_128): Declare.
10469 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
10470 (HFILES): Add reduced_debug_output.h.
10471 * Makefile.in: Rebuild.
10472
7d9e3d98
ILT
104732008-05-21 Ian Lance Taylor <iant@google.com>
10474
10475 * mapfile.cc: New file.
10476 * mapfile.h: New file.
10477 * options.h (class General_options): Add -M/--print-map and -Map.
10478 * options.cc (General_options::finalize): Make -M equivalent to
10479 -Map -.
10480 * main.cc: Include <cstdio> and "mapfile.h".
10481 (main): Open mapfile if requested.
10482 * gold.cc (class Middle_runner): Add mapfile_ field. Update
10483 constructor. Change caller.
10484 (queue_initial_tasks): Add mapfile parameter. Change caller.
10485 (queue_middle_tasks): Likewise.
10486 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
10487 declarations.
10488 * archive.cc: Include "mapfile.h".
10489 (Archive::add_symbols): Add mapfile parameter. Change all
10490 callers. Pass mapfile, symbol, and reason to include_member.
10491 (Archive::include_all_members): Add mapfile parameter. Change all
10492 callers.
10493 (Archive::include_member): Add mapfile, sym, and why parameters.
10494 Change all callers. Report inclusion to map file.
10495 * archive.h: Include "fileread.h".
10496 (class Archive): Update declarations.
10497 (Archive::file): New const method.
10498 (class Add_archive_symbols): Add mapfile_ field. Update
10499 constructor. Change all callers.
10500 * readsyms.h (class Read_symbols): Likewise.
10501 (class Finish_group): Likewise.
10502 (class Read_script): Likewise.
10503 * common.cc: Include "mapfile.h".
10504 (Symbol_table::allocate_commons): Add mapfile parameter. Change
10505 all callers.
10506 (Symbol_table::do_allocate_commons): Likewise.
10507 (Symbol_table::do_allocate_commons_list): Likewise. Report common
10508 symbol allocation to mapfile.
10509 * common.h (class Allocate_commons_task): Add mapfile_ field.
10510 Update constructor. Change all callers.
10511 * symtab.h (class Symbol_table): Update declarations.
10512 * layout.cc: Include "mapfile.h".
10513 (Layout_task_runner::run): Print information to mapfile.
10514 (Layout::create_gold_note): Change Output_data_fixed_space to
10515 Output_data_zero_fill.
10516 (Layout::create_build_id): Likewise.
10517 (Layout::print_to_mapfile): New function.
10518 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
10519 constructor. Change caller.
10520 (class Layout): Declare print_to_mapfile.
10521 * output.cc (Output_section::Input_section::print_to_mapfile): New
10522 function.
10523 (Output_section::add_input_section): If producing a map, always
10524 add to input_sections_ list.
10525 (Output_section::do_print_to_mapfile): New function.
10526 (Output_segment::print_sections_to_mapfile): New function.
10527 (Output_segment::print_section_list_to_mapfile): New function.
10528 * output.h: Include "mapfile.h".
10529 (Output_data::print_to_mapfile): New function.
10530 (Output_data::do_print_to_mapfile): New virtual function.
10531 (Output_segment_headers::do_print_to_mapfile): New function.
10532 (Output_file_header::do_print_to_mapfile): New function.
10533 (Output_data_const::do_print_to_mapfile): New function.
10534 (class Output_data_const_buffer): Add map_name_ field. Update
10535 constructor. Change all callers. Add do_print_to_mapfile
10536 function.
10537 (class Output_data_fixed_space): Likewise.
10538 (class Output_data_space): Likewise.
10539 (class Output_data_zero_fill): New class.
10540 (Output_data_strtab::do_print_to_mapfile): New function.
10541 (Output_data_reloc_base::do_print_to_mapfile): New function.
10542 (Output_relocatable_relocs::do_print_to_mapfile): New function.
10543 (Output_data_group::do_print_to_mapfile): New function.
10544 (Output_data_got::do_print_to_mapfile): New function.
10545 (Output_data_dynamic::do_print_to_mapfile): New function.
10546 (Output_symtab_xindex::do_print_to_mapfile): New function.
10547 (class Output_section): Declare do_print_to_mapflie. Declare
10548 print_to_mapfile in Input_section.
10549 (class Output_segment): Declare new functions.
10550 * object.h (Sized_relobj::symbol_count): New function.
10551 * script-sections.cc
10552 (Output_section_element_dot_assignment::set_section_addresses):
10553 Change Output_data_fixed_space to Output_data_zero_fill.
10554 (Output_data_expression::do_print_to_mapfile): New function.
10555 * script.cc (read_input_script): Add mapfile parameter. Change
10556 all callers.
10557 * script.h (read_input_script): Update declaration.
10558 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
10559 (Eh_frame::do_print_to_mapfile): New function.
10560 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
10561 (Output_merge_string::do_print_to_mapfile): New function.
10562 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
10563 function.
10564 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
10565 function.
10566 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
10567 function.
10568 * Makefile.am (CCFILES): Add mapfile.cc.
10569 (HFILES): Add mapfile.h.
10570 * Makefile.in: Rebuild.
10571
9f1d377b
ILT
105722008-05-19 Ian Lance Taylor <iant@google.com>
10573
10574 * options.h (class General_options): Add -z relro.
10575 * layout.cc (Layout::Layout): Initialize relro_segment_.
10576 (Layout::add_output_section_data): Return the output section.
10577 (Layout::make_output_section): Rcognize relro sections and mark
10578 them appropriately.
10579 (Layout::attach_allocated_section_to_segment): Put relro sections
10580 in a PT_GNU_RELRO segment.
10581 (Layout::create_initial_dynamic_sections): Mark the .dynamic
10582 section as relro.
10583 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
10584 PT_TLS segments.
10585 (Layout::linkonce_mapping): Map d.rel.ro.local to
10586 .data.rel.ro.local.
10587 (Layout::output_section_name): Us .data.rel.ro.local for any
10588 section which begins with that.
10589 * layout.h (class Layout): Update add_output_section_data
10590 declaration. Add relro_segment_ field.
10591 * output.cc (Output_section::Output_section): Initialize is_relro_
10592 and is_relro_local_ fields.
10593 (Output_segment::add_output_section): Group relro sections.
10594 (Output_segment::is_first_section_relro): New function.
10595 (Output_segment::maximum_alignment): If there is a relro section,
10596 align the segment to the common page size.
10597 (Output_segment::set_section_addresses): Track whether we are
10598 looking at relro sections. If the last section is a relro
10599 section, align to the common page size.
10600 (Output_segment::set_section_list_addresses): Add in_relro
10601 parameter. Change all callers. Align to the page size when
10602 moving from relro to non-relro section.
10603 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
10604 segment.
10605 * output.h (class Output_section): Add is_relro_ and
10606 is_relro_local_ fields.
10607 (Output_section::is_relro): New function.
10608 (Output_section::set_is_relro): New function.
10609 (Output_section::is_relro_local): New function.
10610 (Output_section::set_is_relro_local): New function.
10611 (class Output_segment): Update declarations.
10612 * i386.cc (Target_i386::got_section): Mark .got section as relro.
10613 * sparc.cc (Target_sparc::got_section): Likewise.
10614 * x86_64.cc (Target_x86_64::got_section): Likewise.
10615 * testsuite/relro_test_main.cc: New file.
10616 * testsuite/relro_test.cc: New file.
10617 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
10618 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
10619 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
10620 (relro_test.so, relro_test_pic.o): New targets.
10621 * testsuite/Makefile.in: Rebuild.
10622
a984ee1d
ILT
106232008-05-16 Ian Lance Taylor <iant@google.com>
10624
01676dcd
ILT
10625 * output.cc (Output_segment::add_output_section): Remove front
10626 parameter.
10627 * output.h (class Output_segment): Remove
10628 add_initial_output_section and overloaded add_output_section.
10629 Update declaration of remaining add_output_section.
10630 * layout.cc (Layout::create_interp): Call add_output_section
10631 rather than add_initial_output_section.
10632 (Layout::finish_dynamic_section): Likewise.
10633
497897f9
ILT
10634 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
10635 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
10636 know the dynamic type.
10637 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
10638 field. Initialize it in constructor.
10639 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
10640 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
10641 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
10642 reloc.
10643
a984ee1d
ILT
10644 * output.cc (Output_reloc::get_address): Change return type to
10645 Elf_Addr.
10646 * output.h (class Output_reloc): Update get_address declaration.
10647 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
10648 for section addresses.
10649
55ba0940
ILT
106502008-05-09 Ian Lance Taylor <iant@google.com>
10651
10652 PR 6493
10653 * gold.cc (gold_nomem): Use return value of write.
10654
75517b77
ILT
106552008-05-08 Ian Lance Taylor <iant@google.com>
10656
10657 * symtab.c (Symbol::init_base_output_data): Add version
10658 parameter. Change all callers.
10659 (Symbol::init_base_output_segment): Likewise.
10660 (Symbol::init_base_constant): Likewise.
10661 (Symbol::init_base_undefined): Likewise.
10662 (Sized_symbol::init_output_data): Likewise.
10663 (Sized_symbol::init_output_segment): Likewise.
10664 (Sized_symbol::init_constant): Likewise.
10665 (Sized_symbol::init_undefined): Likewise.
10666 (Symbol_table::do_define_in_output_data): If the new symbol has a
10667 version, mark it as the default.
10668 (Symbol_table::do_define_in_output_segment): Likewise.
10669 (Symbol_table::do_define_as_constant): Likewise.
10670 * symtab.h (class Symbol): Update declarations.
10671 (class Sized_symbol): Likewise.
10672 * resolve.cc (Symbol::override_version): New function.
c42e122e 10673 (Symbol::override_base): Call override_version.
75517b77
ILT
10674 (Symbol::override_base_with_special): Likewise.
10675 * testsuite/ver_script_8.script: New file.
10676 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
10677 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
10678 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
10679 (ver_test_8_1.so, ver_test_8_2.so): New targets.
10680
f1f70eae
ILT
106812008-05-06 Ian Lance Taylor <iant@google.com>
10682
f3e9c5c5
ILT
10683 PR 6049
10684 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
10685 functions.
10686 (class General_options): Remove existing --undefined, and add
10687 --no-undefined instead. Add new --undefined as synonym for -u.
10688 * archive.cc (Archive::add_symbols): Check whether symbol was
10689 named with -u.
10690 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
10691 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
10692 all uses. Add IS_UNDEFINED. Update declarations to split
10693 different versions of init_base. Declare init_base_undefined.
10694 (Symbol::is_defined): Handle IS_UNDEFINED.
10695 (Symbol::is_undefined): Likewise.
10696 (Symbol::is_weak_undefined): Call is_undefined.
10697 (Symbol::is_absolute): Handle IS_CONSTANT.
10698 (class Sized_symbol): Update declarations to split different
10699 versions of init. Declare init_undefined.
10700 (class Symbol_table): Declare new functions.
10701 * symtab.cc (Symbol::init_base_object): Rename from init_base.
10702 Change all callers.
10703 (Symbol::init_base_output_data): Likewise.
10704 (Symbol::init_base_output_segment): Likewise.
10705 (Symbol::init_base_constant): Likewise.
10706 (Symbol::init_base_undefined): New function.
10707 (Sized_symbol::init_object): Rename from init. Change all
10708 callers.
10709 (Sized_symbol::init_output_data): Likewise.
10710 (Sized_symbol::init_output_segment): Likewise.
10711 (Sized_symbol::init_constant): Likewise.
10712 (Sized_symbol::init_undefined): New function.
10713 (Symbol_table::add_undefined_symbols_from_command_line): New
10714 function.
10715 (Symbol_table::do_add_undefined_symbols_from_command_line): New
10716 function.
10717 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
10718 (Symbol::output_section): Likewise.
10719 (Symbol::set_output_section): Likewise.
10720 (Symbol_table::sized_finalize_symbol): Likewise.
10721 (Symbol_table::sized_write_globals): Likewise.
10722 * resolve.cc (Symbol_table::should_override): Likewise.
10723 (Symbol::override_base_with_special): Likewise.
10724
8bdcdf2c
ILT
10725 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
10726 symbol, change it to have default visibility.
10727 * testsuite/protected_1.cc: New file.
10728 * testsuite/protected_2.cc: New file.
10729 * testsuite/protected_3.cc: New file.
10730 * testsuite/protected_main_1.cc: New file.
10731 * testsuite/protected_main_2.cc: New file.
10732 * testsuite/protected_main_3.cc: New file.
10733 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
10734 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
10735 (protected_1_LDFLAGS, protected_1_LDADD): Define.
10736 (protected_1.so): New target.
10737 (protected_1_pic.o, protected_2_pic.o): New targets.
10738 (protected_3_pic.o): New target.
10739 (check_PROGRAMS): Add protected_2.
10740 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
10741 (protected_2_LDFLAGS, protected_2_LDADD): Define.
10742 * testsuite/Makefile.in: Rebuild.
10743
2b706932
ILT
10744 * options.h (DEFINE_var): Add set_user_set_##varname__.
10745 (DEFINE_bool_alias): New macro.
10746 (class General_options): Define -Bstatic using DEFINE_bool_alias
10747 rather than DEFINE_special. Add --undefined as an alias for -z
10748 defs.
10749 * options.cc (General_options::parse_Bstatic): Remove.
10750
d82a5bcc
ILT
10751 * options.h (class General_options): Add --fatal-warnings.
10752 * main.cc (main): Implement --fatal-warnings.
10753 * errors.h (Errors::warning_count): New function.
10754
f1f70eae
ILT
10755 * options.h (class General_options): Add -Bsymbolic-functions.
10756 * symtab.h (Symbol::is_preemptible): Check for
10757 -Bsymbolic-functions.
10758
8825ac63
ILT
107592008-05-05 Ian Lance Taylor <iant@google.com>
10760
d98bc257
ILT
10761 * options.h (DEFINE_bool): For DASH_Z, create the negative option
10762 as noVARNAME rather than no-VARNAME.
10763 (class General_options): Add option -z combreloc.
10764 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
10765 get_address.
10766 (Output_reloc::sort_before) [SHT_REL]: New function.
10767 (Output_reloc::sort_before) [SHT_RELA]: New function.
10768 (class Output_data_reloc_base): Add sort_relocs_ field. Define
10769 Sort_relocs_comparison.
10770 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
10771 parameter. Change all callers.
10772 (Output_data_reloc::Output_data_reloc) [both versions]: Add
10773 sort_relocs parameter. Change all callers.
10774 * output.cc (Output_reloc::get_address): New function, broken out
10775 of write_rel.
10776 (Output_reloc::write_rel): Call it.
10777 (Output_reloc::compare): New function.
10778 (Output_data_reloc_base::do_write): Optionally sort relocs.
10779
60b2b4e7
ILT
10780 * configure.ac: If targ_extra_obj is set, link it in.
10781 * configure.tgt: Initialize all variables.
10782 (x86_64*): Set targ_extra_obj and targ_extra_size.
10783 * configure: Rebuild.
10784
8825ac63
ILT
10785 * object.cc (Sized_relobj::include_section_group): Adjust section
10786 indexes read from group data. Build vector to pass to
10787 layout_group.
10788 * layout.cc (Layout::layout_group): Add flags and shndxes
10789 parameters. Remove contents parameter. Change caller. Update
10790 explicit instantiations.
10791 * layout.h (class Layout): Update layout_group declaration.
10792 * output.cc (Output_data_group::Output_data_group): Add flags and
10793 input_shndxes parameters. Remove contents parameter. Change
10794 caller.
10795 (Output_data_group::do_write): Change input_sections_ to
10796 input_shndxes_.
10797 * output.h (class Output_data_group): Update constructor
10798 declaration. Rename input_sections_ to input_shndxes_.
10799 * testsuite/many_sections_test.cc: Add template.
10800
e94cf127
CC
108012008-04-30 Cary Coutant <ccoutant@google.com>
10802
4418b2d5
CC
10803 * target-reloc.h (relocate_section): Fix dead-pointer bug.
10804
e94cf127
CC
10805 * layout.cc (Layout::include_section): Refactored check for debug
10806 info section.
10807 (Layout::add_comdat): Add new parameters. Change type
10808 of signature parameter. Add object and shndx to signatures table.
10809 (Layout::find_kept_object): New function.
10810 * layout.h: Include <cstring>.
10811 (Layout::is_debug_info_section): New function.
10812 (Layout::add_comdat): Add new parameters.
10813 (Layout::find_kept_object): New function.
10814 (Layout::Kept_section): New struct.
10815 (Layout::Signatures): Change type of map range.
10816 * object.cc (Relobj::output_section_address): New function.
10817 (Sized_relobj::include_section_group): Add new parameters. Change
10818 calls to Layout::add_comdat. Change to build table of kept comdat
10819 groups and table mapping discarded sections to kept sections.
10820 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
10821 (Sized_relobj::do_layout): Change calls to include_section_group and
10822 include_linkonce_section.
10823 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
10824 value to zero when section is discarded.
10825 (Sized_relobj::map_to_kept_section): New function.
10826 * object.h (Relobj::output_section_address): New function.
10827 (Relobj::Comdat_group): New type.
10828 (Relobj::find_comdat_group): New function.
10829 (Relobj::Comdat_group_table): New type.
10830 (Relobj::Kept_comdat_section): New type.
10831 (Relobj::Kept_comdat_section_table): New type.
10832 (Relobj::add_comdat_group): New function.
10833 (Relobj::set_kept_comdat_section): New function.
10834 (Relobj::get_kept_comdat_section): New function.
10835 (Relobj::comdat_groups_): New field.
10836 (Relobj::kept_comdat_sections_): New field.
10837 (Symbol_value::input_value): Update comment.
10838 (Sized_relobj::map_to_kept_section) New function.
10839 (Sized_relobj::include_linkonce_section): Add new parameter.
10840 * target-reloc.h (Comdat_behavior): New type.
10841 (get_comdat_behavior): New function.
10842 (relocate_section): Add code to map a discarded section to the
10843 corresponding kept section when applying a relocation.
10844
e4e5049b
CS
108452008-04-30 Craig Silverstein <csilvers@google.com>
10846
10847 * dwarf_reader.cc (next_generation_count): New static var.
10848 (Addr2line_cache_entry): New struct.
10849 (addr2line_cache): New static var.
10850 (Dwarf_line_info::one_addr2line): Added caching.
10851 (Dwarf_line_info::clear_addr2line_cache): New function.
10852 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
10853 cache-size parameter.
10854 (Dwarf_line_info::one_addr2line_cache): New function.
10855 * symtab.cc (Symbol_table::detect_odr_violations): Pass
10856 new cache-size argument to one_addr2line(), and clear cache.
10857
d09e9154
CC
108582008-04-28 Cary Coutant <ccoutant@google.com>
10859
10860 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
10861 R_386_PC8 relocations.
10862
7ef73768
ILT
108632008-04-23 Ian Lance Taylor <iant@google.com>
10864
55438702
ILT
10865 * object.cc (Sized_relobj::include_section_group): Check for
10866 invalid section group.
10867
c165fb93
ILT
10868 * object.cc (make_elf_object): Correct test for 64-bit ELF file
10869 header size.
10870
7ef73768
ILT
10871 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
10872 than read for file header.
10873 * archive.cc (Archive::include_member): Likewise.
10874
6194aaab
L
108752008-04-23 Paolo Bonzini <bonzini@gnu.org>
10876
10877 * aclocal.m4: Regenerate.
10878 * configure: Regenerate.
10879
d491d34e
ILT
108802008-04-19 Ian Lance Taylor <iant@google.com>
10881
5ea2bac6
ILT
10882 * version.cc (version_string): Bump to 1.6.
10883
7bc3e21a
ILT
10884 * testsuite/Makefile.am (many_sections_r_test): New target.
10885 (many_sections_r_test_SOURCES): Remove.
10886 (many_sections_r_test_DEPENDENCIES): Remove.
10887 (many_sections_r_test_LDFLAGS): Remove.
10888 (many_sections_r_test_LDADD): Remove.
10889
7fcd3aa9
ILT
10890 * object.cc (Sized_relobj::do_add_symbols): Always pass
10891 local_symbol_count_ to add_from_relobj.
10892
4c94d6ae
ILT
10893 * testsuite/Makefile.am (many_sections_check.h): Only check one in
10894 every thousand variables.
10895 * testsuite/Makefile.in: Rebuild.
10896
d491d34e
ILT
10897 * object.cc (Xindex::initialize_symtab_xindex): New function.
10898 (Xindex::read_symtab_xindex): New function.
10899 (Xindex::sym_xindex_to_shndx): New function.
10900 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
10901 available.
10902 (Sized_relobj::do_initialize_xindex): New function.
10903 (Sized_relobj::do_read_symbols): Adjust section links.
10904 (Sized_relobj::symbol_section_and_value): Add is_ordinary
10905 parameter. Change all callers.
10906 (Sized_relobj::include_section_group): Adjust section links and
10907 symbol section indexes.
10908 (Sized_relobj::do_layout): Adjust section links.
10909 (Sized_relobj::do_count_local_symbols): Adjust section links and
10910 symbol section indexes.
10911 (Sized_relobj::do_finalize_local_symbols): Distinguish between
10912 ordinary and special symbols.
10913 (Sized_relobj::write_local_symbols): Add symtab_xindex and
10914 dynsym_xindex parameters. Change all callers. Adjust section
10915 links. Use SHN_XINDEX when needed.
10916 (Sized_relobj::get_symbol_location_info): Adjust section links.
10917 Don't get fooled by special symbols.
10918 * object.h (class Xindex): Define.
10919 (class Object): Add xindex_ parameter. Declare virtual functoin
10920 do_initialize_xindex.
10921 (Object::adjust_sym_shndx): New function.
10922 (Object::set_xindex): New protected function.
10923 (class Symbol_value): Add is_ordinary_shndx_ field.
10924 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
10925 (Symbol_value::value): Assert ordinary section.
10926 (Symbol_value::initialize_input_to_output_map): Likewise.
10927 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
10928 Change all callers.
10929 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
10930 all callers.
10931 (class Sized_relobj): Update declarations.
10932 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
10933 parameter. Change all callers.
10934 (Sized_relobj::adjust_shndx): New function.
10935 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
10936 field.
10937 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
10938 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
10939 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
10940 (Sized_dynobj::read_dynsym_section): Adjust section links.
10941 (Sized_dynobj::read_dynamic): Likewise.
10942 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
10943 section links.
10944 (Sized_dynobj::do_initialize_xindex): New function.
10945 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
10946 do_initialize_xindex.
10947 (Sized_dynobj::adjust_shndx): New function.
10948 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
10949 dynsym_xindex_ fields.
10950 (Layout::finalize): Add a call to set_section_indexes before
10951 creating the symtab sections.
10952 (Layout::set_section_indexes): Don't do anything if the section
10953 already has a section index.
10954 (Layout::create_symtab_sections): Add shnum parameter. Change
10955 caller. Create .symtab_shndx section if needed.
10956 (Layout::create_shdrs): Add shstrtab_section parameter. Change
10957 caller.
10958 (Layout::allocated_output_section_count): New function.
10959 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
10960 needed.
10961 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
10962 fields. Update declarations.
10963 (Layout::symtab_xindex): New function.
10964 (Layout::dynsym_xindex): New function.
10965 (class Write_symbols_task): Add layout_ field.
10966 (Write_symbols_task::Write_symbols_task): Add layout parameter.
10967 Change caller.
10968 * output.cc (Output_section_headers::Output_section_headers): Add
10969 shstrtab_section parameter. Change all callers.
10970 (Output_section_headers::do_sized_write): Store overflow values
10971 for section count and section string table section index in
10972 section header zero.
10973 (Output_file_header::do_sized_write): Check for overflow of
10974 section count and section string table section index.
10975 (Output_symtab_xindex::do_write): New function.
10976 (Output_symtab_xindex::endian_do_write): New function.
10977 * output.h (class Output_section_headers): Add shstrtab_section_.
10978 Update declarations.
10979 (class Output_symtab_xindex): Define.
10980 (Output_section::has_out_shndx): New function.
10981 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
10982 field.
10983 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
10984 Change all callers.
10985 (Sized_symbol::init): Likewise.
10986 (Symbol::output_section): Check for ordinary symbol.
10987 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
10988 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
10989 callers.
10990 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
10991 Change all callers. Simplify handling of symbols from sections
10992 not included in the link.
10993 (Symbol_table::add_from_dynobj): Handle ordinary symbol
10994 distinction.
10995 (Weak_alias_sorter::operator()): Assert that symbols are
10996 ordinary.
10997 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
10998 distinction.
10999 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
11000 parameters. Change all callers.
11001 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
11002 symbol distinction. Use SHN_XINDEX when needed.
11003 (Symbol_table::write_section_symbol): Add symtab_xindex
11004 parameter. Change all callers.
11005 (Symbol_table::sized_write_section_symbol): Likewise. Use
11006 SHN_XINDEX when needed.
11007 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
11008 declarations.
11009 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
11010 (Symbol::is_defined): Check is_ordinary.
11011 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
11012 (Symbol::is_absolute, Symbol::is_common): Likewise.
11013 (class Sized_symbol): Update declarations.
11014 (class Symbol_table): Update declarations.
11015 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
11016 parameters. Change all callers.
11017 (Sized_symbol::override): Likewise.
11018 (Symbol_table::override): Likewise.
11019 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
11020 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
11021 is_ordinary, and orig_st_shndx parameters. Change all callers.
11022 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
11023 to be in an ordinary section.
11024 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
11025 object and is_ordinary parameters. Change all callers.
11026 (Sized_dwarf_line_info::read_relocs): Add object parameter.
11027 Change all callers. Don't add undefined or non-ordinary symbols
11028 to reloc_map_.
11029 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
11030 Change all callers.
11031 * dwarf_reader.h (class Sized_dwarf_line_info): Update
11032 declarations.
11033 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
11034 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
11035 (Sized_relobj::relocate_sections): Likewise.
11036 * target-reloc.h (scan_relocs): Adjust section symbol index.
11037 (scan_relocatable_relocs): Likewise.
11038 * i386.cc (Scan::local): Check for ordinary symbols.
11039 * sparc.cc (Scan::local): Likewise.
11040 * x86_64.cc (Scan::local): Likewise.
11041 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
11042 to symbol_section_and_value.
11043 * testsuite/many_sections_test.cc: New file.
11044 * testsuite/Makefile.am (BUILT_SOURCES): Define.
11045 (check_PROGRAMS): Add many_sections_test.
11046 (many_sections_test_SOURCES): Define.
11047 (many_sections_test_DEPENDENCIES): Define.
11048 (many_sections_test_LDFLAGS): Define.
11049 (BUILT_SOURCES): Add many_sections_define.h.
11050 (many_sections_define.h): New target.
11051 (BUILT_SOURCES): Add many_sections_check.h.
11052 (many_sections_check.h): New target.
11053 (check_PROGRAMS): Add many_sections_r_test.
11054 (many_sections_r_test_SOURCES): Define.
11055 (many_sections_r_test_DEPENDENCIES): Define.
11056 (many_sections_r_test_LDFLAGS): Define.
11057 (many_sections_r_test_LDADD): Define.
11058 (many_sections_r_test.o): New target.
11059 * testsuite/Makefile.in: Rebuild.
11060
c5818ff1
CC
110612008-04-17 Cary Coutant <ccoutant@google.com>
11062
11063 * errors.cc (Errors::info): New function.
11064 (gold_info): New function.
11065 * errors.h (Errors::info): New function.
11066 * gold.h (gold_info): New function.
11067 * object.cc (Input_objects::add_object): Print trace output.
11068 * options.cc (options::parse_set): New function.
11069 (General_options::parse_wrap): Deleted.
11070 (General_options::General_options): Deleted initializer.
11071 * options.h (options::String_set): New typedef.
11072 (options::parse_set): New function.
11073 (DEFINE_set): New macro.
11074 (General_options::wrap): Changed to use DEFINE_set. Changed
11075 callers of any_wrap_symbols and is_wrap_symbol.
11076 (General_options::trace, General_options::trace_symbol):
11077 New options.
11078 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
11079 (General_options::wrap_symbols_): Deleted.
11080 * symtab.cc (Symbol_table::add_from_object): Print trace output.
11081
b5be4a7c
DM
110822008-04-17 David S. Miller <davem@davemloft.net>
11083
11084 * options.cc (General_options::parse_V): New function.
11085 * options.h: Add entries for -V and -Qy.
11086
155a0dd7
ILT
110872008-04-17 Ian Lance Taylor <iant@google.com>
11088
11089 * common.cc (Symbol_table::allocate_commons): Remove options
11090 parameter. Change caller.
11091 (Symbol_table::do_allocate_commons): Remove options parameter.
11092 Change caller. Just call do_allocate_commons_list twice.
11093 (Symbol_table::do_allocate_commons_list): New function, broken out
11094 of do_allocate_commons.
11095 * common.h (class Allocate_commons_task): Remove options_ field.
11096 Update constructor.
11097 * symtab.cc (Symbol_table::Symbol_table): Initialize
11098 tls_commons_.
11099 (Symbol_table::add_from_object): Put TLS common symbols on
11100 tls_commons_ list.
11101 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
11102 which are IN_OUTPUT_DATA.
11103 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
11104 allocate_commons and do_allocate_commons declarations. Declare
11105 do_allocate_commons_list.
11106 * gold.cc (queue_middle_tasks): Update creation of
11107 Allocate_commons_task to not pass options.
11108 * testsuite/Makefile.am (INCLUDES): Add -I.. .
11109 (TLS_TEST_C_FLAGS): New variable.
11110 (tls_test_c_pic.o): New target.
11111 (tls_test_shared.so): Link in tls_test_c_pic.o.
11112 (tls_test_c_pic_ie.o): New target.
11113 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
11114 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
11115 (tls_test_c.o): New target.
11116 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
11117 (tls_pic_test_LDADD): Likewise.
11118 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
11119 (tls_shared_gd_to_ie_test_LDADD): Likewise.
11120 (tls_test_c_gnu2.o): New target.
11121 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
11122 tls_test_c_gnu2.o.
11123 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
11124 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
11125 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
11126 * testsuite/tls_test.cc: Include "config.h".
11127 (t_last): Call t11_last.
11128 * testsuite/tls_test.h (t11, t11_last): Declare.
11129 * testsuite/tls_test_c.c: New file.
11130 * testsuite/tls_test_main.cc (thread_routine): Call t11.
11131 * configure.ac: Check for OpenMP support.
11132 * configure, config.in, Makefile.in: Rebuild.
11133 * testsuite/Makefile.in: Rebuild.
11134
edfbb029
CC
111352008-04-16 Cary Coutant <ccoutant@google.com>
11136
11137 * i386.cc (Target_i386::define_tls_base_symbol): New function.
11138 (Target_i386::tls_base_symbol_defined_): New field.
11139 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
11140 (Target_i386::Scan::global): Likewise.
11141 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
11142 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
11143 (Target_x86_64::tls_base_symbol_defined_): New field.
11144 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
11145 (Target_x86_64::Scan::global): Likewise.
11146
f3c69fca
CC
111472008-04-16 Cary Coutant <ccoutant@google.com>
11148
11149 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
11150 (Symbol::needs_plt_entry): Allow weak undefined symbols.
11151 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
11152 building shared libraries.
11153 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
11154 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
11155 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
11156 * testsuite/Makefile.in: Rebuild.
11157 * testsuite/weak_undef.h: New file.
11158 * testsuite/weak_undef_file1.cc: Add extra test cases.
11159 * testsuite/weak_undef_file2.cc: Likewise.
11160 * testsuite/weak_undef_test.cc: Likewise.
11161
7c414435
DM
111622008-04-16 David S. Miller <davem@davemloft.net>
11163
32b769e1
DM
11164 * sparc.cc (Target_sparc::Scan): Change from struct to class.
11165 Add issued_non_pic_error_ field. Declare check_non_pic.
11166 (Target_sparc::Scan::check_non_pic): New function.
11167 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
11168 (Target_sparc::Scan::global): Likewise.
11169
11936fb1
DM
11170 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
11171 * configure: Rebuild.
11172
7c414435
DM
11173 * options.h (DEFINE_enable): New macro.
11174 (new_dtags): New enable option.
11175 (initfirst, interpose, loadfltr, nodefaultlib,
11176 nodelete, nodlopen, nodump): New -z options.
11177 * layout.cc (Layout:finish_dynamic_section): If new
11178 dtags enabled, emit DT_RUNPATH. Also, emit a
11179 DT_FLAGS_1 containing any specified -z flags.
11180
85c7bf8b
ILT
111812008-04-16 Ian Lance Taylor <iant@google.com>
11182
12c0daef
ILT
11183 * copy-relocs.cc: New file.
11184 * copy-relocs.h: New file.
11185 * reloc.cc: Remove Copy_relocs code.
11186 * reloc.h: Likewise.
11187 * reloc-types.h (struct Reloc_types) [both versions]: Add
11188 get_reloc_addend_noerror.
11189 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
11190 variants of add_global which take an addend which must be zero.
11191 * i386.cc: Include "copy-relocs.h".
11192 (class Target_i386): Change type of copy_relocs_ to variable,
11193 update initializer.
11194 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
11195 Change all callers.
11196 (Target_i386::do_finalize_sections): Change handling of
11197 copy_relocs_.
11198 * sparc.cc: Include "copy-relocs.h".
11199 (class Target_sparc): Change type of copy_relocs_ to variable,
11200 update initializer.
11201 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
11202 Change all callers.
11203 (Target_sparc::do_finalize_sections): Change handling of
11204 copy_relocs_.
11205 * x86_64.cc: Include "copy-relocs.h".
11206 (class Target_x86_64): Change type of copy_relocs_ to variable,
11207 update initializer.
11208 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
11209 class. Change all callers.
11210 (Target_x86_64::do_finalize_sections): Change handling of
11211 copy_relocs_.
11212 * Makefile.am (CCFILES): Add copy-relocs.cc.
11213 (HFILES): Add copy-relocs.h.
11214
4f4995b6
ILT
11215 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
11216
85c7bf8b
ILT
11217 * testsuite/script_test_4.sh: Permit leading zeroes.
11218
4f2a9edd
ILT
112192008-04-15 Ian Lance Taylor <iant@google.com>
11220
e6188289
ILT
11221 * script-sections.cc (Script_sections::create_segments): Use
11222 header_size_adjustment even when there is enough room for the
11223 headers.
11224 * testsuite/script_test_4.sh: New file.
11225 * testsuite/script_test_4.t: New file.
11226 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
11227 (check_DATA): Add script_test_4.stdout.
11228 (MOSTLYCLEANFILES): Likewise.
11229 (script_test_4): New target.
11230 (script_test_4.stdout): New target.
11231 * testsuite/Makefile.in: Rebuild.
11232
4f2a9edd
ILT
11233 * sparc.cc: Add definitions for Output_data_plt_sparc class
11234 constants.
11235
f5314dd5
DM
112362008-04-14 David S. Miller <davem@davemloft.net>
11237
11238 * sparc.cc: New file.
11239 * Makefile.am (TARGETSOURCES): Add sparc.cc
11240 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
11241 * configure.tgt: Document targ_extra_size and
11242 targ_extra_big_endian. Add entries for sparc-* and
11243 sparc64-*.
11244 * configure.ac: Handle targ_extra_size and
11245 targ_extra_big_endian.
11246 * Makefile.in: Rebuild.
11247 * configure: Likewise.
11248 * po/POTFILES.in: Likewise.
11249 * po/gold.pot: Likewise.
11250
154e0e9a
ILT
112512008-04-14 Ian Lance Taylor <iant@google.com>
11252
11253 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
11254 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
11255 in the name/type/flags to section mapping. Don't call
11256 allocate_output_section.
11257 (Layout::choose_output_section): Change parameter from adjust_name
11258 to is_input_section. Don't permit input sections after sections
11259 are attached to segments. Don't call allocate_output_section.
11260 (Layout::layout_eh_frame): Call update_flags_for_input_section,
11261 not write_enable_output_section.
11262 (Layout::make_output_section): Don't push to
11263 unattached_section_list_ nor call attach_to_segment. Call
11264 attach_section_to_segment if sections are attached.
11265 (Layout::attach_sections_to_segments): New function.
11266 (Layout::attach_section_to_segment): New function.
11267 (Layout::attach_allocated_section_to_segment): Rename from
11268 attach_to_segment. Remove flags parameter.
11269 (Layout::allocate_output_section): Remove function.
11270 (Layout::write_enable_output_section): Remove function.
11271 * layout.h (class Layout): Update for above changes. Add new
11272 field sections_are_attached_.
11273 * output.h (Output_section::update_flags_for_input_section): New
11274 function.
11275 * output.cc (Output_section::add_input_section): Call
11276 update_flags_for_input_section.
11277 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
11278
009a67a2
CC
112792008-04-11 Cary Coutant <ccoutant@google.com>
11280
11281 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
11282 thought unnecessary.
11283 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
11284
759b1a24
ILT
112852008-04-11 Ian Lance Taylor <iant@google.com>
11286
11287 * output.h (class Output_section_data): Remove inline definition
11288 of set_addralign.
11289 * output.cc (Output_section_data::set_addralign): New function.
11290
c2b45e22
CC
112912008-04-11 Cary Coutant <ccoutant@google.com>
11292
11293 Add support for TLS descriptors for i386 and x86_64.
11294 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
11295 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
11296 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
11297 GOT_TYPE_TLS_DESC.
11298 (Target_i386::got_mod_index_entry): Remove unnecessary code.
11299 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
11300 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
11301 relocations.
11302 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
11303 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
11304 Fix problem with initial-exec relocations.
11305 (Target_i386::Relocate::relocate_tls): Likewise.
11306 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
11307 relaxation.
11308 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
11309 support for section-plus-offset dynamic table entries.
11310 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
11311 (Output_data_dynamic::Dynamic_entry): Add support for
11312 section-plus-offset dynamic table entries.
11313 (Output_data_dynamic::Classification): Likewise.
11314 (Output_data_dynamic::classification_): Renamed offset_.
11315 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
11316 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
11317 (Target_x86_64::make_plt_section): New function.
11318 (Target_x86_64::reserve_tlsdesc_entries): New function.
11319 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
11320 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
11321 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
11322 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
11323 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
11324 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
11325 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
11326 add extra PLT entry for TLS descriptors.
11327 (Output_data_plt_x86_64::got_): New field.
11328 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
11329 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
11330 fields.
11331 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
11332 descriptors.
11333 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
11334 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
11335 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
11336 R_386_TLS_DESC_CALL relocations.
11337 (Target_x86_64::Scan::global): Likewise.
11338 (Target_x86_64::do_finalize_sections): Add dynamic table entries
11339 for TLS descriptors.
11340 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
11341 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
11342 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
11343 GD-to-IE relaxation.
11344 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
11345 and TLS_DESCRIPTORS.
11346 * Makefile.in: Rebuild.
11347 * configure: Rebuild.
11348 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
11349 (tls_test_shared2.so): New target.
11350 (tls_shared_gd_to_ie_test_SOURCES): New variable.
11351 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
11352 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
11353 (tls_shared_gd_to_ie_test_LDADD): New variable.
11354 (tls_shared_gnu2_gd_to_ie_test): New target.
11355 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
11356 New targets.
11357 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
11358 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
11359 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
11360 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
11361 (tls_shared_gnu2_test): New target.
11362 (tls_test_gnu2_shared.so): New target.
11363 (tls_shared_gnu2_test_SOURCES): New variable.
11364 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
11365 (tls_shared_gnu2_test_LDFLAGS): New variable.
11366 (tls_shared_gnu2_test_LDADD): New variable.
11367 * testsuite/Makefile.in: Rebuild.
11368 * testsuite/Makefile.
11369
83bfb6b7
ILT
113702008-04-11 Ian Lance Taylor <iant@google.com>
11371
11372 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
11373 justsyms.t.
11374 * testsuite/Makefile.in: Rebuild.
11375
11376 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
11377 long.
11378 * testsuite/script_test_2.cc (main): Adjust test.
11379
706e1f5e
ILT
113802008-04-11 David S. Miller <davem@davemloft.net>
11381 Ian Lance Taylor <iant@google.com>
11382
11383 * options.h (General_options): Add entries for '-Y' and
11384 '-relax'.
11385 * options.cc (General_options:finalize): If -Y was used, add those
11386 entries to the library path instead of the default "/lib" and
11387 "/usr/lib".
11388
7c98e6bb
DM
113892008-04-11 David S. Miller <davem@davemloft.net>
11390
11391 * testsuite/justsyms.t: Start at 0x100.
11392 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
11393 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
11394 long.
11395 * testsuite/script_test_2.cc: Adjust string and section length
11396 checks.
7c98e6bb 11397
99a37bfd
ILT
113982008-04-09 Ian Lance Taylor <iant@google.com>
11399
2cefc357
ILT
11400 PR gold/5996
11401 * script-sections.cc (Sections_element::allocate_to_segment): Add
11402 orphan parameter.
11403 (Output_section_definition::allocate_to_segment): Likewise.
11404 (Orphan_output_section::allocate_to_segment): Likewise.
11405 (Script_sections::attach_sections_using_phdrs_clause): Don't
11406 propagate non-PT_LOAD segments to orphan sections.
11407 * testsuite/Makefile.am (script_test_3.stdout): Generate using
11408 readelf rather than objdump.
11409 * testsuite/script_test_3.sh: Adjust accordingly. Test that
11410 .interp section and PT_INTERP segment are the same size.
11411 * testsuite/Makefile.in: Rebuild.
11412
99a37bfd
ILT
11413 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
11414 aliases for symbols defined in the same object.
11415 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
11416 (weak_alias_test_SOURCES): New variable.
11417 (weak_alias_test_DEPENDENCIES): New variable.
11418 (weak_alias_test_LDFLAGS): New variable.
11419 (weak_alias_test_LDADD): New variable.
11420 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
11421 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
11422 (weak_alias_test_3.o): New target.
11423 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
11424 * testsuite/weak_alias_test_main.cc: New file.
11425 * testsuite/weak_alias_test_1.cc: New file.
11426 * testsuite/weak_alias_test_2.cc: New file.
11427 * testsuite/weak_alias_test_3.cc: New file.
11428
780e49c5
ILT
114292008-04-08 Ian Lance Taylor <iant@google.com>
11430
cdb0b8f5
ILT
11431 * options.h (class General_options): Add --noinhibit-exec option.
11432 * main.cc (main): Check --noinhibit-exec.
11433
0864d551
ILT
11434 * options.h (class General_options): Define --wrap as a special
11435 option. Add wrap_symbols_ field.
11436 (General_options::any_wrap_symbols): New function.
11437 (General_options::is_wrap_symbol): New function.
11438 * options.cc (General_options::parse_wrap): New function.
11439 (General_options::General_options): Initialize wrap_symbols_.
11440 * symtab.cc (Symbol_table::wrap_symbol): New function.
11441 (Symbol_table::add_from_object): Handle --wrap.
11442 * symtab.h (class Symbol_table): Declare wrap_symbol.
11443 * target.h (Target::wrap_char): New function.
11444 (Target::Target_info): Add wrap_char field.
11445 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
11446 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
11447 * testsuite/testfile.cc (Target_test::test_target_info):
11448 Likewise.
11449
789aa6de
ILT
11450 * errors.cc (Errors::undefined_symbol): Mention symbol version if
11451 there is one.
11452
2c38906f
ILT
11453 * layout.h (class Layout): Add added_eh_frame_data_ field.
11454 * layout.cc (Layout::Layout): Initialize new field.
11455 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
11456 output section until we find a section we merged successfully.
11457 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
11458 that the size be non-zero.
11459
780e49c5
ILT
11460 * merge.cc (Object_merge_map::get_output_offset): Remove inline
11461 qualifier.
11462
7fcd0256
ILT
114632008-04-08 Craig Silverstein <csilvers@google.com>
11464
11465 * configure.ac: Export new conditional variable HAVE_ZLIB.
11466 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
11467 on HAVE_ZLIB.
11468 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
11469 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11470
6835af53
ILT
114712008-04-07 Ian Lance Taylor <iant@google.com>
11472
e24f324c
ILT
11473 * version.cc (version_string): Set to "1.5".
11474
a036edd8
ILT
11475 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
11476 Add issued_non_pic_error_ field. Declare check_non_pic.
11477 (Target_x86_64::Scan::check_non_pic): New function.
11478 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
11479 (Target_x86_64::Scan::global): Likewise.
11480
624f8810
ILT
11481 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
11482 addend parameter. Change caller. Handle merge sections.
11483 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
11484 Address to Addend. Don't add in the result of
11485 local_section_offset, pass down the addend and use the returned
11486 value.
11487 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
11488 Update declarations of local_section_offset and symbol_value.
11489 * testsuite/two_file_test_1.cc (t18): New function.
11490 * testsuite/two_file_test_2.cc (f18): New function.
11491 * testsuite/two_file_test_main.cc (main): Call t18.
11492 * testsuite/two_file_test.h (t18, f18): Declare.
11493
6835af53
ILT
11494 * configure.ac: Don't test for objdump, c++filt, or readelf.
11495 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
11496 conditionals.
11497 (TEST_READELF): New variable.
11498 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
11499 (check_PROGRAMS): Add two_file_strip_test.
11500 (two_file_strip_test): New target.
11501 (check_PROGRAMS): Add two_file_same_shared_strip_test.
11502 (two_file_same_shared_strip_test_SOURCES): New variable.
11503 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
11504 (two_file_same_shared_strip_test_LDFLAGS): New variable.
11505 (two_file_same_shared_strip_test_LDADD): New variable.
11506 (two_file_shared_strip.so): New target.
11507 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
11508 (ver_test_5.syms, ver_test_7.syms): Likewise.
11509 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
11510 (strip_test_3.stdout): Use TEST_OBJDUMP.
11511 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11512
86925eef
CC
115132008-04-04 Cary Coutant <ccoutant@google.com>
11514
11515 * symtab.h (Symbol::is_weak_undefined): New function.
11516 (Symbol::is_strong_undefined): New function.
11517 (Symbol::is_absolute): New function.
11518 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
11519 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
11520 absolute symbols.
11521 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
11522 (weak_undef_test): New target.
11523 * testsuite/Makefile.in: Rebuild.
11524 * testsuite/weak_undef_file1.cc: New file.
11525 * testsuite/weak_undef_file2.cc: New file.
11526 * testsuite/weak_undef_test.cc: New file.
11527
126f3ece
ILT
115282008-04-03 Craig Silverstein <csilvers@google.com>
11529
11530 * compressed_output.h (class Output_compressed_section): Use
11531 unsigned buffer.
11532 * compressed_output.cc (zlib_compress): Use unsigned buffers,
11533 add zlib header.
11534 (zlib_compressed_suffix): Removed.
11535 (Output_compressed_section::set_final_data_size): Use unsigned
11536 buffers.
11537 * testsuite/Makefile.am (flagstest_compress_debug_sections):
11538 Fix linker invocation.
11539 (flagstest_o_specialfile_and_compress_debug_sections):
11540 Likewise.
11541 * testsuite/Makefile.in: Regenerated.
11542
deae2a14
DM
115432008-04-02 David S. Miller <davem@davemloft.net>
11544
11545 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
11546 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
11547
70752818
ILT
115482008-04-02 Craig Silverstein <csilvers@google.com>
11549
11550 * TODO: New file.
11551
39d0cb0e
ILT
115522008-04-02 Ian Lance Taylor <iant@google.com>
11553
11554 * fileread.cc (File_read::find_view): Add byteshift and vshifted
11555 parameters. Update for new key type to views_. Change all
11556 callers.
11557 (File_read::read): Adjust for byteshift in returned view.
11558 (File_read::add_view): New function, broken out of
11559 find_and_make_view.
11560 (File_read::make_view): New function, broken out of
11561 find_and_make_view.
11562 (File_read::find_or_make_view): Add offset and aligned
11563 parameters. Rewrite accordingly. Change all callers.
11564 (File_read::get_view): Add offset and aligned parameters. Adjust
11565 for byteshift in return value.
11566 (File_read::get_lasting_view): Likewise.
11567 * fileread.h (class File_read): Update declarations.
11568 (class File_read::View): Add byteshift_ field. Add byteshift to
11569 constructor. Add byteshift method.
11570 * archive.h (Archive::clear_uncached_views): New function.
11571 (Archive::get_view): Add aligned parameter. Change all callers.
11572 * object.h (Object::get_view): Add aligned parameter. Change all
11573 callers.
11574 (Object::get_lasting_view): Likewise.
11575
11576 * fileread.cc (File_read::release): Don't call clear_views if
11577 there are multiple objects.
11578 * fileread.h (File_read::clear_uncached_views): New function.
11579 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
11580 on the archive.
11581
a1207466
CC
115822008-03-31 Cary Coutant <ccoutant@google.com>
11583
11584 Add thin archive support.
11585 * archive.cc (Archive::armagt): New const.
11586 (Archive::setup): Remove task parameter and calls to unlock.
11587 (Archive::unlock_nested_archives): New function.
11588 (Archive::read_header): Add nested_off parameter. Change
11589 all callers.
11590 (Archive::interpret_header): Likewise.
11591 (Archive::include_all_members): Change to handle thin
11592 archives.
11593 (Archive::include_member): Likewise.
11594 * archive.h (Archive::Archive): Add new parameters and
11595 initializers.
11596 (Archive::armagt): New const.
11597 (Archive::setup): Remove task parameter.
11598 (Archive::unlock_nested_archives): New function.
11599 (Archive::read_header): Add nested_off parameter.
11600 (Archive::interpret_header): Likewise.
11601 (Archive::Nested_archive_table): New typedef.
11602 (Archive::is_thin_archive_): New field.
11603 (Archive::nested_archives_): New field.
11604 (Archive::options_): New field.
11605 (Archive::dirpath_): New field.
11606 (Archive::task_): New field.
11607 * readsyms.cc (Read_symbols::do_read_symbols): Add check
11608 for thin archives. Pass additional parameters to
11609 Archive::Archive. Unlock the archive file after calling
11610 Archive::setup.
cd536b21 11611
479f6503
ILT
116122008-03-29 Ian Lance Taylor <iant@google.com>
11613
686c8caf
ILT
11614 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
11615 version symbol to be local.
11616 * testsuite/ver_test_4.sh: New file.
11617 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
11618 (check_DATA): Add ver_test_4.syms.
11619 (ver_test_4.syms): New target.
11620 * testsuite/Makefile.in: Rebuild.
11621
ab794b6b
ILT
11622 * output.cc
11623 (Output_section::Input_section_sort_entry::has_priority): New
11624 function.
11625 (Output_section::Input_section_sort_entry::match_file_name): New
11626 function.
11627 (Output_section::Input_section_sort_entry::match_section_name):
11628 Remove.
11629 (Output_section::Input_section_sort_entry::match_section_name_prefix):
11630 Remove.
11631 (Output_section::Input_section_sort_entry::match_section_file):
11632 Remove.
11633 (Output_section::Input_section_sort_compare::operator()): Rewrite
11634 using new Input_section_sort_entry functions. Sort crtbegin and
11635 crtend first. Sort sections with no priority before sections with
11636 a priority.
11637 * testsuite/initpri1.c (d3): Check j != 4.
11638 (cd5): New constructor/destructor function.
11639 (main): Check j != 2.
11640
479f6503
ILT
11641 * symtab.cc (Symbol_table::add_from_object): If we don't use the
11642 new symbol when resolving, don't call set_is_default.
11643 * testsuite/ver_test_7.cc: New file.
11644 * testsuite/ver_test_7.sh: New file.
11645 * testsuite/Makefile.am (ver_test_7.so): New target.
11646 (ver_test_7.o): New target.
11647 (check_SCRIPTS): Add ver_test_7.sh.
11648 (check_DATA): Add ver_test_7.syms.
11649 (ver_test_7.syms): New target.
11650
2fd32231
ILT
116512008-03-28 Ian Lance Taylor <iant@google.com>
11652
11653 * layout.cc (Layout::layout): If we see an input section with a
11654 name that needs sorting, set the must_sort flag for the output
11655 section.
11656 (Layout::make_output_section): If the name of the output section
11657 indicates that it might require sorting, set the may_sort flag.
11658 * output.h (Output_section::may_sort_attached_input_sections): New
11659 function.
11660 (Output_section::set_may_sort_attached_input_sections): New
11661 function.
11662 (Output_section::must_sort_attached_input_sections): New
11663 function.
11664 (Output_section::set_must_sort_attached_input_sections): New
11665 function.
11666 (class Output_section): Declare Input_section_sort_entry. Define
11667 Input_section_sort_compare. Declare
11668 sort_attached_input_sections. Add new fields:
11669 may_sort_attached_input_sections_,
11670 must_sort_attached_input_sections_,
11671 attached_input_sections_are_sorted_.
11672 * output.cc (Output_section::Output_section): Initialize new
11673 fields.
11674 (Output_section::add_input_section): Add an entry to
11675 input_sections_ if may_sort or must_sort are true.
11676 (Output_section::set_final_data_size): Call
11677 sort_attached_input_sections if necessary.
11678 (Output_section::Input_section_sort_entry): Define new class.
11679 (Output_section::Input_section_sort_compare::operator()): New
11680 function.
11681 (Output_section::sort_attached_input_sections): New function.
11682 * configure.ac: Check whether the compiler supports constructor
11683 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
11684 * testsuite/initpri1.c: New file.
11685 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
11686 CONSTRUCTOR_PRIORITY.
11687 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
11688 (initpri1_LDFLAGS): New variable.
11689 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11690
18e6b24e
ILT
116912008-03-27 Ian Lance Taylor <iant@google.com>
11692
49bdd526
ILT
11693 * common.cc (Sort_commons::operator): Correct sorting algorithm.
11694 * testsuite/common_test_1.c: New file.
11695 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
11696 (common_test_1_SOURCES): New variable.
11697 (common_test_1_DEPENDENCIES): New variable.
11698 (common_test_1_LDFLAGS): New variable.
11699
18e6b24e
ILT
11700 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
11701 and commons_ correctly when NAME/VERSION does not override
11702 NAME/NULL.
11703 * testsuite/ver_test_6.c: New file.
11704 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
11705 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
11706 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
11707
04bf7072
ILT
117082008-03-26 Ian Lance Taylor <iant@google.com>
11709
5871526f
ILT
11710 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
11711 of an undefined symbol from a version script.
11712 * testsuite/Makefile.am (ver_test_5.so): New target.
11713 (ver_test_5.o): New target.
11714 (check_SCRIPTS): Add ver_test_5.sh.
11715 (check_DATA): Add ver_test_5.syms.
11716 (ver_test_5.syms): New target.
11717 * testsuite/ver_test_5.cc: New file.
11718 * testsuite/ver_test_5.script: New file.
11719 * testsuite/ver_test_5.sh: New file.
11720 * Makefile.in, testsuite/Makefile.in: Rebuild.
11721
04bf7072
ILT
11722 PR gold/5986
11723 Fix problems building gold with gcc 4.3.0.
11724 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
11725 (gold_error_at_location, gold_warning_at_location): Use it.
11726 * configure.ac: Check whether we can compile and use a template
11727 function with a printf attribute.
11728 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
11729 when jumping over bytes.
11730 * object.cc: Instantiate Object::read_section_data.
11731 * debug.h: Include <cstring>
11732 * dwarf_reader.cc: Include <algorithm>
11733 * main.cc: Include <cstring>.
11734 * options.cc: Include <cstring>.
11735 * output.cc: Include <cstring>.
11736 * script.cc: Include <cstring>.
11737 * script.h: Include <string>.
11738 * symtab.cc: Include <cstring> and <algorithm>.
11739 * target-select.cc: Include <cstring>.
11740 * version.cc: Include <string>.
11741 * testsuite/testmain.cc: Include <cstdlib>.
11742 * configure, config.in: Rebuild.
11743
874c5b28
ILT
117442008-03-25 Ian Lance Taylor <iant@google.com>
11745
819d6c3a
ILT
11746 * options.cc: Include "../bfd/bfdver.h".
11747 (options::help): Print bug reporting address.
11748
f4b2c6f5
ILT
11749 * version.cc (print_version): Adjust output for current value of
11750 BFD_VERSION_STRING.
11751
11752 * NEWS: New file.
11753
e96caa79
ILT
11754 * options.cc (options::help): Print list of supported targets.
11755 * target-select.h: Include <vector>.
11756 (class Target_selector): Make machine_, size_, and is_big_endian_
11757 fields const. Add bfd_name_ and instantiated_target_ fields.
11758 (Target_selector::Target_selector): Add bfd_name parameter.
11759 (Target_selector::recognize): Make non-virtual, call
11760 do_recognize.
11761 (Target_selector::recognize_by_name): Make non-virtual, call
11762 do_recognize_by_name.
11763 (Target_selector::supported_names): New function.
11764 (Target_selector::bfd_name): New function.
11765 (Target_selector::do_instantiate_target): New pure virtual
11766 function.
11767 (Target_selector::do_recognize): New virtual function.
11768 (Target_selector::do_recognize_by_name): New virtual function.
11769 (Target_selector::instantiate_target): New private function.
11770 (supported_target_names): Declare.
11771 * target-select.cc (Target_selector::Target_selector): Update for
11772 new parameter and fields.
11773 (select_target_by_name): Check that the name matches before
11774 calling recognize_by_name.
11775 (supported_target_names): New function.
11776 * i386.cc (class Target_selector_i386): Update Target_selector
11777 constructor call. Remove recognize and recognize_by_name. Add
11778 do_instantiate_target.
11779 * x86_64.cc (class Target_selector_x86_64): Likewise.
11780 * testsuite/testfile.cc (class Target_selector_test): Update for
11781 changes to Target_selector.
11782
874c5b28
ILT
11783 * README: Rewrite, with some notes on unsupported features.
11784
0a65a3a7
CC
117852008-03-24 Cary Coutant <ccoutant@google.com>
11786
11787 * i386.cc (Target_i386::Got_type): New enum declaration.
11788 (Target_i386::Scan::local): Updated callers of Output_data_got
11789 member functions.
11790 (Target_i386::Scan::global): Likewise.
11791 (Target_i386::Relocate::relocate): Likewise.
11792 (Target_i386::Relocate::relocate_tls): Likewise.
11793 * object.h (Got_offset_list): New class.
11794 (Sized_relobj::local_has_got_offset): Added got_type parameter.
11795 (Sized_relobj::local_got_offset): Likewise.
11796 (Sized_relobj::set_local_got_offset): Likewise.
11797 (Sized_relobj::local_has_tls_got_offset): Removed.
11798 (Sized_relobj::local_tls_got_offset): Removed.
11799 (Sized_relobj::set_local_tls_got_offset): Removed.
11800 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
11801 * output.cc (Output_data_got::add_global): Added got_type parameter.
11802 (Output_data_got::add_global_with_rel): Likewise.
11803 (Output_data_got::add_global_with_rela): Likewise.
11804 (Output_data_got::add_global_pair_with_rel): New function.
11805 (Output_data_got::add_global_pair_with_rela): New function.
11806 (Output_data_got::add_local): Added got_type parameter.
11807 (Output_data_got::add_local_with_rel): Likewise.
11808 (Output_data_got::add_local_with_rela): Likewise.
11809 (Output_data_got::add_local_pair_with_rel): New function.
11810 (Output_data_got::add_local_pair_with_rela): New function.
11811 (Output_data_got::add_global_tls): Removed.
11812 (Output_data_got::add_global_tls_with_rel): Removed.
11813 (Output_data_got::add_global_tls_with_rela): Removed.
11814 (Output_data_got::add_local_tls): Removed.
11815 (Output_data_got::add_local_tls_with_rel): Removed.
11816 (Output_data_got::add_local_tls_with_rela): Removed.
11817 * output.h (Output_data_got::add_global): Added got_type parameter.
11818 (Output_data_got::add_global_with_rel): Likewise.
11819 (Output_data_got::add_global_with_rela): Likewise.
11820 (Output_data_got::add_global_pair_with_rel): New function.
11821 (Output_data_got::add_global_pair_with_rela): New function.
11822 (Output_data_got::add_local): Added got_type parameter.
11823 (Output_data_got::add_local_with_rel): Likewise.
11824 (Output_data_got::add_local_with_rela): Likewise.
11825 (Output_data_got::add_local_pair_with_rel): New function.
11826 (Output_data_got::add_local_pair_with_rela): New function.
11827 (Output_data_got::add_global_tls): Removed.
11828 (Output_data_got::add_global_tls_with_rel): Removed.
11829 (Output_data_got::add_global_tls_with_rela): Removed.
11830 (Output_data_got::add_local_tls): Removed.
11831 (Output_data_got::add_local_tls_with_rel): Removed.
11832 (Output_data_got::add_local_tls_with_rela): Removed.
11833 * resolve.cc (Symbol::override_base_with_special): Removed
11834 reference to has_got_offset_ field.
11835 * symtab.cc (Symbol::init_fields): Replaced initialization
11836 of got_offset_ with got_offsets_. Removed initialization
11837 of has_got_offset_
53fcba31 11838 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
11839 (Symbol::got_offset): Likewise.
11840 (Symbol::set_got_offset): Likewise.
11841 (Symbol::has_tls_got_offset): Removed.
11842 (Symbol::tls_got_offset): Removed.
11843 (Symbol::set_tls_got_offset): Removed.
11844 (Symbol::got_offset_): Removed.
11845 (Symbol::tls_mod_got_offset_): Removed.
11846 (Symbol::tls_pair_got_offset_): Removed.
11847 (Symbol::got_offsets_): New field.
11848 (Symbol::has_got_offset): Removed.
11849 (Symbol::has_tls_mod_got_offset): Removed.
11850 (Symbol::has_tls_pair_got_offset): Removed.
11851 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
11852 (Target_x86_64::Scan::local): Updated callers of Output_data_got
11853 member functions.
11854 (Target_x86_64::Scan::global): Likewise.
11855 (Target_x86_64::Relocate::relocate): Likewise.
11856 (Target_x86_64::Relocate::relocate_tls): Likewise.
11857
bd52eafb
BE
118582008-03-25 Ben Elliston <bje@au.ibm.com>
11859
11860 * yyscript.y: Fix spelling error in comment.
11861
8b105e34
ILT
118622008-03-24 Ian Lance Taylor <iant@google.com>
11863
8ed814a9
ILT
11864 * options.h (class General_options): Define build_id option.
11865 * layout.h (class Layout): Declare write_build_id, create_note,
11866 create_build_id. Add build_id_note_ member.
11867 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
11868 "libiberty.h", "md5.h", "sha1.h".
11869 (Layout::Layout): Initialize eh_frame_data_,
11870 eh_frame_hdr_section_, and build_id_note_.
11871 (Layout::finalize): Call create_build_id.
11872 (Layout::create_note): New function, broken out of
11873 Layout::create_gold_note.
11874 (Layout::create_gold_note): Call create_note.
11875 (Layout::create_build_id): New function.
11876 (Layout::write_build_id): New function.
11877 (Close_task_runner::run): Call write_build_id.
11878
8b105e34
ILT
11879 * x86_64.cc: Correct license to GPLv3.
11880
086a1841
ILT
118812008-03-23 Ian Lance Taylor <iant@google.com>
11882
11883 * options.cc: Include "demangle.h".
11884 (parse_optional_string): New function.
11885 (parse_long_option): Handle takes_optional_argument.
11886 (parse_short_option): Update dash_z initializer. Handle
11887 takes_optional_argument.
11888 (General_options::General_options): Initialize do_demangle_.
11889 (General_options::finalize): Set do_demangle_. Handle demangling
11890 style.
11891 * options.h (parse_optional_string): Declare.
11892 (struct One_option): Add optional_arg field. Update constructor.
11893 Update call constructor calls. Add takes_optional_argument
11894 function.
11895 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
11896 (DEFINE_optional_string): Define.
11897 (General_options::demangle): Change from DEFINE_bool to
11898 DEFINE_optional_string.
11899 (General_options::no_demangle): New function.
11900 (General_options::do_demangle): New function.
11901 (General_options::set_do_demangle): New function.
11902 (General_options::execstack_status_): Move definition to end of
11903 class definition.
11904 (General_options::static_): Likewise.
11905 (General_options::do_demangle_): New field.
11906 * object.cc (big_endian>::get_symbol_location_info): Call
11907 Options::do_demangle, not Options::demangle.
11908 * symtab.cc (demangle): Likewise.
11909
cbb93e63
ILT
119102008-03-22 Ian Lance Taylor <iant@google.com>
11911
11912 * gold.h: Include <cstddef> and <sys/types.h>
11913 * options.h: Include <cstring>.
11914
ec531623
ILT
119152008-03-21 Ian Lance Taylor <iant@google.com>
11916
11917 * Added source code to GNU binutils.
This page took 0.743518 seconds and 4 git commands to generate.