PR gold/12952
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
24d47b34
ILT
12011-07-05 Ian Lance Taylor <iant@google.com>
2
3 PR gold/12952
4 * resolve.cc (Symbol::override_base_with_special): Simply override
5 version with special symbol version, ignoring previous version.
6
41f9cbbe
ILT
72011-07-05 Ian Lance Taylor <iant@google.com>
8
9 * object.cc (Sized_relobj_file::include_section_group): Add
10 information to comment about signature location.
11
886288f1
ILT
122011-07-02 Ian Lance Taylor <iant@google.com>
13
14 PR gold/12957
15 * options.h (class General_options): Add -f and -F.
16 * options.cc (General_options::finalize): Fatal error if -f/-F
17 are used without -shared.
18 * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
19
ae3a6d4f
ILT
202011-07-02 Ian Lance Taylor <iant@google.com>
21
22 * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
23
21131061
ILT
242011-07-01 Ian Lance Taylor <iant@google.com>
25
26 PR gold/12525
27 PR gold/12952
28 * resolve.cc (Symbol::override_base_with_special): Don't override
29 the version if the overriding symbol has a different name.
30 * dynobj.cc (Versions::add_def): Add dynpool parameter. Change
31 all callers. If we give an error about an undefined version,
32 define the base version if necessary.
33 * dynobj.h (class Versions): Update declaration.
34 * testsuite/weak_alias_test_5.cc: New file.
35 * testsuite/weak_alias_test.script: New file.
36 * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
37 and versioned_alias have the right value, and call t2.
38 * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
39 weak_alias_test_5.so.
40 (weak_alias_test_LDADD): Likewise.
41 (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
42 * testsuite/Makefile.in: Rebuild.
43
611062c0
ILT
442011-07-01 Ian Lance Taylor <iant@google.com>
45
46 PR gold/12525
47 * options.h (class General_options): Support -z notext.
48 * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
49 -Wl,-z,notext.
50 (two_file_shared_nonpic.so): Likewise.
51 (two_file_shared_mixed.so): Likewise.
52 (two_file_shared_mixed_1.so): Likewise.
53 (weak_undef_lib_nonpic.so): Likewise.
54 (alt/weak_undef_lib_nonpic.so): Likewise.
55 (tls_test_shared_nonpic.so): Likewise.
56 * testsuite/Makefile.in: Rebuild.
57
328c7c2f
ILT
582011-07-01 Ian Lance Taylor <iant@google.com>
59
60 PR gold/12525
61 * configure.ac: Test whether static linking works, setting
62 the automake conditional HAVE_STATIC.
63 * testsuite/Makefile.am: Disable tests using -static if
64 HAVE_STATIC is not true.
65 * configure, testsuite/Makefile.in: Rebuild.
66
02d7cd44
ILT
672011-07-01 Ian Lance Taylor <iant@google.com>
68
69 PR gold/12525
70 * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
71 Assert if we see DW_EH_PE_indirect.
72 * target.h (Target::ehframe_datarel_base): New function.
73 (Target::do_ehframe_datarel_base): New target function.
74 * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
75 * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
76 function.
77
07a60597
ILT
782011-07-01 Ian Lance Taylor <iant@google.com>
79
80 PR gold/12571
81 * options.h (class General_options): Add
82 --ld-generated-unwind-info.
83 * ehframe.cc (Fde::write): Add address parameter. Change all
84 callers. If associated with PLT, fill in address and size.
85 (Cie::set_output_offset): Only add merge mapping if there is an
86 object.
87 (Cie::write): Add address parameter. Change all callers.
88 (Eh_frame::add_ehframe_for_plt): New function.
89 * ehframe.h (class Fde): Update declarations. Move shndx_ and
90 input_offset_ fields into union u_, with new plt field.
91 (Fde::Fde): Adjust for new union field.
92 (Fde::Fde) [Output_data version]: New constructor.
93 (Fde::add_mapping): Only add merge mapping if there is an object.
94 (class Cie): Update declarations.
95 (class Eh_frame): Declare add_ehframe_for_plt.
96 * layout.cc (Layout::layout_eh_frame): Break out code into
97 make_eh_frame_section, and call it.
98 (Layout::make_eh_frame_section): New function.
99 (Layout::add_eh_frame_for_plt): New function.
100 * layout.h (class Layout): Update declarations.
101 * merge.cc (Merge_map::add_mapping): Add assertion.
102 * i386.cc: Include "dwarf.h".
103 (class Output_data_plt_i386): Make first_plt_entry,
104 dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add
105 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
106 and plt_eh_frame_fde.
107 (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
108 boundary. Call add_eh_frame_for_plt if appropriate.
109 * x86_64.cc: Include "dwarf.h".
110 (class Output_data_plt_x86_64): Align to 16-byte boundary. Make
111 first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add
112 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
113 and plt_eh_frame_fde.
114 (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
115 appropriate.
116
14788a3f
ILT
1172011-06-29 Ian Lance Taylor <iant@google.com>
118
119 PR gold/12629
120 * object.cc (Sized_relobj_file::layout_section): Change shdr
121 parameter to be const.
122 (Sized_relobj_file::layout_eh_frame_section): New function, broken
123 out of do_layout.
124 (Sized_relobj_file::do_layout): Defer .eh_frame sections if
125 appropriate. Call layout_eh_frame_section.
126 (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
127 sections.
128 * object.h (class Sized_relobj_file): Update declarations.
129
6c21fce1
ILT
1302011-06-29 Ian Lance Taylor <iant@google.com>
131
37e41b03 132 PR gold/12652
6c21fce1
ILT
133 * script.cc (Token::integer_value): Accept trailing M/m/K/k
134 modifier.
135 (Lex::gather_token): Accept trailing M/m/K/k for integers.
136
4d5e4e62
ILT
1372011-06-29 Ian Lance Taylor <iant@google.com>
138
139 PR gold/12675
140 * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
141 SHT_X86_64_UNWIND.
142 * layout.cc (Layout::layout_eh_frame): Likewise.
143
886f533a
ILT
1442011-06-29 Ian Lance Taylor <iant@google.com>
145
146 PR gold/12695
147 * layout.cc (Layout::symtab_section_shndx): New function.
148 * layout.h (class Layout): Declare symtab_section_shndx.
149 * output.cc (Output_section::write_header): Call it.
150
f3ae1b28
ILT
1512011-06-29 Ian Lance Taylor <iant@google.com>
152
153 PR gold/12818
154 * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
155 symbols which are not used in a relocation.
156
aecf301f
ILT
1572011-06-28 Ian Lance Taylor <iant@google.com>
158
159 PR gold/12898
160 * layout.cc (Layout::segment_precedes): Don't crash if a linker
161 script create indistinguishable segments.
162 (Layout::set_segment_offsets): Use stable_sort when sorting
163 segments. Pass this to Compare_segments constructor.
164 * layout.h (class Layout): Make segment_precedes non-static.
165 (class Compare_segments): Change from struct to class. Add
166 layout_ field. Add constructor.
167 * script-sections.cc
168 (Script_sections::attach_sections_using_phdrs_clause): Rename
169 local orphan to is_orphan. Don't report failure to put empty
170 section in segment. On attachment failure, report name of
171 section, and attach to first PT_LOAD segment.
172
03ef7571
ILT
1732011-06-28 Ian Lance Taylor <iant@google.com>
174
175 PR gold/12934
176 * target-select.cc (Target_selector::Target_selector): Add
177 emulation parameter. Change all callers.
178 (select_target_by_bfd_name): Rename from select_target_by_name.
179 Change all callers.
180 (select_target_by_emulation): New function.
181 (supported_emulation_names): New function.
182 * target-select.h (class Target_selector): Add emulation_ field.
183 Update declarations.
184 (Target_selector::recognize_by_bfd_name): Rename from
185 recognize_by_name. Change all callers.
186 (Target_selector::supported_bfd_names): Rename from
187 supported_names. Change all callers.
188 (Target_selector::recognize_by_emulation): New function.
189 (Target_selector::supported_emulations): New function.
190 (Target_selector::emulation): New function.
191 (Target_selector::do_recognize_by_bfd_name): Rename from
192 do_recognize_by_name. Change all callers.
193 (Target_selector::do_supported_bfd_names): Rename from
194 do_supported_names. Change all callers.
195 (Target_selector::do_recognize_by_emulation): New function.
196 (Target_selector::do_supported_emulations): New function.
197 (select_target_by_bfd_name): Change name in declaration.
198 (select_target_by_emulation): Declare.
199 (supported_emulation_names): Declare.
200 * parameters.cc (parameters_force_valid_target): Try to find
201 target based on emulation from -m option.
202 * options.h (class General_options): Change doc string for -m.
203 * options.cc (help): Print emulations.
204 (General_options::parse_V): Likewise.
205 * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
206 Add emulation parameter. Change all callers.
207
200b2bb9
ILT
2082011-06-28 Ian Lance Taylor <iant@google.com>
209
210 * target.h (class Target): Add osabi_ field.
211 (Target::osabi): New function.
212 (Target::set_osabi): New function.
213 (Target::Target): Initialize osabi_.
214 (Target::do_adjust_elf_header): Make pure virtual.
215 (Sized_target::do_adjust_elf_header): Declare.
216 * target.cc (Sized_target::do_adjust_elf_header): New function.
217 (class Sized_target): Instantiate all versions.
218 * freebsd.h (class Target_freebsd): Remove.
219 (Target_selector_freebsd::do_recognize): Call set_osabi on
220 Target.
221 (Target_selector_freebsd::do_recognize_by_name): Likewise.
222 (Target_selector_freebsd::set_osabi): Remove.
223 * i386.cc (class Target_i386): Inherit from Sized_target rather
224 than Target_freebsd.
225 * x86_64.cc (class Target_x86_64): Likewise.
226
b3ce541e
ILT
2272011-06-28 Ian Lance Taylor <iant@google.com>
228
229 * target.h (Target::can_check_for_function_pointers): Rewrite.
230 Make non-virtual.
231 (Target::can_icf_inline_merge_sections): Likewise.
232 (Target::section_may_have_icf_unsafe_poineters): Likewise.
233 (Target::Target_info): Add can_icf_inline_merge_sections field.
234 (Target::do_can_check_for_function_pointers): New virtual
235 function.
236 (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
237 * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
238 from can_check_for_function_pointers, move in file.
239 (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
240 section_may_have_icf_unsafe_poineters, move in file.
241 (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
242 * i386.cc (Target_i386::do_can_check_for_function_pointers):
243 Rename from can_check_for_function_pointers, move in file.
244 (Target_i386::can_icf_inline_merge_sections): Remove.
245 (Target_i386::i386_info): Initialize
246 can_icf_inline_merge_sections.
247 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
248 Initialize can_icf_inline_merge_sections.
249 * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
250 * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
251 Rename from can_check_for_function_pointers, move in file.
252 (Target_x86_64::can_icf_inline_merge_sections): Remove.
253 (Target_x86_64::x86_64_info): Initialize
254 can_icf_inline_merge_sections.
255 * testsuite/testfile.cc (Target_test::test_target_info):
256 Likewise.
257 * icf.cc (get_section_contents): Correct formatting.
258
6d1c4efb
ILT
2592011-06-27 Ian Lance Taylor <iant@google.com>
260
261 * symtab.cc (Symbol::versioned_name): New function.
262 (Symbol_table::add_to_final_symtab): Use versioned_name when
263 appropriate.
264 (Symbol_table::sized_write_symbol): Likewise.
265 * symtab.h (class Symbol): Declare versioned_name.
266 * stringpool.h (class Stringpool_template): Add variant of add
267 which takes a std::basic_string.
268 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
269 (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
270 (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
271 (ver_test_12.o): New target.
272 * testsuite/Makefile.in: Rebuild.
273
57eb9b50
DK
2742011-06-27 Doug Kwan <dougkwan@google.com>
275
276 * arm.cc (Arm_relocate_functions::thm_jump8,
277 Arm_relocate_functions::thm_jump11): Use a wider signed
278 type to compute offset.
279 * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
280 arm_thm_jump8.
281 * testsuite/Makefile.in: Regenerate.
282 * testsuite/arm_branch_in_range.sh: Check test results of
283 arm_thm_jump11 and arm_thm_jump8.
284 * testsuite/arm_thm_jump11.s: New test source file.
285 * testsuite/arm_thm_jump11.t: New linker script.
286 * testsuite/arm_thm_jump8.s: New test source file.
287 * testsuite/arm_thm_jump8.t: New linker script.
288
487b39df
ILT
2892011-06-24 Ian Lance Taylor <iant@google.com>
290
291 * layout.cc: Include "object.h".
292 (ctors_sections_in_init_array): New static variable.
293 (Layout::is_ctors_in_init_array): New function.
294 (Layout::layout): Add entry to ctors_sections_in_init_array if
295 appropriate.
296 * layout.h (class Layout): Declare is_ctors_in_init_array.
297 * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
298 is_ctors_reverse_view is set.
299 (Sized_relobj_file::write_sections): Add layout parameter. Change
300 all callers. Set is_ctors_reverse_view field of View_size.
301 (Sized_relobj_file::reverse_words): New function.
302 * object.h (Sized_relobj_file::View_size): Add
303 is_ctors_reverse_view field.
304 (class Sized_relobj_file): Update declarations.
305 * testsuite/initpri3.c: New test.
306 * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
307 initpri3b.
308 (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
309 (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
310 (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
311 (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
312 * testsuite/Makefile.in: Rebuild.
313
472076e4
CC
3142011-06-24 Cary Coutant <ccoutant@google.com>
315
316 * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
317 (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
318 (debug_msg_cdebug.err): New targets.
319 * testsuite/Makefile.in: Regenerate.
320 * testsuite/debug_msg.sh: Check output of link with compressed debug.
321 Fix checks for link with shared library.
322
a60af0db
DK
3232011-06-24 Doug Kwan <dougkwan@google.com>
324
325 * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
326 skip empty text sections.
327 * testsuite/arm_exidx_test.s: Test handling of an empty text section.
328
5393d741
ILT
3292011-06-22 Ian Lance Taylor <iant@google.com>
330
331 PR gold/12910
332 * options.h (class General_options): Add --ctors-in-init-array.
333 * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
334 friends as SHT_PROGBITS for merging sections.
335 (Layout::layout): Remove special handling of .init_array and
336 friends. Don't sort if doing relocatable link. Sort for .ctors
337 and .dtors if ctors_in_init_array.
338 (Layout::make_output_section): Force correct section types for
339 .init_array and friends. Don't sort if doing relocatable link,
340 Don't sort .ctors and .dtors if ctors_in_init_array.
341 (Layout::section_name_mapping): Remove .ctors. and .dtorso.
342 (Layout::output_section_name): Add relobj parameter. Change all
343 callers. Handle .ctors. and .dtors. in code rather than table.
344 Handle .ctors and .dtors if ctors_in_init_array.
345 (Layout::match_file_name): New function, moved from output.cc.
346 * layout.h (class Layout): Update declarations.
347 * output.cc: Include "layout.h".
348 (Input_section_sort_entry::get_priority): New function.
349 (Input_section_sort_entry::match_file_name): Just call
350 Layout::match_file_name.
351 (Output_section::Input_section_sort_init_fini_compare::operator()):
352 Handle .ctors and .dtors. Sort by explicit priority rather than
353 by name.
354 * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
355 * testsuite/initpri2.c: New test.
356 * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
357 (check_PROGRAMS): Add initpri2.
358 (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
359 (initpri2_LDFLAGS, initpri2_LDADD): New variables.
360 * configure, testsuite/Makefile.in: Rebuild.
361
e1f74f98
ILT
3622011-06-19 Ian Lance Taylor <iant@google.com>
363
364 PR gold/12880
365 * layout.cc (Layout::attach_allocated_section_to_segment): Add a
366 .interp section to a PT_INTERP segment even if we have seen a
367 --dynamic-linker option. Don't do it if we have seen a PHDRS
368 clause in a linker script.
369 (Layout::finalize): Don't create a .interp section if we've
370 already create a PT_INTERP segment.
371 (Layout::create_interp): Always call choose_output_section (revert
372 patch of 2011-06-17). Don't create PT_INTERP segment.
373 * script-sections.cc
374 (Script_sections::create_note_and_tls_segments): Add a .interp
375 section to a PT_INTERP segment even if we have seen a
376 --dynamic-linker option.
377
766f91bb
ILT
3782011-06-18 Ian Lance Taylor <iant@google.com>
379
380 * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
381 merely because a non-PT_LOAD segment has a dynamic reloc.
382
0d212c3a
ILT
3832011-06-18 Ian Lance Taylor <iant@google.com>
384
385 * layout.cc (Layout::finish_dynamic_section): Don't create
386 DT_FLAGS entry if not needed.
387
911a5072
ILT
3882011-06-18 Ian Lance Taylor <iant@google.com>
389
390 PR gold/12745
391 * layout.cc (Layout::layout_eh_frame): Correct handling of
392 writable .eh_frame section.
393
534b4e5f
ILT
3942011-06-17 Ian Lance Taylor <iant@google.com>
395
396 PR gold/12893
397 * resolve.cc (Symbol_table::resolve): Don't give an error if a
398 symbol is redefined with the exact same object and value.
399
10b4f102
ILT
4002011-06-17 Ian Lance Taylor <iant@google.com>
401
402 PR gold/12880
403 * layout.h (class Layout): Add interp_segment_ field.
404 * layout.cc (Layout::Layout): Initialize interp_segment_ field.
405 (Layout::attach_allocated_section_to_segment): If making shared
406 library, put .interp section in PT_INTERP segment.
407 (Layout::finalize): Also call create_interp if -dynamic-linker
408 option was used.
409 (Layout::create_interp): Assert that there is no PT_INTERP
410 segment. If not using a SECTIONS clause, use make_output_section.
411 (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
412 * script-sections.cc
413 (Script_sections::create_note_and_tls_segments): If making shared
414 library, put .interp section in PT_INTERP segment.
415
a29b0dad
ILT
4162011-06-17 Ian Lance Taylor <iant@google.com>
417
e588ea8d
ILT
418 * object.cc (Sized_relobj_file::do_layout): Keep warning sections
419 when making a shared library.
420
4212011-06-17 Ian Lance Taylor <iant@google.com>
422
423 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
424 parameter. Change all callers. Don't issue warning about PC32
425 against locally defined symbol.
a29b0dad 426
9d3b0698
ILT
4272011-06-16 Ian Lance Taylor <iant@google.com>
428
429 * symtab.cc (Warnings::issue_warning): Don't warn if relocation
430 occurs in same object.
431
85b0f90c
AM
4322011-06-14 Alan Modra <amodra@gmail.com>
433
434 * po/POTFILES.in: Regenerate.
435
a94907d9
ILT
4362011-06-09 Ian Lance Taylor <iant@google.com>
437
438 * script-sections.cc
439 (Orphan_output_section::set_section_addresses): For a relocatable
440 link set address to 0.
441
4fb3a1c3
CC
4422011-06-09 Cary Coutant <ccoutant@google.com>
443
444 PR gold/12804
445 * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
446 used with --compress-debug-sections.
447 * gold/object.cc (Sized_relobj_file::do_layout): Report
448 uncompressed size of compressed input sections.
449
61220854
CC
4502011-06-08 Cary Coutant <ccoutant@google.com>
451
452 PR gold/12804
453 * testsuite/two_file_test_2_v1.cc: Change initialization of
454 v2 to keep it in .data.
455
e6455dfb
CC
4562011-06-07 Cary Coutant <ccoutant@google.com>
457
458 * common.cc (Symbol_table::do_allocate_commons_list): Call
459 gold_fallback.
460 * errors.cc (Errors::fatal): Adjust call to gold_exit.
461 (Errors::fallback): New function.
462 (gold_fallback): New function.
463 * errors.h (Errors::fallback): New function.
464 * gold.cc (gold_exit): Change status parameter to enum; adjust
465 all callers.
466 (queue_initial_tasks): Call gold_fallback.
467 * gold.h: Include cstdlib.
468 (Exit_status): New enum type.
469 (gold_exit): Change status parameter to enum.
470 (gold_fallback): New function.
471 * layout.cc (Layout::set_section_offsets): Call gold_fallback.
472 (Layout::create_symtab_sections): Likewise.
473 (Layout::create_shdrs): Likewise.
474 * main.cc (main): Adjust call to gold_exit.
475 * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
476 (Output_data_got::add_got_entry_pair): Likewise.
477 (Output_section::add_input_section): Likewise.
478 (Output_section::add_output_section_data): Likewise.
479 (Output_segment::set_section_list_addresses): Likewise.
480 * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
481
fb0e076f
CC
4822011-06-07 Cary Coutant <ccoutant@google.com>
483
484 * layout.cc (Layout::set_segment_offsets): Don't adjust layout
485 for incremental links.
486 * output.cc (Output_segment::set_section_list_addresses): Remove
487 FIXME and test for TLS or BSS.
488
a5ee4d5d
CC
4892011-06-07 Cary Coutant <ccoutant@google.com>
490
491 * testsuite/Makefile.am: Add incremental_copy_test,
492 incremental_common_test_1.
493 * testsuite/Makefile.in: Regenerate.
494 * testsuite/common_test_1_v1.c: New source file.
495 * testsuite/common_test_1_v2.c: New source file.
496 * testsuite/copy_test_v1.cc: New source file.
497
5146f448
CC
4982011-06-07 Cary Coutant <ccoutant@google.com>
499
500 * common.cc (Symbol_table::do_allocate_commons_list): For incremental
501 update, allocate common from bss section's free list.
502 * incremental-dump.cc (dump_incremental_inputs): Print flag for
503 linker-defined symbols.
504 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
505 Skip GOT and PLT entries that are no longer referenced.
506 (Output_section_incremental_inputs::write_info_blocks): Mark
507 linker-defined symbols.
508 (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
509 * output.cc (Output_section::allocate): New function.
510 * output.h (Output_section::allocate): New function.
511 * resolve.cc (Symbol_table::report_resolve_problem): Add case for
512 linker-defined symbols.
513 (Symbol::override_base_with_special): Copy is_predefined_ flag.
514 * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
515 (Symbol::init_base_output_data): Likewise.
516 (Symbol::init_base_output_segment): Likewise.
517 (Symbol::init_base_constant): Likewise.
518 (Sized_symbol::init_output_data): Likewise.
519 (Sized_symbol::init_output_segment): Likewise.
520 (Sized_symbol::init_constant): Likewise.
521 (Symbol_table::do_define_in_output_data): Likewise.
522 (Symbol_table::do_define_in_output_segment): Likewise.
523 (Symbol_table::do_define_as_constant): Likewise.
524 * symtab.h (Symbol::is_predefined): New function.
525 (Symbol::init_base_output_data): Add is_predefined parameter.
526 (Symbol::init_base_output_segment): Likewise.
527 (Symbol::init_base_constant): Likewise.
528 (Symbol::is_predefined_): New data member.
529 (Sized_symbol::init_output_data): Add is_predefined parameter.
530 (Sized_symbol::init_output_segment): Likewise.
531 (Sized_symbol::init_constant): Likewise.
532 (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
533
26d3c67d
CC
5342011-06-07 Cary Coutant <ccoutant@google.com>
535
536 * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
537 instead of emit_copy_reloc.
538 (Copy_relocs::emit_copy_reloc): Refactor.
539 (Copy_relocs::make_copy_reloc): New function.
540 (Copy_relocs::add_copy_reloc): Remove.
541 * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
542 section.
543 (Copy_relocs::make_copy_reloc): New function.
544 (Copy_relocs::add_copy_reloc): Remove.
545 * gold.cc (queue_middle_tasks): Emit old COPY relocations from
546 unchanged input files.
547 * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
548 * incremental.cc (Sized_incremental_binary::do_reserve_layout):
549 Reserve BSS space for COPY relocations.
550 (Sized_incremental_binary::do_emit_copy_relocs): New function.
551 (Output_section_incremental_inputs::write_info_blocks): Record
552 whether a symbol is copied from a shared object.
553 (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
554 * incremental.h (enum Incremental_shlib_symbol_flags): New type.
555 (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
556 (Incremental_input_entry_reader::get_output_symbol_index): Add
557 is_copy parameter.
558 (Incremental_binary::emit_copy_relocs): New function.
559 (Incremental_binary::do_emit_copy_relocs): New function.
560 (Sized_incremental_binary::Sized_incremental_binary): Initialize
561 new data member.
562 (Sized_incremental_binary::add_copy_reloc): New function.
563 (Sized_incremental_binary::do_emit_copy_relocs): New function.
564 (Sized_incremental_binary::Copy_reloc): New struct.
565 (Sized_incremental_binary::Copy_relocs): New typedef.
566 (Sized_incremental_binary::copy_relocs_): New data member.
567 * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
568 * symtab.h (Symbol_table::add_from_incrobj): Change return type.
569 * target.h (Sized_target::emit_copy_reloc): New function.
570 * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
571
7cdb37d9
CC
5722011-06-02 Cary Coutant <ccoutant@google.com>
573
574 PR gold/12163
575 * gold/archive.cc (Archive::Archive): Initialize new data member.
576 (Archive::include_all_members): Return if archive has already been
577 included.
578 * gold/archive.h (Archive::include_all_members_): New data member.
579
cc643b88
NC
5802011-06-02 Nick Clifton <nickc@redhat.com>
581
582 * dynobj.h: Fix spelling mistake in comment.
583 * output.cc: Likewise.
584
f62a3ca7
DK
5852011-05-31 Doug Kwan <dougkwan@google.com>
586 Asier Llano
587
588 PR gold/12826
cc643b88 589 * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
f62a3ca7
DK
590 arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
591 * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up. Remove
592 redundant arm_exidx_test.so.
593 * testsuite/Makefile.in: Regenerate.
594 (check_SCRIPTS): Add pr12826.sh
595 (check_DATA): Add pr12826.stdout
596 (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
597 * testsuite/pr12826.sh: New file.
598 * testsuite/pr12826_1.s: Ditto.
599 * testsuite/pr12826_1.s: Ditto.
600
8dbe1edc
ILT
6012011-05-30 Ian Lance Taylor <iant@google.com>
602
603 * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
604 sections.
605
c49875be
ILT
6062011-05-29 Ian Lance Taylor <iant@google.com>
607
608 PR gold/12804
609 * testsuite/Makefile.am: Use different file name for two_file_test
610 temporary file for each incremental test.
611 * testsuite/Makefile.in: Rebuild.
612
69d53f7a
ILT
6132011-05-29 Ian Lance Taylor <iant@google.com>
614
615 * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
616 binary input file is empty.
617
41d0ab5f
ILT
6182011-05-27 Ian Lance Taylor <iant@google.com>
619
620 * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
621 (ver_test_9.so): Likewise.
622 * testsuite/Makefile.in: Rebuild.
623
89d8a36b
CC
6242011-05-26 Cary Coutant <ccoutant@google.com>
625
626 * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
627 * incremental.cc (Incremental_inputs::report_input_section): Fix
628 comment, indentation.
629 (Incremental_inputs::report_comdat_group): New function.
630 (Output_section_incremental_inputs::set_final_data_size): Adjust size
631 of data for incremental input file entry.
632 (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
633 group count, COMDAT group signatures.
634 (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
635 an unchanged input file.
636 * incremental.h (Incremental_object_entry::Incremental_object_entry):
637 Initialize new data member.
638 (Incremental_object_entry::add_comdat_group): New function.
639 (Incremental_object_entry::get_comdat_group_count): New function.
640 (Incremental_object_entry::get_comdat_signature_key): New function.
641 (Incremental_object_entry::groups_): New data member.
642 (Incremental_inputs::report_comdat_group): New function.
643 (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
644 data for incremental input file entry.
645 (Incremental_input_entry_reader::get_comdat_group_count): New function.
646 (Incremental_input_entry_reader::get_input_section): Adjust size of
647 data for incremental input file entry.
648 (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
649 (Incremental_input_entry_reader::get_comdat_group_signature): New
650 function.
651 * object.cc (Sized_relobj::include_section_group): Report kept
652 COMDAT groups for incremental links.
653
1706a06f
ILT
6542011-05-24 David Meyer <pdox@google.com>
655
656 * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
657 with name parameter. Add found_name parameter.
658 * fileread.cc (Input_file::find_file): Adjust code accordingly.
659 * dirsearch.h (class Dirsearch): Update declaration.
660
a10ae760
ILT
6612011-05-24 Ian Lance Taylor <iant@google.com>
662
663 * archive.cc (Library_base::should_include_member): Pull in object
664 from archive if it defines the entry symbol.
665 * parameters.cc (Parameters::entry): New function.
666 * parameters.h (class Parameters): Declare entry.
667 * output.h (class Output_file_header): Remove entry_ field.
668 * output.cc (Output_file_header::Output_file_header): Remove entry
669 parameter. Change all callers.
670 (Output_file_header::entry): Use parameters->entry.
671 * gold.cc (queue_middle_tasks): Likewise.
672 * plugin.cc (Plugin_hook::run): Likewise.
673
aa92d6ed
CC
6742011-05-24 Cary Coutant <ccoutant@google.com>
675
676 * gold.cc (queue_initial_tasks): Pass incremental base filename
677 to Output_file::open_base_file; don't print error message.
678 * incremental-dump.cc (main): Adjust call to
679 Output_file::open_for_modification.
680 * incremental-dump.cc (main): Likewise.
681 * incremental.cc (Incremental_inputs::report_command_line):
682 Ignore --incremental-base option when comparing command lines.
683 Ignore parameter when given as separate argument.
684 * options.h (class General_options): Add --incremental-base.
685 * output.cc (Output_file::Output_file):
686 (Output_file::open_base_file): Add base_name and writable parameters;
687 read base file into new file; print error message here.
688 (Output_file::map_no_anonymous): Add writable parameter; adjust all
689 callers.
690 * output.h (Output_file::open_for_modification): Rename to...
691 (Output_file::open_base_file): ...this; add base_name and
692 writable parameters; adjust all callers.
693 (Output_file::map_no_anonymous): Add writable parameter; adjust all
694 callers.
695 * testsuite/Makefile.am (incremental_test_4): Test
696 --incremental-base.
697 * testsuite/Makefile.in: Regenerate.
698
2eedd706
CC
6992011-05-24 Cary Coutant <ccoutant@google.com>
700
701 * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
702 incremental_test_4.
703 * testsuite/Makefile.in: Regenerate.
704 * testsuite/two_file_test_1_v1.cc: New test source file.
705 * testsuite/two_file_test_1b_v1.cc: New test source file.
706 * testsuite/two_file_test_2_v1.cc: New test source file.
707
0f1c85a6
CC
7082011-05-24 Cary Coutant <ccoutant@google.com>
709
710 * dynobj.h (Dynobj::do_dynobj): New function.
711 * incremental-dump.cc (dump_incremental_inputs): Print as_needed
712 flag and soname for shared objects.
713 * incremental.cc (Incremental_inputs::report_object): Make
714 either Incremental_object_entry or Incremental_dynobj_entry; add
715 soname to string table.
716 (Incremental_inputs::report_input_section): Add assertion.
717 (Output_section_incremental_inputs::set_final_data_size): Adjust
718 type of input file entry for shared libraries; adjust size of
719 shared library info entry.
720 (Output_section_incremental_inputs::write_input_files): Write
721 as_needed flag for shared libraries.
722 (Output_section_incremental_inputs::write_info_blocks): Adjust type
723 of input file entry for shared libraries; write soname.
724 (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
725 soname from incremental info.
726 * incremental.h (enum Incremental_input_flags): Add
727 INCREMENTAL_INPUT_AS_NEEDED.
728 (Incremental_input_entry::Incremental_input_entry): Initialize new
729 data member.
730 (Incremental_input_entry::set_as_needed): New function.
731 (Incremental_input_entry::as_needed): New function.
732 (Incremental_input_entry::do_dynobj_entry): New function.
733 (Incremental_input_entry::as_needed_): New data member.
734 (Incremental_object_entry::Incremental_object_entry): Don't check
735 for shared library.
736 (Incremental_object_entry::do_type): Likewise.
737 (class Incremental_dynobj_entry): New class.
738 (Incremental_input_entry_reader::as_needed): New function.
739 (Incremental_input_entry_reader::get_soname): New function.
740 (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
741 (Incremental_input_entry_reader::get_output_symbol_index): Adjust
742 size of shared library info entry.
743 * layout.cc (Layout::finish_dynamic_section): Don't test for
744 incremental link when adding DT_NEEDED entries.
745 * object.h (Object::Object): Initialize new data member.
746 (Object::dynobj): New function.
747 (Object::set_as_needed): New function.
748 (Object::as_needed): New function.
749 (Object::do_dynobj): New function.
750 (Object::as_needed_): New data member.
751
6fa2a40b
CC
7522011-05-24 Cary Coutant <ccoutant@google.com>
753
754 * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
755 info; adjust display of GOT entries.
756 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
757 vector of input objects; remove file_status_.
758 (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
759 (Sized_incremental_binary::do_process_got_plt): Adjust calls to
760 got_plt reader; call target hooks to reserve GOT entries.
761 (Output_section_incremental_inputs::set_final_data_size): Adjust size
762 of input file info header and GOT info entry.
763 (Output_section_incremental_inputs::write_info_blocks): Write dynamic
764 relocation info.
765 (Got_plt_view_info::got_descriptor): Remove.
766 (Got_plt_view_info::sym_index): New data member.
767 (Got_plt_view_info::input_index): New data member.
768 (Local_got_offset_visitor::visit): Write input file index.
769 (Global_got_offset_visitor::visit): Write 0 for input file index.
770 (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
771 with sym_index and input_index.
772 (Output_section_incremental_inputs::write_got_plt): Adjust size of
773 incremental info GOT entry; replace got_descriptor with input_index.
774 (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
775 map from input file index to object.
776 (Sized_relobj_incr::do_layout): Replace direct data member reference
777 with accessor function.
778 (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
779 * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
780 Adjust size of input file info header.
781 (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
782 (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
783 (Incremental_input_entry_reader::get_input_section): Adjust size of
784 input file info header.
785 (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
786 of incremental info GOT entry.
787 (Incremental_got_plt_reader::get_got_desc): Remove.
788 (Incremental_got_plt_reader::get_got_symndx): New function.
789 (Incremental_got_plt_reader::get_got_input_index): New function.
790 (Sized_incremental_binary::Sized_incremental_binary): Remove
791 file_status_; add input_objects_.
792 (Sized_incremental_binary::~Sized_incremental_binary): Remove.
793 (Sized_incremental_binary::set_file_is_unchanged): Remove.
794 (Sized_incremental_binary::file_is_unchanged): Remove.
795 (Sized_incremental_binary::set_input_object): New function.
796 (Sized_incremental_binary::input_object): New function.
797 (Sized_incremental_binary::file_status_): Remove.
798 (Sized_incremental_binary::input_objects_): New data member.
799 (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
800 references.
801 (Sized_relobj_incr::invalid_address): Move to base class.
802 (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
803 class.
804 (Sized_relobj_incr::do_output_section_offset): Likewise.
805 (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
806 (Sized_relobj_incr::section_offsets_): Likewise.
807 * object.cc (Sized_relobj::do_for_all_local_got_entries): New
808 function.
809 (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
810 (Sized_relobj_file::layout_section): Replace refs to section_offsets_
811 with accessor function.
812 (Sized_relobj_file::do_layout): Likewise.
813 (Sized_relobj_file::do_layout_deferred_sections): Likewise.
814 (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
815 (Sized_relobj_file::compute_final_local_value): Replace refs to
816 section_offsets_ with accessor function.
817 (Sized_relobj_file::do_finalize_local_symbols): Likewise.
818 * object.h (Relobj::Relobj): Initialize new data members.
819 (Relobj::add_dyn_reloc): New function.
820 (Relobj::first_dyn_reloc): New function.
821 (Relobj::dyn_reloc_count): New function.
822 (Relobj::first_dyn_reloc_): New data member.
823 (Relobj::dyn_reloc_count_): New data member.
824 (Sized_relobj): Rename Sized_relobj_base to this; adjust all
825 references.
826 (Sized_relobj::Address): New typedef.
827 (Sized_relobj::invalid_address): Move here from child class.
828 (Sized_relobj::Sized_relobj): Initialize new data members.
829 (Sized_relobj::sized_relobj): New function.
830 (Sized_relobj::is_output_section_offset_invalid): Move here from
831 child class.
832 (Sized_relobj::get_output_section_offset): Likewise.
833 (Sized_relobj::local_has_got_offset): Likewise.
834 (Sized_relobj::local_got_offset): Likewise.
835 (Sized_relobj::set_local_got_offset): Likewise.
836 (Sized_relobj::do_for_all_local_got_entries): Likewise.
837 (Sized_relobj::clear_got_offsets): New function.
838 (Sized_relobj::section_offsets): Move here from child class.
839 (Sized_relobj::do_output_section_offset): Likewise.
840 (Sized_relobj::do_set_section_offset): Likewise.
841 (Sized_relobj::Local_got_offsets): Likewise.
842 (Sized_relobj::local_got_offsets_): Likewise.
843 (Sized_relobj::section_offsets_): Likewise.
844 (Sized_relobj_file): Rename Sized_relobj to this; adjust all
845 references.
846 (Sized_relobj_file::is_output_section_offset_invalid): Move to base
847 class.
848 (Sized_relobj_file::sized_relobj): New function
849 (Sized_relobj_file::local_has_got_offset): Move to base class.
850 (Sized_relobj_file::local_got_offset): Likewise.
851 (Sized_relobj_file::set_local_got_offset): Likewise.
852 (Sized_relobj_file::get_output_section_offset): Likewise.
853 (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
854 (Sized_relobj_file::do_output_section_offset): Likewise.
855 (Sized_relobj_file::do_set_section_offset): Likewise.
856 (Sized_relobj_file::Local_got_offsets): Likewise.
857 (Sized_relobj_file::local_got_offsets_): Likewise.
858 (Sized_relobj_file::section_offsets_): Likewise.
859 * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
860 (all constructors).
861 (set_needs_dynsym_index): Convert relobj to derived class pointer.
862 (Output_reloc::get_symbol_index): Likewise.
863 (Output_reloc::local_section_offset): Likewise.
864 (Output_reloc::get_address): Likewise.
865 (Output_reloc::symbol_value): Likewise.
866 (Output_data_got::reserve_slot): Move to class definition.
867 (Output_data_got::reserve_local): New function.
868 (Output_data_got::reserve_slot_for_global): Remove.
869 (Output_data_got::reserve_global): New function.
870 * output.h (Output_reloc::Output_reloc): Adjust type of relobj
871 (all constructors, two instantiations).
872 (Output_reloc::get_relobj): New function (two instantiations).
873 (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
874 (Output_data_reloc_base::add): Convert relobj to derived class pointer.
875 (Output_data_reloc::add_global): Adjust type of relobj.
876 (Output_data_reloc::add_global_relative): Likewise.
877 (Output_data_reloc::add_symbolless_global_addend): Likewise.
878 (Output_data_reloc::add_local): Likewise.
879 (Output_data_reloc::add_local_relative): Likewise.
880 (Output_data_reloc::add_symbolless_local_addend): Likewise.
881 (Output_data_reloc::add_local_section): Likewise.
882 (Output_data_reloc::add_output_section): Likewise.
883 (Output_data_reloc::add_absolute): Likewise.
884 (Output_data_reloc::add_target_specific): Likewise.
885 (Output_data_got::reserve_slot): Move definition here.
886 (Output_data_got::reserve_local): New function.
887 (Output_data_got::reserve_global): New function.
888 * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
889 section_offsets_ with accessor function.
890 (Sized_relobj_file::write_sections): Likewise.
891 (Sized_relobj_file::do_relocate_sections): Likewise.
892 * target.h (Sized_target::reserve_local_got_entry): New function.
893 (Sized_target::reserve_global_got_entry): New function.
894 * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
895 (Target_x86_64::reserve_global_got_entry): New function.
896 (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
897
4829d394
CC
8982011-05-23 Cary Coutant <ccoutant@google.com>
899
900 * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
901 * incremental-dump.cc (dump_incremental_inputs): Mask high-order
902 bit when checking got_type.
903 * incremental.cc (Sized_incremental_binary::setup_readers):
904 Store symbol table and string table locations; initialize bit vector
905 of file status flags.
906 (Sized_incremental_binary::do_reserve_layout): Set bit flag for
907 unchanged files.
908 (Sized_incremental_binary::do_process_got_plt): New function.
909 (Sized_incremental_binary::get_symtab_view): Use stored locations.
910 (Output_section_incremental_inputs::set_final_data_size): Record
911 file index for each input file.
912 (Output_section_incremental_inputs::write_got_plt): Store file index
913 instead of input entry offset for each GOT entry.
914 * incremental.h
915 (Incremental_input_entry::Incremental_input_entry): Initialize new
916 data member.
917 (Incremental_input_entry::set_offset): Store file index.
918 (Incremental_input_entry::get_file_index): New function.
919 (Incremental_input_entry::file_index_): New data member.
920 (Incremental_binary::process_got_plt): New function.
921 (Incremental_binary::do_process_got_plt): New function.
922 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
923 data members.
924 (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
925 (Sized_incremental_binary::set_file_is_unchanged): New function.
926 (Sized_incremental_binary::file_is_unchanged): New function.
927 (Sized_incremental_binary::do_process_got_plt): New function.
928 (Sized_incremental_binary::file_status_): New data member.
929 (Sized_incremental_binary::main_symtab_loc_): New data member.
930 (Sized_incremental_binary::main_strtab_loc_): New data member.
931 * output.cc (Output_data_got::Got_entry::write): Add case
932 RESERVED_CODE.
933 (Output_data_got::add_global): Call add_got_entry.
934 (Output_data_got::add_global_plt): Likewise.
935 (Output_data_got::add_global_with_rel): Likewise.
936 (Output_data_got::add_global_with_rela): Likewise.
937 (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
938 (Output_data_got::add_global_pair_with_rela): Likewise.
939 (Output_data_got::add_local): Call add_got_entry.
940 (Output_data_got::add_local_plt): Likewise.
941 (Output_data_got::add_local_with_rel): Likewise.
942 (Output_data_got::add_local_with_rela): Likewise.
943 (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
944 (Output_data_got::add_local_pair_with_rela): Likewise.
945 (Output_data_got::reserve_slot): New function.
946 (Output_data_got::reserve_slot_for_global): New function.
947 (Output_data_got::add_got_entry): New function.
948 (Output_data_got::add_got_entry_pair): New function.
949 (Output_section::add_output_section_data): Edit FIXME.
950 * output.h
951 (Output_section_data_build::Output_section_data_build): New
952 constructor with size parameter.
953 (Output_data_space::Output_data_space): Likewise.
954 (Output_data_got::Output_data_got): Initialize new data member; new
955 constructor with size parameter.
956 (Output_data_got::add_constant): Call add_got_entry.
957 (Output_data_got::reserve_slot): New function.
958 (Output_data_got::reserve_slot_for_global): New function.
959 (class Output_data_got::Got_entry): Add RESERVED_CODE.
960 (Output_data_got::add_got_entry): New function.
961 (Output_data_got::add_got_entry_pair): New function.
962 (Output_data_got::free_list_): New data member.
963 * target.h (Sized_target::init_got_plt_for_update): New function.
964 (Sized_target::register_global_plt_entry): New function.
965 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
966 Initialize new data member; call init; add constructor with PLT count.
967 (Output_data_plt_x86_64::init): New function.
968 (Output_data_plt_x86_64::add_relocation): New function.
969 (Output_data_plt_x86_64::reserve_slot): New function.
970 (Output_data_plt_x86_64::free_list_): New data member.
971 (Target_x86_64::init_got_plt_for_update): New function.
972 (Target_x86_64::register_global_plt_entry): New function.
973 (Output_data_plt_x86_64::add_entry): Allocate from free list for
974 incremental updates.
975 (Output_data_plt_x86_64::add_relocation): New function.
976 * testsuite/object_unittest.cc (Object_test): Set default options.
977
ec69d6da
ILT
9782011-05-16 Ian Lance Taylor <iant@google.com>
979
980 * options.h (class General_options): Make -i a synonym for -r.
981
732e31de
ILT
9822011-05-16 Ian Lance Taylor <iant@google.com>
983
984 * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
985
403676b5
CC
9862011-05-10 Cary Coutant <ccoutant@google.com>
987
988 * object.cc (Sized_relobj::do_count_local_symbols): Check for
989 strip_all (-s).
990
5b7b7d6e
ILT
9912011-05-06 Ian Lance Taylor <iant@google.com>
992
993 * layout.cc (Layout::layout): If the output section flags change,
994 update the ordering.
995
f0f9babf
CC
9962011-04-25 Cary Coutant <ccoutant@google.com>
997
998 * incremental-dump.cc (dump_incremental_inputs): Print local
999 symbol info for each input file.
1000 * incremental.cc
1001 (Output_section_incremental_inputs::set_final_data_size): Add local
1002 symbol info to input file entries in incremental info.
1003 (Output_section_incremental_inputs::write_info_blocks): Likewise.
1004 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
1005 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
1006 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
1007 implementation.
1008 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
1009 (Sized_incr_relobj::do_relocate): Write the local symbols.
1010 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
1011 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
1012 Adjust size of input file header.
1013 (Incremental_inputs_reader::get_local_symbol_offset): New function.
1014 (Incremental_inputs_reader::get_local_symbol_count): New function.
1015 (Incremental_inputs_reader::get_input_section): Adjust size of input
1016 file header.
1017 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
1018 (Sized_incr_relobj::This): New typedef.
1019 (Sized_incr_relobj::sym_size): New const data member.
1020 (Sized_incr_relobj::Local_symbol): New struct.
1021 (Sized_incr_relobj::do_output_local_symbol_count): New function.
1022 (Sized_incr_relobj::do_local_symbol_offset): New function.
1023 (Sized_incr_relobj::local_symbol_count_): New data member.
1024 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
1025 (Sized_incr_relobj::local_symbol_index_): New data member.
1026 (Sized_incr_relobj::local_symbol_offset_): New data member.
1027 (Sized_incr_relobj::local_dynsym_offset_): New data member.
1028 (Sized_incr_relobj::local_symbols_): New data member.
1029 * object.h (Relobj::output_local_symbol_count): New function.
1030 (Relobj::local_symbol_offset): New function.
1031 (Relobj::do_output_local_symbol_count): New function.
1032 (Relobj::do_local_symbol_offset): New function.
1033 (Sized_relobj::do_output_local_symbol_count): New function.
1034 (Sized_relobj::do_local_symbol_offset): New function.
1035
d0a9ace3
ILT
10362011-04-22 Vladimir Simonov <sv@sw.ru>
1037
1038 * descriptors.cc (set_close_on_exec): New function.
1039 (Descriptors::open): Use set_close_on_exec.
1040 * output.cc (S_ISLNK): Define if not defined.
1041
94a3fc8b
CC
10422011-04-22 Cary Coutant <ccoutant@google.com>
1043
1044 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
1045 global symbol map.
1046 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
1047 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
1048 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
1049 relocations.
1050 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
1051 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
1052 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
1053 * incremental.h
1054 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
1055 function.
1056 (Incremental_binary::apply_incremental_relocs): New function.
1057 (Incremental_binary::do_apply_incremental_relocs): New function.
1058 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
1059 data member.
1060 (Sized_incremental_binary::add_global_symbol): New function.
1061 (Sized_incremental_binary::global_symbol): New function.
1062 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
1063 (Sized_incremental_binary::symbol_map_): New data member.
1064 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
1065 * target.h (Sized_target::apply_relocation): New function.
1066 * target-reloc.h (apply_relocation): New function.
1067 * x86_64.cc (Target_x86_64::apply_relocation): New function.
1068
c87e4302
DK
10692011-04-22 Doug Kwan <dougkwan@google.com>
1070
1071 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
1072 flag of a SHT_ARM_EXIDX section.
1073 * testsuite/Makefile.am (arm_exidx_test): New test rules.
1074 * testsuite/Makefile.in: Regenerate.
1075 * testsuite/arm_exidx_test.s: New file.
1076 * testsuite/arm_exidx_test.sh: Same.
1077
e7782cf6
CC
10782011-04-20 Cary Coutant <ccoutant@google.com>
1079
1080 PR gold/12689
1081 * archive.h (Incremental_archive_entry::Archive_member):
1082 Initialize arg_serial_ (second constructor).
1083
308ecdc7
ILT
10842011-04-17 Ian Lance Taylor <iant@google.com>
1085
1086 * object.cc (Relocate_info::location): Simplify location string.
1087 * errors.cc (Errors::error_at_location): Don't print program
1088 name.
1089 (Errors::warning_at_location): Likewise.
1090 (Errors::undefined_symbol): Likewise.
1091 * testsuite/debug_msg.sh: Update accordingly.
1092
bec5b579
CC
10932011-04-14 Cary Coutant <ccoutant@google.com>
1094
1095 * gold/layout.cc (Layout::symtab_section_offset): New function.
1096 * gold/layout.h (Layout::symtab_section_offset): New function.
1097 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
1098
88597d34
ILT
10992011-04-12 Ian Lance Taylor <iant@google.com>
1100
1101 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
1102 with MREMAP_MAYMOVE.
1103 * output.h (class Output_file): Add map_is_allocated_ field.
1104 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
1105 not available, provide stubs. If mremap is not available, #define
1106 it to gold_mremap.
1107 (MREMAP_MAYMOVE): Define if not defined.
1108 (Output_file::Output_file): Initialize map_is_allocated_.
1109 (Output_file::resize): Check map_is_allocated_.
1110 (Output_file::map_anonymous): If mmap fails, use malloc.
1111 (Output_file::unmap): Don't do anything for an anonymous map.
1112 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
1113 is not available, provide stubs.
1114 (File_read::View::~View): Use free rather than delete[].
1115 (File_read::make_view): Use malloc rather than new[]. If mmap
1116 fails, use malloc.
1117 (File_read::find_or_make_view): Use malloc rather than new[].
1118 * gold.h: Remove HAVE_REMAP code.
1119 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
1120 exists. Rename mremap to gold_mremap. If mmap is not available
1121 don't do anything.
1122 * configure, config.in: Rebuild.
1123
11e361bc
ILT
11242011-04-11 Ian Lance Taylor <iant@google.com>
1125
1126 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
1127 initialize local variable v.
1128
cdc29364
CC
11292011-04-11 Cary Coutant <ccoutant@google.com>
1130
1131 * archive.cc (Archive::include_member): Adjust call to
1132 report_object.
1133 (Add_archive_symbols::run): Track argument serial numbers.
1134 (Lib_group::include_member): Likewise.
1135 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
1136 * archive.h (Incremental_archive_entry::Archive_member):
1137 Initialize arg_serial_.
1138 (Archive_member::arg_serial_): New data member.
1139 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
1140 (Sized_dynobj::do_add_symbols): Track symbols when doing an
1141 incremental link.
1142 (Sized_dynobj::do_for_all_local_got_entries): New function.
1143 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
1144 function.
1145 * fileread.cc (get_mtime): New function.
1146 * fileread.h (get_mtime): New function.
1147 * gold.cc (queue_initial_tasks): Check for incremental update.
1148 (process_incremental_input): New function.
1149 (queue_middle_tasks): Don't force valid target for incremental
1150 update.
1151 * incremental-dump.cc (find_input_containing_global): Adjust
1152 size of symbol info entry.
1153 (dump_incremental_inputs): Dump argument serial number and
1154 in_system_directory flag; bias shndx by 1; print symbol names
1155 when dumping per-file symbol lists; use new symbol info readers.
1156 * incremental.cc
1157 (Output_section_incremental_inputs:update_data_size): New function.
1158 (Sized_incremental_binary::setup_readers): Setup input readers
1159 for each input file; build maps for files added from libraries
1160 and scripts.
1161 (Sized_incremental_binary::check_input_args): New function.
1162 (Sized_incremental_binary::do_check_inputs): Build map of argument
1163 serial numbers to input arguments.
1164 (Sized_incremental_binary::do_file_has_changed): Rename
1165 do_file_is_unchanged to this; compare file modification times.
1166 (Sized_incremental_binary::do_init_layout): New function.
1167 (Sized_incremental_binary::do_reserve_layout): New function.
1168 (Sized_incremental_binary::do_get_input_reader): Remove.
1169 (Sized_incremental_binary::get_symtab_view): New function.
1170 (Incremental_checker::can_incrementally_link_output_file): Remove.
1171 (Incremental_inputs::report_command_line): Exclude --debug options.
1172 (Incremental_inputs::report_archive_begin): Add parameter; track
1173 argument serial numbers; don't put input file entry for archive
1174 before archive members.
1175 (Incremental_inputs::report_archive_end): Put input file entry
1176 for archive after archive members.
1177 (Incremental_inputs::report_object): Add parameter; track argument
1178 serial numbers and in_system_directory flag.
1179 (Incremental_inputs::report_script): Add parameter; track argument
1180 serial numbers.
1181 (Output_section_incremental_inputs::set_final_data_size): Adjust
1182 size of symbol info entry; check for forwarding symbols.
1183 (Output_section_incremental_inputs::write_input_files): Write
1184 in_system_directory flag and argument serial number.
1185 (Output_section_incremental_inputs::write_info_blocks): Map section
1186 indices between incremental info and original input file; store
1187 input section index for each symbol.
1188 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
1189 change operator() to visit().
1190 (class Global_got_offset_visitor): Likewise.
1191 (class Global_symbol_visitor_got_plt):
1192 (Output_section_incremental_inputs::write_got_plt): Use new visitor
1193 classes.
1194 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
1195 (Sized_incr_relobj::do_read_symbols): New function.
1196 (Sized_incr_relobj::do_layout): New function.
1197 (Sized_incr_relobj::do_layout_deferred_sections): New function.
1198 (Sized_incr_relobj::do_add_symbols): New function.
1199 (Sized_incr_relobj::do_should_include_member): New function.
1200 (Sized_incr_relobj::do_for_all_global_symbols): New function.
1201 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
1202 (Sized_incr_relobj::do_section_size): New function.
1203 (Sized_incr_relobj::do_section_name): New function.
1204 (Sized_incr_relobj::do_section_contents): New function.
1205 (Sized_incr_relobj::do_section_flags): New function.
1206 (Sized_incr_relobj::do_section_entsize): New function.
1207 (Sized_incr_relobj::do_section_address): New function.
1208 (Sized_incr_relobj::do_section_type): New function.
1209 (Sized_incr_relobj::do_section_link): New function.
1210 (Sized_incr_relobj::do_section_info): New function.
1211 (Sized_incr_relobj::do_section_addralign): New function.
1212 (Sized_incr_relobj::do_initialize_xindex): New function.
1213 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
1214 (Sized_incr_relobj::do_read_relocs): New function.
1215 (Sized_incr_relobj::do_gc_process_relocs): New function.
1216 (Sized_incr_relobj::do_scan_relocs): New function.
1217 (Sized_incr_relobj::do_count_local_symbols): New function.
1218 (Sized_incr_relobj::do_finalize_local_symbols): New function.
1219 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
1220 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
1221 (Sized_incr_relobj::do_relocate): New function.
1222 (Sized_incr_relobj::do_set_section_offset): New function.
1223 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
1224 (Sized_incr_dynobj::do_read_symbols): New function.
1225 (Sized_incr_dynobj::do_layout): New function.
1226 (Sized_incr_dynobj::do_add_symbols): New function.
1227 (Sized_incr_dynobj::do_should_include_member): New function.
1228 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
1229 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
1230 (Sized_incr_dynobj::do_section_size): New function.
1231 (Sized_incr_dynobj::do_section_name): New function.
1232 (Sized_incr_dynobj::do_section_contents): New function.
1233 (Sized_incr_dynobj::do_section_flags): New function.
1234 (Sized_incr_dynobj::do_section_entsize): New function.
1235 (Sized_incr_dynobj::do_section_address): New function.
1236 (Sized_incr_dynobj::do_section_type): New function.
1237 (Sized_incr_dynobj::do_section_link): New function.
1238 (Sized_incr_dynobj::do_section_info): New function.
1239 (Sized_incr_dynobj::do_section_addralign): New function.
1240 (Sized_incr_dynobj::do_initialize_xindex): New function.
1241 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
1242 (make_sized_incremental_object): New function.
1243 (Incremental_library::copy_unused_symbols): New function.
1244 (Incremental_library::do_for_all_unused_symbols): New function.
1245 * incremental.h (enum Incremental_input_flags): New type.
1246 (class Incremental_checker): Remove.
1247 (Incremental_input_entry::Incremental_input_entry): Add argument
1248 serial number.
1249 (Incremental_input_entry::arg_serial): New function.
1250 (Incremental_input_entry::set_is_in_system_directory): New function.
1251 (Incremental_input_entry::is_in_system_directory): New function.
1252 (Incremental_input_entry::arg_serial_): New data member.
1253 (Incremental_input_entry::is_in_system_directory_): New data member.
1254 (class Script_info): Move here from script.h.
1255 (Script_info::Script_info): Add filename parameter.
1256 (Script_info::filename): New function.
1257 (Script_info::filename_): New data member.
1258 (Incremental_script_entry::Incremental_script_entry): Add argument
1259 serial number.
1260 (Incremental_object_entry::Incremental_object_entry): Likewise.
1261 (Incremental_object_entry::add_input_section): Build list of input
1262 sections with map to original shndx.
1263 (Incremental_object_entry::get_input_section_index): New function.
1264 (Incremental_object_entry::shndx_): New data member.
1265 (Incremental_object_entry::name_key_): Rename; adjust all refs.
1266 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
1267 (Incremental_archive_entry::Incremental_archive_entry): Add argument
1268 serial number.
1269 (Incremental_inputs::report_archive_begin): Likewise.
1270 (Incremental_inputs::report_object): Likewise.
1271 (Incremental_inputs::report_script): Likewise.
1272 (class Incremental_global_symbol_reader): New class.
1273 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
1274 and store flags and input file type.
1275 (Incremental_input_entry_reader::arg_serial): New function.
1276 (Incremental_input_entry_reader::type): Extract type from flags.
1277 (Incremental_input_entry_reader::is_in_system_directory): New function.
1278 (Incremental_input_entry_reader::get_input_section_count): Call
1279 accessor function for type.
1280 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
1281 function for type; adjust size of global symbol entry.
1282 (Incremental_input_entry_reader::get_global_symbol_count): Call
1283 accessor function for type.
1284 (Incremental_input_entry_reader::get_object_count): Likewise.
1285 (Incremental_input_entry_reader::get_object_offset): Likewise.
1286 (Incremental_input_entry_reader::get_member_count): Likewise.
1287 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
1288 (Incremental_input_entry_reader::get_member_offset): Likewise.
1289 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
1290 (Incremental_input_entry_reader::Global_symbol_info): Remove.
1291 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
1292 (Incremental_input_entry_reader::get_global_symbol_reader): New
1293 function.
1294 (Incremental_input_entry_reader::get_output_symbol_index): New
1295 function.
1296 (Incremental_input_entry_reader::type_): Remove.
1297 (Incremental_input_entry_reader::flags_): New data member.
1298 (Incremental_inputs_reader::input_file_offset): New function.
1299 (Incremental_inputs_reader::input_file_index): New function.
1300 (Incremental_inputs_reader::input_file): Call input_file_offset.
1301 (Incremental_inputs_reader::input_file_at_offset): New function.
1302 (Incremental_relocs_reader::get_r_type): Reformat.
1303 (Incremental_relocs_reader::get_r_shndx): Reformat.
1304 (Incremental_relocs_reader::get_r_offset): Reformat.
1305 (Incremental_relocs_reader::data): New function.
1306 (Incremental_binary::Incremental_binary): Initialize new data members.
1307 (Incremental_binary::check_inputs): Add cmdline parameter.
1308 (Incremental_binary::file_is_unchanged): Remove.
1309 (Input_reader::arg_serial): New function.
1310 (Input_reader::get_unused_symbol_count): New function.
1311 (Input_reader::get_unused_symbol): New function.
1312 (Input_reader::do_arg_serial): New function.
1313 (Input_reader::do_get_unused_symbol_count): New function.
1314 (Input_reader::do_get_unused_symbol): New function.
1315 (Incremental_binary::input_file_count): New function.
1316 (Incremental_binary::get_input_reader): Change signature to use
1317 index instead of filename.
1318 (Incremental_binary::file_has_changed): New function.
1319 (Incremental_binary::get_input_argument): New function.
1320 (Incremental_binary::get_library): New function.
1321 (Incremental_binary::get_script_info): New function.
1322 (Incremental_binary::init_layout): New function.
1323 (Incremental_binary::reserve_layout): New function.
1324 (Incremental_binary::output_file): New function.
1325 (Incremental_binary::do_check_inputs): New function.
1326 (Incremental_binary::do_file_is_unchanged): Remove.
1327 (Incremental_binary::do_file_has_changed): New function.
1328 (Incremental_binary::do_init_layout): New function.
1329 (Incremental_binary::do_reserve_layout): New function.
1330 (Incremental_binary::do_input_file_count): New function.
1331 (Incremental_binary::do_get_input_reader): Change signature.
1332 (Incremental_binary::input_args_map_): New data member.
1333 (Incremental_binary::library_map_): New data member.
1334 (Incremental_binary::script_map_): New data member.
1335 (Sized_incremental_binary::Sized_incremental_binary): Initialize
1336 new data members.
1337 (Sized_incremental_binary::output_section): New function.
1338 (Sized_incremental_binary::inputs_reader): Add const.
1339 (Sized_incremental_binary::symtab_reader): Add const.
1340 (Sized_incremental_binary::relocs_reader): Add const.
1341 (Sized_incremental_binary::got_plt_reader): Add const.
1342 (Sized_incremental_binary::get_symtab_view): New function.
1343 (Sized_incremental_binary::Inputs_reader): New typedef.
1344 (Sized_incremental_binary::Input_entry_reader): New typedef.
1345 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
1346 (Sized_incremental_binary::do_file_is_unchanged): Remove.
1347 (Sized_incremental_binary::do_file_has_changed): New function.
1348 (Sized_incremental_binary::do_init_layout): New function.
1349 (Sized_incremental_binary::do_reserve_layout): New function.
1350 (Sized_input_reader::Inputs_reader): Remove.
1351 (Sized_input_reader::Input_entry_reader): Remove.
1352 (Sized_input_reader::do_arg_serial): New function.
1353 (Sized_input_reader::do_get_unused_symbol_count): New function.
1354 (Sized_input_reader::do_get_unused_symbol): New function.
1355 (Sized_incremental_binary::do_input_file_count): New function.
1356 (Sized_incremental_binary::do_get_input_reader): Change signature;
1357 use index instead of filename.
1358 (Sized_incremental_binary::section_map_): New data member.
1359 (Sized_incremental_binary::input_entry_readers_): New data member.
1360 (class Sized_incr_relobj): New class.
1361 (class Sized_incr_dynobj): New class.
1362 (make_sized_incremental_object): New function.
1363 (class Incremental_library): New class.
1364 * layout.cc (Free_list::num_lists): New static data member.
1365 (Free_list::num_nodes): New static data member.
1366 (Free_list::num_removes): New static data member.
1367 (Free_list::num_remove_visits): New static data member.
1368 (Free_list::num_allocates): New static data member.
1369 (Free_list::num_allocate_visits): New static data member.
1370 (Free_list::init): New function.
1371 (Free_list::remove): New function.
1372 (Free_list::allocate): New function.
1373 (Free_list::dump): New function.
1374 (Free_list::print_stats): New function.
1375 (Layout_task_runner::run): Resize output file for incremental updates.
1376 (Layout::Layout): Initialize new data members.
1377 (Layout::set_incremental_base): New function.
1378 (Layout::init_fixed_output_section): New function.
1379 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
1380 incremental updates.
1381 (Layout::create_gold_note): Do not create gold note section for
1382 incremental updates.
1383 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
1384 for incremental updates.
1385 (Layout::set_section_offsets): For incremental updates, allocate space
1386 from free list.
1387 (Layout::create_symtab_sections): Layout with offsets relative to
1388 start of section; for incremental updates, allocate space from free
1389 list.
1390 (Layout::create_shdrs): For incremental updates, allocate space from
1391 free list.
1392 (Layout::finish_dynamic_section): For incremental updates, do not
1393 check --as-needed (fixed in subsequent patch).
1394 * layout.h (class Free_list): New class.
1395 (Layout::set_incremental_base): New function.
1396 (Layout::incremental_base): New function.
1397 (Layout::init_fixed_output_section): New function.
1398 (Layout::allocate): New function.
1399 (Layout::incremental_base_): New data member.
1400 (Layout::free_list_): New data member.
1401 * main.cc (main): Print Free_list statistics.
1402 * object.cc (Relobj::finalize_incremental_relocs): Add
1403 clear_counts parameter; clear counts only when clear_counts is set.
1404 (Sized_relobj::Sized_relobj): Initialize new base class.
1405 (Sized_relobj::do_layout): Don't report special sections.
1406 (Sized_relobj::do_for_all_local_got_entries): New function.
1407 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
1408 symtab_off to all symbol table offsets.
1409 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
1410 * object.h (class Got_offset_list): Move to top of file.
1411 (Object::Object): Allow case where input_file == NULL.
1412 (Object::~Object): Likewise.
1413 (Object::input_file): Assert that input_file != NULL.
1414 (Object::lock): Allow case where input_file == NULL.
1415 (Object::unlock): Likewise.
1416 (Object::is_locked): Likewise.
1417 (Object::token): Likewise.
1418 (Object::release): Likewise.
1419 (Object::is_incremental): New function.
1420 (Object::get_mtime): New function.
1421 (Object::for_all_local_got_entries): New function.
1422 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
1423 (Object::set_is_in_system_directory): New function.
1424 (Object::is_in_system_directory): New function.
1425 (Object::do_is_incremental): New function.
1426 (Object::do_get_mtime): New function.
1427 (Object::do_for_all_local_got_entries): New function.
1428 (Object::is_in_system_directory_): New data member.
1429 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
1430 (class Sized_relobj_base): New class.
1431 (class Sized_relobj): Derive from Sized_relobj_base.
1432 (class Sized_relobj::Symbols): Redeclare from base class.
1433 (class Sized_relobj::local_got_offset_list): Remove.
1434 (class Sized_relobj::Output_sections): Redeclare from base class.
1435 (class Sized_relobj::do_for_all_local_got_entries): New function.
1436 (class Sized_relobj::write_local_symbols): Add offset parameter.
1437 (class Sized_relobj::local_symbol_offset_): Update comment.
1438 (class Sized_relobj::local_dynsym_offset_): Update comment.
1439 * options.cc (Input_arguments::add_file): Remove const.
1440 * options.h (Input_file_argument::Input_file_argument):
1441 Initialize arg_serial_ (all constructors).
1442 (Input_file_argument::set_arg_serial): New function.
1443 (Input_file_argument::arg_serial): New function.
1444 (Input_file_argument::arg_serial_): New data member.
1445 (Input_arguments::Input_arguments): Initialize file_count_.
1446 (Input_arguments::add_file): Remove const.
1447 (Input_arguments::number_of_input_files): New function.
1448 (Input_arguments::file_count_): New data member.
1449 (Command_line::number_of_input_files): Call
1450 Input_arguments::number_of_input_files.
1451 * output.cc (Output_segment_headers::Output_segment_headers):
1452 Set current size.
1453 (Output_section::Input_section::current_data_size): New function.
1454 (Output_section::Output_section): Initialize new data members.
1455 (Output_section::add_input_section): Don't do merge sections for
1456 an incremental link; allocate space from free list for an
1457 incremental update.
1458 (Output_section::add_output_section_data): Allocate space from
1459 free list for an incremental update.
1460 (Output_section::update_data_size): New function.
1461 (Output_section::set_fixed_layout): New function.
1462 (Output_section::reserve): New function.
1463 (Output_segment::set_section_addresses): Remove const.
1464 (Output_segment::set_section_list_addresses): Remove const; allocate
1465 space from free list for an incremental update.
1466 (Output_segment::set_offset): Adjust size of RELRO segment for an
1467 incremental update.
1468 * output.h (Output_data::current_data_size): Move here from
1469 child classes.
1470 (Output_data::pre_finalize_data_size): New function.
1471 (Output_data::update_data_size): New function.
1472 (Output_section_headers::update_data_size): new function.
1473 (Output_section_data_build::current_data_size): Move to Output_data.
1474 (Output_data_strtab::update_data_size): New function.
1475 (Output_section::current_data_size): Move to Output_data.
1476 (Output_section::set_fixed_layout): New function.
1477 (Output_section::has_fixed_layout): New function.
1478 (Output_section::reserve): New function.
1479 (Output_section::update_data_size): New function.
1480 (Output_section::has_fixed_layout_): New data member.
1481 (Output_section::free_list_): New data member.
1482 (Output_segment::set_section_addresses): Remove const.
1483 (Output_segment::set_section_list_addresses): Remove const.
1484 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
1485 New function.
1486 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
1487 New function.
1488 * readsyms.cc (Read_symbols::do_read_symbols): Add library
1489 parameter when calling Add_symbols constructor; store argument
1490 serial number for members of a lib group.
1491 (Add_symbols::locks): Allow case where token == NULL.
1492 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
1493 (Read_member::~Read_member): New function.
1494 (Read_member::is_runnable): New function.
1495 (Read_member::locks): New function.
1496 (Read_member::run): New function.
1497 (Check_script::~Check_script): New function.
1498 (Check_script::is_runnable): New function.
1499 (Check_script::locks): New function.
1500 (Check_script::run): New function.
1501 (Check_library::~Check_library): New function.
1502 (Check_library::is_runnable): New function.
1503 (Check_library::locks): New function.
1504 (Check_library::run): New function.
1505 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
1506 (Add_symbols::library_): New data member.
1507 (class Read_member): New class.
1508 (class Check_script): New class.
1509 (class Check_library): New class.
1510 * reloc.cc (Read_relocs::is_runnable): Allow case where
1511 token == NULL.
1512 (Read_relocs::locks): Likewise.
1513 (Scan_relocs::locks): Likewise.
1514 (Relocate_task::locks): Likewise.
1515 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
1516 to clear counters.
1517 (Sized_relobj::incremental_relocs_scan): Fix comment.
1518 (Sized_relobj::do_relocate): Pass output file offset to
1519 write_local_symbols.
1520 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
1521 from class declaration.
1522 * script.cc (read_input_script): Allocate Script_info; pass
1523 argument serial number to report_script.
1524 * script.h (class Script_info): Move to incremental.h.
1525 * symtab.cc (Symbol_table::add_from_incrobj): New function.
1526 * symtab.h (Symbol_table::add_from_incrobj): New function.
1527 (Symbol_table::set_file_offset): New function.
1528
b961d0d7
CC
15292011-04-05 Cary Coutant <ccoutant@google.com>
1530
1531 * incremental-dump.cc (dump_incremental_inputs): Change signature
1532 to take a Sized_incremental_binary; change caller. Use readers
1533 in Sized_incremental_binary.
1534 * incremental.cc
1535 (Sized_incremental_binary::find_incremental_inputs_sections):
1536 Rename do_find_incremental_inputs_sections to this.
1537 (Sized_incremental_binary::setup_readers): New function.
1538 (Sized_incremental_binary::do_check_inputs): Check
1539 has_incremental_info_ flag; move setup code to setup_readers;
1540 use input readers.
1541 (Sized_incremental_binary::do_file_is_unchanged): New function.
1542 (Sized_incremental_binary::do_get_input_reader): New function.
1543 * incremental.h (class Incremental_binary): Move to end of file.
1544 (Incremental_binary::file_is_unchanged): New function.
1545 (Incremental_binary::do_file_is_unchanged): New function.
1546 (Incremental_binary::Input_reader): New class.
1547 (Incremental_binary::get_input_reader): New function.
1548 (class Sized_incremental_binary): Move to end of file.
1549 (Sized_incremental_binary::Sized_incremental_binary): Setup the
1550 input section reader classes.
1551 (Sized_incremental_binary::has_incremental_info): New function.
1552 (Sized_incremental_binary::inputs_reader): New function.
1553 (Sized_incremental_binary::symtab_reader): New function.
1554 (Sized_incremental_binary::relocs_reader): New function.
1555 (Sized_incremental_binary::got_plt_reader): New function.
1556 (Sized_incremental_binary::do_file_is_unchanged): New function.
1557 (Sized_incremental_binary::Sized_input_reader): New class.
1558 (Sized_incremental_binary::get_input_reader): New function.
1559 (Sized_incremental_binary::find_incremental_inputs_sections):
1560 Rename do_find_incremental_inputs_sections to this.
1561 (Sized_incremental_binary::setup_readers): New function.
1562 (Sized_incremental_binary::has_incremental_info_): New data member.
1563 (Sized_incremental_binary::inputs_reader_): New data member.
1564 (Sized_incremental_binary::symtab_reader_): New data member.
1565 (Sized_incremental_binary::relocs_reader_): New data member.
1566 (Sized_incremental_binary::got_plt_reader_): New data member.
1567 (Sized_incremental_binary::current_input_file_): New data member.
1568
a869183f
PP
15692011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
1570
1571 PR gold/12640
1572 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
1573 violation.
1574
15752011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
1576
1577 * archive.cc (Archive::include_member): Adjust call to report_object.
1578 (Add_archive_symbols::run): Add script_info to call to
1579 report_archive_begin.
1580 (Lib_group::include_member): Adjust call to report_object.
1581 (Add_lib_group_symbols::run): Adjust call to report_object.
1582 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
1583 blocks. Add object count for script input files.
1584 * incremental.cc (Incremental_inputs::report_archive_begin): Add
1585 script_info parameter; change all callers.
1586 (Incremental_inputs::report_object): Add script_info parameter;
1587 change all callers.
1588 (Incremental_inputs::report_script): Store backpointer to
1589 incremental info entry.
1590 (Output_section_incremental_inputs::set_final_data_size): Record
1591 additional information for scripts.
1592 (Output_section_incremental_inputs::write_info_blocks): Likewise.
1593 * incremental.h (Incremental_script_entry::add_object): New function.
1594 (Incremental_script_entry::get_object_count): New function.
1595 (Incremental_script_entry::get_object): New function.
1596 (Incremental_script_entry::objects_): New data member; adjust
1597 constructor.
1598 (Incremental_inputs::report_archive_begin): Add script_info parameter.
1599 (Incremental_inputs::report_object): Add script_info parameter.
1600 (Incremental_inputs_reader::get_object_count): New function.
1601 (Incremental_inputs_reader::get_object_offset): New function.
1602 * options.cc (Input_arguments::add_file): Return reference to
1603 new input argument.
1604 * options.h (Input_argument::set_script_info): New function.
1605 (Input_argument::script_info): New function.
1606 (Input_argument::script_info_): New data member; adjust all
1607 constructors.
1608 (Input_file_group::add_file): Return reference to new input argument.
1609 (Input_file_lib::add_file): Likewise.
1610 (Input_arguments::add_file): Likewise.
1611 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
1612 * script.cc (Parser_closure::Parser_closure): Add script_info
1613 parameter; adjust all callers.
1614 (Parser_closure::script_info): New function.
1615 (Parser_closure::script_info_): New data member.
1616 (read_input_script): Report scripts earlier to incremental info.
1617 (script_add_file): Set script_info in Input_argument.
1618 (script_add_library): Likewise.
1619 * script.h (Script_options::Script_info): Rewrite class.
1620
a869183f 16212011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
1622
1623 * archive.cc (Library_base::should_include_member): Move
1624 method here from class Archive.
1625 (Archive::Archive): Initialize base class.
1626 (Archive::should_include_member): Move to base class.
1627 (Archive::do_for_all_unused_symbols): New function.
1628 (Add_archive_symbols::run): Remove redundant access to
1629 incremental_inputs.
1630 (Lib_group::Lib_group): Initialize base class.
1631 (Lib_group::do_filename): New function.
1632 (Lib_group::include_member): Pass pointer to Lib_group to
1633 report_object.
1634 (Lib_group::do_for_all_unused_symbols): New function.
1635 (Add_lib_group_symbols::run): Report archive information for
1636 incremental links.
1637 * archive.h (class Library_base): New base class.
1638 (class Archive): Derive from Library_base.
1639 (Archive::filename): Move to base class.
1640 (Archive::set_incremental_info): Likewise.
1641 (Archive::incremental_info): Likewise.
1642 (Archive::Should_include): Likewise.
1643 (Archive::should_include_member): Likewise.
1644 (Archive::Armap_entry): Remove.
1645 (Archive::Unused_symbol_iterator): Remove.
1646 (Archive::unused_symbols_begin): Remove.
1647 (Archive::unused_symbols_end): Remove.
1648 (Archive::do_filename): New function.
1649 (Archive::do_get_mtime): New function.
1650 (Archive::do_for_all_unused_symbols): New function.
1651 (Archive::task_): Move to base class.
1652 (Archive::incremental_info_): Likewise.
1653 (class Lib_group): Derive from Library_base.
1654 (Lib_group::do_filename): New function.
1655 (Lib_group::do_get_mtime): New function.
1656 (Lib_group::do_for_all_unused_symbols): New function.
1657 (Lib_group::task_): Move to base class.
1658 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
1659 function.
1660 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
1661 function.
1662 * incremental.cc (Incremental_inputs::report_archive_begin):
1663 Use Library_base; call library's get_mtime; add incremental inputs
1664 entry before members.
1665 (class Unused_symbol_visitor): New class.
1666 (Incremental_inputs::report_archive_end): Use Library_base; use
1667 visitor class to record unused symbols; don't add incremental inputs
1668 entry after members.
1669 (Incremental_inputs::report_object): Use Library_base.
1670 * incremental.h
1671 (Incremental_archive_entry::Incremental_archive_entry): Remove
1672 unused Archive parameter.
1673 (Incremental_inputs::report_archive_begin): Use Library_base.
1674 (Incremental_inputs::report_archive_end): Likewise.
1675 (Incremental_inputs::report_object): Likewise.
1676 * object.cc (Sized_relobj::do_for_all_global_symbols): New
1677 function.
1678 * object.h (Object::for_all_global_symbols): New function.
1679 (Object::do_for_all_global_symbols): New function.
1680 (Sized_relobj::do_for_all_global_symbols): New function.
1681 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
1682 function.
1683 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
1684 function.
1685
61ab3e40
ILT
16862011-03-27 Ian Lance Taylor <iant@google.com>
1687
1688 * archive.cc (Archive::interpret_header): Return -1 if something
1689 goes wrong. Change callers accordingly.
1690
30e1f9e6
CC
16912011-03-25 Cary Coutant <ccoutant@google.com>
1692
1693 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
1694 * testsuite/Makefile.in: Regenerate.
1695
9c793f14
RÁE
16962010-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
1697
1698 * plugin.cc (get_view): New.
1699 (Plugin::load): Pass get_view to the plugin.
1700 (Plugin_manager::get_view): New.
1701
9312bb0a
ILT
17022011-03-21 Ian Lance Taylor <iant@google.com>
1703
1704 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 1705 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 1706
7e12ba9e
ST
17072011-03-21 Sriraman Tallam <tmsriram@google.com>
1708
1709 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
1710 Change == to -eq.
1711 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
1712 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
1713 Change == to -eq.
1714 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
1715 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
1716
fd7a005d
ILT
17172011-03-14 Ian Lance Taylor <iant@google.com>
1718
1719 * script-sections.cc (Sort_output_sections::script_compare):
1720 Rename from is_before, change return type.
1721 (Sort_output_sections::operator()): Adjust accordingly.
1722
ed16fd1b
ILT
17232011-03-11 Jeffrey Yasskin <jyasskin@google.com>
1724
1725 PR gold/12572
1726 * testsuite/odr_violation2.cc: Add comment to make all error line
1727 numbers double digits.
1728 * testsuite/debug_msg.sh: Adjust expected errors.
1729
71ff8986
ILT
17302011-03-09 Jeffrey Yasskin <jyasskin@google.com>
1731
1732 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
1733 but mark earlier ones as non-canonical
1734 (offset_to_iterator): Update search target and example
1735 (do_addr2line): Return extra lines in a vector*
1736 (format_file_lineno): Extract from do_addr2line
1737 (one_addr2line): Add vector* out-param
1738 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
1739 when a lineno entry appeared last for its instruction
1740 (Dwarf_line_info): Add vector* out-param
1741 * object.cc (Relocate_info): Pass NULL for the vector* out-param
1742 * symtab.cc (Odr_violation_compare): Include the lineno in the
1743 comparison again.
1744 (linenos_from_loc): New. Combine the canonical line for an
1745 address with its other lines.
1746 (True_if_intersect): New. Helper functor to make
1747 std::set_intersection a query.
1748 (detect_odr_violations): Compare sets of lines instead of just
1749 one line for each function. This became less deterministic, but
1750 has fewer false positives.
1751 * symtab.h: Declarations.
1752 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
1753 mix an optimized and non-optimized object in the same binary
1754 (odr_violation2.so): Same.
1755 * testsuite/Makefile.in: Regenerate from Makefile.am.
1756 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
1757 * testsuite/debug_msg.sh: Update line numbers and add
1758 assertions.
1759 * testsuite/odr_violation1.cc: Use OdrDerived, in a
1760 non-optimized context.
1761 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
1762 isn't inlined, and use OdrDerived in an optimized context.
1763 * testsuite/odr_header1.h: Defines OdrDerived, where
1764 optimization will change the
1765 first-instruction-in-the-destructor's file and line number.
1766 * testsuite/odr_header2.h: Defines OdrBase.
1767
a19fefdc
ILT
17682011-03-09 Ian Lance Taylor <iant@google.com>
1769
1770 * fileread.cc (File_read::clear_views): Don't delete the whole
1771 file view.
1772
ecb351e9
ILT
17732011-03-08 Ian Lance Taylor <iant@google.com>
1774
1775 PR gold/12525
1776 * fileread.cc: #include <climits>.
1777 (GOLD_IOV_MAX): Define.
1778 (File_read::read_multiple): Limit number of entries by iov_max.
1779 * fileread.h (class File_read): Always set max_readv_entries to
1780 128.
1781
b821d13c
ILT
17822011-03-07 Ian Lance Taylor <iant@google.com>
1783
1784 PR gold/12525
1785 * options.h (class General_options): Add -dy and -dn.
1786
89243142
CC
17872011-03-02 Cary Coutant <ccoutant@google.com>
1788
1789 * testsuite/script_test_9.t: Add TLS segment.
1790
d0773f31
ILT
17912011-03-02 Simon Baldwin <simonb@google.com>
1792
1793 * configure.ac: Add check for gnu_indirect_function support in
1794 the toolchain building binutils.
1795 * configure: Rebuild.
1796
badc8139
RÁE
17972010-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
1798
1799 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
1800 plugin only symbols.
1801 (Symbol_table::sized_finalize_symbol) Mark symbol only present
1802 in plugin files as not needed in the symbol table.
1803
4cf7a849
ST
18042011-02-11 Sriraman Tallam <tmsriram@google.com>
1805
1806 * output.cc (Output_section::add_input_section): Delay fill
1807 generation for section ordering.
1808
b578bd7d
ILT
18092011-02-09 Ian Lance Taylor <iant@google.com>
1810
1811 PR gold/12316
1812 * object.h (class Sized_relobj): Remove clear_local_symbols.
1813 * reloc.cc (Sized_relobj::do_relocate): Don't call
1814 clear_local_symbols.
1815
84ced98a
RÁE
18162010-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
1817
1818 * plugin.cc (is_visible_from_outside): Return true for symbols
1819 in the -u option.
1820
55382fb7
ILT
18212011-02-04 Jeffrey Yasskin <jyasskin@google.com>
1822
1823 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
1824 filename.
1825
4e271fff
ST
18262011-02-02 Sriraman Tallam <tmsriram@google.com>
1827
1828 * icf.h (is_section_foldable_candidate): Change type of parameter
1829 to std::string.
1830 * icf.cc (Icf::find_identical_sections): Change type of local variable
1831 section_name to be std::string.
1832 (is_function_ctor_or_dtor): Change type of parameter to std::string.
1833
d433c3ac
ILT
18342011-01-25 Ian Lance Taylor <iant@google.com>
1835
1836 * script.cc (script_add_extern): Rewrite to use
1837 add_symbol_reference.
1838
880473a6
DK
18392011-01-25 Doug Kwan <dougkwan@google.com>
1840
d433c3ac 1841 * icf.cc (get_section_contents): Always lock section's object.
880473a6 1842
f30f86fa
ILT
18432011-01-24 Ian Lance Taylor <iant@google.com>
1844
1845 * options.h (class General_options): Accept
1846 --no-detect-odr-violations.
1847
8e51a0b9
ILT
18482011-01-24 Ian Lance Taylor <iant@google.com>
1849
1850 * version.cc (version_string): Bump to 1.11.
1851
0f3b89d8
ILT
18522011-01-24 Ian Lance Taylor <iant@google.com>
1853
1854 * plugin.cc (class Plugin_rescan): Define new class.
1855 (Plugin_manager::claim_file): Set any_claimed_.
1856 (Plugin_manager::save_archive): New function.
1857 (Plugin_manager::save_input_group): New function.
1858 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
1859 necessary.
1860 (Plugin_manager::new_undefined_symbol): New function.
1861 (Plugin_manager::rescan): New function.
1862 (Plugin_manager::rescannable_defines): New function.
1863 (Plugin_manager::add_input_file): Set any_added_.
1864 * plugin.h (class Plugin_manager): define new fields rescannable_,
1865 undefined_symbols_, any_claimed_, and any_added_. Declare
1866 Plugin_rescan as friend. Declare new functions.
1867 (Plugin_manager::Rescannable): Define type.
1868 (Plugin_manager::Rescannable_list): Define type.
1869 (Plugin_manager::Undefined_symbol_list): Define type.
1870 (Plugin_manager::Plugin_manager): Initialize new fields.
1871 * archive.cc (Archive::defines_symbol): New function.
1872 (Add_archive_symbols::run): Pass archive to plugins if any.
1873 * archive.h (class Archive): Declare defines_symbol.
1874 * readsyms.cc (Input_group::~Input_group): New function.
1875 (Finish_group::run): Pass input_group to plugins if any.
1876 * readsyms.h (class Input_group): Declare destructor.
1877 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
1878 any.
1879
3bb951e5
ILT
18802011-01-10 Ian Lance Taylor <iant@google.com>
1881
1882 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
1883 section as relro.
1884 (Layout::set_segment_offsets): Reset increase_relro before calling
1885 set_section_addresses a second time.
1886
0aa45fac
CC
18872011-01-04 Cary Coutant <ccoutant@google.com>
1888
1889 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
1890 sections before NOBITS sections.
1891
0db46eb4
L
18922011-01-01 H.J. Lu <hongjiu.lu@intel.com>
1893
1894 * version.cc (print_version): Update copyright to 2011.
1895
829c9745
CC
18962010-12-23 Cary Coutant <ccoutant@google.com>
1897
1898 * output.h (Output_data_reloc::add_output_section): Pass OD instead
1899 of OS to this->add. Add OD parameter to second form of the function.
1900
7500420b
ILT
19012010-12-20 Ian Lance Taylor <iant@google.com>
1902
1903 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
1904 second of two consecutive entries with same offset.
1905
f8e9a930
RW
19062010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1907
1908 * testsuite/Makefile.am (ifuncmain2static_LDADD)
1909 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
1910 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
1911 to avoid unneeded links against $(LDADD).
1912 * testsuite/Makefile.in: Regenerate.
1913
2fbb4320
ILT
19142010-12-15 Ian Lance Taylor <iant@google.com>
1915
1916 PR gold/12324
1917 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
1918 for R_X86_64_32 and R_X86_64_PC32.
1919 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
1920 ver_matching_def_pic.o.
1921 (ver_matching_def_pic.o): New target.
1922
fedb228d
RW
19232010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1924
1925 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
1926 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
1927 Move definition before File_read::View member definitions.
1928 (File_read::View::~View): Initialize and hold lock before
1929 updating current_mapped_bytes.
1930
9b547ce6
RW
19312010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1932
1933 * dwarf_reader.cc: Remove outdated comment.
1934 * gold-threads.cc: Fix typo in error message.
1935 * archive.cc: Fix typos in comments.
1936 * archive.h: Likewise.
1937 * arm-reloc-property.cc: Likewise.
1938 * arm-reloc-property.h: Likewise.
1939 * arm-reloc.def: Likewise.
1940 * arm.cc: Likewise.
1941 * attributes.h: Likewise.
1942 * cref.cc: Likewise.
1943 * ehframe.cc: Likewise.
1944 * fileread.h: Likewise.
1945 * gold.h: Likewise.
1946 * i386.cc: Likewise.
1947 * icf.cc: Likewise.
1948 * incremental.h: Likewise.
1949 * int_encoding.cc: Likewise.
1950 * layout.h: Likewise.
1951 * main.cc: Likewise.
1952 * merge.h: Likewise.
1953 * object.cc: Likewise.
1954 * object.h: Likewise.
1955 * options.cc: Likewise.
1956 * readsyms.cc: Likewise.
1957 * reduced_debug_output.cc: Likewise.
1958 * reloc.cc: Likewise.
1959 * script-sections.cc: Likewise.
1960 * sparc.cc: Likewise.
1961 * symtab.h: Likewise.
1962 * target-reloc.h: Likewise.
1963 * target.cc: Likewise.
1964 * target.h: Likewise.
1965 * timer.cc: Likewise.
1966 * timer.h: Likewise.
1967 * x86_64.cc: Likewise.
1968
83e17bd5
CC
19692010-12-09 Cary Coutant <ccoutant@google.com>
1970
1971 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
1972 stack.
1973 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
1974 parameter; change all callers.
1975 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
1976 * options.h (warn_execstack): New option.
1977
017257f8
DK
19782010-12-07 Doug Kwan <dougkwan@google.com>
1979
1980 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
1981 like function call relocations.
1982
c20cbc06
ILT
19832010-12-07 Ian Lance Taylor <iant@google.com>
1984
1985 * archive.cc (Archive::get_elf_object_for_member): Permit
1986 punconfigured to be NULL.
1987 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
1988 (Archive::include_member): Pass NULL to get_elf_object_for_member
1989 if we searched for the archive and this is the first included
1990 object.
1991
4dbfafcc
ILT
19922010-12-01 Ian Lance Taylor <iant@google.com>
1993
1994 * dwarf_reader.h (class Sized_dwarf_line_info): Add
1995 track_relocs_type_ field.
1996 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1997 Set track_relocs_type_.
1998 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
1999 contents when using RELA relocs.
2000 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
2001 reloc_map_.
2002 * reloc.cc (Track_relocs::next_addend): New function.
2003 * reloc.h (class Track_relocs): Declare next_addend.
2004
e5e19edd
ILT
20052010-12-01 Ian Lance Taylor <iant@google.com>
2006
2007 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
2008 virtual destructor.
2009
9a5ce24c
ILT
20102010-12-01 Ian Lance Taylor <iant@google.com>
2011
2012 * README: Update compilers known to work and fail.
2013
c7791212
NC
20142010-11-23 Matthias Klose <doko@ubuntu.com>
2015
2016 * configure.in: For --enable-gold, handle value `default' instead of
2017 `both*'. Always install ld as ld.bfd, install as ld if gold is
2018 not the default.
2019 * configure: Regenerate.
2020
0ad220c9
DK
20212010-11-18 Doug Kwan <dougkwan@google.com>
2022
2023 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
2024 and right_alignment to be zero. Store result alignment only if it is
2025 greater than existing alignment.
2026
ab8056e0
CC
20272010-11-16 Cary Coutant <ccoutant@google.com>
2028
2029 PR gold/12220
2030 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
2031 Check for ".zdebug_line".
2032
fd064a5b
CC
20332010-11-16 Doug Kwan <dougkwan@google.com>
2034 Cary Coutant <ccoutant@google.com>
2035
2036 * output.h (Output_segment::set_section_addresses): Pass increase_relro
2037 by reference; adjust all callers.
2038 * output.cc (Output_segment::set_section_addresses): Adjust references
2039 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
2040 list is empty.
2041 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
2042 end at page boundary.
2043
6fc6ea19
CC
20442010-11-16 Cary Coutant <ccoutant@google.com>
2045
2046 PR gold/12220
2047 * layout.cc (Layout::choose_output_section): Transform names of
2048 compressed sections even when using a script with a SECTIONS clause.
2049 (Layout::output_section_name): Remove code to transform
2050 compressed debug section names.
2051 * output.cc (Output_section::add_input_section): Use uncompressed
2052 section size when tracking input sections.
2053
95a2c8d6
RS
20542010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
2055
2056 * symtab.h (Symbol::NON_PIC_REF): Remove.
2057 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
2058 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
2059 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
2060 (Symbol::use_plt_offset): Take a flags argument and pass it
2061 directly to needs_dynamic_reloc. Restrict check for undefined
2062 weak symbols to function calls.
2063 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
2064 (Target_arm::Scan::global): Use it.
2065 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
2066 (Target_arm::Relocate::relocate): Likewise.
2067 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
2068 parameter with an r_type parameter. Use get_reference_flags
2069 to get the flags.
2070 (Target_arm::Relocate::relocate): Update accordingly.
2071 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
2072 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
2073 (Target_i386::Scan::global): Likewise.
2074 (Target_i386::Relocate::relocate): Likewise.
2075 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
2076 parameter with an r_type parameter. Use get_reference_flags
2077 to get the flags.
2078 (Target_i386::Relocate::relocate): Update accordingly.
2079 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
2080 (Target_powerpc::Scan::global): Use it.
2081 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
2082 (Target_powerpc::Relocate::relocate): Likewise.
2083 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
2084 (Target_sparc::Scan::global): Use it.
2085 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
2086 (Target_sparc::Relocate::relocate): Likewise.
2087 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
2088 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
2089 (Target_x86_64::Scan::global): Likewise.
2090 (Target_x86_64::Relocate::relocate): Likewise.
2091
f625ae50
DK
20922010-11-08 Doug Kwan <dougkwan@google.com>
2093 Cary Coutant <ccoutant@google.com>
2094
2095 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
2096 (Arm_exidx_merge_section::section_contents_): New data member.
2097 (Arm_input_section::Arm_input_section): Initialize original_contents_.
2098 (Arm_input_section::~Arm_input_section): De-allocate memory.
2099 (Arm_input_section::original_contents_): New data member.
2100 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
2101 in parameters instead of calling Object::section_contents without
2102 locking.
2103 (Arm_output_section::group_section): New parameter TASK. Pass it
2104 to callees that need locking objects.
2105 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
2106 to lock EXIDX input sections. Fix a formatting issue. Call
2107 Arm_exidx_merged_section::build_contents to create merged section
2108 contents.
2109 (Arm_output_section::create_stub_group): New parameter TASK. Use it
2110 to lock object of stub table owner.
2111 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
2112 TEXT_SIZE to initialize data member TEXT_SIZE_.
2113 (Arm_exidx_input_section::addralign): Fix typo in comment.
2114 (Arm_exidx_input_section::text_size): New method.
2115 (Target_arm::do_relax): New parameter TASK. Pass it to callees
2116 that require locking objects. Lock objects before scanning for stubs
2117 and updating local symbols.
2118 (Arm_input_section<big_endian>::init): Copy contents of original
2119 input section.
2120 (Arm_input_section<big_endian>::do_write): Use saved contents of
2121 original input section instead of calling Object::section_contents
2122 without locking.
2123 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
2124 size without calling Object::section_size().
2125 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
2126 for size. Allocate a buffer for merged EXIDX entries.
2127 (Arm_exidx_merged_section::build_contents): New method.
2128 (Arm_exidx_merged_section::do_write): Move merge section contents
2129 building code to Arm_exidx_merged_section::build_contetns. Write
2130 out contetns in buffer instead of building it on the fly.
2131 (Arm_relobj::make_exidx_input_section): Also pass text section size
2132 to Arm_exidx_input_section constructor.
2133 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
2134 (Arm_dynobj::do_read_symbols): Fix memory leak.
2135 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
2136 * target.h: (class Task): Add forward declaration.
2137 (Target::relax): Add new parameter TASK and pass it to
2138 Target::do_relax().
2139 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
2140
5f9bcf58
CC
21412010-11-05 Cary Coutant <ccoutant@google.com>
2142
2143 PR gold/10708
2144 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
2145 object when reading from the file.
2146 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
2147 second layout pass.
2148 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
2149 when reading section contents.
2150 (get_section_contents): Likewise.
2151 (icf::find_identical_sections): Likewise.
2152 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
2153 object when reading from the file.
2154 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
2155 the object when doing deferred section layout.
2156
e597fa08
NC
21572010-11-03 Nick Clifton <nickc@redhat.com>
2158
2159 PR gold/12001
2160 * script.h (class Symbol_assignment: name): New member. Returns
2161 the name of the symbol.
2162 * scrfipt.cc (Script_options::is_pending_assignment): New member.
2163 Returns true if the given symbol name is on the list of
2164 assignments wating to be processed.
2165 * archive.cc (should_incldue_member): If the symbol is undefined,
2166 check to see if it is on the list of symbols pending assignment.
2167
3f9a3278
ILT
21682010-11-03 Ryan Mansfield <rmansfield@qnx.com>
2169
2170 * script-sections.cc (Script_sections::find_memory_region): Check
2171 for a NULL output section pointer.
2172
d06fb4d1
DK
21732010-10-29 Doug Kwan <dougkwan@google.com>
2174
2175 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
2176 Output_section::add_relaxed_input_section.
2177 * output.cc (Output_section::add_relaxed_input_section): Add new
2178 arguments LAYOUT and NAME. Set section order index.
2179 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
2180 Copy section order index.
2181 * output.h (Output_section::add_relaxed_input_section): Add new
2182 arguments LAYOUT and NAME.
2183
90e24de5
ILT
21842010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2185
2186 * testsuite/Makefile.am: Move gcctestdir/ld rule to
2187 NATIVE_OR_CROSS_LINKER.
2188 * testsuite/Makefile.in: Regenerate.
2189
c9484ea5
DK
21902010-10-20 Doug Kwan <dougkwan@google.com>
2191
2192 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
2193 without SHF_LINK_ORDER flags.
2194 * layout.cc (Layout::choose_output_section): Do not filter
2195 SHF_LINK_ORDER flag in a relocatable link.
2196
5bc2f5be
CC
21972010-10-17 Cary Coutant <ccoutant@google.com>
2198
2199 * output.h (Output_segment::set_section_addresses): Change function
2200 signature. Update all callers.
2201 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
2202 sections.
2203 (Output_segment::set_section_addresses): Align after last TLS
2204 section. Add padding before last relro section instead of after.
2205
0c91cf04
DK
22062010-10-17 Doug Kwan <dougkwan@google.com>
2207
2208 * gold/arm.cc (Target_arm::got_section): Use correct order and set
2209 GOT output section to be writable.
2210
8c21d9d3
CC
22112010-10-14 Cary Coutant <ccoutant@google.com>
2212
2213 * debug.h (DEBUG_INCREMENTAL): New flag.
2214 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
2215 * gold.cc (queue_initial_tasks): Check parameters for incremental link
2216 mode.
2217 * incremental.cc (report_command_line): Ignore all forms of
2218 --incremental.
2219 * layout.cc (Layout::Layout): Check parameters for incremental link
2220 mode.
2221 * options.cc (General_options::parse_incremental): New function.
2222 (General_options::parse_no_incremental): New function.
2223 (General_options::parse_incremental_full): New function.
2224 (General_options::parse_incremental_update): New function.
2225 (General_options::incremental_mode_): New data member.
2226 (General_options::finalize): Check incremental_mode_.
2227 * options.h (General_options): Update help text for --incremental.
2228 Add --no-incremental, --incremental-full, --incremental-update.
2229 (General_options::Incremental_mode): New enum type.
2230 (General_options::incremental_mode): New function.
2231 (General_options::incremental_mode_): New data member.
2232 * parameters.cc (Parameters::incremental_mode_): New data member.
2233 (Parameters::set_options): Set incremental_mode_.
2234 (Parameters::set_incremental_full): New function.
2235 (Parameters::incremental): New function.
2236 (Parameters::incremental_update): New function.
2237 (set_parameters_incremental_full): New function.
2238 * parameters.h (Parameters::set_incremental_full): New function.
2239 (Parameters::incremental): New function.
2240 (Parameters::incremental_update): New function.
2241 (Parameters::incremental_mode_): New data member.
2242 (set_parameters_incremental_full): New function.
2243 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
2244 incremental link mode.
2245 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
2246 (Sized_relobj::do_relocate_sections): Likewise.
2247 * testsuite/Makefile.am (incremental_test): Use --incremental-full
2248 option.
2249 * testsuite/Makefile.in: Regenerate.
2250 * testsuite/incremental_test.sh: Filter all forms of --incremental.
2251
bb32aa18 22522010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
2253
2254 * script-sections.h (class Script_sections): Make
2255 Sections_elements typedef public.
2256 * script-sections.cc (class Sort_output_sections): Add elements_
2257 field. Add constructor which sets it; change all callers.
2258 (Sort_output_sections::is_before): New function.
2259 (Sort_output_sections::operator()): Call is_before.
2260 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
2261 conditional.
2262 * testsuite/script_test_10.sh: New test. Test script section
2263 order.
2264 * testsuite/script_test_10.t: Likewise.
2265 * testsuite/script_test_10.s: Likewise.
2266 * testsuite/Makefile.am: Wrap the cross linker tests and the
2267 common tests into NATIVE_OR_CROSS_LINKER.
2268 (check_SCRIPTS): Add script_test_10.sh.
2269 (check_DATA): Add script_test_10.stdout.
2270 (script_test_10.o, script_test_10): New targets.
2271 (script_test_10.stdout): New target.
2272 * configure, testsuite/Makefile.in: Regenerate.
2273
3cef7179
ILT
22742010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2275
2276 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
2277 error for the deprecated relocations.
2278 (Target_arm::Scan::global): Likewise.
2279 (Target_arm::Relocate::relocate): Likewise.
2280
7411e9a8
RS
22812010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
2282
2283 * fileread.cc (Input_file::find_file): Initialize *found_name
2284 and *namep when using the fallback search for case 4.
2285
6a9da32a
CC
22862010-10-11 Cary Coutant <ccoutant@google.com>
2287
2288 * options.h (class General_options): Redefine -z lazy as an alias for
2289 the negation of -z now.
2290
ac897c20
ILT
22912010-10-11 Ian Lance Taylor <iant@google.com>
2292
2293 * resolve.cc (symbol_to_bits): Report the value of the unsupported
2294 binding.
2295
ea5cae92
NC
22962010-10-06 Nick Clifton <nickc@redhat.com>
2297
2298 * script-sections.cc(class Memory_region): Remove
2299 current_lma_offset_ field. Rename current_vma_offset_ to
2300 current_offset_. Add last_section_ field.
2301 (Memory_region::get_current_vma_address): Rename to
2302 get_current_address.
2303 (Memory_region::get_current_lma_address): Delete.
2304 (Memory_region::increment_vma_offset): Rename to
2305 increment_offset.
2306 (Memory_region::increment_lma_offset): Delete.
2307 (Memory_region::attributes_compatible): New method. Returns
2308 true if the provided section is compatible with the region.
2309 (Memory_region::get_last_section): New method. Returns the last
2310 section to use the region.
2311 (Memory_region::set_last_section): New method. Stores the last
2312 section to use the region.
2313 (Script_sections::block_in_region): New method. Returns true if
2314 a block of memory is contained within a region.
2315 (Script_sections::find_memory_region): New method. Locates a
2316 memory region to be used to set a VMA or LMA address.
2317 (Output_section_definition::set_section_addresses): Add code to
2318 check for addresses set by memory regions.
2319 (Output_segment::set_section_addresses): Remove memory region
2320 walking code.
2321 (Script_sections::create_segment): Add a warning if a header
2322 segment is created outside of any region.
2323 * script-sections.h (class Script_sections): Add prototypes for
2324 find_memory_region and block_in_region methods.
2325 * testsuite/memory_test.s: Use .long instead of .word.
2326 * testsuite/memory_test.t: Add some more output sections.
2327 * testsuite/memory_test.sh: Update expected output.
2328
a9bfd952
DK
23292010-10-02 Doug Kwan <dougkwan@google.com>
2330
2331 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
2332 defintion to symtab.h
2333 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
2334 declaration to defintion.
2335
bacff3ab
NC
23362010-10-01 Nick Clifton <nickc@redhat.com>
2337
2338 * expression.cc (eval): Replace dummy argument with NULL.
2339 (eval_maybe_dot): Check for a NULL result section pointer.
2340 (Symbol_expression::value): Likewise.
2341 (Dot_expression::value): Likewise.
2342 (BINARY_EXPRESSION): Likewise.
2343 (Max_expression::value): Likewise.
2344 (Min_expression::value): Likewise.
2345 (Absolute_expression::value): Likewise.
2346 (Addr_expression::value_from_output_section): Likewise.
2347 (Loaddddr_expression::value_from_output_section): Likewise.
2348 (Segment_start_expression::value): Likewise.
2349 * script-sections.cc
2350 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
2351 argument with NULL.
2352 (Sections_elememt_dot_assignment::set_section_addresses):
2353 Likewise.
2354 (Output_data_expression::do_write_to_buffer): Likewise.
2355 (Output_section_definition::finalize_symbols): Likewise.
2356 (Output_section_definition::set_section_addresses): Likewise.
2357
f81bc8b5
DK
23582010-09-30 Doug Kwan <dougkwan@google.com>
2359
2360 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
2361
c95e9f27
ST
23622010-09-28 Sriraman Tallam <tmsriram@google.com>
2363
2364 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 2365 function.
c95e9f27
ST
2366 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
2367 virtual function.
2368 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
2369 virtual function.
2370 * icf.cc (get_section_contents): Inline merge sections only when
2371 target allows it.
2372
3cac54d2
RW
23732010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2374
2375 * configure: Regenerate.
2376
2904037a
ILT
23772010-09-17 Ian Lance Taylor <iant@google.com>
2378
2379 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
2380 * testsuite/Makefile.am (memory_test.o): New target.
2381 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
2382 memory_test.t.
2383 * testsuite/Makefile.in: Rebuild.
2904037a 2384
bca7fb63
DK
23852010-09-17 Doug Kwan <dougkwan@google.com>
2386
2387 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
2388 defintion if relocation uses GOT entries of the symbol.
2389 * testsuite/icf_safe_test.sh: Fix test.
2390 * testsuite/icf_safe_so_test.sh: Fix test.
2391
4ef28648
CC
23922010-09-16 Cary Coutant <ccoutant@google.com>
2393
2394 * script_sections.cc (class Memory_region): Remove "NULL" from
2395 vector initializations.
2396
793990de
CC
23972010-09-15 Cary Coutant <ccoutant@google.com>
2398
2399 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
2400 Resolve forwarding symbols.
2401
81e015e2
DK
24022010-09-15 Doug Kwan <dougkwan@google.com>
2403
2404 * gold/testsuite/script_test_3.t: Add ARM special sections.
2405 * gold/testsuite/script_test_4.t: Same.
2406 * gold/testsuite/script_test_5.t: Same.
2407 * gold/testsuite/script_test_6.t: Same.
2408 * gold/testsuite/script_test_7.t: Same.
2409 * gold/testsuite/script_test_7.t: Same.
2410 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
2411
36171d64
CC
24122010-09-14 Cary Coutant <ccoutant@google.com>
2413
2414 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
2415 (Target_x86_64::Relocate::relocate_tls): Replace check for
2416 saw_tls_block_reloc_ with test for executable section.
2417
d89051bd
CC
24182010-09-12 Cary Coutant <ccoutant@google.com>
2419
2420 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
2421 position-independent executables to shared libraries need dynamic
2422 relocations.
2423 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
2424 position-independent executables.
2425 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
2426 * testsuite/Makefile.in: Regenerate.
2427
fca41f0f
NC
24282010-09-10 Nick Clifton <nickc@redhat.com>
2429
2430 PR gold/11997
2431 * testsuite/memory_test.t: Discard any sections that are not
2432 needed.
2433
6695e4b3
L
24342010-09-09 H.J. Lu <hongjiu.lu@intel.com>
2435
2436 PR gold/11996
2437 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
2438 "This::" to work around a bug in gcc 4.2.
2439
2440 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
2441
0f72bf6f
RÁE
24422010-09-09 Rafael Espindola <espindola@google.com>
2443
2444 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
2445 sections with different PF_X flags in the same segment.
2446 (Layout::find_first_load_seg): Search all segments to find the first
2447 one.
2448 * options.h (rosegment): New.
2449
24502010-09-08 Rafael Espindola <espindola@google.com>
a6577478 2451
05a79166 2452 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 2453
aa98ff75
DK
24542010-09-08 Doug Kwan <dougkwan@google.com>
2455
2456 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
2457 (Arm_relobj::do_relocate_sections): Add new parameter for output
2458 file to match the parent.
2459 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
2460 of local symbols instead of input values. Update code to track
2461 changes in gold::relocate_section.
2462 * object.cc (Sized_relobj::compute_final_local_value): New methods.
2463 (Sized_relobj::compute_final_local_value_internal): New methods.
2464 (Sized_relobj::do_finalize_local_symbols): Move code from loop
2465 body into private version of Sized_relobj::compute_final_local_value.
2466 Call the inline method.
2467 * object.h (Symbol_value::Symbol_value): Define destructor. Free
2468 merged symbol value if there is one.
2469 (Symbol_value::has_output_value): New method defintiion.
2470 (Sized_relobj::Compute_final_local_value_status): New enum type.
2471 (Sized_relobj::compute_final_local_value): New methods.
2472 (Sized_relobj::compute_final_local_value_internal): New methods.
2473 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
2474 and arm_cortex_a8.sh.
2475 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
2476 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
2477 New tests.
2478 * Makefile.in: Regenerate.
2479 * testsuite/arm_bl_out_of_range.s: Update test.
2480 * testsuite/thumb_bl_out_of_range.s: Ditto.
2481 * testsuite/thumb_blx_out_of_range.s: Ditto.
2482 * testsuite/arm_branch_out_of_range.sh: New file.
2483 * testsuite/arm_cortex_a8.sh: Ditto.
2484 * testsuite/arm_cortex_a8_b.s: Ditto.
2485 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
2486 * testsuite/arm_cortex_a8_b_local.s: Ditto.
2487 * testsuite/arm_cortex_a8_bl.s: Ditto.
2488 * testsuite/arm_cortex_a8_blx.s: Ditto.
2489 * testsuite/arm_cortex_a8_local.s: Ditto.
2490 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
2491 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
2492
05a79166
L
24932010-09-08 Rafael Espindola <espindola@google.com>
2494
2495 * Makefile.am (memory_test.stdout): Run readelf with -W.
2496 * Makefile.in: Regenerate.
2497 * testsuite/memory_test.sh: Make the regexps accept both 32 and
2498 64 bit output.
2499
33dbc701
RÁE
25002010-09-08 Rafael Espindola <espindola@google.com>
2501
2502 * script-sections.cc (Script_sections::add_memory_region): Convert
2503 field precision to int.
2504 * script.cc (script_set_section_region, script_set_section_region):
2505 Convert field precision to int.
2506
731ca54a
RÁE
25072010-09-08 Rafael Espindola <espindola@google.com>
2508
2509 * arm.cc (do_finalize_sections): Create the __exidx_start and
2510 __exdix_end symbols even when the section is missing.
2511
7f8cd844
NC
25122010-09-08 Nick Clifton <nickc@redhat.com>
2513
2514 * README: Remove claim that MEMORY is not supported.
2515 * expression.cc (script_exp_function_origin)
2516 (script_exp_function_length): Move from here to ...
2517 * script.cc: ... here.
2518 (script_set_section_region, script_add_memory)
2519 (script_parse_memory_attr, script_include_directive): New
2520 functions.
2521 * script-sections.cc
2522 (class Memory_region): New class.
2523 (class Output_section_definition): Add set_memory_region,
2524 set_section_vma, set_section_lma and get_section_name methods.
2525 (class Script_Sections): Add add_memory_region,
2526 find_memory_region, find_memory_region_origin,
2527 find_memory_region_length and set_memory_region methods.
2528 Have set_section_addresses method walk the list of set memory
2529 regions.
2530 Extend the print methos to display memory regions.
2531 * script-sections.h: Add prototypes for new methods.
2532 Add enum for MEMORY region attributes.
2533 * yyscript.y: Add support for parsing MEMORY regions.
2534 * script-c.h: Add prototypes for new functions.
2535 * testsuite/Makefile.am: Add test of MEMORY region functionality.
2536 * testsuite/Makefile.in: Regenerate.
2537 * testsuite/memory_test.sh: New script.
2538 * testsuite/memory_test.s: New assembler source file.
2539 * testsuite/memory_test.t: New linker script.
2540
a4649286
DK
25412010-08-27 Doug Kwan <dougkwan@google.com>
2542
2543 * gold/resolve.cc (Symbol_table::should_override): Let a weak
2544 reference override an existing dynamic weak reference.
2545 * testsuite/Makefile.am: Add new test dyn_weak_ref.
2546 * testsuite/Makefile.in: Regenerate.
2547 * testsuite/dyn_weak_ref.sh: New file.
2548 * testsuite/dyn_weak_ref_1.c: Ditto.
2549 * testsuite/dyn_weak_ref_2.c: Ditto.
2550
b56648ad
ILT
25512010-08-27 Ian Lance Taylor <iant@google.com>
2552
2553 * incremental.h (class Incremental_input_entry): Add virtual
2554 destructor.
2555
809313cb
ILT
25562010-08-27 Ian Lance Taylor <iant@google.com>
2557
2558 * testsuite/start_lib_test_3.c: Mark t3 as used.
2559
11e32464
NC
25602010-08-27 Nick Clifton <nickc@redhat.com>
2561
2562 * options.cc (version_script): Fix small typo in previous
2563 whitespace tidyup.
2564
ca09d69a
NC
25652010-08-25 Nick Clifton <nickc@redhat.com>
2566
2567 * archive.cc: Formatting fixes: Remove whitespace between
2568 typename and following asterisk. Remove whitespace between
2569 function name and opening parenthesis.
2570 * archive.h: Likewise.
2571 * arm.cc: Likewise.
2572 * attributes.cc: Likewise.
2573 * attributes.h: Likewise.
2574 * common.cc: Likewise.
2575 * copy-relocs.cc: Likewise.
2576 * dirsearch.h: Likewise.
2577 * dynobj.cc: Likewise.
2578 * ehframe.cc: Likewise.
2579 * ehframe.h: Likewise.
2580 * expression.cc: Likewise.
2581 * fileread.cc: Likewise.
2582 * fileread.h: Likewise.
2583 * gc.h: Likewise.
2584 * gold-threads.cc: Likewise.
2585 * gold.cc: Likewise.
2586 * i386.cc: Likewise.
2587 * icf.h: Likewise.
2588 * incremental-dump.cc: Likewise.
2589 * incremental.cc: Likewise.
2590 * layout.cc: Likewise.
2591 * layout.h: Likewise.
2592 * main.cc: Likewise.
2593 * merge.cc: Likewise.
2594 * merge.h: Likewise.
2595 * object.cc: Likewise.
2596 * object.h: Likewise.
2597 * options.cc: Likewise.
2598 * options.h: Likewise.
2599 * output.cc: Likewise.
2600 * output.h: Likewise.
2601 * plugin.cc: Likewise.
2602 * plugin.h: Likewise.
2603 * powerpc.cc: Likewise.
2604 * reloc.cc: Likewise.
2605 * script-c.h: Likewise.
2606 * script-sections.cc: Likewise.
2607 * script.cc: Likewise.
2608 * stringpool.cc: Likewise.
2609 * symtab.cc: Likewise.
2610 * symtab.h: Likewise.
2611 * target.cc: Likewise.
2612 * timer.cc: Likewise.
2613 * timer.h: Likewise.
2614 * version.cc: Likewise.
2615 * x86_64.cc: Likewise.
2616
b8fa8750
NC
26172010-08-24 Nick Clifton <nickc@redhat.com>
2618
2619 PR 11899
2620 * layout.cc (segment_precedes): Sort segments by their physical
2621 addresses, if they have been set.
2622
9919d93b
CC
26232010-08-23 Cary Coutant <ccoutant@google.com>
2624
2625 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
2626 symbols data.
2627 (Lib_group::include_member): Unlock object after deleting its
2628 symbols data.
2629 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
2630 the bug fixed here.
2631
97b4be1c
CC
26322010-08-19 Neil Vachharajani <nvachhar@google.com>
2633 Cary Coutant <ccoutant@google.com>
2634
2635 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
2636 constructor, and set_blocker.
2637 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
2638 readsyms_blocker_.
2639 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
2640 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
2641 * testsuite/Makefile.am (start_lib_test): New test case.
2642 * testsuite/Makefile.in: Regenerate.
2643 * testsuite/start_lib_test_main.c: New file.
2644 * testsuite/start_lib_test_1.c: New file.
2645 * testsuite/start_lib_test_2.c: New file.
2646 * testsuite/start_lib_test_3.c: New file.
2647
dd0b1884
ILT
26482010-08-19 Ian Lance Taylor <iant@google.com>
2649
2650 * Makefile.in: Rebuild with automake 1.11.1.
2651 * aclocal.m4: Likewise.
2652 * testsuite/Makefile.in: Likewise.
2653
7223e9ca
ILT
26542010-08-19 Ian Lance Taylor <iant@google.com>
2655
2656 PR 10893
2657 * i386.cc (class Output_data_plt_i386): Update declarations.
2658 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
2659 local_ifuncs_ fields.
2660 (Target_i386::do_plt_section_for_global): New function.
2661 (Target_i386::do_plt_section_for_local): New function.
2662 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
2663 parameter; change all callers. Initialize global_ifuncs_ and
2664 local_ifuncs_. If doing a static link define __rel_iplt_start and
2665 __rel_iplt_end.
2666 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
2667 (Output_data_plt_i386::add_local_ifunc_entry): New function.
2668 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
2669 symbols.
2670 (Target_i386::make_plt_section): New function, broken out of
2671 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
2672 (Target_i386::make_plt_entry): Call make_plt_section.
2673 (Target_i386::make_local_ifunc_plt_entry): New function.
2674 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
2675 (Target_i386::Scan::local): Handle IFUNC symbols. Add
2676 R_386_IRELATIVE to switch.
2677 (Target_i386::Scan::global): Likewise.
2678 (Target_i386::Relocate::relocate): Likewise.
2679 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
2680 switch.
2681 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
2682 (Target_x86_64::do_plt_section_for_global): New function.
2683 (Target_x86_64::do_plt_section_for_local): New function.
2684 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
2685 parameter; change all callers. If doing a static link define
2686 __rela_iplt_start and __rela_iplt_end.
2687 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
2688 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
2689 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
2690 to point to .plt.
2691 (Target_x86_64::make_local_ifunc_plt_entry): New function.
2692 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
2693 switch.
2694 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
2695 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
2696 R_X86_64_IRELATIVE to switch.
2697 (Target_x86_64::Scan::global): Likewise.
2698 (Target_x86_64::Relocate::relocate): Likewise.
2699 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
2700 switch.
2701 * target.h (class Target): Add plt_section_for_global and
2702 plt_section_for_local functions. Add do_plt_section_for_global
2703 and do_plt_section_for_local virtual functions.
2704 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
2705 clarifying comments.
2706 (Symbol::use_plt_offset): Handle IFUNC symbol.
2707 * object.cc (Sized_relobj::Sized_relobj): Initialize
2708 local_plt_offsets_.
2709 (Sized_relobj::local_has_plt_offset): New function.
2710 (Sized_relobj::local_plt_offset): New function.
2711 (Sized_relobj::set_local_plt_offset): New function.
2712 (Sized_relobj::do_count): Handle IFUNC symbol.
2713 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
2714 a bit away from input_shndx_ field. Add set_is_func_symbol and
2715 is_ifunc_symbol functions.
2716 (class Sized_relobj): Update declarations. Remove Tls_got_entry
2717 and Local_tls_got_offsets. Define Local_plt_offsets. Add
2718 local_plt_offsets_ field.
2719 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
2720 * output.h (class Output_section_data): Add non-const
2721 output_section function.
2722 (class Output_data_got): Update declarations.
2723 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
2724 Add use_plt_offset parameter to global and local constructors.
2725 Change all callers. Change local_sym_index_ field to 31 bits.
2726 Change GSYM_CODE and CONSTANT_CODE accordingly.
2727 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
2728 doing a static link don't set sh_link field.
2729 (Output_data_got::Got_entry::write): Use PLT offset if
2730 appropriate.
2731 (Output_data_got::add_global_plt): New function.
2732 (Output_data_got::add_local_plt): New function.
2733 * target-reloc.h (relocate_section): Handle IFUNC symbol.
2734 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
2735 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
2736 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
2737 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
2738 IFUNC conditional.
2739 * testsuite/ifunc-sel.h: New file.
2740 * testsuite/ifuncmain1.c: New file.
2741 * testsuite/ifuncmain1vis.c: New file.
2742 * testsuite/ifuncmod1.c: New file.
2743 * testsuite/ifuncdep2.c: New file.
2744 * testsuite/ifuncmain2.c: New file.
2745 * testsuite/ifuncmain3.c: New file.
2746 * testsuite/ifuncmod3.c: New file.
2747 * testsuite/ifuncmain4.c: New file.
2748 * testsuite/ifuncmain5.c: New file.
2749 * testsuite/ifuncmod5.c: New file.
2750 * testsuite/ifuncmain6pie.c: New file.
2751 * testsuite/ifuncmod6.c: New file.
2752 * testsuite/ifuncmain7.c: New file.
2753 * configure, testsuite/Makefile.in: Rebuild.
2754
56f75c03
ILT
27552010-08-18 Ian Lance Taylor <iant@google.com>
2756
2757 * incremental.cc
2758 (Output_section_incremental_inputs::write_input_files): Add cast
2759 to avoid signed/unsigned comparison warning.
2760 (Output_section_incremental_inputs::write_info_blocks): Likewise.
2761
55455f89
CC
27622010-08-12 Cary Coutant <ccoutant@google.com>
2763
2764 * common.cc (Sort_commons::operator()): Remove unnecessary code.
2765
e2054bcb
ILT
27662010-08-13 Ian Lance Taylor <iant@google.com>
2767
2768 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
2769
74f67560
DK
27702010-08-12 Cary Coutant <ccoutant@google.com>
2771 Doug Kwan <dougkwan@google.com>
2772
2773 * resolve.cc (Symbol_table::should_override): When a weak dynamic
2774 defintion overrides non-weak undef, remember that the original undef
2775 is not weak.
2776 * symtab.cc (Symbol_table::sized_write_global): For undef without
2777 an original weak binding, set binding to global in output.
2778 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
2779 * testsuite/Makefile.in: Regenerate.
2780 * testsuite/strong_ref_weak_def.sh: New file.
2781 * testsuite/strong_ref_weak_def_1.c: Ditto.
2782 * testsuite/strong_ref_weak_def_2.c: Ditto.
2783
d1238d12
CC
27842010-08-12 Cary Coutant <ccoutant@google.com>
2785
2786 * testsuite/incremental_test.sh: Rewrite.
2787 * testsuite/incremental_test_1.c: Rewrite.
2788 * testsuite/incremental_test_2.c: Rewrite.
2789
0e70b911
CC
27902010-08-12 Cary Coutant <ccoutant@google.com>
2791
2792 * arm.cc (Target_arm::got_size): Add const.
2793 (Target_arm::got_entry_count): New function.
2794 (Target_arm::plt_entry_count): New function.
2795 (Target_arm::first_plt_entry_offset): New function.
2796 (Target_arm::plt_entry_size): New function.
2797 (Output_data_plt_arm::entry_count): New function.
2798 (Output_data_plt_arm::first_plt_entry_offset): New function.
2799 (Output_data_plt_arm::get_plt_entry_size): New function.
2800 * i386.cc (Target_i386::got_size): Add const.
2801 (Target_i386::got_entry_count): New function.
2802 (Target_i386::plt_entry_count): New function.
2803 (Target_i386::first_plt_entry_offset): New function.
2804 (Target_i386::plt_entry_size): New function.
2805 (Output_data_plt_i386::entry_count): New function.
2806 (Output_data_plt_i386::first_plt_entry_offset): New function.
2807 (Output_data_plt_i386::get_plt_entry_size): New function.
2808 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
2809 find_incremental_inputs_sections. Dump incremental_got_plt section.
2810 * incremental.cc: Include target.h.
2811 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
2812 parameter. Adjust all callers. Find incremental_got_plt section.
2813 (Incremental_inputs::create_data_sections): Create incremental_got_plt
2814 section.
2815 (Output_section_incremental_inputs::set_final_data_size): Calculate
2816 size of incremental_got_plt section.
2817 (Output_section_incremental_inputs::do_write): Write the
2818 incremental_got_plt section.
2819 (Got_plt_view_info): New struct.
2820 (Local_got_offset_visitor): New class.
2821 (Global_got_offset_visitor): New class.
2822 (Global_symbol_visitor_got_plt): New class.
2823 (Output_section_incremental_inputs::write_got_plt): New function.
2824 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
2825 Add parameter. Adjust all callers.
2826 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
2827 (Incremental_inputs::got_plt_section): New function.
2828 (Incremental_inputs::got_plt_section_): New data member.
2829 (Incremental_got_plt_reader): New class.
2830 * layout.cc (Layout::create_incremental_info_sections): Add the
2831 incremental_got_plt section.
2832 * object.h (Got_offset_list::get_list): New function.
2833 (Got offset_list::for_all_got_offsets): New function.
2834 (Sized_relobj::local_got_offset_list): New function.
2835 * powerpc.cc (Target_powerpc::got_size): Add const.
2836 (Target_powerpc::got_entry_count): New function.
2837 (Target_powerpc::plt_entry_count): New function.
2838 (Target_powerpc::first_plt_entry_offset): New function.
2839 (Target_powerpc::plt_entry_size): New function.
2840 (Output_data_plt_powerpc::entry_count): New function.
2841 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
2842 (Output_data_plt_powerpc::get_plt_entry_size): New function.
2843 * sparc.cc (Target_sparc::got_size): Add const.
2844 (Target_sparc::got_entry_count): New function.
2845 (Target_sparc::plt_entry_count): New function.
2846 (Target_sparc::first_plt_entry_offset): New function.
2847 (Target_sparc::plt_entry_size): New function.
2848 (Output_data_plt_sparc::entry_count): New function.
2849 (Output_data_plt_sparc::first_plt_entry_offset): New function.
2850 (Output_data_plt_sparc::get_plt_entry_size): New function.
2851 * symtab.h (Symbol::got_offset_list): New function.
2852 (Symbol_table::for_all_symbols): New function.
2853 * target.h (Sized_target::got_entry_count): New function.
2854 (Sized_target::plt_entry_count): New function.
2855 (Sized_target::plt_entry_size): New function.
2856 * x86_64.cc (Target_x86_64::got_size): Add const.
2857 (Target_x86_64::got_entry_count): New function.
2858 (Target_x86_64::plt_entry_count): New function.
2859 (Target_x86_64::first_plt_entry_offset): New function.
2860 (Target_x86_64::plt_entry_size): New function.
2861 (Output_data_plt_x86_64::entry_count): New function.
2862 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
2863 (Output_data_plt_x86_64::get_plt_entry_size): New function.
2864
09ec0418
CC
28652010-08-12 Cary Coutant <ccoutant@google.com>
2866
2867 * archive.cc: Include incremental.h.
2868 (Archive::Archive): Initialize incremental_info_.
2869 (Archive::include_member): Record archive members in incremental info.
2870 (Add_archive_symbols::run): Record begin and end of an archive in
2871 incremental info.
2872 (Lib_group::include_member): Record objects in incremental info.
2873 * archive.h (Incremental_archive_entry): Forward declaration.
2874 (Archive::set_incremental_info): New member function.
2875 (Archive::incremental_info): New member function.
2876 (Archive::Unused_symbol_iterator): New class.
2877 (Archive::unused_symbols_begin): New member function.
2878 (Archive::unused_symbols_end): New member function.
2879 (Archive::incremental_info_): New data member.
2880 * incremental-dump.cc (find_input_containing_global): New function.
2881 (dump_incremental_inputs): Dump new incremental info sections.
2882 * incremental.cc: Include symtab.h.
2883 (Output_section_incremental_inputs): New class.
2884 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
2885 new incremental info sections.
2886 (Sized_incremental_binary::do_check_inputs): Likewise.
2887 (Incremental_inputs::report_archive): Remove.
2888 (Incremental_inputs::report_archive_begin): New function.
2889 (Incremental_inputs::report_archive_end): New function.
2890 (Incremental_inputs::report_object): New function.
2891 (Incremental_inputs::finalize_inputs): Remove.
2892 (Incremental_inputs::report_input_section): New function.
2893 (Incremental_inputs::report_script): Rewrite.
2894 (Incremental_inputs::finalize): Do nothing but finalize string table.
2895 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
2896 (Incremental_inputs::sized_create_inputs_section_data): Remove.
2897 (Incremental_inputs::create_data_sections): New function.
2898 (Incremental_inputs::relocs_entsize): New function.
2899 (Output_section_incremental_inputs::set_final_data_size): New function.
2900 (Output_section_incremental_inputs::do_write): New function.
2901 (Output_section_incremental_inputs::write_header): New function.
2902 (Output_section_incremental_inputs::write_input_files): New function.
2903 (Output_section_incremental_inputs::write_info_blocks): New function.
2904 (Output_section_incremental_inputs::write_symtab): New function.
2905 * incremental.h (Incremental_script_entry): Forward declaration.
2906 (Incremental_object_entry): Forward declaration.
2907 (Incremental_archive_entry): Forward declaration.
2908 (Incremental_inputs): Forward declaration.
2909 (Incremental_inputs_header_data): Remove.
2910 (Incremental_inputs_header): Remove.
2911 (Incremental_inputs_header_write): Remove.
2912 (Incremental_inputs_entry_data): Remove.
2913 (Incremental_inputs_entry): Remove.
2914 (Incremental_inputs_entry_write): Remove.
2915 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
2916 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
2917 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
2918 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
2919 Likewise.
2920 (Incremental_input_entry): New class.
2921 (Incremental_script_entry): New class.
2922 (Incremental_object_entry): New class.
2923 (Incremental_archive_entry): New class.
2924 (Incremental_inputs::Incremental_inputs): Initialize new data members.
2925 (Incremental_inputs::report_inputs): Remove.
2926 (Incremental_inputs::report_archive): Remove.
2927 (Incremental_inputs::report_archive_begin): New function.
2928 (Incremental_inputs::report_archive_end): New function.
2929 (Incremental_inputs::report_object): Change prototype.
2930 (Incremental_inputs::report_input_section): New function.
2931 (Incremental_inputs::report_script): Change prototype.
2932 (Incremental_inputs::get_reloc_count): New function.
2933 (Incremental_inputs::set_reloc_count): New function.
2934 (Incremental_inputs::create_data_sections): New function.
2935 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
2936 (Incremental_inputs::inputs_section): New function.
2937 (Incremental_inputs::symtab_section): New function.
2938 (Incremental_inputs::relocs_section): New function.
2939 (Incremental_inputs::get_stringpool): Add const.
2940 (Incremental_inputs::command_line): Add const.
2941 (Incremental_inputs::inputs): Remove.
2942 (Incremental_inputs::command_line_key): New function.
2943 (Incremental_inputs::input_file_count): New function.
2944 (Incremental_inputs::input_files): New function.
2945 (Incremental_inputs::relocs_entsize): New function.
2946 (Incremental_inputs::sized_create_inputs_section_data): Remove.
2947 (Incremental_inputs::finalize_inputs): Remove.
2948 (Incremental_inputs::Input_info): Remove.
2949 (Incremental_inputs::lock_): Remove.
2950 (Incremental_inputs::inputs_): Change type.
2951 (Incremental_inputs::inputs_map_): Remove.
2952 (Incremental_inputs::current_object_entry_): New data member.
2953 (Incremental_inputs::inputs_section_): New data member.
2954 (Incremental_inputs::symtab_section_): New data member.
2955 (Incremental_inputs::relocs_section_): New data member.
2956 (Incremental_inputs::reloc_count_): New data member.
2957 (Incremental_inputs_reader): New class.
2958 (Incremental_symtab_reader): New class.
2959 (Incremental_relocs_reader): New class.
2960 * layout.cc (Layout::finalize): Move finalization of incremental info
2961 and creation of incremental info sections to follow finalization of
2962 symbol table. Set offsets for postprocessing sections.
2963 (Layout::create_incremental_info_sections): Call
2964 Incremental_inputs::create_data_sections. Add incremental symtab
2965 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
2966 sections to layout after input sections.
2967 * layout.h (struct Timespec): Forward declaration.
2968 (Layout::incremental_inputs): Add const.
2969 (Layout::create_incremental_info_sections): Add parameter.
2970 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
2971 * object.cc: Include incremental.h.
2972 (Relobj::finalize_incremental_relocs): New function.
2973 (Sized_relobj::do_layout): Record input sections in incremental info.
2974 * object.h (Object::output_section): New function.
2975 (Object::output_section_offset): Moved from Relobj.
2976 (Object::get_incremental_reloc_base): New function.
2977 (Object::get_incremental_reloc_count): New function.
2978 (Object::do_output_section): New function.
2979 (Object::do_output_section_offset): Moved from Relobj.
2980 (Object::do_get_incremental_reloc_base): New function.
2981 (Object::do_get_incremental_reloc_count): New function.
2982 (Object::Object): Initialize new data members.
2983 (Relobj::output_section): Renamed do_output_section and moved to
2984 protected.
2985 (Relobj::output_section_offset): Moved to Object.
2986 (Relobj::do_get_incremental_reloc_base): New function.
2987 (Relobj::do_get_incremental_reloc_count): New function.
2988 (Relobj::allocate_incremental_reloc_counts): New function.
2989 (Relobj::count_incremental_reloc): New function.
2990 (Relobj::finalize_incremental_relocs): New function.
2991 (Relobj::next_incremental_reloc_index): New function.
2992 (Relobj::reloc_counts_): New data member.
2993 (Relobj::reloc_bases_): New data member.
2994 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
2995 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
2996 (Sized_relobj::incremental_relocs_scan): New function.
2997 (Sized_relobj::incremental_relocs_scan_reltype): New function.
2998 (Sized_relobj::incremental_relocs_write): New function.
2999 (Sized_relobj::incremental_relocs_write_reltype): New function.
3000 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
3001 incremental link.
3002 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
3003 archives and object files elsewhere.
3004 (Add_symbols::run): Report object files here.
3005 (Finish_group::run): Report end of archive at end of group.
3006 * reloc.cc: Include layout.h, incremental.h.
3007 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
3008 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
3009 (Sized_relobj::incremental_relocs_scan): New function.
3010 (Sized_relobj::incremental_relocs_scan_reltype): New function.
3011 (Sized_relobj::do_relocate_sections): Write incremental relocations.
3012 (Sized_relobj::incremental_relocs_write): New function.
3013 (Sized_relobj::incremental_relocs_write_reltype): New function.
3014 * script.cc (read_input_script): Rewrite test for incremental link.
3015 Change call to Incremental_inputs::report_script.
3016 * symtab.h (Symbol_table::first_global_index): New function.
3017 (Symbol_table::output_count): New function.
3018
ce0d1972
DK
30192010-08-12 Doug Kwan <dougkwan@google.com>
3020
3021 * arm.cc (Target_arm::merge_object_attributes): Check command line
3022 options --no-wchar-size-warning and --no-enum-size-warning.
3023 * options.h (General_options): Add ld-compatible options
3024 --no-enum-size-warning and --no-wchar-size-warning.
3025
6e5710ce
ILT
30262010-08-04 Ian Lance Taylor <iant@google.com>
3027
3028 * x86_64.cc (Target_x86_64::Scan::local): Use
3029 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
3030 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
3031 (Target_x86_64::Scan::global): Likewise.
3032 (Target_x86_64::Relocate::relocate): Likewise.
3033 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
3034 Likewise.
3035
fef830db
CC
30362010-08-03 Cary Coutant <ccoutant@google.com>
3037
3038 * merge.cc (Output_merge_string::do_add_input_section): Count strings
3039 to reserve space in merged_strings vector. Keep total input size
3040 for stats.
3041 (Output_merge_string::do_print_merge_stats): Print total input size.
3042 * merge.h (Output_merge_string): Add input_size_ field.
3043 * stringpool.cc (Stringpool_template::string_length): Move
3044 implementations out of Stringpool_template class and place in
3045 stringpool.h.
3046 * stringpool.h (string_length): Move out of Stringpool_template.
3047
1e3811b0
ILT
30482010-08-03 Ian Lance Taylor <iant@google.com>
3049
3050 PR 11712
3051 * layout.cc (relaxation_loop_body): If address of load segment is
3052 set, adjust address to include headers if possible.
3053
7af0c620
ILT
30542010-08-03 Ian Lance Taylor <iant@google.com>
3055
3056 * version.cc (version_string): Bump to 1.10.
3057
22f0da72
ILT
30582010-08-03 Ian Lance Taylor <iant@google.com>
3059
3060 PR 11805
3061 * layout.h (enum Output_section_order): Define.
3062 (class Layout): Update declarations.
3063 * layout.cc (Layout::get_output_section): Add order parameter.
3064 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
3065 is_first_non_relro parameters. Change all callers.
3066 (Layout::choose_output_section): Likewise.
3067 (Layout::add_output_section_data): Likewise.
3068 (Layout::make_output_section): Likewise. Set order.
3069 (Layout::default_section_order): New function.
3070 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
3071 * output.cc (Output_section::Output_section): Initialize order_.
3072 Don't initialize deleted fields.
3073 (Output_segment::Output_segment): Don't initialize deleted
3074 fields.
3075 (Output_segment::add_output_section_to_load): New function
3076 replacing add_output_section. Change all callers to call this or
3077 add_output_section_to_nonload.
3078 (Output_segment::add_output_section_to_nonload): New function.
3079 (Output_segment::remove_output_section): Rewrite.
3080 (Output_segment::add_initial_output_data): Likewise.
3081 (Output_segment::has_any_data_sections): Likewise.
3082 (Output_segment::is_first_section_relro): Likewise.
3083 (Output_segment::maximum_alignment): Likewise.
3084 (Output_segment::has_dynamic_reloc): New function replacing
3085 dynamic_reloc_count. Change all callers.
3086 (Output_segment::has_dynamic_reloc_list): New function replacing
3087 dynamic_reloc_count_list. Change all callers.
3088 (Output_segment::set_section_addresses): Rewrite.
3089 (Output_segment::set_offset): Rewrite.
3090 (Output_segment::find_first_and_last_list): Remove.
3091 (Output_segment::set_tls_offsets): Rewrite.
3092 (Output_segment::first_section_load_address): Likewise.
3093 (Output_segment::output_section_count): Likewise.
3094 (Output_segment::section_with_lowest_load_address): Likewise.
3095 (Output_segment::write_section_headers): Likewise.
3096 (Output_segment::print_sections_to_map): Likewise.
3097 * output.h (class Output_data): Remove dynamic_reloc_count_
3098 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
3099 (Output_data::add_dynamic_reloc): Rewrite.
3100 (Output_data::has_dynamic_reloc): New function.
3101 (Output_data::dynamic_reloc_count): Remove.
3102 (class Output_section): Add order_ field. Remvoe is_relro_local_,
3103 is_last_relro_, is_first_non_relro_, is_interp_,
3104 is_dynamic_linker_section_ fields. Add order and set_order
3105 functions. Remove is_relro_local, set_is_relro_local,
3106 is_last_relro, set_is_last_relro, is_first_non_relro,
3107 set_is_first_non_relro functions, is_interp, set_is_interp,
3108 is_dynamic_linker_section, and set_is_dynamic_linker_section
3109 functions.
3110 (class Output_segment): Change Output_data_list from std::list to
3111 std:;vector. Add output_lists_ field. Remove output_data_ and
3112 output_bss_ fields. Update declarations.
3113
3ff2ccb0
ILT
31142010-08-02 Ian Lance Taylor <iant@google.com>
3115
3116 * arm.cc (Target_arm::gc_process_relocs): Use typename.
3117 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
3118 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
3119
88a4108b
ILT
31202010-08-02 Ian Lance Taylor <iant@google.com>
3121
3122 PR 11855
3123 * script.cc (Script_options::Script_options): Initialize
3124 symbol_definitions_ and symbol_references_.
3125 (Script_options::add_symbol_assignment): Update
3126 symbol_definitions_ and symbol_references_.
3127 (Script_options::add_symbol_reference): New function.
3128 (script_symbol): New function.
3129 * script.h (class Script_options): Add symbol_definitions_ and
3130 symbol_references_ fields.
3131 (Script_options::referenced_const_iterator): New type.
3132 (Script_options::referenced_begin): New function.
3133 (Script_options::referenced_end): New function.
3134 (Script_options::is_referenced): New function.
3135 (Script_options::any_unreferenced): New function.
3136 * script-c.h (script_symbol): Declare.
3137 * yyscript.y (exp): Call script_symbol.
3138 * symtab.cc: Include "script.h".
3139 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
3140 Change all callers. Check symbols referenced by scripts.
3141 (Symbol_table::add_undefined_symbols_from_command_line): Add
3142 layout parameter. Change all callers.
3143 (Symbol_table::do_add_undefined_symbols_from_command_line):
3144 Likewise. Break out loop body. Check symbols referenced by
3145 scripts.
3146 (Symbol_table::add_undefined_symbol_from_command_line): New
3147 function broken out of
3148 do_add_undefined_symbols_from_command_line.
3149 * symtab.h (class Symbol_table): Update declarations.
3150 * archive.cc: Include "layout.h".
3151 (Archive::should_include_member): Add layout parameter. Change
3152 all callers. Check for symbol mentioned in expression.
3153 * archive.h (class Archive): Update declaration.
3154 * object.cc (Sized_relobj::do_should_include_member): Add layout
3155 parameter.
3156 * object.h (Object::should_include_member): Add layout parameter.
3157 Change all callers.
3158 (Object::do_should_include_member): Add layout parameter.
3159 (class Sized_relobj): Update declaration.
3160 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
3161 parameter.
3162 * dynobj.h (class Sized_dynobj): Update declaration.
3163 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
3164 layout parameter.
3165 * plugin.h (class Sized_pluginobj): Update declaration.
3166
5f1ab67a
ILT
31672010-08-02 Ian Lance Taylor <iant@google.com>
3168
3169 PR 11866
3170 * output.cc (Output_segment::set_offset): Search for the first and
3171 last sections rather than assuming that the list is in order.
3172 (Output_segment::find_first_and_last_list): New function.
3173 * output.h (class Output_segment): Update declarations.
3174 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
3175 (relro_strip_test_SOURCES): New variable.
3176 (relro_strip_test_DEPENDENCIES): New variable.
3177 (relro_strip_test_LDFLAGS): New variable.
3178 (relro_strip_test_LDADD): New variable.
3179 (relro_strip_test.so): New target.
3180
a8df5856
ILT
31812010-08-02 Ian Lance Taylor <iant@google.com>
3182
3183 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
3184 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
3185 (Target_i386::got_tlsdesc_section): New function.
3186 (Target_i386::got_section): Create space for GOT entries for
3187 TLSDESC relocations.
3188 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
3189 R_386_TLS_GOTDESC.
3190 (Target_i386::Scan::global): Likewise.
3191 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
3192 using TLSDESC GOT.
3193 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
3194 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
3195 (Target_x86_64::got_tlsdesc_section): New function.
3196 (Target_x86_64::got_section): Create space for GOT entries for
3197 TLSDESC relocations.
3198 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
3199 R_386_TLS_GOTDESC.
3200 (Target_x86_64::Scan::global): Likewise.
3201 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
3202 using TLSDESC GOT.
3203
0c10a0a6
ILT
32042010-08-02 Ian Lance Taylor <iant@google.com>
3205
3206 * testsuite/final_layout.sh: Use dc to convert from hex to
3207 decimal.
3208
41cbeecc
ST
32092010-07-29 Sriraman Tallam <tmsriram@google.com>
3210
3211 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
3212 paramter to the call to gold::gc_process_relocs.
3213 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
3214 paramter to the call to gold::gc_process_relocs.
3215 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
3216 parameter to the call to gold::gc_process_relocs.
3217 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
3218 template parameter to the call to gold::gc_process_relocs.
3219 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
3220 paramter to the call to gold::gc_process_relocs.
3221 * gc.h (get_embedded_addend_size): New function.
3222 (gc_process_relocs): Save the size of the reloc for use by ICF.
3223 * icf.cc (get_section_contents): Get the addend from the text section
3224 for SHT_REL relocation sections.
3225 * icf.h (Icf::Reloc_addend_size_info): New typedef.
3226 (Icf::Reloc_info): Add new member reloc_addend_size_info.
3227 * int_encoding.h (read_from_pointer): New overloaded function.
3228 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
3229 * testsuite/icf_sht_rel_addend_test.sh: New file.
3230 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
3231 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
3232
6ea55b82
RW
32332010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3234
3235 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
3236 * Makefile.in: Regenerate.
3237 * testsuite/Makefile.in: Regenerate.
3238
9691462b
ILT
32392010-07-27 Jeffrey Yasskin <jyasskin@google.com>
3240
3241 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
3242 * gold/testsuite/debug_msg.cc: Likewise.
3243 * gold/testsuite/odr_violation1.cc
3244 * gold/testsuite/odr_violation2.cc
3245
76897331
CC
32462010-07-21 Cary Coutant <ccoutant@google.com>
3247
3248 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
3249 string, and length fields.
3250 (Output_merge_string::Merged_strings_list): New type.
3251 (Output_merge_string::Merged_strings_lists): New typedef.
3252 (Output_merge_string): Replace merged_strings_ with
3253 merged_strings_lists_.
3254 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
3255 Merged_strings_list per input object and section. Don't store pointer
3256 to the string. Don't store length with each merged string entry.
3257 (Output_merge_string::finalize_merged_data): Loop over list of merged
3258 strings lists. Recompute length of each merged string.
3259
78384e8f
CC
32602010-07-15 Cary Coutant <ccoutant@google.com>
3261
3262 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
3263 here.
3264
783659f9
ILT
32652010-07-14 Ian Lance Taylor <iant@google.com>
3266
3267 * descriptors.cc (Descriptors::open): Report correct name in error
3268 message.
3269
131687b4
DK
32702010-07-13 Doug Kwan <dougkwan@google.com>
3271
3272 * arm.cc (Arm_input_section::Arm_input_section): For a
3273 SHT_ARM_EXIDX section, always keeps the input sections.
3274 (Arm_input_section::set_exidx_section_link): New method.
3275 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
3276 has_errors_ to false.
3277 (Arm_exidx_input_section::has_errors,
3278 Arm_exidx_input_section::set_has_errors): New methods.
3279 (Arm_exidx_input_section::has_errors_): New data member.
3280 (Arm_relobj::get_exidx_shndx_list): New method.
3281 (Arm_output_section::append_text_sections_to_list): Do not skip
3282 section without SHF_EXECINSTR.
3283 (Arm_output_section::fix_exidx_coverage): Skip input sections with
3284 errors.
3285 (Arm_relobj::make_exidx_input_section): Add new parameter for text
3286 section header. Make error messages more verbose. Check for
3287 a non-executable section linked to an EXIDX section.
3288 (Arm_relobj::do_read_symbols): Remove error checking, which has been
3289 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
3290 check that there is no deferred EXIDX section if we exit early.
3291 Instead of not making an EXIDX section in case of an error, make one
3292 and set the has_errors flag of it.
3293 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
3294 in a relocatable link.
3295 (Target_arm::do_relax): Look for the EXIDX output section instead of
3296 assuming that it is called .ARM.exidx.
3297 (Target_arm::fix_exidx_coverage): Add a new parameter for input
3298 section list. Do not check for SHF_EXECINSTR section flags but
3299 skip any input section with errors.
3300 * output.cc (Output_section::Output_section): Initialize
3301 always_keeps_input_sections_ to false.
3302 (Output_section::add_input_section): Check for
3303 always_keeps_input_sections_.
3304 * output.h (Output_section::always_keeps_input_sections,
3305 Output_section::set_always_keeps_input_sections): New methods.
3306 (Output_section::always_keeps_input_sections): New data member.
3307
69517287
RÁE
33082010-07-13 Rafael Espindola <espindola@google.com>
3309
3310 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
3311 * fileread.h (Input_file): Add try_extra_search_path and find_file.
3312
82742395
ILT
33132010-07-13 Philip Herron <herron.philip@googlemail.com>
3314 Ian Lance Taylor <iant@google.com>
3315
3316 * output.h (Output_section_lookup_maps::add_merge_section):
3317 Correct check of whether value was inserted.
3318 (Output_section_lookup_maps::add_merge_input_section): Likewise.
3319 (Output_section_lookup_maps::add_relaxed_input_section):
3320 Likewise.
3321 * arm.cc (Target_arm::got_section): Remove used local os.
3322 * i386.cc (Target_i386::got_section): Likewise.
3323 * x86_64.cc (Target_x86_64::got_section): Likewise.
3324 * sparc.cc (Target_sparc::got_section): Likewise.
3325 (Target_sparc::relocate): Remove unused local have_got_offset.
3326 * powerpc.cc (Target_powerpc::relocate): Likewise.
3327
f2d707b5
ILT
33282010-07-13 Ian Lance Taylor <iant@google.com>
3329
241531d6
ILT
3330 * compressed_output.cc (zlib_decompress): Fix signature in
3331 !HAVE_ZLIB_H case.
3332
f2d707b5
ILT
3333 * archive.cc (Archive::include_member): Unlock an external member
3334 of a thin archive. Don't bother to delete an object we know is
3335 NULL.
3336
a2e47362
CC
33372010-07-12 Cary Coutant <ccoutant@google.com>
3338
3339 * compressed_output.cc (zlib_decompress): New function.
3340 (get_uncompressed_size): New function.
3341 (decompress_input_section): New function.
3342 * compressed_output.h (get_uncompressed_size): New function.
3343 (decompress_input_section): New function.
3344 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
3345 Handle compressed debug sections.
3346 * layout.cc (is_compressed_debug_section): New function.
3347 (Layout::output_section_name): Map compressed section names to
3348 canonical names.
3349 * layout.h (is_compressed_debug_section): New function.
3350 (is_debug_info_section): Recognize compressed debug sections.
3351 * merge.cc: Include compressed_output.h.
3352 (Output_merge_data::do_add_input_section): Handle compressed
3353 debug sections.
3354 (Output_merge_string::do_add_input_section): Handle compressed
3355 debug sections.
3356 * object.cc: Include compressed_output.h.
3357 (Sized_relobj::Sized_relobj): Initialize new data members.
3358 (build_compressed_section_map): New function.
3359 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
3360 * object.h (Object::section_is_compressed): New method.
3361 (Object::do_section_is_compressed): New method.
3362 (Sized_relobj::Compressed_section_map): New type.
3363 (Sized_relobj::do_section_is_compressed): New method.
3364 (Sized_relobj::compressed_sections_): New data member.
3365 * output.cc (Output_section::add_input_section): Handle compressed
3366 debug sections.
3367 * reloc.cc: Include compressed_output.h.
3368 (Sized_relobj::write_sections): Handle compressed debug sections.
3369
ce279a62
CC
33702010-07-08 Cary Coutant <ccoutant@google.com>
3371
3372 * resolve.cc (Symbol_table::resolve): Remember whether undef was
3373 weak when resolving to a dynamic def.
3374 (Symbol_table::should_override): Add adjust_dyndef flag; set it
3375 for weak undef/dynamic def cases. Adjust callers.
3376 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
3377 undef_binding_weak_.
3378 (Symbol_table::sized_write_globals): Adjust symbol binding.
3379 (Symbol_table::sized_write_symbol): Add binding parameter.
3380 * symtab.h (Symbol::set_undef_binding): New method.
3381 (Symbol::is_undef_binding_weak): New method.
3382 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
3383 (Symbol_table::should_override): Add new parameter.
3384 (Symbol_table::sized_write_symbol): Add new parameter.
3385
3386 * testsuite/weak_undef_file1.cc: Add new test case.
3387 * testsuite/weak_undef_file2.cc: Fix header comment.
3388 * testsuite/weak_undef_test.cc: Add new test case.
3389
b2286c10
DK
33902010-06-29 Doug Kwan <dougkwan@google.com>
3391
3392 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
3393 Initialize USE_SYMBOL_.
3394 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
3395 definition.
3396 (Arm_reloc_property::uses_symbol_): New data member declaration.
3397 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
3398 uses symbol value and symbol is undefined but not weakly undefined.
3399
4802450a
RÁE
34002010-06-28 Rafael Espindola <espindola@google.com>
3401
3402 * plugin.cc (Plugin::load): Use dlerror.
3403
e5ca47ba
ILT
34042010-06-26 Jeffrey Yaskin <jyasskin@google.com>
3405
3406 * symtab.cc (detect_odr_violations): When reporting an ODR
3407 violation, report an object where the symbol is defined.
3408
8a75a161
DK
34092010-06-25 Doug Kwan <dougkwan@google.com>
3410
3411 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
3412 (Target_arm::section_may_have_icf_unsafe_pointers): New method
3413 definition.
3414 (Target_arm::Scan::local_reloc_may_be_function_pointer,
3415 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
3416 target hook to detect function points.
3417 (Target_arm::Scan::possible_function_pointer_reloc): New method.
3418 * icf.h (Icf::check_section_for_function_pointers): Change type of
3419 parameter SECTION_NAME to const reference to std::string. Use
3420 target hook to determine if section may have unsafe pointers.
3421 * target.h (Target::section_may_have_icf_unsafe_pointers): New
3422 method definition.
3423
42218b9f
RÁE
34242010-06-21 Rafael Espindola <espindola@google.com>
3425
3426 * fileread.cc (Input_file::find_fie): New
3427 (Input_file::open): Use Input_file::find_fie.
3428 * fileread.h (Input_file::find_fie): New
3429 * plugin.cc (set_extra_library_path): New.
3430 (Plugin::load): Add set_extra_library_path to the transfer vector.
3431 (Plugin_manager::set_extra_library_path): New.
3432 (Plugin_manager::add_input_file): Use the extra search path if set.
3433 (set_extra_library_path(): New.
3434 * plugin.h (Plugin_manager): Add set_extra_library_path and
3435 extra_search_path_.
3436
a0506cca
CC
34372010-06-19 Cary Coutant <ccoutant@google.com>
3438
3439 * layout.cc (gdb_sections): Add .debug_types.
3440 (lines_only_debug_sections): Likewise.
3441
6508b958
RÁE
34422010-06-18 Rafael Espindola <espindola@google.com>
3443
3444 * plugin.cc (add_input_file,add_input_library)
3445 (Plugin_manager::add_input_file): Make filename arguments const.
3446 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
3447 const.
3448
3e235302
DK
34492010-06-16 Doug Kwan <dougkwan@google.com>
3450
3451 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
3452 .ARM.attributes section if we have not merged any input
3453 attributes sections.
3454
106e8a6c
DK
34552010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3456
3457 * arm.cc: Allow combining objects with no EABI version
3458 information.
3459
91ff43fe
RÁE
34602010-06-15 Rafael Espindola <espindola@google.com>
3461
3462 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
3463
68ed838c
ILT
34642010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3465
3466 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
3467 (struct iovec): Correct !HAVE_READV definition.
3468
f3a2388f
CC
34692010-06-10 Cary Coutant <ccoutant@google.com>
3470
3471 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
3472 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
3473 reloc sections.
3474 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
3475
3476 PR 11683
3477 * symtab.h (Symbol::is_placeholder): New member function.
3478 * target-reloc.h (relocate_section): Check for placeholder symbols.
3479
3480 * testsuite/Makefile.am (plugin_test_8): New test.
3481 (plugin_test_9): New test.
3482 * testsuite/Makefile.in: Regenerate.
3483
e1df38aa
NC
34842010-06-09 Nick Clifton <nickc@redhat.com>
3485
3486 * yyscript.y (input_list_element): Allow strings prefixed with
3487 the '-' character. Treat these as libraries.
3488 * script.cc (script_add_library): New function. Adds a library
3489 specified by "-l<name>" found in an input script.
3490 * script-c.h: Add prototype for script_add_library.
3491
25bbe950
DK
34922010-06-07 Doug Kwan <dougkwan@google.com>
3493
3494 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
3495 Restrict stub-group size to be within long conditional branch
3496 range when working around cortex-A8 erratum.
3497
0f32ea4c
ILT
34982010-06-07 Damien Diederen <dd@crosstwine.com>
3499
3500 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
3501 #ifdef typo.
3502
8fe2a369
ST
35032010-06-03 Sriraman Tallam <tmsriram@google.com>
3504
3505 PR gold/11658
3506 * output.cc
3507 (Output_section::Input_section_sort_entry::compare_section_ordering):
3508 Change to return non-zero correctly.
3509 (Output_section::Input_section_sort_section_order_index_compare
3510 ::operator()): Change to fix ambiguity in comparisons.
3511
6e9ba2ca
ST
35122010-06-01 Sriraman Tallam <tmsriram@google.com>
3513
3514 * gold.h (is_wildcard_string): New function.
3515 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
3516 (Layout::layout_eh_frame): Ditto.
3517 (Layout::find_section_order_index): New method.
3518 (Layout::read_layout_from_file): New method.
3519 * layout.h (Layout::find_section_order_index): New method.
3520 (Layout::read_layout_from_file): New method.
3521 (Layout::input_section_position_): New private member.
3522 (Layout::input_section_glob_): New private member.
3523 * main.cc (main): Call read_layout_from_file here.
3524 * options.h (--section-ordering-file): New option.
3525 * output.cc (Output_section::input_section_order_specified_): New
3526 member.
3527 (Output_section::Output_section): Initialize new member.
3528 (Output_section::add_input_section): Add new parameter.
3529 Keep input sections when --section-ordering-file is used.
3530 (Output_section::set_final_data_size): Sort input sections when
3531 section ordering file is specified.
3532 (Output_section::Input_section_sort_entry): Add new parameter.
3533 Check sorting type.
3534 (Output_section::Input_section_sort_entry::compare_section_ordering):
3535 New method.
3536 (Output_section::Input_section_sort_compare::operator()): Change to
3537 consider section_order_index.
3538 (Output_section::Input_section_sort_init_fini_compare::operator()):
3539 Change to consider section_order_index.
3540 (Output_section::Input_section_sort_section_order_index_compare
3541 ::operator()): New method.
3542 (Output_section::sort_attached_input_sections): Change to sort
3543 according to section order when specified.
e1df38aa
NC
3544 (Output_section::add_input_section<32, true>): Add new parameter.
3545 (Output_section::add_input_section<64, true>): Add new parameter.
3546 (Output_section::add_input_section<32, false>): Add new parameter.
3547 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
3548 * output.h (Output_section::add_input_section): Add new parameter.
3549 (Output_section::input_section_order_specified): New
3550 method.
3551 (Output_section::set_input_section_order_specified): New method.
3552 (Input_section::Input_section): Initialize section_order_index_.
3553 (Input_section::section_order_index): New method.
3554 (Input_section::set_section_order_index): New method.
3555 (Input_section::section_order_index_): New member.
3556 (Input_section::Input_section_sort_section_order_index_compare): New
3557 struct.
3558 (Output_section::input_section_order_specified_): New member.
3559 * script-sections.cc (is_wildcard_string): Delete and move modified
3560 method to gold.h.
3561 (Output_section_element_input::Output_section_element_input): Modify
3562 call to is_wildcard_string.
3563 (Output_section_element_input::Input_section_pattern
3564 ::Input_section_pattern): Ditto.
3565 (Output_section_element_input::Output_section_element_input): Ditto.
3566 * testsuite/Makefile.am (final_layout): New test case.
3567 * testsuite/Makefile.in: Regenerate.
3568 * testsuite/final_layout.cc: New file.
3569 * testsuite/final_layout.sh: New file.
3570
3537c84b
RÁE
35712010-06-01 Rafael Espindola <espindola@google.com>
3572
3573 * plugin.cc (Plugin::load): Pass the output name to the plugin.
3574
105b6afd
RÁE
35752010-06-01 Rafael Espindola <espindola@google.com>
3576
3577 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
3578 visibility of symbols.
3579
29e11421
DK
35802010-05-27 Doug Kwan <dougkwan@google.com>
3581
3582 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
3583 from start of output section instead of address for a local symbol
3584 in a merged or relaxed section when doing a relocatable link.
3585
5e0f337e
RÁE
35862010-05-26 Rafael Espindola <espindola@google.com>
3587
3588 PR 11604
3589 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
3590 adding sections the garbage collector removed.
3591 * gold/testsuite/Makefile.am: Add test.
3592 * gold/testsuite/Makefile.in: Regenerate.
3593 * gold/testsuite/plugin_test_7.sh: New.
3594 * gold/testsuite/plugin_test_7_1.c: New.
3595 * gold/testsuite/plugin_test_7_2.c: New.
3596
f4187277
RÁE
35972010-05-26 Rafael Espindola <espindola@google.com>
3598
3599 * script-sections.cc (Output_section_definition::set_section_addresses):
3600 Check for --section-start.
3601
5c388529
DK
36022010-05-26 Doug Kwan <dougkwan@google.com>
3603
3604 * arm.cc (Arm_scan_relocatable_relocs): New class.
3605 (Target_arm::relocate_special_relocatable): New method.
3606 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
3607 (Arm_relocate_functions::thumb_branch_common): Same.
3608 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
3609 instead of Default_scan_relocatable_relocs.
3610 * target-reloc.h (relocate_for_relocatable): Let target handle
3611 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
3612 * target.h (Sized_target::relocate_special_relocatable): New method.
3613
bca1c3ae
ILT
36142010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3615
3616 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
3617
0439c796
DK
36182010-05-23 Doug Kwan <dougkwan@google.com>
3619
3620 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
3621 instead of a cast.
3622 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
3623 with a direct branch, not a conditional branch, to a stub.
3624 * merge.cc (Output_merge_base::record_input_section): New method
3625 defintion.
3626 (Output_merge_data::do_add_input_section): Record input section if
3627 keeps-input-sections flag is set.
3628 (Output_merge_string::do_add_input_section): Ditto.
3629 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
3630 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
3631 INPUT_SECTIONS_.
3632 (Output_merge_base::keeps_input_sections,
3633 Output_merge_base::set_keeps_input_sections,
3634 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
3635 method definitions.
3636 (Output_merge_base::Input_sections): New type declaration.
3637 (Output_merge_base::input_sections_begin,
3638 Output_merge_base::input_sections_end,
3639 Output_merge_base::do_set_keeps_input_sections): New method definitions.
3640 (Output_merge_base::bool keeps_input_sections_,
3641 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
3642 Output_merge_base::input_sections_): New data members.
3643 (Output_merge_data::do_set_keeps_input_sections): New method
3644 defintion.
3645 (Output_merge_string::do_set_keeps_input_sections): Ditto.
3646 * output.cc (Output_section::Input_section::relobj): Move method
3647 defintion from class declaration to here and handle merge sections.
3648 (Output_section::Input_section::shndx): Ditto.
3649 (Output_section::Output_section): Remove initializations of removed
3650 data members and initialize new data member LOOKUP_MAPS_.
3651 (Output_section::add_input_section): Set keeps-input-sections flag
3652 for a newly created merge output section as appropriate. Adjust code
3653 to use Output_section_lookup_maps class.
3654 (Output_section::add_relaxed_input_section): Adjst code for lookup
3655 maps code refactoring.
3656 (Output_section::add_merge_input_section): Add a new parameter
3657 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
3658 class. If adding input section to a newly created merge output
3659 section fails, remove the new merge section.
3660 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 3661 Adjust code for use of the Output_section_lookup_maps class.
0439c796
DK
3662 (Output_section::find_merge_section): Ditto.
3663 (Output_section::build_lookup_maps): New method defintion.
3664 (Output_section::find_relaxed_input_section): Adjust code to use
3665 Output_section_lookup_maps class.
3666 (Output_section::get_input_sections): Export merge sections. Adjust
3667 code to use Output_section_lookup_maps class.
3668 (Output_section:::add_script_input_section): Adjust code to use
3669 Output_section_lookup_maps class. Update lookup maps for merge
3670 sections also.
3671 (Output_section::discard_states): Use Output_section_lookup_maps.
3672 (Output_section::restore_states): Same.
3673 * output.h (Merge_section_properties): Move class defintion out of
3674 Output_section.
3675 (Output_section_lookup_maps): New class.
3676 (Output_section::Input_section::is_merge_section): New method
3677 defintion.
3678 (Output_section::Input_section::relobj): Move defintion out of class
3679 defintion. Declare method only.
3680 (Output_section::Input_section::shndx): Ditto.
3681 (Output_section::Input_section::output_merge_base): New method defintion.
3682 (Output_section::Input_section::u2_.pomb): New union field.
3683 (Output_section::Merge_section_by_properties_map,
3684 Output_section::Output_section_data_by_input_section_map,
3685 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
3686 Remove types.
3687 (Output_section::add_merge_input_section): Add new parameter
3688 KEEPS_INPUT_SECTIONS.
3689 (Output_section::build_lookup_maps): New method declaration.
3690 (Output_section::merge_section_map_,
3691 Output_section::merge_section_by_properties_map_,
3692 Output_section::relaxed_input_section_map_,
3693 Output_section::is_relaxed_input_section_map_valid_): Remove data
3694 members.
3695 (Output_section::lookup_maps_): New data member.
3696
76295588
L
36972010-05-21 Doug Kwan <dougkwan@google.com>
3698
3699 PR gold/11619
3700 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
3701 avoid a compilation error.
3702
d103a984
RÁE
37032010-05-19 Rafael Espindola <espindola@google.com>
3704
3705 * script-sections.cc (Output_section_definition::allocate_to_segment):
3706 Update the phdrs_list even when the output section is NULL.
3707 * testsuite/Makefile.am: Add test.
3708 * testsuite/Makefile.in: Regenerate.
3709 * testsuite/script_test_9.cc: New.
3710 * testsuite/script_test_9.sh: New.
3711 * testsuite/script_test_9.t: New.
3712
6625d24e
DK
37132010-05-19 Doug Kwan <dougkwan@google.com>
3714
3715 * arm.cc (Arm_input_section::original_size): New method.
3716 (Arm_input_section::do_addralign): Add a cast.
3717 (Arm_input_section::do_output_offset): Remove static cast.
3718 (Arm_input_section::original_addralign,
3719 Arm_input_section::original_size_): Change type to uint32_t.
3720 (Arm_input_section::init): Add safe casts for section alignment
3721 and size.
3722 (Arm_input_section::set_final_data_size): Do not set address and
3723 offset of stub table.
3724 (Arm_output_section::fix_exidx_coverage): Change use of of
3725 Output_section::Simple_input_section to that of
3726 Output_section::Input_section.
3727 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
3728 except for the first pass.
3729 * output.cc (Output_section::get_input_sections): Change type of
3730 input_sections to std::list<Input_section>.
3731 (Output_section::add_script_input_section): Rename from
3732 Output_section::add_simple_input_section. Change type of SIS
3733 parameter from Simple_input_section to Input_section.
3734 * output.h (Output_section::Simple_input_section): Remove class.
3735 (Output_section::Input_section): Change class visibility to public.
3736 (Output_section::Input_section::addralign): Use stored alignments
3737 for special input sections if set.
3738 (Output_section::Input_section::set_addralign): New method.
3739 (Output_section::get_input_sections): Change parameter type from
3740 list of Simple_input_section to list of Input_section.
3741 (Output_section::add_script_input_section): Rename from
3742 Output_section::add_simple_input_section. Change first parameter's
3743 type from Simple_input_section to Input_section and remove the
3744 second and third parameters.
3745 * script-sections.cc (Input_section::Input_section_list): Change
3746 type to list of Output_section::Input_section/
3747 (Input_section_info::Input_section_info): Change parameter type of
3748 INPUT_SECTION to Output_section::Input_section.
3749 (Input_section_info::input_section): Change return type.
3750 (Input_section_info::input_section_): Change type to
3751 Output_section::Input_section.
3752 (Output_section_element_input::set_section_addresses): Adjust code
3753 to use Output_section::Input_section instead of
3754 Output_section::Simple_input_section. Adjust code for renaming
3755 of Output_section::add_simple_input_section.
3756 (Orphan_output_section::set_section_addresses): Ditto.
3757
e1e82ea4
RW
37582010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3759
3760 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
3761 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
3762
91e75c8a
RÁE
37632010-05-18 Rafael Espindola <espindola@google.com>
3764
3765 * options.cc (General_options::finalize): Handle -nostdlib.
3766 * options.h (nostdlib): New option.
3767 * script.cc (script_add_search_dir): Handle -nostdlib.
3768
da59ad79
DK
37692010-05-12 Doug Kwan <dougkwan@google.com>
3770
3771 * arm.cc (Target_arm::do_finalize_sections): Create an empty
3772 attributes section only if there no attributes section after merging.
3773 (Target_arm::merge_object_attributes): Move value of
e1df38aa 3774 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
3775 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
3776 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
3777 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
3778 and arm_attr_merge_7.stdout.
3779 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
3780 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
3781 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
3782 arm_attr_merge_7b.o): New rules.
3783 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
3784 arm_attr_merge_7
3785 * testsuite/Makefile.in: Regenerate.
3786 * testsuite/arm_attr_merge.sh: New file.
3787 * testsuite/arm_attr_merge_[67][ab].s: Same.
3788
3e01a7fd
NC
37892010-05-05 Nick Clifton <nickc@redhat.com>
3790
3791 * po/es.po: Updated Spanish translation.
3792
7ad2014a
L
37932010-04-27 H.J. Lu <hongjiu.lu@intel.com>
3794
3795 * Makefile.am (install-exec-local): Properly install gold as
3796 default cross linker.
3797 * Makefile.in: Regenerated.
3798
4fda8867
NC
37992010-04-27 H.J. Lu <hongjiu.lu@intel.com>
3800 Nick Clifton <nickc@redhat.com>
3801
3802 * configure.ac (install_as_default): Define and set to false
3803 unless --enable-gold or --enable-gold=both/gold has been
3804 specified.
3805 * configure: Regenerate.
3806
3807 * Makefile.am (install-exec-local): Install the executable as
3808 'ld.gold'. If install_as_default is true then also install it as
3809 'ld'.
3810 * Makefile.in: Regenerated.
3811
bd288ea2
ILT
38122010-04-24 Ian Lance Taylor <iant@google.com>
3813
3814 * layout.cc (Layout::layout_reloc): In relocatable link don't
3815 combine reloc sections for grouped sections.
3816
ef38fd8a
ST
38172010-04-23 Sriraman Tallam <tmsriram@google.com>
3818
3819 * gc.h (gc_process_relocs): Pass information on relocs pointing to
3820 sections that are not ordinary to icf.
3821 * icf.cc (get_section_contents): Handle relocation pointing to section
3822 with no object or shndx information.
3823 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
3824 * testsuite/Makefile.in: Regenerate.
3825 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
3826 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
3827
f6973bdc
ILT
38282010-04-22 Ian Lance Taylor <iant@google.com>
3829
3830 * expression.cc (Expression::Expression_eval_info): Add
3831 result_alignment_pointer field.
3832 (Expression::eval_with_dot): Add result_alignment_pointer
3833 parameter. Change all callers.
3834 (Expression::eval_maybe_dot): Likewise.
3835 (class Binary_expression): Add alignment_pointer parameter to
3836 left_value and right_value. Change all callers.
3837 (BINARY_EXPRESSION): Set result alignment.
3838 (class Trinary_expression): Add alignment_pointer parameter to
3839 arg2_value and arg3_value. Change all callers.
3840 (Trinary_cond::value): Set result alignment.
3841 (Max_expression::value, Min_expression::value): Likewise.
3842 (Align_expression::value): Likewise.
3843 * script-sections.cc (class Sections_element): Add dot_alignment
3844 parameter to set_section_addresses virtual function. Update
3845 instantiations.
3846 (class Output_section_element): Likewise.
3847 (Script_sections::create_segments): Add dot_alignment parameter.
3848 Change all callers.
3849 (Script_sections::create_segments_from_phdrs_clause): Likewise.
3850 (Script_sections::set_phdrs_clause_addresses): Likewise.
3851 * script-sections.h: Update declarations.
3852 * script.h: Update declarations.
3853 * output.h (Output_segment::set_minimum_p_align): Don't decrease
3854 min_p_align.
3855 * testsuite/script_test_3.t: Set large alignment.
3856 * testsuite/script_test_3.sh: Make sure that at least one LOAD
3857 segment has expected alignment.
3858
9c9c98a5
NC
38592010-04-22 Nick Clifton <nickc@redhat.com>
3860
3861 * po/gold.pot: Updated by the Translation project.
3862 * po/vi.po: Updated Vietnamese translation.
3863
2253bfba
L
38642010-04-22 H.J. Lu <hongjiu.lu@intel.com>
3865
3866 * testsuite/Makefile.am (check_PROGRAMS): Add
3867 icf_virtual_function_folding_test.
3868 * testsuite/Makefile.in: Regenerated.
3869
85fdf906
AH
38702010-04-15 Andrew Haley <aph@redhat.com>
3871
3872 * options.h (merge_exidx_entries): New option.
3873 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
3874 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
3875 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
3876 (Target_arm::merge_exidx_entries): New function.
3877 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
3878 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
3879 to Arm_exidx_fixup constructor.
3880 Add new arg, merge_exidx_entries.
3881 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
3882 Arm_output_section::fix_exidx_coverage.
3883
ce97fa81
ST
38842010-04-18 Sriraman Tallam <tmsriram@google.com>
3885
3886 * icf.cc (get_section_contents): Check for preemptible functions.
3887 Ignore addend when appropriate.
3888 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
3889 section folded.
3890 (add_from_relobj): Check for section folded.
3891 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
3892 * symtab.h (should_add_dynsym_entry): Add new parameter.
3893 * target-reloc.h (scan_relocs): Check for section folded.
3894 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
3895 Check reloc types for function pointers in shared objects.
3896 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
3897 case.
3898 (icf_preemptible_functions_test): New test case.
3899 (icf_string_merge_test): New test case.
3900 * testsuite.Makefile.in: Regenerate.
3901 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
3902 bar_glob. Refactor code.
3903 * testsuite/icf_preemptible_functions_test.cc: New file.
3904 * testsuite/icf_preemptible_functions_test.sh: New file.
3905 * testsuite/icf_string_merge_test.cc: New file.
3906 * testsuite/icf_string_merge_test.sh: New file.
3907 * testsuite/icf_virtual_function_folding_test.cc: New file.
3908 * testsuite/icf_virtual_function_folding_test.sh: New file.
3909
04ceb17c
DK
39102010-04-14 Doug Kwan <dougkwan@google.com>
3911
3912 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
3913 for local symbol recounting if we remove a section due to ICF.
3914 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
3915 there are no regular objects in input.
3916
153e7da4
DK
39172010-04-13 Doug Kwan <dougkwan@google.com>
3918
3919 * arm.cc (Arm_input_section::set_final_data_size): Compute
3920 accurate final data size instead of using current data size.
3921
4dbd9faf
DK
39222010-04-09 Doug Kwan <dougkwan@google.com>
3923
3924 * layout.cc (Layout::choose_output_section): Handle script section
3925 types.
3926 (Layout::make_output_section_for_script): Add section type parameter.
3927 Handle script section types.
3928 * layout.h (Layout::make_output_section_for_script): Add section
3929 type parameter.
3930 * output.cc (Output_section::Output_section): Initialize data member
3931 is_noload_.
3932 (Output_section::do_reset_address_and_file_offset): Do not set address
3933 to 0 if section is a NOLOAD section.
3934 * output.h (Output_section::is_noload): New method.
3935 (Output_section::set_is_noload): Ditto.
3936 (Output_section::is_noload_): New data member.
3937 * script-c.h (Script_section_type): New enum type.
3938 (struct Parser_output_section_header): Add new file section_type.
3939 * script-sections.cc (Sections_element::output_section_name): Add
3940 parameter for returning script section type.
3941 (Output_section_definition::output_section_name): Ditto.
3942 (Output_section_definition::section_type)P; New method.
3943 (Output_section_definiton::script_section_type_name): Ditto.
3944 (Output_section_definition::script_section_type_): New data member.
3945 (Output_section_definition::Output_section_definition): Initialize
3946 data member Output_section_definition::script_section_type_.
3947 (Output_section_definition::create_sections): Pass script section type
3948 to Layout::make_output_section_for_script.
3949 (Output_section_definition::output_section_name): Return script
3950 section type to caller.
3951 (Output_section_definition::set_section_address): Do not advance
3952 dot value and load address if section type is NOLOAD. Set address
3953 of NOLOAD sections regardless of section flags.
3954 (Output_section_definition::print): Print section type if it is
3955 not SCRIPT_SECTION_TYPE_NONE.
3956 (Output_section_definition::section_type): New method.
3957 (Output_section_definition::script_section_type_name): Ditto.
3958 (Script_sections::output_section_name): Add new parameter
3959 PSECTION_TYPE for returning script section type. Pass it to
3960 section elements. Handle discard sections.
3961 (Sort_output_sections::operator()): Handle NOLOAD sections.
3962 * script-sections.h (Script_sections::Section_type): New enum type.
3963 (Script_sections::output_section_name): Add a new parameter for
3964 returning script section type.
3965 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
3966 INFO and NOLOAD.
3967 * yyscript.y (union): Add new field SECTION_TYPE.
3968 (COPY, DSECT, INFO, NOLOAD): New tokens.
3969 (opt_address_and_section_type): Change type to output_section_header.
3970 (section_type): New non-terminal
3971 (section_header): Handle section type.
2253bfba 3972 (opt_address_and_section_type): Return section type value.
4dbd9faf 3973
721ea635
L
39742010-04-09 H.J. Lu <hongjiu.lu@intel.com>
3975
3976 * testsuite/plugin_common_test_1.c (foo): Add prototype.
3977 * testsuite/plugin_common_test_2.c (foo): Likewise.
3978
6bf924b0
DK
39792010-04-08 Doug Kwan <dougkwan@google.com>
3980
3981 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
3982 Output_merge_data.
3983 * output.cc (Output_section::add_merge_input_section): Simplify
3984 code and return status of Output_merge_base::add_input_section.
e1df38aa 3985 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
3986 returns true.
3987
24af6f92
DK
39882010-04-07 Doug Kwan <dougkwan@google.com>
3989
3990 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
3991 if section is marked as containing instructions but has no mapping
3992 symbols.
3993 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
3994 correct section index.
3995 (Arm_relobj::find_linked_text_section): Ditto.
3996
00698fc5
CC
39972010-04-07 Cary Coutant <ccoutant@google.com>
3998
3999 * archive.cc (include_member): Destroy Read_symbols_data object before
4000 releasing file.
4001 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
4002 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
4003 (Read_symbols_data::~Read_symbols_data) New destructor.
4004 (Section_relocs::Section_relocs) New constructor.
4005 (Section_relocs::~Section_relocs) New destructor.
4006 (Read_relocs_data::Read_relocs_data) New constructor.
4007 (Read_relocs_data::~Read_relocs_data) New destructor.
4008 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
4009 pointers to NULL after deleting.
4010
7296d933
DK
40112010-04-07 Doug Kwan <dougkwan@google.com>
4012
4013 * arm.cc: Replace "endianity" with "endianness" in comments.
4014 (Arm_exidx_cantunwind): Ditto.
4015 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
4016 (Arm_relobj::merge_flags_and_attributes): New method.
4017 (Arm_relobj::merge_flags_and_attributes_): New data member.
4018 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
4019 (Arm_relobj::scan_sections_for_stubs): Ditto.
4020 (Arm_relobj::do_read_symbols): Check to see if we really want to
4021 merge processor-specific flags and attributes. Exit early if
4022 an object is empty except for section names and the undefined symbol.
4023 (Target_arm::do_finalize_sections): Move check for ELF format to
4024 Arm_relobj::do_read_symbols. Merge processor specific flags and
4025 attributes from a regular object only when we have determined that
4026 it is aapropriate. Do not create an .ARM.attributes section in
4027 output if there is no regular input object.
4028 (Target_arm::merge_processor_specific_flags): Check
4029 --warn-mismatch before printing any error.
4030 (Target_arm::merge_object_attributes): Ditto.
4031 * gold.cc (queue_middle_tasks): Handle the case in which there is
4032 no regular object in input.
4033 * options.cc (General_options::parse_EB): New method.
4034 (General_options::parse_EL): Same.
4035 (General_options::General_options): Initialize endianness_.
4036 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
4037 New options.
4038 (General_options::Endianness): New enum.
4039 (General_options::endianness): New method.
4040 (General_options::endianness_): New data member.
4041 * parameters.cc (Parameters::set_options): Check target endianness.
4042 (Parameters::set_target_once): Ditto.
4043 (Parameters::check_target_endianness): New method.
4044 (parameters_force_valid_target): If either -EL or -EB is specified,
4045 use it to define endianness of default target.
4046 * parameters.h (Parameters::check_target_endianness): New method
4047 declaration.
4048 * target.h (class Target): Change "endianity" to "endianness"
4049 in comments.
4050
efc8d4f2
RW
40512010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4052
4053 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
4054 * configure: Regenerate.
4055 * Makefile.in: Regenerate.
4056 * testsuite/Makefile.in: Regenerate.
4057
be234d88
CC
40582010-04-06 Cary Coutant <ccoutant@google.com>
4059
4060 gcc PR lto/42757
4061 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
4062 prevailing definitions of common symbols.
4063 * testsuite/plugin_test_6.sh: New test case.
4064 * testsuite/plugin_common_test_1.c: New test case.
4065 * testsuite/plugin_common_test_2.c: New test case.
4066 * testsuite/Makefile.am (plugin_test_6): New test case.
4067 * testsuite/Makefile.in: Regenerate.
4068
bd32c6bd
NC
40692010-04-06 Nick Clifton <nickc@redhat.com>
4070
4071 * po/vi.po: New Vietnamese translation.
4072
323c532f
DK
40732010-03-30 Doug Kwan <dougkwan@google.com>
4074
4075 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
4076
4fcd97eb
DK
40772010-03-25 Doug Kwan <dougkwan@google.com>
4078
4079 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
4080 to avoid a conversion warning on a 32-bit host.
4081
4ebf39db
ILT
40822010-03-24 Ian Lance Taylor <iant@google.com>
4083
4084 * testsuite/script_test_3.t: Add a TLS segment.
4085 * testsuite/Makefile.am (check_PROGRAMS): Add
4086 tls_phdrs_script_test.
4087 (tls_phdrs_script_test_SOURCES): Define.
4088 (tls_phdrs_script_test_DEPENDENCIES): Define.
4089 (tls_phdrs_script_test_LDFLAGS): Define.
4090 (tls_phdrs_script_test_LDADD): Define.
4091 * testsuite/Makefile.in: Rebuild.
4092
4a599bdd
CC
40932010-03-23 Cary Coutant <ccoutant@google.com>
4094
4095 * fileread.cc (find_or_make_view): Fix comment.
4096
6c93b22c
ILT
40972010-03-23 Ian Lance Taylor <iant@google.com>
4098
4099 * script-sections.cc (class Orphan_section_placement): Define
4100 PLACE_TLS and PLACE_TLS_BSS.
4101 (Orphan_section_placement::Orphan_section_placement): Initialize
4102 new places.
4103 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
4104 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
4105 (tls_script_test_SOURCES): Define.
4106 (tls_script_test_DEPENDENCIES): Define.
4107 (tls_script_test_LDFLAGS): Define.
4108 (tls_script_test_LDADD): Define.
4109 * testsuite/Makefile.in: Rebuild.
4110
a2c7281b
DK
41112010-03-22 Doug Kwan <dougkwan@google.com>
4112
4113 * arm.cc (Arm_relocate_functions::abs8,
4114 Arm_relocate_functions::abs16): Use correct check for overflow
4115 specified in the ARM ELF specs.
4116 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
4117 target of a BLX instruction specially.
4118 (Reloc_stub::stub_type_for_reloc): Ditto.
4119 (Relocate::relocate): Use symbolic names instead of numeric relocation
4120 codes to report error.
4121 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
4122 workaround.
4123 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
4124 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
4125 thumb2_blx_out_of_range.stdout
4126 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
4127 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
4128 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
4129 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
4130 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
4131 thumb2_blx_in_range, thumb2_blx_in_range.o,
4132 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
4133 thumb2_blx_out_of_range.o): New rules.
4134 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
4135 thumb2_blx_in_range and thumb2_blx_out_of_range.
4136 * testsuite/Makefile.in: Regenerate.
4137 * arm_branch_in_range.sh: Add tests for THUMB BLX.
4138 * testsuite/thumb_blx_in_range.s: New file.
4139 * testsuite/thumb_blx_out_of_range.s: New file.
4140
b0193076
RÁE
41412010-03-22 Rafael Espindola <espindola@google.com>
4142
4143 * archive.cc (Should_include): Move to archive.h.
4144 (should_include_member): Make it a member of Archive.
4145 (Lib_group): New.
4146 (Add_lib_group_symbols): New.
4147 * archive.h: Include options.h.
4148 (Archive_member): Moved from Archive.
4149 (Should_include): Moved from archive.cc.
4150 (Lib_group): New.
4151 (Add_lib_group_symbols): New.
4152 * dynobj.cc (do_should_include_member): New.
4153 * dynobj.h (do_should_include_member): New.
4154 * gold.cc (queue_initial_tasks): Update call to queue.
4155 * main.cc (main): Print lib group stats.
4156 * object.cc (do_should_include_member): New.
4157 * object.h: Include archive.h.
4158 (Object::should_include_member): New.
4159 (Object::do_should_include_member): New.
4160 (Sized_relobj::do_should_include_member): New.
4161 * options.cc (General_options::parse_start_lib): New.
4162 (General_options::parse_end_lib): New.
4163 (Input_arguments::add_file): Handle lib groups.
4164 (Input_arguments::start_group): Check we are not in a lib.
4165 (Input_arguments::start_lib): New.
4166 (Input_arguments::end_lib): New.
4167 * options.h (General_options): Add start_lib and end_lib.
4168 (Input_argument::lib_): New.
4169 (Input_argument::lib): New.
4170 (Input_argument::is_lib): New.
4171 (Input_file_lib): New.
4172 (Input_arguments::in_lib_): New.
4173 (Input_arguments::in_lib): New.
4174 (Input_arguments::start_lib): New.
4175 (Input_arguments::end_lib_): New.
4176 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
4177 in unused members as preempted.
4178 (Sized_pluginobj::do_should_include_member): New.
4179 * plugin.h (Sized_pluginobj::do_should_include_member): New.
4180 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
4181 return the blocker.
4182 (Read_symbols::do_whole_lib_group): New.
4183 (Read_symbols::do_lib_group): New.
4184 (Read_symbols::do_read_symbols): Handle lib groups.
4185 (Read_symbols::get_name): Handle lib groups.
4186 * readsyms.h (Read_symbols): Add an archive member pointer.
4187 (Read_symbols::do_whole_lib_group): New.
4188 (Read_symbols::do_lib_group): New.
4189 (Read_symbols::member_): New.
4190 * script.cc (read_input_script): Update call to queue_soon.
4191
d099120c
DK
41922010-03-19 Doug Kwan <dougkwan@google.com>
4193
4194 * arm.cc (Stub_table::Stub_table): Initialize new data members
4195 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
4196 (Stub_table::add_reloc_stub): Assign stub offset and update
4197 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
4198 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
4199 New data members.
4200 (Stub_table::update_data_size_and_addralign): Use
4201 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
4202 instead of going over all reloc stubs.
4203 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
4204 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
4205 Stringpool_template::offset_ to size of Stringpool_char.
4206 (Stringpool_template::new_key_offset): Remove code to initialize
4207 Stringpool_template::offset_.
4208 * stringpool.h (Stringpool_template::set_no_zero_null): Set
4209 Stringpool_template::offset_ to zero.
4210
1aa37384
DK
42112010-03-15 Doug Kwan <dougkwan@google.com>
4212
4213 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
4214 offset_.
4215 (Stringpool_template::new_key_offset): New method.
4216 (Stringpool_template::add_string): Assign offsets when adding new
4217 strings.
4218 (Stringpool_template::set_string_offsets): Do not set string offsets
4219 when not optimizing.
4220 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
4221 member size_.
4222 (Chunked_vector::clear): Clear size_.
4223 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
4224 (Chunked_vector::size): Return size_.
4225 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 4226 (Chunked_vector::size_): New data member.
1aa37384
DK
4227 (Stringpool_template::set_no_zero_null): Assert string set is empty.
4228 (Stringpool_template::new_key_offset): New method declaration.
4229 (Stringpool_template::offset_): New data member.
4230
b672b057
RÁE
42312010-03-15 Rafael Espindola <espindola@google.com>
4232
4233 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
4234 Add_symbols' constructor.
4235 * readsyms.h (Add_symbols): Remove the input_group member.
4236
b6848d3c
ILT
42372010-03-10 Ian Lance Taylor <iant@google.com>
4238
4239 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
4240 target to ask whether a reference to a symbol requires a stack
4241 split.
4242 * target.h (Target::is_call_to_non_split): New function.
4243 (Target::do_is_call_to_non_split): Declare virtual function.
4244 * target.cc: Include "symtab.h".
4245 (Target::do_is_call_to_non_split): New function.
4246 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
4247
a2a5469e
CC
42482010-03-10 Cary Coutant <ccoutant@google.com>
4249
4250 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
4251 (File_read::open[1]): Remove initial mapping of whole_file_view_.
4252 (File_read::open[2]): Add whole_file_view_ to list of views.
4253 (File_read::make_view): Remove test of whole_file_view_.
4254 (File_read::find_or_make_view): Create whole_file_view_ if
4255 necessary.
4256 (File_read::clear_views): Replace bool parameter with enum;
4257 adjust all callers. Don't delete views with permanent data;
4258 do delete cached views and views from archives if
4259 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
4260 if clearing the corresponding view.
4261 * fileread.h (File_read::Clear_views_mode): New enum.
4262 (File_read::View::is_permanent_view): New method.
4263 (File_read::clear_views): Replace bool parameter
4264 with enum; adjust all callers.
4265 * options.h (General_options): Change keep_files_mapped option;
4266 add map_whole_files.
4267 * readsyms.cc (Add_symbols::run): Delete sd_ object before
4268 releasing the file.
4269 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
4270 the file.
4271
8861f32b
DM
42722010-03-10 David S. Miller <davem@davemloft.net>
4273
4274 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
4275
d62d0f5f
ST
42762010-03-09 Sriraman Tallam <tmsriram@google.com>
4277
4278 * icf.cc (get_section_contents): Add '@' marker after processing the
4279 merge reloc.
4280
9177756d
DK
42812010-03-08 Doug Kwan <dougkwan@google.com>
4282
4283 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
4284 due to a conversion warning.
4285 (Arm_relobj::update_output_local_symbol_count): Check for local
4286 symbol with unset output index.
4287
9e9e071b
ILT
42882010-03-05 Ian Lance Taylor <iant@google.com>
4289
4290 * options.h (class General_options): Add --spare-dynamic-tags.
4291 * output.cc (Output_data_dynamic::set_final_data_size): Implement
4292 --spare-dynamic-tags.
4293
a81ee015
ILT
42942010-03-05 Ian Lance Taylor <iant@google.com>
4295
4296 * incremental.cc: Include "libiberty.h".
4297
44ec90b9
RO
42982010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4299
4300 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
4301 function, is_info_ member.
4302 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
4303 (Versions::Versions): Update caller.
4304 (Versions::define_base_version): Likewise.
4305 (Versions::add_def): Likewise.
4306
0897ed3b
ST
43072010-03-03 Sriraman Tallam <tmsriram@google.com>
4308
4309 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
4310 (Scan::possible_function_pointer_reloc): New function.
4311 (Scan::local_reloc_may_be_function_pointer): Change to call
4312 possible_function_pointer_reloc.
4313 (Scan::global_reloc_may_be_function_pointer): Ditto.
4314 * icf.h (Icf::check_section_for_function_pointers): Change to reject
4315 relocations in ".data.rel.ro._ZTV" section.
4316 * testsuite/icf_safe_so_test.sh: Change to pass i386.
4317 * testsuite/icf_safe_so_test.cc: Ditto.
4318 * testsuite/icf_safe_test.cc: Ditto.
4319 * testsuite/icf_safe_test.sh: Ditto.
4320
d3bbad62
ILT
43212010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4322 Ian Lance Taylor <iant@google.com>
4323
4324 * target-reloc.h (relocate_section): Check the symbol table index
4325 for -1U before setting the local symbol index.
4326 (scan_relocatable_relocs): If copying the relocation, record that
4327 the local symbol is required.
4328 * object.h (Symbol_value::is_output_symtab_index_set): New
4329 function.
4330 (Symbol_value::may_be_discarded_from_output_symtab): New
4331 function.
4332 (Symbol_value::has_output_symtab_entry): New function.
4333 (Symbol_value::needs_output_symtab_entry): Remove.
4334 (Symbol_value::output_symtab_index): Make sure the symbol index is
4335 set.
4336 (Symbol_value::set_output_symtab_index): Make sure the symbol
4337 index is not set. Make sure the new index is valid.
4338 (Symbol_value::set_must_have_output_symtab_entry): New function.
4339 (Symbol_value::has_output_dynsym_entry): New function.
4340 (Symbol_value::set_output_dynsym_index): Make sure the new index
4341 is valid.
4342 (Sized_relobj::set_must_have_output_symtab_entry): New function.
4343 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
4344 local symbol if permitted.
4345 (Sized_relobj::do_finalize_local_symbols): Call
4346 is_output_symtab_index_set rather than needs_output_symtab_entry.
4347 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
4348 rather than needs_output_symtab_entry. Call
4349 has_output_dynsym_entry rather than needs_output_dynsym_entry.
4350 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
4351 is_output_symtab_index_set rather than needs_output_symtab_entry.
4352 * testsuite/discard_locals_relocatable_test.c: New file.
4353 * testsuite/discard_locals_test.sh: Test -r.
4354 * testsuite/Makefile.am (check_DATA): Add
4355 discard_locals_relocatable_test1.syms,
4356 discard_local_relocatable_test2.syms.
4357 (MOSTLYCLEANFILES): Likewise. Also add
4358 discard_locals_relocatable_test1.lout and
4359 discard_locals_relocatable_test2.out.
4360 (discard_locals_relocatable_test1.syms): New target.
4361 (discard_locals_relocatable_test.o): New target.
4362 (discard_locals_relocatable_test1.out): New target.
4363 (discard_locals_relocatable_test2.syms): New target.
4364 (discard_locals_relocatable_test2.out): New target.
4365 (various): Add missing ../ld-new dependencies.
4366 * testsuite/Makefile.in: Rebuild.
4367
7e8ccf26
NC
43682010-03-03 Nick Clifton <nickc@redhat.com>
4369
4370 * po/fi.po: New Finnish translation.
4371
2a0ff005
DK
43722010-03-01 Doug Kwan <dougkwan@google.com>
4373
4374 * layout.cc (Layout::Layout): Force section types of .init_array*,
4375 .preinit_array* and .fini_array* sections.
4376 * output.cc (Output_section::Input_section_sort_entry::has_priority):
4377 Fix check of return value of std::string::find.().
4378 (Output_section::Input_section_sort_compare::operator()): Remove
4379 comment about .init_array.
4380 (Output_section::Input_section_sort_init_fini_compare::operator()):
4381 New method.
4382 (Output_section::sort_attached_input_sections): Handle .init_array
4383 and .fini_array specially.
4384 * output.h (Output_section::Inut_section_sort_compare): Update
4385 comment.
4386 (Output_section::Input_section_sort_init_fini_compare): New struct.
4387
c3e4ae29
DK
43882010-02-26 Doug Kwan <dougkwan@google.com>
4389
4390 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
4391 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
4392 * testsuite/debug_msg.sh: Avoid matching source line number for
4393 use of global variable undef_int.
4394
2fd9ae7a
DK
43952010-02-26 Doug Kwan <dougkwan@google.com>
4396
4397 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
4398 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
4399 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
4400 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
4401 * options.cc (General_options::General_options): Initialize member
4402 fix_v4bx_.
4403 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
4404 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
4405 and rm_no_fix_v4bx.stdout
4406 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
4407 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
4408 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
4409 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
4410 and arm_no_fix_v4bx.
4411 * Makefile.in: Regenerate.
4412 * testsuite/arm_fix_v4bx.s: New file.
4413 * testsuite/arm_fix_v4bx.sh: Ditto.
4414
67ec7d0b
DK
44152010-02-24 Doug Kwan <dougkwan@google.com>
4416
4417 * arm.cc (Target_arm::got_section): Make the .got section the first
4418 non RELRO section in the data segment.
4419 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
4420 suffixes of section names.
4421
10165461
DK
44222010-02-24 Doug Kwan <dougkwan@google.com>
4423
4424 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
4425 flags and attributes merging if an input file is a binary file.
4426 * fileread.cc (Input_file::open): Record format of original file.
4427 * fileread.h (Input_file::Format): New enum type.
4428 (Input_file::Input_file): Initialize data member format_.
4429 (Input_file::format): New method definition.
4430 (Input_file::format_):: New data member.
4431
4a54abbb
DK
44322010-02-24 Doug Kwan <dougkwan@google.com>
4433
4434 * arm.cc (Arm_output_data_got): New class.
4435 (ARM_TCB_SIZE): New constant
4436 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
4437 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
4438 If user uses a script with a SECTIONS clause, issue only a warning
4439 for a misplaced EXIDX input section. Otherwise, issue an error.
4440 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
4441 garbage collection.
4442 (Target_arm::got_mode_index_entry): Handle static linking.
4443 (Target_arm::Scan::local): Ditto.
4444 (Target_arm::Scan::global): Ditto.
4445 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
4446 all incorrectly implemented relocations.
e1df38aa 4447 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
4448 Arm_output_section::fix_exidx_coverage.
4449 * layout.cc (Layout::section_name_mapping): Remove trailing dots
4450 from ".ARM.exidx." and ".ARM.extab.".
4451
ca419a6f
ILT
44522010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4453
4454 * arm.cc (Target_arm::do_finalize_sections): Create attribute
4455 section if it does not already exist.
4456 * attributes.cc (Attributes_section_data::Attributes_section_data):
4457 Don't crash if size is zero.
4458
135b9c78
ILT
44592010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4460 Ian Lance Taylor <iant@google.com>
4461
4462 * gold.cc (queue_middle_tasks): If no input files were opened,
4463 exit.
4464 * workqueue.h (Task_function::Task_function): Assert that there is
4465 a blocker.
4466
bb0bfe4f
DK
44672010-02-22 Doug Kwan <dougkwan@google.com>
4468
4469 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
4470 * icf.cc (get_section_contents): Cast snprintf arguments to long long
4471 types to avoid warnings due to different uint64_t implementations
4472 on different hosts.
4473
2a2b6d42
DK
44742010-02-21 Doug Kwan <dougkwan@google.com>
4475
4476 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
4477 handling of the maximum backward branch offset.
4478 (Arm_relocate_functions::thumb_branch_common): Ditto.
4479 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
4480 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 4481 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
4482 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
4483 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
4484 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
4485 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
4486 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
4487 thumb_bl_out_of_range thumb_bl_out_of_range.o,
4488 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
4489 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
4490 thumb2_bl_out_of_range.o): New rules.
4491 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
4492 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
4493 thumb2_bl_out_of_range
4494 * testsuite/Makefile.in: Regenerate.
4495 * testsuite/arm_bl_in_range.s: New file.
4496 * testsuite/arm_bl_out_of_range.s: Ditto.
4497 * testsuite/arm_branch_in_range.sh: Ditto.
4498 * testsuite/arm_branch_range.t: Ditto.
4499 * testsuite/thumb2_branch_range.t: Ditto.
4500 * testsuite/thumb_bl_in_range.s: Ditto.
4501 * testsuite/thumb_bl_out_of_range.s: Ditto.
4502 * testsuite/thumb_branch_range.t: Ditto.
4503
b487ad64
ST
45042010-02-20 Sriraman Tallam <tmsriram@google.com>
4505
4506 * gc.h (gc_process_relocs): Change vectors to point to the new list.
4507 Add reloc offset information.
4508 * icf.cc (get_section_contents): Change iterators to point to the new
4509 vectors. Add reloc offset information to the contents.
4510 * icf.h (Icf::Sections_reachable_info): New typedef.
4511 (Icf::Sections_reachable_list): New typedef.
4512 (Icf::Offset_info): New typedef.
4513 (Icf::Reloc_info): New struct typedef.
4514 (Icf::Reloc_info_list): New typedef.
4515 (Icf::symbol_reloc_list): Delete method.
4516 (Icf::addend_reloc_list): Delete method.
4517 (Icf::section_reloc_list): Delete method.
4518 (Icf::reloc_info_list): New method.
4519 (Icf::reloc_info_list_): New member.
4520
f96accdf
DK
45212010-02-19 Doug Kwan <dougkwan@google.com>
4522
4523 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
4524 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
4525 * arm.cc (Arm_relocation_functions): New forward declaration.
4526 (Target_arm::Target_arm): Initialize new data members
4527 got_mod_index_offset_ and tls_base_symbol_defined_.
4528 (Target_arm::Relocate::relocate_tls): New method.
4529 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
4530 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
4531 New methods.
4532 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
4533 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
4534 (Target_arm::got_mod_index_offset_,
4535 Target_arm::tls_base_symbol_defined_): New data members.
4536 (Target_arm::Scan::local, Target::Scan::global,
4537 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
4538 relocations.
4539
c8761b9a
DK
45402010-02-18 Doug Kwan <dougkwan@google.com>
4541
4542 * arm.cc (Arm_relobj::find_linked_text_section): New method.
4543 (Arm_relobj::make_exidx_input_section): Pass section index of linked
4544 text section as a parameter becuase some broken tools may not set
4545 the link in section header.
4546 (Target_arm::has_got_section): New method.
4547 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
4548 without any mapping symbol as data only. Remove warning.
4549 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
4550 link in its section header, try to discover the link by inspecting the
4551 REL31 relocation at the beginning of the section.
4552 (Target_arm::Scan::check_non_pic): Report name of offending relocation
4553 in error message.
4554 (Target_arm::Scan::global): Treat any reference to the symbol
4555 _GLOBAL_OFFSET_TABLE_ as a GOT access.
4556
21bb3914
ST
45572010-02-12 Sriraman Tallam <tmsriram@google.com>
4558
4559 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
4560 (Scan::global_reloc_may_be_function_pointer): New function.
4561 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
4562 (Scan::global_reloc_may_be_function_pointer): New function.
4563 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
4564 (Scan::global_reloc_may_be_function_pointer): New function.
4565 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
4566 (Scan::global_reloc_may_be_function_pointer): New function.
4567 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
4568 (Scan::global_reloc_may_be_function_pointer): New function.
4569 (Scan::possible_function_pointer_reloc): New function.
4570 (Target_x86_64::can_check_for_function_pointers): New function.
4571 * gc.h (gc_process_relocs): Scan relocation types to determine if
4572 function pointers were taken for targets that support it.
4573 * icf.cc (Icf::find_identical_sections): Include functions for
4574 folding in safe ICF whose pointer is not taken.
4575 * icf.h (Secn_fptr_taken_set): New typedef.
4576 (fptr_section_id_): New member.
4577 (section_has_function_pointers): New function.
4578 (set_section_has_function_pointers): New function.
4579 (check_section_for_function_pointers): New function.
4580 * options.h: Fix comment for safe ICF option.
4581 * target.h (can_check_for_function_pointers): New function.
4582 * testsuite/Makefile.am: Add icf_safe_so_test test case.
4583 Modify icf_safe_test for X86-64.
4584 * testsuite/Makefile.in: Regenerate.
4585 * testsuite/icf_safe_so_test.cc: New file.
4586 * testsuite/icf_safe_so_test.sh: New file.
4587 * testsuite/icf_safe_test.cc (kept_func_3): New function.
4588 (main): Change to take pointer to function kept_func_3.
4589 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
4590 folding is done correctly for X86-64.
4591
0da6fa6c
DM
45922010-02-12 David S. Miller <davem@davemloft.net>
4593
4594 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
4595 is_symbolless parameter.
4596 (Output_reloc<SHT_REL>::is_symbolless): New.
4597 (Output_reloc<SHT_REL>::is_symbolless_): New.
4598 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
4599 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
4600 (Output_reloc<SHT_RELA>::is_symbolless): New.
4601 (Output_data_reloc::add_global): Handle is_symbolless.
4602 (Output_data_reloc::add_global_relative): Likewise.
4603 (Output_data_reloc::add_local): Likewise.
4604 (Output_data_reloc::add_local_relative): Likewise.
4605 (Output_data_reloc::add_symbolless_global_addend): New.
4606 (Output_data_reloc::add_symbolless_local_addend): New.
4607 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
4608 is_symbolless.
4609 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
4610 instead of ->is_relative_
4611 (Output_reloc::write): Likewise.
4612 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
4613 (Output_reloc::write_rel): Simplify.
4614
4615 * sparc.cc (Target_sparc::Scan::local): Use
4616 ->add_symbolless_local_addend as needed.
4617 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
4618 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
4619 based upon relocation offset.
4620
e4782e83
DK
46212010-02-11 Doug Kwan <dougkwan@google.com>
4622
4623 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
4624 (Target_arm::Scan::global): Ditto. Also remove a comment before the
4625 beginning of function.
4626 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
4627 and MOVT_ABS relocations. Those are non issued in scanning. Fix
4628 parameter is_32bit in calls to should_apply_static_reloc.
4629 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
4630 (check_DATA): Add arm_abs_global.stdout.
4631 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
4632 arm_abs_global.stdout): New rules.
4633 (MOSTLLYCLEANFILES): Add arm_abs_global
4634 * Makefile.in: Regenerate.
4635 * testsuite/arm_abs_global.s: New file.
4636 * testsuite/arm_abs_global.sh: Ditto.
4637 * testsuite/arm_abs_lib.s: Ditto.
4638
93ceb764
ILT
46392010-02-11 Ian Lance Taylor <iant@google.com>
4640
4641 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
4642 Read_relocs task.
4643 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
4644 Allocate_commons_task first.
4645 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
4646 task, rather than symtab_lock_.
4647 (Gc_process_relocs::~Gc_process_relocs): New function.
4648 (Gc_process_relocs::is_runnable): Check this_blocker_.
4649 (Gc_process_relocs::locks): Use next_blocker_ rather than
4650 blocker_.
4651 (Scan_relocs::~Scan_relocs): New function.
4652 (Scan_relocs::is_runnable): Check this_blocker_ rather than
4653 symtab_lock_.
4654 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
4655 next_blocker_.
4656 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
4657 fields. Add this_blocker_ and next_blocker_ fields. Adjust
4658 constructor accordingly.
4659 (class Gc_process_relocs): Likewise.
4660 (class Scan_relocs): Likewise.
4661 * common.h (class Allocate_commons_task): Remove symtab_lock_
4662 field, and corresponding constructor parameter.
4663 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
4664 symtab_lock_.
4665 (Allocate_commons_task::locks): Likewise.
4666
114dfbe1
ILT
46672010-02-11 Ian Lance Taylor <iant@google.com>
4668
4669 * gold-threads.h (class Once): Define.
4670 (class Initialize_lock): Rewrite as child of Once.
4671 * gold-threads.cc (class Once_initialize): Define.
4672 (once_pointer_control): New static variable.
4673 (once_pointer, once_arg): New static variables.
4674 (c_run_once): New static function.
4675 (Once::Once, Once::run_once, Once::internal_run): New functions.
4676 (class Initialize_lock_once): Remove.
4677 (initialize_lock_control): Remove.
4678 (initialize_lock_pointer): Remove.
4679 (initialize_lock_once): Remove.
4680 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
4681 (Initialize_lock::initialize): Rewrite.
4682 (Initialize_lock::do_run_once): New function.
4683 * archive.cc (Archive::interpret_header): Only clear name if it is
4684 not already empty.
4685 * fileread.cc: Include "gold-threads.h"
4686 (file_counts_lock): New static variable.
4687 (file_counts_initialize_lock): Likewise.
4688 (File_read::release): Only increment counts when using --stats.
4689 Use a lock around the increment.
4690 * parameters.cc (class Set_parameters_target_once): Define.
4691 (set_parameters_target_once): New static variable.
4692 (Parameters::Parameters): Move here from parameters.h.
4693 (Parameters::set_target): Rewrite.
4694 (Parameters::set_target_once): New function.
4695 (Parameters::clear_target): Move here and rewrite.
4696 * parameters.h (class Parameters): Update declarations. Add
4697 set_parameters_target_once_ field.
4698 (Parameters::Parameters): Move to parameters.cc.
4699 (Parameters::clear_target): Likewise.
4700 * readsyms.cc (Read_symbols::do_group): Create a Start_group
4701 task.
4702 (Start_group::~Start_group): New function.
4703 (Start_group::is_runnable): New function.
4704 (Start_group::locks, Start_group::run): New functions.
4705 (Finish_group::run): Change saw_undefined to size_t.
4706 * readsyms.h (class Start_group): Define.
4707 (class Finish_group): Change saw_undefined_ field to size_t.
4708 (Finish_group::Finish_group): Remove saw_undefined and
4709 this_blocker parameters. Change all callers.
4710 (Finish_group::set_saw_undefined): New function.
4711 (Finish_group::set_blocker): New function.
4712 * symtab.h (class Symbol_table): Change saw_undefined to return
4713 size_t. Change saw_undefined_ field to size_t.
4714 * target-select.cc (Set_target_once::do_run_once): New function.
4715 (Target_selector::Target_selector): Initialize set_target_once_
4716 field. Don't initialize lock_ and initialize_lock_ fields.
4717 (Target_selector::instantiate_target): Rewrite.
4718 (Target_selector::set_target): New function.
4719 * target-select.h (class Set_target_once): Define.
4720 (class Target_selector): Update declarations. Make
4721 Set_target_once a friend. Remove lock_ and initialize_lock_
4722 fields. Add set_target_once_ field.
4723
fa17a3f4
ILT
47242010-02-10 Ian Lance Taylor <iant@google.com>
4725
4726 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
4727 queueing any tasks.
4728 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
4729 (queue_middle_tasks): Add all blockers before queueing any tasks.
4730 (queue_final_tasks): Likewise.
4731 * token.h (Task_token::add_blockers): New function.
4732 * object.h (Input_objects::number_of_relobjs): New function.
4733
c7177d31
ILT
47342010-02-10 Ian Lance Taylor <iant@google.com>
4735
5de0e392
ILT
4736 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
4737 shared, not if not position independent.
4738 * x86_64.cc (Relocate::relocate_tls): Likewise.
4739 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
4740 (tls_pie_pic_test): New target.
4741 * testsuite/Makefile.in: Rebuild.
4742
c7177d31
ILT
4743 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
4744 (tls_test_main_pie.o, tls_test_pie.o): New targets.
4745 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
4746 * testsuite/Makefile.in: Rebuild.
4747
684b268a
DM
47482010-02-09 David S. Miller <davem@davemloft.net>
4749
4750 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
4751 R_SPARC_RELATIVE using ->add_local_relative().
4752 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
4753
612a8d3d
DM
4754 * output.h (Output_data_dynamic::add_section_size): New method
4755 that takes two Output_data objects.
4756 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
4757 entry param. Handle it in initializers.
4758 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
4759 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
4760 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
4761 arg.
4762 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
4763 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
4764 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
4765 for dynrel_includes_plt.
4766 * i386.cc (Target_i386::do_finalize_sections): Likewise.
4767 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4768 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
4769 before .rela.plt
4770 (Target_sparc::do_finalize_sections): Update to pass true for
4771 dynrel_includes_plt.
4772 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
4773 output before .rela.plt
4774 (Target_powerpc::do_finalize_sections): Update to pass true for
4775 dynrel_includes_plt when 32-bit.
4776
cb1be87e
DK
47772010-02-08 Doug Kwan <dougkwan@google.com>
4778
4779 * arm.cc (Arm_relobj::simple_input_section_output_address): New
4780 method.
4781 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
4782 Arm_relobj::scan_section_for_cortex_a8_stubs,
4783 Arm_relobj::do_relocation_section): Instead of calling
4784 Output_section::output_address, use faster
4785 Arm_relobj::simple_input_section_output_address.
4786
705b5121
DM
47872010-02-08 David S. Miller <davem@davemloft.net>
4788
4789 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
4790 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
4791 relocation helper function.
4792
024c4466
DM
4793 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
4794 just like R_SPARC_GOT{10,13,22}.
4795 (Target_sparc::Scan::local): Likewise.
4796 (Target_sparc::Relocate:relocate): Likewise.
4797
9109c078
ILT
47982010-02-06 Ian Lance Taylor <iant@google.com>
4799
4800 * configure.ac: Rewrite targetobjs duplicate removal code to use
4801 only shell constructs.
4802 * configure: Rebuild.
4803
cf846138
DK
48042010-02-05 Doug Kwan <dougkwan@google.com>
4805
4806 PR 11247
4807 * arm.cc (Arm_relobj::section_is_scannable): New method.
4808 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
4809 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
4810
6cfaf60b
DK
48112010-02-04 Doug Kwan <dougkwan@google.com>
4812
4813 PR 11247
4814 * arm-reloc-property.cc (cstdio): Include.
4815 * configure.ac (targetobjs): Remove duplicates.
4816 * configure: Regenerate.
4817 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
4818 big and little endian version for a given address size.
4819
5c57f1be
DK
48202010-02-03 Doug Kwan <dougkwan@google.com>
4821
4822 * arm-reloc-property.cc
4823 (Arm_reloc_property_table::reloc_name_in_error_message): New method
4824 definition.
4825 * arm-reloc-property.h
4826 (Arm_reloc_property_table::get_implemented_static_reloc_property):
4827 New method definition.
4828 (Arm_reloc_property_table::reloc_name_in_error_message): New method
4829 declaration.
4830 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
4831 overflow to N.
4832 (GOT_PREL): Change implemented to Y.
4833 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
4834 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
4835 (Arm_relocate_functions::movw_abs_nc): Remove method.
4836 (Arm_relocate_functions::movt_abs): Ditto.
4837 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
4838 (Arm_relocate_functions::thm_movt_abs): Ditto.
4839 (Arm_relocate_functions::movw_rel_nc): Ditto.
4840 (Arm_relocate_functions::movw_rel): Ditto.
4841 (Arm_relocate_functions::movt_rel): Ditto.
4842 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
4843 (Arm_relocate_functions:thm_movw_rel): Ditto.
4844 (Arm_relocate_functions:thm_movt_rel): Ditto.
4845 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
4846 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
4847 New method definitions.
4848 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
4849 (Arm_relocation_functions::arm_grp_ldr): Ditto.
4850 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
4851 (Arm_relocation_functions::arm_grp_ldc): Ditto.
4852 (Target_arm::Relocate::relocate): Check for non-static or
4853 unimplemented relocation code and exit early. Change calls to
4854 Target_arm::reloc_uses_thumb_bit and
4855 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
4856 instead. Refactor code to handle similar relocations to increase
4857 code sharing. Remove check for unsupported relocation code in switch
4858 statement.
4859 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
4860 relocation property table to find out size. Change error message to
4861 print out the name of a relocation code instead of the numeric value.
4862 (Target_arm::scan_reloc_for_stub): Use relocation property table
4863 instead of calling Target_arm::reloc_uses_thumb_bit().
4864
218c5831
DK
48652010-02-02 Doug Kwan <dougkwan@google.com>
4866
4867 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
4868 types of relaxed input section.
4869
0d31c79d
DK
48702010-02-02 Doug Kwan <dougkwan@google.com>
4871
4872 * Makefile.am (HFILES): Add arm-reloc-property.h.
4873 (DEFFILES): New.
4874 (TARGETSOURCES): Add arm-reloc-property.cc
4875 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
4876 (libgold_a_SOURCES): $(DEFFILES)
4877 * Makefile.in: Regenerate.
4878 * arm-reloc-property.cc: New file.
4879 * arm-reloc-property.h: New file.
4880 * arm-reloc.def: New file.
4881 * arm.cc: Update comments.
4882 (arm-reloc-property.h): New included header.
4883 (arm_reloc_property_table): New global variable.
4884 (Target_arm::do_select_as_default_target): New method definition.
4885 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
4886 arm-reloc-property to targ_extra_obj.
4887 * parameters.cc (set_parameters_target): Call
4888 Target::select_as_default_target().
4889 * target.h (Target::select_as_default_target): New method definition.
4890 (Target::do_select_as_default_target): Same.
4891
546c7457
DK
48922010-02-01 Doug Kwan <dougkwan@google.com>
4893
4894 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
4895 first_output_text_section_.
4896 (Arm_exidx_fixup::first_output_text_section): New method definition.
4897 (Arm_exidx_fixup::first_output_text_section_): New data member.
4898 (Arm_exidx_fixup::process_exidx_section): Record the first text
4899 output section seen.
4900 (Arm_output_section::fix_exidx_coverage): Set correct linked section
4901 and entsize in output section header.
4902
11b861d5
DK
49032010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4904
4905 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
4906 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
4907 (Arm_relocate_functions::thm_alu11): New Method.
4908 (Arm_relocate_functions::thm_pc8): New Method.
4909 (Arm_relocate_functions::thm_pc12): New Method.
4910 (Target_arm::Scan::local): Handle the relocations.
4911 (Target_arm::Scan::global): Likewise.
4912 (Target_arm::Relocate::relocate): Likewise.
4913 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
4914
c9a2c125
DK
49152010-01-29 Doug Kwan <dougkwan@google.com>
4916
4917 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
4918 of relocation types as ld.
4919
1521477a
DK
49202010-01-29 Doug Kwan <dougkwan@google.com>
4921
4922 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
4923 to public.
4924 (Arm_relocate_functions::thumb_branch_common): Ditto.
4925 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
4926 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
4927 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
4928 Arm_relocate_functions::jump24): Remove.
4929 (Target_arm::Relocate::relocate): Adjust code to call
4930 Arm_relocation_functions::arm_branch_common and
4931 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 4932 wrappers. Merge switch-cases together to reduce source code size.
1521477a 4933
e7eca48c
DK
49342010-01-29 Doug Kwan <dougkwan@google.com>
4935
4936 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
4937 output_local_symbol_count_needs_update_.
4938 (Arm_relobj::output_local_symbol_count_needs_update,
4939 Arm_relobj::set_output_local_symbol_count_needs_update,
4940 Arm_relobj::update_output_local_symbol_count): New methods.
4941 (Arm_relobj::output_local_symbol_count_needs_update_): New data
4942 member.
4943 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
4944 of pointed function as in a R_ARM_PREL31 relocation.
4945 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
4946 for output local symbol count updating.
4947 (Target_arm::do_relax): Update output local symbol counts in objects
4948 if necessary.
4949 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
4950
02961d7e
ILT
49512010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4952
4953 * arm.cc: Added support for the ARM relocations:
4954 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
4955 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
4956 (Arm_relocate_functions::movw_rel_nc): Renamed (was
4957 movw_prel_nc).
4958 (Arm_relocate_functions::movw_rel): New method.
4959 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
4960 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
4961 thm_movw_prel_nc).
4962 (Arm_relocate_functions::thm_movw_rel): New method.
4963 (Arm_relocate_functions::thm_movt_rel): Renamed (was
4964 thm_movt_prel).
4965 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
4966 relocations.
4967 (Target_arm::Scan::global): Likewise.
4968 (Target_arm::Relocate::relocate): Likewise.
4969 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4970 Likewise.
4971
b10d2873
ILT
49722010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4973
4974 * arm.cc: Added support for ARM group relocations.
4975 (Target_arm::reloc_needs_sym_origin): New method.
4976 (Arm_relocate_functions::calc_grp_kn): New method.
4977 (Arm_relocate_functions::calc_grp_residual): New method.
4978 (Arm_relocate_functions::calc_grp_gn): New method.
4979 (Arm_relocate_functions::arm_grp_alu): New Method.
4980 (Arm_relocate_functions::arm_grp_ldr): New Method.
4981 (Arm_relocate_functions::arm_grp_ldrs): New Method.
4982 (Arm_relocate_functions::arm_grp_ldc): New Method.
4983 (Target_arm::Scan::local): Handle the ARM group relocations.
4984 (Target_arm::Scan::global): Likewise.
4985 (Target_arm::Relocate::relocate): Likewise.
4986 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4987 Likewise.
4988
2b328d4e
DK
49892010-01-26 Doug Kwan <dougkwan@google.com>
4990
4991 * arm.cc (set): Include.
4992 (class Arm_exidx_fixup): Change type of last_input_section_ to const
4993 pointer type.
4994 (Arm_output_section::Text_section_list): New type.
4995 (Arm_output_section::append_text_sections_to_list): New method.
4996 (Arm_output_section::fix_exidx_coverage): Ditto.
4997 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
4998 (Arm_relobj::convert_input_section_to_relaxed_section): Use
4999 Relobj::set_section_offset() instead of
5000 Sized_relobj::invalidate_section_offset().
5001 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
5002 parameter for section headers. Ignore relocation sections for
5003 unallocated sections and EXIDX sections.
5004 (Target_arm::fix_exidx_coverage): New method.
5005 (Target_arm::output_section_address_less_than): New type.
5006 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
5007 linked text section instead of the EXIDX section.
5008 (Arm_output_section::create_stub_group): Add an assertion to check
5009 that this is not an EXIDX output section.
5010 (Arm_output_section::append_text_sections_to_list): New method.
5011 (Arm_output_section::fix_exidx_coverage): Ditto.
5012 (Arm_relobj::scan_sections_for_stubs): Adjust call to
5013 Arm_relobj::section_needs_reloc_stub_scanning.
5014 (Target_arm::do_relax): Fix EXIDX output section coverage in the
5015 first pass.
5016 (Target_arm::fix_exidx_coverage): New method.
5017 * object.h (Relobj::set_output_section): New method.
5018 (Sized_relobj::invalidate_section_offset): Remove method.
5019 (Sized_relobj::do_invalidate_section_offset): Remove method.
5020 (Sized_relobj::do_set_section_offset): Handle offset value -1.
5021
c7f3c371
DK
50222010-01-25 Doug Kwan <dougkwan@google.com>
5023
5024 * arm.cc (Arm_exidx_merged_section::do_output_offset):
5025 Fix warning due to signed and unsigned comparison on a 32-bit host.
5026
8923b24c
DK
50272010-01-22 Doug Kwan <dougkwan@google.com>
5028
5029 * arm.cc (Target_arm::do_relax): Record an output section for section
5030 offset adjustment it contains any stub table that has changed.
5031 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
5032 offsets in an output section if necessary.
5033 * output.cc (Output_section::Output_section): Initialize
5034 section_offsets_need_adjustments_.
5035 (Output_section::add_input_section_for_script): Renamed to
5036 Output_section::add_simple_input_section.
5037 (Output_section::save_states): Add a comment.
5038 (Output_section::discard_states): New method defintion.
5039 (Output_section::adjust_section_offsets): Same.
5040 * output.h (Output_section::add_input_section_for_script): Renamed to
5041 Output_section::add_simple_input_section.
5042 (Output_section::discard_states): New method declaration.
5043 (Output_section::adjust_section_offsets): Same.
5044 (Output_section::section_offsets_need_adjustment,
5045 Output_section::set_section_offsets_need_adjustment): New method
5046 definitions.
5047 (Output_section::section_offsets_need_adjustment_): New data member.
5048 * script-sections.cc
5049 (Output_section_element_input::set_section_address): Adjust code for
5050 renaming of Output_section::add_input_section_for_script.
5051 (Orphan_output_section::set_section_address): Same.
5052
9b2fd367
DK
50532010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5054
5055 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
5056 Fix_v4bx enum values .
5057 * gold/options.h (General_options): New option definitions.
5058 (General_options::fix_v4bx): New method.
5059 (General_options::Fix_v4bx): New enum.
5060 * gold/options.cc (General_options::parse_fix_v4bx): New method.
5061 (General_options::parse_fix_v4bx_interworking): New method.
5062
80d0d023
DK
50632010-01-22 Doug Kwan <dougkwan@google.com>
5064
5065 * arm.cc (Arm_exidx_fixup): New class.
5066
af2cdeae
DK
50672010-01-21 Doug Kwan <dougkwan@google.com>
5068
5069 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
5070 classes.
5071 (Arm_exidx_section_offset_map): New type.
5072
993d07c1
DK
50732010-01-21 Doug Kwan <dougkwan@google.com>
5074
5075 * arm.cc (Arm_exidx_input_section): New class.
5076 (Arm_relobj::exidx_input_section_by_link,
5077 Arm_relobj::exidx_input_section_by_shndx,
5078 Arm_relobj::make_exidx_input_section): New methods.
5079 (read_arm_attributes_section): Remove.
5080 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
5081 information about them.
5082 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
5083 to here.
5084
5ac169d4
DK
50852010-01-20 Doug Kwan <dougkwan@google.com>
5086
5087 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
5088 Input_section_specifier to Section_id.
5089 (Target_arm::new_arm_input_section: Adjust code for change of key
5090 type.
5091 (Target_arm::find_arm_input_section): Ditto.
5092 * gc.h (object.h): Include for Section_id nand Section_id_hash.
5093 (Section_id): Remove.
5094 (Garbage_collection::Section_id_hash): Remove.
5095 * icf.h (object.h): Include for Section_id nand Section_id_hash.
5096 (Section_id): Remove.
5097 (Icf::Section_id_hash): Remove.
5098 * object.h (Section_id, Const_section_id, Section_id_hash,
5099 Const_section_id_hash): New type definitions.
5100 * output.cc (Output_section::add_relaxed_input_section): Change to
5101 use Const_section_id instead of Input_section_specifier as key type.
5102 (Output_section::add_merge_input_section): Ditto.
5103 (Output_section::build_relaxation_map): Change to use Section_id
5104 instead of Input_section_specifier as key type.
5105 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5106 Ditto.
5107 (Output_section::convert_input_sections_to_relaxed_sections): Change
5108 to use Const_section_id instead of Input_section_specifier as key type.
5109 (Output_section::find_merge_section): Ditto.
5110 (Output_section::find_relaxed_input_section): Ditto.
5111 * output.h (Input_section_specifier): Remove class.
5112 (Output_section::Output_section_data_by_input_section_map): Change
5113 key type to Const_section_id.
5114 (Output_section::Output_relaxed_input_section_by_input_section_map):
5115 Ditto.
5116 (Output_section::Relaxation_map): Change key type to Section_id.
5117
a2162063
ILT
51182010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5119
5120 * gold/arm.cc: Added support for R_ARM_V4BX relocation
5121 (class Arm_v4bx_stub): New class.
5122 (DEF_STUBS): Updated definition to support v4_veneer_bx.
5123 (Stub_factory::make_arm_v4bx_stub): New method.
5124 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
5125 (Stub_table::empty): Handle v4bx stubs.
5126 (Stub_table::add_arm_v4bx_stub): New method.
5127 (Stub_table::find_arm_v4bx_stub): New method.
5128 (Arm_relocate_functions::v4bx): New method.
5129 (Target_arm::fix_v4bx): New method.
5130 (Target_arm::Target_arm): Handle R_ARM_V4BX.
5131 (Stub_table::relocate_stubs): Likewise.
5132 (Stub_table::do_write): Likewise.
5133 (Stub_table::update_data_size_and_addralign): Likewise.
5134 (Stub_table::finalize_stubs): Likewise.
5135 (Target_arm::Scan::local): Likewise.
5136 (Target_arm::Scan::global): Likewise.
5137 (Target_arm::do_finalize_sections): Likewise.
5138 (Target_arm::Relocate::relocate): Likewise.
5139 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5140 Likewise.
5141 (Target_arm::scan_reloc_for_stub): Likewise.
5142 (Target_arm::scan_reloc_section_for_stubs): Likewise.
5143
5696ab0b
ILT
51442010-01-19 Ian Lance Taylor <iant@google.com>
5145
5146 * output.cc (Output_section_headers::do_sized_write): Write large
5147 segment count to sh_info field.
5148 (Output_file_header::do_sized_write): For large segment count,
5149 write PN_XNUM to e_phnum field.
5150
800d0f56
ILT
51512010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5152
5153 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
5154 (Arm_relocate_functions::thm_jump8): New function.
5155 (Arm_relocate_functions::thm_jump11): New function.
5156 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
5157 R_ARM_THM_JUMP11.
5158 (Target_arm::Scan::global): Likewise.
5159 (Target_arm::Relocate::relocate): Likewise.
5160 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5161 Likewise.
5162
41263c05
DK
51632010-01-14 Doug Kwan <dougkwan@google.com>
5164
5165 * arm.cc (map, utility): Include headers.
5166 (Target_arm::apply_cortex_a8_workaround): New method.
5167 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
5168 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
5169 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
5170 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
5171 the --[no-]fix-cortex-a8 command line options.
5172 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
5173 (Target_arm::relocate_stub): Use addend in instruction template.
5174 * options.h (DEFINE_bool): Set the user-set flag.
5175 (General_options): Add --[no-]-fix-cortex options.
5176 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 5177 : Update fast look-up map after conversion.
41263c05 5178
459e9b03
ST
51792010-01-14 Sriraman Tallam <tmsriram@google.com>
5180
5181 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
5182 in the first pass of do_layout.
5183
b521dfe4
DK
51842010-01-13 Doug Kwan <dougkwan@google.com>
5185
5186 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
5187 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
5188 apparent compiler problem of not folding static constant integral
5189 data members of elfcpp::Elf_sizes<32>.
5190
44272192
DK
51912010-01-13 Doug Kwan <dougkwan@google.com>
5192
5193 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
5194 Arm_relobj::section_needs_cortex_a8_stub_scanning,
5195 Arm_relobj::scan_section_for_cortex_a8_erratum,
5196 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
5197 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
5198 sections to scan for relocation stubs into a new method
5199 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
5200 relocation and Cortex-A8 stub scanning.
5201 (Target_arm::do_relax): Force stubs to be after stubbed sections
5202 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 5203 the beginning of a new relaxation pass. Update a comment.
44272192
DK
5204 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
5205
44b71ece
ILT
52062010-01-12 Ian Lance Taylor <iant@google.com>
5207
5208 * target-reloc.h (visibility_error): New inline function.
5209 (relocate_section): Call visibility_error.
5210 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
5211 (MOSTLYCLEANFILES): Likewise.
5212 (protected_4_pic.o, protected_3.err): New targets.
5213 * testsuite/protected_4.cc: New file.
5214
a120bc7f
DK
52152010-01-12 Doug Kwan <dougkwan@google.com>
5216
5217 * arm.cc (Cortex_a8_reloc): New class.
5218 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
5219 and cortex_a8_relocs_info_.
5220 (Target_arm::fix_cortex_a8): New method definition.
5221 (Target_arm::Cortex_a8_relocs_info): New type.
5222 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
5223 New data member declarations.
5224 (Target_arm::scan_reloc_for_stub): Record information about
5225 relocations for THUMB branches that might be exempted from the
5226 Cortex-A8 workaround.
5227 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
5228 at the beginning of a relaxation pass.
5229
20138696
DK
52302010-01-12 Doug Kwan <dougkwan@google.com>
5231
5232 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
5233 (Arm_relobj::Mapping_symbol_position,
5234 Arm_reloj::Mapping_symbol_position_less,
5235 Arm_relobj::Mapping_symbols_info): New types.
5236 (Target_arm::is_mapping_symbol_name): New method definition.
5237 (Arm_relobj::do_count_local_symbols): Save information about mapping
5238 symbols.
5239
089d69dc
DK
52402010-01-11 Doug Kwan <dougkwan@google.com>
5241
5242 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
5243 Arm_relocate_functions::thumb32_branch_upper,
5244 Arm_relocate_functions::thumb32_branch_lower,
5245 Arm_relocate_functions::thumb32_cond_branch_offset,
5246 Arm_relocate_functions::thumb32_cond_branch_upper,
5247 Arm_relocate_functions::thumb32_cond_branch_lower,
5248 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
5249 branch offset encoding.
5250 (Arm_relocate_functions::thumb_branch_common): Use new branch
5251 offset encoding methods to avoid code duplication.
5252 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
5253 (Stub_addend_reader::operator()): Use new branch encoding method
5254 to avoid code duplication.
5255
99e5bff2
DK
52562010-01-11 Doug Kwan <dougkwan@google.com>
5257
5258 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
5259 (Target_arm::do_finalize_sections): Define special EXIDX section
5260 symbols only if referenced.
5261 * gc.h (Garbage_collection::add_reference): New method.
5262 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
5263 code duplication.
5264
98e090bd
ILT
52652010-01-11 Ian Lance Taylor <iant@google.com>
5266
d0a91bd8
ILT
5267 * script.cc (Version_script_info::build_expression_list_lookup):
5268 Change complaing about duplicate wildcard match from error to
5269 warning.
5270
98e090bd
ILT
5271 * script.cc (class Lazy_demangler): Recreate--revert part of patch
5272 of 2009-12-30.
5273 (Version_script_info::Version_script_info): Initialize globs_,
5274 default_version_, default_is_global_, and exact_. Don't
5275 initialize globals_ or locals_.
5276 (Version_script_info::build_lookup_tables): Build local symbols
5277 first.
5278 (Version_script_info::unquote): New function.
5279 (Version_script_info::add_exact_match): New function.
5280 (Version_script_info::build_expression_list_lookup): Remove lookup
5281 parameter. Add is_global parameter. Change all callers. Handle
5282 wildcard pattern specially. Unquote pattern. Call
5283 add_exact_match.
5284 (Version_script_info::get_name_to_match): New function.
5285 (Version_script_info::get_symbol_version): New function.
5286 (Version_script_info::get_symbol_version_helper): Remove.
5287 (Version_script_info::check_unmatched_names): Call unquote.
5288 * script.h (class Version_script_info): Change get_symbol_version
5289 to be non-inline and add is_global parameter; change all callers.
5290 Rewrite symbol_is_local. Update declarations. Define struct
5291 Version_tree_match, Exact, Globs. Don't define struct Lookup.
5292 Remove globals_ and locals_ members. Add exact_, globs_,
5293 default_version_, is_global_.
5294 (Version_script_info::Glob): Remove pattern, add expression and
5295 is_global. Update constructor. Change all callers.
5296 * dynobj.cc (Versions::finalize): Mark the version symbol as the
5297 default version.
5298 (Versions::symbol_section_contents): If a symbol is undefined, or
5299 defined in a dynamic object, set the version index to
5300 VER_NDX_LOCAL.
5301 * symtab.cc (Symbol_table::add_from_relobj): Don't call
5302 symbol_is_local.
5303 (Symbol_table::add_from_pluginobj): Likewise.
5304 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
5305
d56962d3
DK
53062010-01-11 Doug Kwan <dougkwan@google.com>
5307
5308 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
5309 (incremental_dump_LDADD): Add linking option for libintl.
5310 * Makefile.in: Regenerate.
5311
94e6ee91
L
53122010-01-11 H.J. Lu <hongjiu.lu@intel.com>
5313
5314 PR gold/11144
5315 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
5316 instead of -Ds.
5317 * testsuite/Makefile.in: Regenerated.
5318
e96c574b
DK
53192010-01-10 Doug Kwan <dougkwan@google.com>
5320
5321 * options.h (DEFINE_var): Use parentheses around argument varname__
5322 in macro body to avoid any unintended subsequent substitutions.
5323
7198066b
ILT
53242010-01-10 Ian Lance Taylor <iant@google.com>
5325
ba4d53bf
ILT
5326 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
5327 candidates before doing symbol resolution.
5328
7198066b
ILT
5329 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
5330 ODR candidates if only one is weak.
5331
a2beed37
ILT
53322010-01-08 Ian Lance Taylor <iant@google.com>
5333
5334 * script.cc (Version_script_info::build_expression_list_lookup):
5335 Don't warn about ambiguous version, just record the ambiguity.
5336 (Version_script_info::get_symbol_version_helper): Give error if
5337 version is ambiguous.
5338
2fb7225c
DK
53392010-01-08 Doug Kwan <dougkwan@google.com>
5340
5341 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
5342 prev_data_size_ and prev_addralign_. Remove initializer for
5343 deleted data member has_been_changed_.
5344 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
5345 to determine if the table is empty.
5346 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
5347 Remove.
5348 (Stub_table::add_reloc_stub): Define method in class definition
5349 instead of just declaring it there.
5350 (Stub_table::add_cortex_a8_stub): New method definition.
5351 (Stub_table::update_data_size_and_addralign): Ditto.
5352 (Stub_table::finalize_stubs): Ditto.
5353 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
5354 (Stub_table::do_addralign_): Return address alignment in the
5355 (Stub_table::do_reset_address_and_file_offset): Define method in
5356 class definition instead of declaring it there. Set current data
5357 size to be the data size of the previous pass.
5358 (Stub_table::set_final_data_size): Use current data size as the
5359 final data size.
5360 (Stub_table::relocate_stub): Change parameter type of stub from
5361 Reloc_stub pointer to Stub pointer.
5362 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
5363 (Stub_table::Cortex_a8_stub_list): New typedef.
5364 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
5365 Stub_table::prev_addralign_): New data member.
5366 (Arm_relobj::Arm_relobj): Initialize data member
5367 section_has_cortex_a8_workaround_.
5368 (Arm_relobj::section_has_cortex_a8_workaround,
5369 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
5370 definitions.
5371 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
5372 declarations.
5373 (Target_arm::relocate_stub): Change parameter type of stub from
5374 Reloc_stub pointer to Stub pointer.
5375 (Insn_template::size, Insn_template::alignment): Handle
5376 THUMB16_SPECIAL_TYPE.
5377 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
5378 Stub_table::update_data_size_and_addralign,
5379 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
5380 definitions.
5381 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
5382 (Stub_table::do_write): Ditto.
5383 (Target_arm::do_relax): Adjust code for changes in Stub_table.
5384
880cd20d
ILT
53852010-01-08 Ian Lance Taylor <iant@google.com>
5386
5387 PR 11108
5388 * symtab.h (class Symbol): Remove fields is_target_special_ and
5389 has_plt_offset_. Add field is_defined_in_discarded_section_.
5390 (Symbol::is_defined_in_discarded_section): New function.
5391 (Symbol::set_is_defined_in_discarded_section): New function.
5392 (Symbol::has_plt_offset): Rewrite.
5393 (Symbol::set_plt_offset): Verify that new offset is not -1U.
5394 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
5395 Don't initialize is_target_special_ or has_plt_offset_.
5396 Initialize is_defined_in_discarded_section_.
5397 (Symbol_table::add_from_relobj): If appropriate, set
5398 is_defined_in_discarded_section.
5399 * resolve.cc (Symbol::override_base_with_special): Don't test
5400 is_target_special_. Change has_plt_offset_ to has_plt_offset().
5401 * target-reloc.h (relocate_section): Do special handling for
5402 symbols defined in discarded sections for global symbols as well
5403 as local symbols.
5404
2703e3eb
ILT
54052010-01-08 Ian Lance Taylor <iant@google.com>
5406
5407 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
5408 the SHT_SYMTAB case.
5409
339d40a3
ILT
54102010-01-08 Ian Lance Taylor <iant@google.com>
5411
5412 * object.cc (Sized_relobj::do_layout): Don't get confused if
5413 layout_eh_frame returns NULL.
5414
abecea76
ILT
54152010-01-08 Ian Lance Taylor <iant@google.com>
5416
5417 PR 11084
5418 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
5419 dynamic symbol table, use the normal symbol table.
5420 (Sized_dynobj::do_read_symbols): Remove assertion about type of
5421 symbol table.
5422
6b7dd3f3
ILT
54232010-01-08 Ian Lance Taylor <iant@google.com>
5424
5425 PR 11072
5426 * layout.cc (Layout::include_section): Remove .gnu_debuglink
5427 sections.
5428
36c50e63
L
54292010-01-08 H.J. Lu <hongjiu.lu@intel.com>
5430
5431 * version.cc (print_version): Change to "Copyright 2010".
5432
e291e7b9
ILT
54332010-01-08 Ian Lance Taylor <iant@google.com>
5434
5435 PR 10287
5436 PR 11063
5437 * i386.cc (class Target_i386): Change return type of plt_section
5438 to be non-const.
5439 (class Output_data_plt_i386): Add tls_desc_rel_ field.
5440 (Output_data_plt_i386::Output_data_plt_i386): Initialize
5441 tls_desc_rel_ field.
5442 (Output_data_plt_i386::rel_tls_desc): New function.
5443 (Target_i386::rel_tls_desc_section): New function.
5444 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
5445 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
5446 R_386_TLS_DESC reloc in rel_tls_desc_section.
5447 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
5448 Define struct Tlsdesc_info.
5449 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
5450 (Target_x86_64::do_reloc_symbol_index): New function.
5451 (Target_x86_64::add_tlsdesc_info): New function.
5452 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
5453 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
5454 tlsdesc_rel_ field.
5455 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
5456 all callers.
5457 (Output_data_plt_x86_64::rela_tlsdesc): New function.
5458 (Target_x86_64::rela_tlsdesc_section): New function.
5459 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
5460 handling.
5461 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
5462 (Target_x86_64::do_reloc_addend): New function.
5463 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
5464 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
5465 declarations. Define TARGET_CODE. Add arg field to u1_ union.
5466 (Output_reloc::type): New function.
5467 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
5468 (Output_reloc::is_target_specific): New function.
5469 (Output_reloc::target_arg): New function.
5470 (class Output_reloc) [SHT_RELA]: Add four new constructors for
5471 absolute relocs and target specific relocs.
5472 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
5473 add_target_specific.
5474 (class Output_data_reloc) [SHT_RELA]: Likewise.
5475 * output.cc (Output_reloc::Output_reloc): Add four new versions
5476 for absolute relocs and target specific relocs.
5477 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
5478 (Output_reloc::get_symbol_index): Likewise.
5479 (Output_reloc::local_section_offset): Check that local_sym_index_
5480 is not TARGET_CODE or 0.
5481 (Output_reloc::symbol_value): Likewise.
5482 (Output_reloc::write) [SHT_RELA]: Call target for target specific
5483 reloc.
5484 * target.h (class Target): Add reloc_symbol_index and reloc_addend
5485 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
5486 functions.
5487 * layout.cc (add_target_dynamic_tags): Use output section for
5488 DT_PLTRELSZ and DT_JMPREL.
5489
3a44184e
ILT
54902010-01-07 Ian Lance Taylor <iant@google.com>
5491
5492 PR 11061
5493 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
5494 function.
5495 (class Output_data_reloc_generic): Define.
5496 (class Output_data_reloc_base): Change base class to
5497 Output_data_reloc_generic. Change add() method to call
5498 bump_relative_reloc_count for a relative reloc. Remove
5499 sort_relocs_ field.
5500 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
5501 to sort_relocs().
5502 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
5503 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
5504 appropriate.
5505 * layout.h (class Layout): Update declaration.
5506
ea715a34
ILT
55072010-01-07 Ian Lance Taylor <iant@google.com>
5508
5509 * output.h (class Output_data): Add const version of
5510 output_section and do_output_section.
5511 (class Output_section_data): Add const version of
5512 do_output_section.
5513 (class Output_section): Likewise.
5514 * layout.cc (Layout::add_target_dynamic_tags): New function.
5515 * layout.h (class Layout): Update declarations.
5516 * arm.cc (Target_arm::do_finalize_sections): Use
5517 add_target_dynamic_tags.
5518 * i386.cc (Target_i386::do_finalize_sections): Likewise.
5519 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
5520 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
5521 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5522
659948a4
ILT
55232010-01-07 Ian Lance Taylor <iant@google.com>
5524
5525 PR 11042
5526 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
5527 object as needed.
5528
9d3b86f6
ILT
55292010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
5530 Ian Lance Taylor <iant@google.com>
5531
5532 PR 11019
5533 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
5534 Xindex::read_symtab_xindex.
5535
bb0d3eb0
DK
55362010-01-07 Doug Kwan <dougkwan@google.com>
5537
5538 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
5539 (Insn_template::thumb16_bcond_insn): New method declaration.
5540 (Insn_template): Fix spelling.
5541 (Stub::thumb16_special): New method declaration.
5542 (Stub::do_write): Define virtual method which was previously pure
5543 virtual.
5544 (Stub::do_thumb16_special): New method declaration.
5545 (Stub::do_fixed_endian_write): New template member.
5546 (Reloc_stub::do_write): Remove.
5547 (Reloc_stub::do_fixed_endian_write): Remove.
5548 (Cortex_a8_stub): New class definition.
5549 (Stub_factory::make_cortex_a8_stub): New method definition.
5550 (Stub_factory::Stub_factory): Add missing static storage class
5551 qualifier for elf32_arm_stub_a8_veneer_blx.
5552
ffeef7df
ILT
55532010-01-07 Ian Lance Taylor <iant@google.com>
5554
dc3f80fe
ILT
5555 PR 10980
5556 * options.h (class General_options): Add --warn-unresolved-symbols
5557 and --error-unresolved-symbols.
5558 * errors.cc (Errors::undefined_symbol): Implement
5559 --warn-unresolved-symbols.
5560
ffeef7df
ILT
5561 * options.h (class General_options): Add -z text and -z textoff.
5562 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
5563
f1ec9ded
ST
55642010-01-06 Sriraman Tallam <tmsriram@google.com>
5565
5566 * gc.h (Garbage_collection::Cident_section_map): New typedef.
5567 (Garbage_collection::cident_sections): New function.
5568 (Garbage_collection::add_cident_section): New function.
5569 (Garbage_collection::cident_sections_): New member.
5570 (gc_process_relocs): Add references to sections whose names are C
5571 identifiers.
5572 * gold.h (cident_section_start_prefix): New constant.
5573 (cident_section_stop_prefix): New constant.
5574 (is_cident): New function.
5575 * layout.cc (Layout::define_section_symbols): Replace string constants
5576 with the newly defined constants.
5577 * object.cc (Sized_relobj::do_layout): Track sections whose names are
5578 C identifiers.
5579 * testsuite/Makefile.am: Add gc_orphan_section_test.
5580 * testsuite/Makefile.in: Regenerate.
5581 * testsuite/gc_orphan_section_test.cc: New file.
5582 * testsuite/gc_orphan_section_test.sh: New file.
5583
6eda8c29
ILT
55842010-01-06 Ian Lance Taylor <iant@google.com>
5585
b9674e17
ILT
5586 PR 10980
5587 * options.h (class General_options): Add --warn-shared-textrel.
5588 * layout.cc (Layout::finish_dynamic_section): Implement
5589 --warn-shared-textrel.
5590
6eda8c29
ILT
5591 PR 10980
5592 * options.h (class General_options): Add --warn-multiple-gp.
5593
32dcd44e
ILT
55942010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5595
5596 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
5597 $(THREADSLIB) and $(LIBDL).
5598 * Makefile.in: Rebuild.
5599
a192ba05
ILT
56002010-01-06 Ian Lance Taylor <iant@google.com>
5601
5602 PR 10980
5603 * options.cc (General_options::parse_section_start): New function.
5604 (General_options::section_start): New function.
5605 (General_options::General_options): Initialize all members.
5606 * options.h: Include <map>
5607 (class General_options): Add --section-start. Add section_starts_
5608 member.
5609 * layout.cc (Layout::attach_allocated_section_to_segment): If
5610 --section-start was used, set the address of the segment. Remove
5611 local sort_sections.
5612 (Layout::relaxation_loop_body): If the address of the load segment
5613 has been set by --section-start, don't use it.
5614 * output.h (Output_segment::update_flags_for_output_section): New
5615 function.
5616 * output.cc (Output_segment::add_output_section): Call
5617 update_flags_for_output_section.
5618
dde3f402
ILT
56192010-01-05 Ian Lance Taylor <iant@google.com>
5620
62dfdd4d
ILT
5621 PR 10980
5622 * options.h (class General_options): Add --undefined-version.
5623 * script.cc (struct Version_expression): Add was_matched_by_symbol
5624 field.
5625 (Version_script_info::matched_symbol): New function.
5626 (Version_script_info::get_symbol_version_helper): Call
5627 matched_symbol.
5628 (Version_script_info::check_unmatched_names): New function.
5629 * script.h (class Version_script_info): Update declarations.
5630 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
5631
9c4ae156
ILT
5632 * options.h (class General_options): Use DEFINE_bool_alias for
5633 allow_multiple_definition.
5634 * resolve.cc (Symbol_table::should_override): Don't test
5635 allow_multiple_definition.
5636
dde3f402
ILT
5637 PR 10980
5638 * options.h (class General_options): Add --cref.
5639 * main.cc (main): Print cref table if --cref. Don't close mapfile
5640 until after printing cref table.
5641 * cref.cc: Include "symtab.h".
5642 (class Cref_inputs): Define Cref_table_compare and Cref_table.
5643 (Cref_table_compare::operator()): New function.
5644 (Cref_inputs::gather_cref): New function.
5645 (filecol): New static const.
5646 (Cref_inputs::print_cref): New function.
5647 (Cref::print_cref): New function.
5648 * cref.h: Include <cstdio>.
5649 (class Cref): Update declarations.
5650 * mapfile.h (Mapfile::file): New function.
5651 * object.h (class Object): Define Symbols. Declare virtual
5652 do_get_global_symbols.
5653 (Object::get_global_symbols): New function.
5654 * object.cc (Input_objects::add_object): Pass object to cref_ if
5655 --cref.
5656 (Input_objects::archive_start): Likewise.
5657 (Input_objects::archive_stop): Likewise.
5658 (Input_objects::print_cref): New function.
5659 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
5660 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
5661 --cref.
5662 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
5663 function.
5664 * plugin.h (class Sized_pluginobj): Update declarations.
5665
8781f709
ILT
56662010-01-05 Ian Lance Taylor <iant@google.com>
5667
5668 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
5669 to is_default_version. Rename insdef to insdefault.
5670 (Symbol_table::add_from_relobj): Rename def to is_default_version
5671 and local to is_forced_local.
5672 (Symbol_table::add_from_pluginobj): Likewise.
5673 (Symbol_table::add_from_dynobj): Likewise.
5674 (Symbol_table::define_special_symbol): Rename insdef to
5675 insdefault.
5676
fe35d28d
ILT
56772010-01-04 Ian Lance Taylor <iant@google.com>
5678
30bc8c46
ILT
5679 PR 10980
5680 * options.h (class General_options): Add
5681 --allow-multiple-definition and -z muldefs.
5682 * resolve.cc (Symbol_table::should_override): Don't warn about a
5683 multiple symbol definition if --allow-multiple-definition or -z
5684 muldefs.
5685
7eaea549
ILT
5686 PR 10980
5687 * options.h (class General_options): Add --add-needed and
5688 --copy-dt-needed-entries. Tweak --as-needed help entry.
5689 * object.cc (Input_objects::check_dynamic_dependencies): Give an
5690 error if --copy-dt-needed-entries aka --add-needed is used and
5691 would cause a change in behaviour.
5692
fe35d28d
ILT
5693 PR 10980
5694 * options.h (class General_options): Add -G as a short version of
5695 --shared. Add no-op options -assert, -g, and -i.
5696
55a2bb35
ST
56972010-01-04 Sriraman Tallam <tmsriram@google.com>
5698
5699 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
5700 check for .text or .gnu.linkonce.t sections.
5701 * icf.cc (Icf::find_identical_sections): Ditto.
5702 Change the detection for mangled function name within the section
5703 name.
5704 * icf.h (is_section_foldable_candidate): New function.
5705
719328e1
ILT
57062009-12-30 Ian Lance Taylor <iant@google.com>
5707
5708 PR 10980
5709 * options.h (class General_options): Permit two dashes with
5710 --retain-symbols-file.
5711
d7bb5745
ILT
57122009-12-30 Ian Lance Taylor <iant@google.com>
5713
403a15dd
ILT
5714 PR 10979
5715 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
5716 don't put the file header and segment headers in the text
5717 segment.
5718
eda294df
ILT
5719 PR 10979
5720 * common.cc (Sort_commons::operator()): Stabilize sort when both
5721 entries are NULL.
5722 (Symbol_table::do_allocate_commons_list): When allocating common
5723 symbols, skip a symbol which is no longer common.
5724 * symtab.h (Symbol::is_common): Test whether the symbol comes from
5725 an object before checking its type.
5726 * testsuite/common_test_2.c: New file.
5727 * testsuite/common_test_3.c: New file.
5728 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
5729 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
5730 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
5731 (common_test_2_pic.o, common_test_2.so): New targets.
5732 (common_test_3_pic.o, common_test_3.so): New targets.
5733 * testsuite/Makefile.in: Rebuild.
5734
d7bb5745
ILT
5735 PR 10979
5736 * script.cc (read_input_script): If we see a new SECTIONS clause,
5737 and we have added an input section, give an error.
5738 * layout.h (class Layout): Add have_added_input_section function.
5739 Add have_added_input_section_ field.
5740 * layout.cc (Layout::Layout): Initialize
5741 have_added_input_section_.
5742 (Layout::layout): Set have_added_input_section_.
5743 (Layout::layout_eh_frame): Likewise.
5744
fc59c572
ILT
57452009-12-30 Ian Lance Taylor <iant@google.com>
5746
5747 PR 10931
5748 * options.h (class General_options): Add --sort-common option.
5749 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
5750 * common.cc (Sort_common): Add sort_order parameter to
5751 constructor. Add sort_order_ field.
5752 (Sort_commons::operator): Check sort_order_.
5753 (Symbol_table::allocate_commons): Determine the sort order.
5754 (Symbol_table::do_allocate_commons): Add sort_order parameter.
5755 Change all callers.
5756 (Symbol_table::do_allocate_commons_list): Likewise.
5757
1c74fab0
ILT
57582009-12-30 Ian Lance Taylor <iant@google.com>
5759
5760 PR 10916
5761 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
5762 symbols from this object, don't change the visibility of an
5763 undefined symbol.
5764 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
5765
6affe781
ILT
57662009-12-30 Ian Lance Taylor <iant@google.com>
5767
5768 PR 10861
5769 * script.h (class Version_script_info): Define Language enum.
5770 Update declarations. Define Glob, Exact, and Lookup types. Add
5771 new fields globals_, locals_, and is_finalized_.
5772 * script.cc: Various formatting fixes.
5773 (class Parser_closure): Change language_stack_ from a vector of
5774 std::string to one of Version_script_info::Language. Adjust all
5775 uses accordingly.
5776 (class Lazy_demangler): Remove.
5777 (struct Version_expression): Change language from std::string to
5778 Version_script_info::Language.
5779 (Version_script_info::Version_script_info): New function.
5780 (Version_script_info::~Version_script_info): Don't call clear.
5781 (Version_script_info::finalize): New function.
5782 (Version_script_info::build_lookup_tables): New function.
5783 (Version_script_info::build_expression_list_lookup): New
5784 function.
5785 (Version_script_info::get_symbol_version_helper): Rewrite to use
5786 lookup tables.
5787 (Version_script_info::print_expression_list): Adjust to use
5788 Version_script_info::Language.
5789 (script_push_lex_into_version_mode): Check that the version script
5790 has not been finalized.
5791 (version_script_push_lang): Change language string to
5792 Version_script_info::Language.
5793 * options.cc (Command_line::version_script): New function.
5794 * options.h (class General_options): Add finalize_dynamic_list
5795 function. Change version_script from declaration to definition.
5796 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
5797 * testsuite/version_script.map: Remove duplicate def of foo.
5798 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
5799 version_script.map.
5800 * testsuite/Makefile.in: Rebuild.
5801
818bf354
ILT
58022009-12-30 Ian Lance Taylor <iant@google.com>
5803
5804 PR 10843
5805 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
5806 if the input symbol index is 0, make the output symbol index 0.
5807
ebcc8304
ILT
58082009-12-30 Ian Lance Taylor <iant@google.com>
5809
5810 PR 10670
5811 * options.h (class General_options): Add -x/--discard-all.
5812 * object.cc (Sized_relobj::do_count_local_symbols): Handle
5813 --discard-all. If the local symbol needs a dynamic entry, check
5814 that before handling --discard-locals.
5815
176fe33f
ILT
58162009-12-30 Ian Lance Taylor <iant@google.com>
5817
bb321bb1
ILT
5818 PR 10450
5819 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
5820 flags to PF_R.
5821 (Output_segment::add_output_section): Don't change the flags if
5822 the type is PT_TLS.
5823
176fe33f
ILT
5824 PR 10450
5825 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
5826 GNU hash table if they need a dynamic value. Otherwise, don't add
5827 them if they are defined in a dynamic object or are forced local.
5828
e8cd95c7
ILT
58292009-12-29 Ian Lance Taylor <iant@google.com>
5830
1b81fb71
ILT
5831 PR 10450
5832 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
5833 .gnu.hash table for a 32-bit target.
5834
8d6d383d
ILT
5835 PR 10450
5836 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
5837 regular and a dynamic object only needs a dynamic symbol table
5838 entry if it is externally visible.
5839
e785ec03
ILT
5840 PR 10450
5841 * i386.cc (class Target_i386): Initialize global_offset_table_ in
5842 constructor. Add global_offset_table_ field.
5843 (Target_i386::got_section): Set global_offset_table_.
5844 (Target_i386::do_finalize_sections): Set global_offset_table_
5845 size.
5846 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
5847 in constructor. Add global_offset_table_ field.
5848 (Target_x86_64::got_section): Set global_offset_table_.
5849 (Target_x86_64::do_finalize_sections): Set global_offset_table_
5850 size.
5851
1a2dff53
ILT
5852 * layout.cc (Layout::Layout): Initialize increase_relro_.
5853 (Layout::get_output_section): Add is_relro, is_last_relro, and
5854 is_first_non_relro parameters. Change all callers.
5855 (Layout::choose_output_section): Likewise.
5856 (Layout::add_output_section_data): Likewise.
5857 (Layout::make_output_section): Likewise.
5858 (Layout::set_segment_offsets): Clear increase_relro when using a
5859 linker script.
5860 * layout.h (class Layout): Add increase_relro method. Add
5861 increase_relro_ field. Update declarations.
5862 * output.cc (Output_section::Output_section): Initialize
5863 is_last_relro_ and is_first_non_relro_.
5864 (Output_segment::add_output_section): Group relro sections is
5865 do_sort is true. Handle is_last_relro and is_first_non_relro.
5866 (Output_segment::maximum_alignment): Remove relro handling.
5867 (Output_segment::set_section_addresses): Add increase_relro
5868 parameter. Change all callers. Add initial alignment to align
5869 relro sections on separate page. Remove old relro handling.
5870 (Output_segment::set_section_list_addresses): Remove in_relro
5871 parameter. Change all callers.
5872 (Output_segment::set_offset): Add increase parameter. Change all
5873 callers. Remove old relro handling.
5874 * output.h (class Output_section): Add new methods: is_last_relro,
5875 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
5876 Add is_last_relro_ and is_first_non_relro_ fields.
5877 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
5878 Create separate .got.plt section. Call increase_relro.
5879 * x86_64.cc (Target_x86_64::got_section): Likewise.
5880 * testsuite/relro_script_test.t: Add .got.plt.
5881
f0ba79e2
ILT
5882 PR 10450
5883 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
5884 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
5885 (Layout::finalize): Call set_dynamic_symbol_size.
5886 (Layout::set_dynamic_symbol_size): New function.
5887 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
5888 set_dynamic_symbol_size.
5889
e8cd95c7
ILT
5890 PR 10450
5891 * output.h (class Output_section): Add is_entsize_zero_ field.
5892 * output.cc (Output_section::Output_section): Initialize
5893 is_entsize_zero_.
5894 (Output_section::set_entsize): If two different entsizes are
5895 requested, force it to zero.
5896 (Output_section::add_input_section): Set flags for .debug_str
5897 before updating section flags. Set entsize.
5898 (Output_section::update_flags_for_input_section): Set SHF_MERGE
5899 and SHF_STRING if all input sections have those flags.
5900
3e1b9a8a
RÁE
59012009-12-29 Rafael Espindola <espindola@google.com>
5902
5903 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
5904 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
5905 reporting.
3e1b9a8a 5906
3dcad376
ST
59072009-12-29 Sriraman Tallam <tmsriram@google.com>
5908
5909 * options.cc (General_options::parse_version): Allow -v to exit
5910 without an error if there is nothing to link.
5911
084e2665
ILT
59122009-12-29 Ian Lance Taylor <iant@google.com>
5913
5914 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
5915 using a version of gcc before 4.1.
5916 * configure: Rebuild.
5917
250acde3
CD
59182009-12-28 Chris Demetriou <cgd@google.com>
5919
5920 * attributes.cc (Output_attributes_section_data::do_write): Use
5921 std::vector::front rather than std::vector::data.
5922
99fff23b
ILT
59232009-12-28 Ian Lance Taylor <iant@google.com>
5924
5925 * symtab.h (class Symbol_table): Add enum Defined.
5926 * resolve.cc (Symbol_table::should_override): Add defined
5927 parameter. Change all callers. Test whether object is NULL
5928 before calling a method on it.
5929 (Symbol_table::report_resolve_problem): Add defined parameter.
5930 Change all callers.
5931 (Symbol_table::should_override_with_special): Likewise.
5932 * symtab.cc (Symbol_table::define_in_output_data): Add defined
5933 parameter. Change all callers.
5934 (Symbol_table::do_define_in_output_data): Likewise.
5935 (Symbol_table::define_in_output_segment): Likewise.
5936 (Symbol_table::do_define_in_output_segment): Likewise.
5937 (Symbol_table::define_as_constant): Likewise.
5938 (Symbol_table::do_define_as_constant): Likewise.
5939 * script.h (class Symbol_assignment): Add is_defsym parameter to
5940 constructor; change all callers.
5941 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
5942 parameter. Change all callers. Add is_defsym_ field.
5943 (class Parser_closure): Add parsing_defsym parameter to
5944 constructor; change all callers. Add parsing_defsym accessor
5945 function. Add parsing_defsym_ field.
5946
556bd683
ILT
59472009-12-28 Ian Lance Taylor <iant@google.com>
5948
5949 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 5950 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 5951
1782c879
ILT
59522009-12-23 Ian Lance Taylor <iant@google.com>
5953
5954 * i386.cc (Target_i386::do_calls_non_split): Recognize
5955 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
5956 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
5957 -fsplit-stack prologue when using %r11.
1782c879 5958
329ca2b1
ST
59592009-12-21 Sriraman Tallam <tmsriram@google.com>
5960
5961 * options.cc (General_options::parse_version): Make -v continue and do
5962 the link like GNU ld does.
5963
d675ff46
RÁE
59642009-12-17 Rafael Avila de Espindola <espindola@google.com>
5965
5966 * Makefile.am (CCFILES): Add timer.cc.
5967 (HFILES): Add timer.h.
5968 * configure.ac: Check for sysconf and times.
5969 * main.cc: include timer.h.
5970 (main): Use Timer instead of get_run_time.
5971 * timer.cc: New.
5972 * timer.h: New.
5973 * workqueue.cc: include timer.h.
5974 (Workqueue::find_and_run_task):
5975 Report user, sys and wall time.
5976 * Makefile.in: Regenerate.
5977 * config.in: Regenerate.
5978 * configure: Regenerate.
5979
d6344fb5
DK
59802009-12-16 Doug Kwan <dougkwan@google.com>
5981
5982 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
5983 sections.
5984 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
5985 relaxed input sections.
5986 * output.cc (Output_section::find_relaxed_input_section): Change
5987 return type to Output_relaxed_input_section pointer. Adjust code
5988 for new type of relaxed_input_section_map_.
5989 * output.h (Output_section::find_relaxed_input_section): Change
5990 return type to Output_relaxed_input_section pointer.
5991 (Output_section::Output_relaxed_input_section_by_input_section_map):
5992 New type.
5993 (Output_section::relaxed_input_section_map_): Change type to
5994 Output_section::Output_relaxed_input_section_by_input_section_map.
5995 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
5996 input section.
5997
0e0d5469
ILT
59982009-12-15 Ian Lance Taylor <iant@google.com>
5999
6000 * layout.cc (Layout::create_shstrtab): Only write out after input
6001 sections if we are compressing debug sections.
6002
0649a889
ILT
60032009-12-15 Ian Lance Taylor <iant@google.com>
6004
6005 * archive.cc (Archive::add_symbols): Only look up a symbol without
6006 a version if there is, in fact, a version.
6007
2ea97941
ILT
60082009-12-14 Ian Lance Taylor <iant@google.com>
6009
6010 Revert -Wshadow changes, all changes from:
6011 2009-12-11 Doug Kwan <dougkwan@google.com>
6012 2009-12-11 Nick Clifton <nickc@redhat.com>
6013 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
6014
b0eec2cc
DK
60152009-12-11 Doug Kwan <dougkwan@google.com>
6016
6017 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
6018 due to -Wshadow.
6019 * attributes.cc (Object_attribute::size): Ditto.
6020 (Attributes_section_data::size): Ditto.
6021 (Attributes_section_data::Attributes_section_data): Ditto.
6022 (Output_attributes_section_data::do_write): Ditto.
6023 * attributes.h (Object_attribute::set_type): Ditto.
6024 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
6025
91d6fa6a
NC
60262009-12-11 Nick Clifton <nickc@redhat.com>
6027
6028 * archive.cc: Fix shadowed variable warnings.
6029 * arm.cc: Likewise.
6030 * compressed_output.cc: Likewise.
6031 * compressed_output.h: Likewise.
6032 * configure: Likewise.
6033 * dwarf_reader.cc: Likewise.
6034 * dynobj.cc: Likewise.
6035 * dynobj.h: Likewise.
6036 * ehframe.cc: Likewise.
6037 * ehframe.h: Likewise.
6038 * errors.cc: Likewise.
6039 * expression.cc: Likewise.
6040 * fileread.cc: Likewise.
6041 * fileread.h: Likewise.
6042 * freebsd.h: Likewise.
6043 * i386.cc: Likewise.
6044 * icf.cc: Likewise.
6045 * incremental.h: Likewise.
6046 * layout.cc: Likewise.
6047 * layout.h: Likewise.
6048 * mapfile.cc: Likewise.
6049 * merge.cc: Likewise.
6050 * merge.h: Likewise.
6051 * object.cc: Likewise.
6052 * object.h: Likewise.
6053 * options.h: Likewise.
6054 * output.cc: Likewise.
6055 * output.h: Likewise.
6056 * parameters.cc: Likewise.
6057 * plugin.cc: Likewise.
6058 * powerpc.cc: Likewise.
6059 * reduced_debug_output.cc: Likewise.
6060 * reduced_debug_output.h: Likewise.
6061 * reloc.cc: Likewise.
6062 * reloc.h: Likewise.
6063 * resolve.cc: Likewise.
6064 * script-sections.cc: Likewise.
6065 * script.cc: Likewise.
6066 * script.h: Likewise.
6067 * sparc.cc: Likewise.
6068 * symtab.cc: Likewise.
6069 * symtab.h: Likewise.
6070 * target-select.cc: Likewise.
6071 * target-select.h: Likewise.
6072 * token.h: Likewise.
6073 * workqueue.cc: Likewise.
6074 * workqueue.h: Likewise.
6075 * x86_64.cc: Likewise.
6076
a0351a69
DK
60772009-12-10 Doug Kwan <dougkwan@google.com>
6078
6079 * arm.cc (attributes.h): New include.
6080 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
6081 (Arm_relobj::~Arm_relobj): Delete object pointed by
6082 attributes_section_data_.
6083 (Arm_relobj::attributes_section_data): New method definition.
6084 (Arm_relobj::attributes_section_data_): New data member declaration.
6085 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
6086 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
6087 attributes_section_data_.
6088 (Arm_dynobj::attributes_section_data): New method definition.
6089 (Arm_dynobj::attributes_section_data_): New data member declaration.
6090 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
6091 initialization value of may_use_blx_ to false.
6092 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
6093 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
6094 object attributes to compute results instead of hard-coding.
6095 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
6096 Target_arm::get_secondary_compatible_arch,
6097 Target_arm::set_secondary_compatible_arch
6098 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
6099 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
6100 New method declarations.
6101 (Target_arm::get_aeabi_object_attribute): New method definition.
6102 (Target_arm::attributes_section_data_): New data member declaration.
6103 (read_arm_attributes_section): New template definition.
6104 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
6105 (Arm_dynobj::do_read_symbols): Ditto.
6106 (Target_arm::do_finalize_sections): Merge attributes sections from
6107 input. Check for BLX use after attributes section merging.
6108 Fix __exidx_start and __exidx_end visibility. Create an
6109 .ARM.attributes section if necessary.
6110 (Target_arm::get_secondary_compatible_arch,
6111 Target_arm::set_secondary_compatible_arch,
6112 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
6113 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 6114 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
6115 New method definitions.
6116
b59befec
ILT
61172009-12-09 Ian Lance Taylor <iant@google.com>
6118
6119 * plugin.cc (Plugin::load): Don't cast from void* to a function
6120 pointer.
6121
1276bc89
ILT
61222009-12-09 Ian Lance Taylor <iant@google.com>
6123
6124 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
6125 information fields.
6126
2f2de248
L
61272009-12-09 H.J. Lu <hongjiu.lu@intel.com>
6128
6129 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
6130 Replace two_file_shared_1.so with two_file_shared_2.so.
6131 * testsuite/Makefile.in: Regenerated.
6132
4f787271
DK
61332009-12-08 Doug Kwan <dougkwan@google.com>
6134
6135 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
6136 (HFILES): Add attributes.h and int_encoding.h.
6137 * Makefile.in: Regenerate.
6138 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
6139 function definitions to int_encoding.cc
6140 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
6141 prototypes to int_encoding.h
6142 * reduced_debug_output.cc (int_encoding.h): New include.
6143 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
6144 function definitions to int_encoding.cc
6145 (insert_into_vector, read_from_pointer): Move template definitions to
6146 int_encoding.h
6147 * attributes.cc: New file.
6148 * attributes.h: New file.
6149 * int_encoding.cc: New file.
6150 * int_encoding.h: New file.
6151
20b52f1a
RÁE
61522009-12-07 Rafael Avila de Espindola <espindola@google.com>
6153
6154 PR gold/11055
6155 * incremental-dump.cc (dump_incremental_inputs): New.
6156 (main): Use dump_incremental_inputs.
6157
53d7974c
L
61582009-12-07 H.J. Lu <hongjiu.lu@intel.com>
6159
6160 PR gold/10893
6161 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
6162 checking elfcpp::STT_FUNC.
6163 (Target_i386::Relocate::relocate): Likewise.
6164 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
6165
6166 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
6167 symbols from shared libraries into normal FUNC symbols.
6168
6169 * symtab.h (Symbol): Add is_func and use it.
6170
05a352e6
DK
61712009-12-05 Doug Kwan <dougkwan@google.com>
6172
6173 * arm.cc (Target_arm::arm_info): Initialize new fields
6174 attributes_section and attributes_vendor.
6175 * i386.cc (Target_i386::i386_info): Same.
6176 * object.cc (Sized_relobj::do_layout): Skip attribute section.
6177 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
6178 fields attributes_section and attributes_vendor.
53d7974c 6179 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
6180 * target.h (Target::attributes_section, Target::attributes_vendor,
6181 Target::is_attributes_section, Target::attribute_arg_type,
6182 Target::attributes_order): New method definitions.
6183 (Target::Target_info::attributes_section,
6184 Target::Target_info::attributes_vendor): New fields.
6185 (Target::do_attribute_arg_type, Target::do_attributes_order): New
6186 virtual method definitions.
6187 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
6188 attributes_section and attributes_vendor.
6189 * testsuite/testfile.cc (Target_test::test_target_info): Same.
6190
f4e5969c
DK
61912009-12-05 Doug Kwan <dougkwan@google.com>
6192
6193 * arm.cc: Update comments about interworking and stub generation.
6194 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
6195 considered as non-PIC.
6196 (Arm_relocate_functions::base_abs): Fix formatting.
6197 (Arm_relocate_functions::got_prel): Fix comment. Change interface
6198 of function to use GOT entry address instead of offset.
6199 (Target_arm::Scan::global): Issue an error if a symbol would need a
6200 PLT does not get one because it is untyped. Remove code to create
6201 dynamic symbols for relative branches.
6202 (Target_arm::Relocate::relocate: Use 0 instead of false since function
6203 takes unsigned integer instead of boolean.
6204
1abce4a6
L
62052009-12-05 H.J. Lu <hongjiu.lu@intel.com>
6206
6207 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
6208 (two_file_test_LDADD): Likewise.
6209 (common_test_1_LDADD): Likewise.
6210 (exception_test_LDADD) Likewise.
6211 (weak_test_LDADD): Likewise.
6212 (many_sections_test_LDADD): Likewise.
6213 (initpri1_LDADD): Likewise.
6214 (script_test_1_LDADD): Likewise.
6215 (script_test_2_LDADD): Likewise.
6216 (justsyms_LDADD): Likewise.
6217 (binary_test_LDADD): Likewise.
6218 (large_LDADD): Likewise.
6219 * testsuite/Makefile.in: Regenerated.
6220
adcf2816 62212009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 6222
adcf2816
L
6223 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
6224 (Symbol_table::override_with_special): Likewise.
6225 (Symbol_table::add_from_object): Likewise.
6226
28e67f5d
RÁE
62272009-12-04 Rafael Avila de Espindola <espindola@google.com>
6228
6229 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
6230 Don't set the data_offset twice.
6231
ae10a101
RÁE
62322009-12-04 Rafael Avila de Espindola <espindola@google.com>
6233
6234 * testsuite/Makefile.in: Regenerate.
6235
f59f41f3
DK
62362009-12-03 Doug Kwan <dougkwan@google.com>
6237
6238 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
6239 (Target_arm::do_finalize_sections): Add parameter for symbol table
6240 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
6241 * i386.cc (Target_i386::do_finalize_sections): Add an additional
6242 parameter for symbol table pointer.
6243 * layout.cc (Layout::finalize): Call Target::finalize_sections with
6244 an additional parameter for a pointer to symbol table.
6245 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
6246 parameter for a symbol table pointer.
6247 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
6248 * target.h (Target::finalize_sections, Target::do_finalize_sections):
6249 Ditto.
6250 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
6251 parameter for a symbol table pointer.
6252
ca55d848
RÁE
62532009-12-03 Rafael Avila de Espindola <espindola@google.com>
6254
6255 * incremental.cc (Incremental_inputs_header)
6256 (Incremental_inputs_header_write, Incremental_inputs_entry)
6257 (Incremental_inputs_entry_write): Move ...
6258 * incremental.h (Incremental_inputs_header)
6259 (Incremental_inputs_header_write, Incremental_inputs_entry)
6260 (Incremental_inputs_entry_write): here.
6261
3aec4f9c
RÁE
62622009-12-02 Rafael Avila de Espindola <espindola@google.com>
6263
6264 * incremental.cc (make_sized_incremental_binary): Set the target.
6265 Error if it is incompatible.
6266 * output.h (Output_file): Add filename method.
6267
9c0ae74d
RÁE
62682009-12-02 Rafael Avila de Espindola <espindola@google.com>
6269
6270 * incremental.cc (Incremental_inputs_entry): Remove unused argument
6271 from the get_* methods.
6272
a45500ae
RÁE
62732009-12-02 Rafael Avila de Espindola <espindola@google.com>
6274
6275 * incremental-dump.cc (main): Check that the offeset of a script is 0.
6276 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
6277 Write 0 for the data_offset of scripts.
6278
325e6408
RÁE
62792009-12-02 Rafael Avila de Espindola <espindola@google.com>
6280
6281 * testsuite/Makefile.am: Add the incremental_test.sh test.
6282 * testsuite/incremental_test.sh: New.
6283 * testsuite/incremental_test_1.c: New.
6284 * testsuite/incremental_test_2.c: New.
6285
954c3e2e
RÁE
62862009-12-01 Rafael Avila de Espindola <espindola@google.com>
6287
6288 * incremental-dump.cc (main): Fix typos.
6289
f8086623
RÁE
62902009-11-27 Rafael Avila de Espindola <espindola@google.com>
6291
6292 PR gold/11025
6293 * incremental-dump.cc (main): Use llu to print 64 bit values.
6294
3b0dd6ac
L
62952009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
6296 H.J. Lu <hongjiu.lu@intel.com>
6297
6298 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
6299 $(LIBDL).
6300 (incremental_dump_LDADD): Likewise.
6301 * Makefile.in: Regenerated.
6302
a6d1ef57 63032009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 6304
a6d1ef57
DK
6305 Revert:
6306
6307 2009-11-25 Doug Kwan <dougkwan@google.com>
6308
6309 * arm.cc (Target_arm::Target_arm): Move method definition
6310 outside of class definition. Add code to handle
6311 --target1-rel, --target1-abs and --target2= options.
6312 (Target_arm::get_reloc_reloc_type): Change method to be
6313 non-static and const.
6314 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
6315 New data member declaration.
6316 (Target_arm::Scan::local, Target_arm::Scan::global,
6317 Target_arm::Relocate::relocate,
6318 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
6319 Adjust call to Target_arm::get_real_reloc_type.
6320 (Target_arm::get_real_reloc_type): Use command line options
6321 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
6322 * options.h (--target1-rel, --target1-abs, --target2): New
6323 ARM-only options.
6324
50aeb7d4
DK
63252009-11-25 Doug Kwan <dougkwan@google.com>
6326
6327 * arm.cc (Target_arm::Target_arm): Move method definition outside of
6328 class definition. Add code to handle --target1-rel, --target1-abs
6329 and --target2= options.
6330 (Target_arm::get_reloc_reloc_type): Change method to be non-static
6331 and const.
6332 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
6333 member declaration.
6334 (Target_arm::Scan::local, Target_arm::Scan::global,
6335 Target_arm::Relocate::relocate,
6336 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
6337 call to Target_arm::get_real_reloc_type.
6338 (Target_arm::get_real_reloc_type): Use command line options to
6339 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
6340 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
6341 options.
6342
51938283
DK
63432009-11-25 Doug Kwan <dougkwan@google.com>
6344
6345 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
6346 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
6347 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
6348 formatting.
6349 (Arm_relocate_functions::thm_call): Replace body with a call to
6350 Arm_relocate_functions::thumb_branch_common.
6351 (Arm_relocate_functions::thm_jump24,
6352 Arm_relocate_functions::thm_xpc22): New method definitions.
6353 (Arm_relocate_functions::thumb_branch_common): New method definition.
6354 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
6355 operator.
6356 (Target_arm::Relocate::relocate): Adjust call to thm_call.
6357 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
6358
e2b8f3c4
RÁE
63592009-11-24 Rafael Avila de Espindola <espindola@google.com>
6360
6361 * Makefile.am: Build incremental-dump
6362 * Makefile.in: Regenerate.
6363 * incremental-dump.cc: New.
6364 * incremental.cc (Incremental_inputs_header_data,
6365 Incremental_inputs_entry_data): Move to incremental.h
6366 * incremental.h: (Incremental_inputs_header_data,
6367 Incremental_inputs_entry_data): Move from incremental.cc
6368
bcba9aec
RÁE
63692009-11-24 Rafael Avila de Espindola <espindola@google.com>
6370
6371 * incremental.cc (Incremental_inputs_header,
6372 Incremental_inputs_header_write, Incremental_inputs_entry,
6373 Incremental_inputs_entry_write): Add a typedef with the data type.
6374
7c3afe08
RÁE
63752009-11-24 Rafael Avila de Espindola <espindola@google.com>
6376
6377 * incremental.cc (Incremental_inputs_header,
6378 Incremental_inputs_header_write, Incremental_inputs_entry,
6379 Incremental_inputs_entry_write): Update comment about which
6380 type has the filed descriptions.
6381
d204b6e9
DK
63822009-11-15 Doug Kwan <dougkwan@google.com>
6383
6384 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
6385 (Arm_relocate_functions::arm_branch_common): Change method defintion
6386 in class definition to a method declaration and update list of formal
6387 parameters.
6388 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
6389 Arm_relocation_functions::jump24): Adjust call to
6390 Arm_relocate_functions::arm_branch_common. Update list of formal
6391 parameters.
6392 (Arm_relocate_functions::xpc25): New method definition.
6393 (Arm_relocate_functions::arm_branch_common): Move method defintion
6394 out from class definition. Use stubs for mode-switching and extending
6395 branch ranges.
6396 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
6397 specially. Change code to enable use of stubs in ARM branches.
6398
43d12afe
DK
63992009-11-10 Doug Kwan <dougkwan@google.com>
6400
6401 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
6402 in method declaration.
6403 (Target_arm::relocate_stub): New method declaration.
6404 (Target_arm::default_target): Change to return a pointer instead of
6405 a const reference.
6406 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
6407 Target_arm::default_target.
6408 (Arm_Relobj::do_relocate_sections): Remove options paramater in
6409 method definition.
6410 (Target_arm::relocate_section): Adjust view.
6411 (Target_arm::relocate_stub): New method definition.
6412
ac33a407
DK
64132009-11-10 Doug Kwan <dougkwan@google.com>
6414
6415 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
6416 a format warning.
6417 * incremental.cc (open_incremental_binary): Initialized local
6418 variables to avoid warnings.
6419 * object.cc (make_elf_object): Ditto.
6420 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
6421 a format warning.
e1df38aa 6422
88ee28e9
L
6423009-11-09 H.J. Lu <hongjiu.lu@intel.com>
6424
6425 PR gold/10930
6426 * testsuite/plugin_test.c: Include "config.h".
6427
2daedcd6
DK
64282009-11-09 Doug Kwan <dougkwan@google.com>
6429
6430 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
6431 (arm_symbol_value): Remove.
6432 (Arm_relocate_functions::arm_branch_common,
6433 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
6434 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
6435 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
6436 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
6437 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
6438 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
6439 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
6440 Arm_relocate_functions::thm_mobw_abs_nc,
6441 Arm_relocate_functions::thm_mov_abs,
6442 Arm_relocate_functions::movw_prel_nc,
6443 Arm_relocate_functions::thm_movt_abs,
6444 Arm_relocate_functions::movt_prel,
6445 Arm_relocate_functions::thm_movw_prel_nc,
6446 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
6447 (Target_arm::Relocate::relocate): Only decompose address into two
6448 parts if relocation type uses the thumb-bit and pass the actual
6449 bit instead of a flag indicating that the thumb-bit is used. Adjust
6450 calls to methods in Arm_relocate_functions for this change.
6451
1276bc89 64522009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
6453
6454 PR 10925
6455 * reloc.cc: Instantiate
6456 Sized_relobj::initialize_input_to_output_maps and
6457 Sized_relobj:free_input_to_output_maps.
6458
e53ad1b5
ILT
64592009-11-06 Ian Lance Taylor <iant@google.com>
6460
6461 PR 10876
6462 * defstd.cc (in_segment): Set only_if_ref true for "end".
6463
eb44217c
DK
64642009-11-06 Doug Kwan <dougkwan@google.com>
6465
6466 * arm.cc (class Reloc_stub): Correct a comment.
6467 (Target_arm::Target_arm): Initialize arm_input_section_map_.
6468 (Target_arm::scan_section_for_stubs): New method declaration.
6469 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
6470 Change methods from private to protected.
6471 (Target_arm::do_may_relax): New method definition.
6472 (Target_arm::do_relax, Target_arm::group_sections,
6473 Target_arm::scan_reloc_for_stub,
6474 Target_arm::scan_reloc_section_for_stubs): New method declarations.
6475 (Target_arm::arm_input_section_map_): New data member declaration.
6476 (Target_arm::scan_reloc_for_stub,
6477 Target_arm::scan_reloc_section_for_stubs,
6478 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
6479 Target_arm::do_relax): New method definitions.
6480
5d329b7d
ILT
64812009-11-06 Mikolaj Zalewski <mikolaj@google.com>
6482
6483 * configure.ac: Check for (struct stat)::st_mtim
6484 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
6485 * config.in: Regenerate.
6486 * configure: Regenerate.
6487
96a0d71b
ILT
64882009-11-05 Ian Lance Taylor <iant@google.com>
6489
6490 PR 10910
6491 * output.cc (Output_segment::add_output_section): Add missing
6492 return statement.
6493
594c8e5e
ILT
64942009-11-04 Ian Lance Taylor <iant@google.com>
6495
6496 PR 10880
6497 * object.h (class Object): Add is_needed and set_is_needed
6498 methods. Add is_needed_ field. Make bool fields into bitfields.
6499 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
6500 defined in a dynamic object and referenced by a regular object,
6501 set is_needed for the dynamic object.
6502 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
6503 if the file is marked with as_needed and it is not needed.
6504
22b127cc
ILT
65052009-11-04 Ian Lance Taylor <iant@google.com>
6506
6507 PR 10887
6508 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
6509 tags if data is discarded by linker script.
6510 * i386.cc (Target_i386::do_finalize_sections): Likewise.
6511 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
6512 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
6513 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
6514
f5c870d2
ILT
65152009-11-04 Ian Lance Taylor <iant@google.com>
6516
6517 * layout.cc (Layout::get_output_section): Add is_interp and
6518 is_dynamic_linker_section parameters. Change all callers.
6519 (Layout::choose_output_section): Likewise.
6520 (Layout::make_output_section): Likewise.
6521 (Layout::add_output_section_data): Add is_dynamic_linker_section
6522 parameter. Change all callers.
6523 * layout.h (class Layout): Update declarations.
6524 * output.h (class Output_section): Add is_interp, set_is_interp,
6525 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
6526 Add is_interp_, is_dynamic_linker_section_ fields. Change
6527 generate_code_fills_at_write_ to a bitfield.
6528 * output.cc (Output_section::Output_sections): Initialize new
6529 fields.
6530 (Output_segment::add_output_section): Add do_sort parameter.
6531 Change all callers.
6532
1ae4d23b
ILT
65332009-11-03 Ian Lance Taylor <iant@google.com>
6534
6535 PR 10860
6536 * options.h (class General_options): Add --warn-common.
6537 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
6538 merging two common symbols.
6539 (Symbol_table::should_override): Handle --warn-common when merging
6540 a common symbol with a defined symbol. Use report_resolve_problem
6541 for multiple definitions.
6542 (Symbol_table::report_resolve_problem): New function.
6543 * symtab.h (class Symbol_table): Declare report_resolve_problem.
6544
55da9579
DK
65452009-11-03 Doug Kwan <dougkwan@google.com>
6546
6547 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
6548 stub_factory_.
6549 (Target_arm::stub_factory): New method definition.
6550 (Target_arm::new_arm_input_section,
6551 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
6552 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 6553 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
6554 New type definitions.
6555 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
6556 member declarations.
6557 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
6558 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
6559 New method definitions.
6560
37a9ac43
ILT
65612009-11-03 Ian Lance Taylor <iant@google.com>
6562
6563 * options.h (class General_options): Add --warn_constructors.
6564
b3d6a3d4
ILT
65652009-11-03 Ian Lance Taylor <iant@google.com>
6566
6567 PR 10893
6568 * defstd.cc (in_section): Add entries for __rel_iplt_start,
6569 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
6570
934b01dd
ILT
65712009-11-03 Ian Lance Taylor <iant@google.com>
6572
6573 PR 10895
6574 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
6575 --msgid-bugs-address.
6576 (install-pdf): New target.
6577 (install-data_yes): Look up one directory to find mkinstalldirs.
6578
03c1939b
L
65792009-11-03 H.J. Lu <hongjiu.lu@intel.com>
6580
6581 * po/Make-in (.po.gmo): Don't generate .gmo files in source
6582 tree.
6583
ebd95253
DK
65842009-10-30 Doug Kwan <dougkwan@google.com>
6585
6586 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
6587
e9bbb538
DK
65882009-10-30 Doug Kwan <dougkwan@google.com>
6589
6590 * arm.cc (Stub_addend_reader): New struct template definition
6591 and partial specializations.
6592 (Stub_addend_reader::operator()): New method definition for a
6593 partially specialized template.
6594
d5b40221
DK
65952009-10-30 Doug Kwan <dougkwan@google.com>
6596
6597 * arm.cc (Arm_relobj::processor_specific_flags): New method
6598 definition.
6599 (Arm_relobj::do_read_symbols): New method declaration.
6600 (Arm_relobj::processor_specific_flags_): New data member declaration.
6601 (Arm_dynobj): New class definition.
6602 (Target_arm::do_finalize_sections): Add input_objects parameter.
6603 (Target_arm::do_adjust_elf_header): New method declaration.
6604 (Target_arm::are_eabi_versions_compatible,
6605 (Target_arm::merge_processor_specific_flags): New method declaration.
6606 (Target_arm::do_make_elf_object): New overloaded method definitions
6607 and declaration.
6608 (Arm_relobj::do_read_symbols): New method definition.
6609 (Arm_dynobj::do_read_symbols): Ditto.
6610 (Target_arm::do_finalize_sections): Add input_objects parameters.
6611 Merge processor-specific flags from all input objects.
6612 (Target_arm::are_eabi_versions_compatible,
6613 Target_arm::merge_processor_specific_flags,
6614 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
6615 New method definitions.
6616 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
6617 Input_objects pointer type parameter.
6618 * layout.cc (Layout::finalize): Pass input objects to target's.
6619 finalize_sections function.
6620 * output.cc (Output_file_header::do_sized_write): Set ELF file
6621 header's processor-specific flags.
6622 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
6623 Input_objects pointer type parameter.
6624 * sparc.cc (Target_sparc::do_finalize_sections): Same.
6625 * target.h (Input_objects): New forward class declaration.
6626 (Target::processor_specific_flags,
6627 Target::are_processor_specific_flags_sect): New method definitions.
6628 (Target::finalize_sections): Add input_objects parameter.
6629 (Target::Target): Initialize processor_specific_flags_ and
6630 are_processor_specific_flags_set_.
6631 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
6632 parameter.
6633 (Target::set_processor_specific_flags): New method definition.
6634 (Target::processor_specific_flags_,
6635 Target::are_processor_specific_flags_set_): New data member
6636 declarations.
6637 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
6638 Input_objects pointer type parameter.
6639
ebabffbd
DK
66402009-10-30 Doug Kwan <dougkwan@google.com>
6641
6642 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
6643
ad0f2072
ILT
66442009-10-28 Ian Lance Taylor <iant@google.com>
6645
6646 * object.h (class Relobj): Drop options parameter from
6647 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
6648 do_scan_relocs, do_relocate. Change all callers.
6649 (class Sized_relobj): Drop options parameters from
6650 do_gc_process_relocs, do_scan_relocs, do_relocate,
6651 do_relocate_sections, relocate_sections, emit_relocs_scan,
6652 emit_relocs_scan_reltype. Change all callers.
6653 (struct Relocate_info): Remove options field and all references to
6654 it.
6655 * reloc.h (class Read_relocs): Remove options constructor
6656 parameter and options_ field. Change all callers.
6657 (class Gc_process_relocs, class Scan_relocs): Likewise.
6658 (class Relocate_task): Likewise.
6659 * target-reloc.h (scan_relocs): Remove options parameter. Change
6660 all callers.
6661 (scan_relocatable_relocs): Likewise.
6662 * target.h (class Sized_target): Remove options parameter from
6663 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
6664 all callers.
6665 * gc.h (gc_process_relocs): Remove options parameter. Change all
6666 callers.
6667 * arm.cc: Update functions to remove options parameters.
6668 * i386.cc: Likewise.
6669 * powerpc.cc: Likewise.
6670 * sparc.cc: Likewise.
6671 * x86_64.cc: Likewise.
6672 * testsuite/testfile.cc: Likewise.
6673
8ffa3667
DK
66742009-10-28 Doug Kwan <dougkwan@google.com>
6675
6676 * arm.cc (Arm_relobj): New class definition.
e1df38aa 6677 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
6678 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
6679 New method definitions.
6680
40f36857
CC
66812009-10-28 Cary Coutant <ccoutant@google.com>
6682
6683 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
6684 (Plugin::cleanup_done_): New member.
6685 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
6686 (Plugin_manager::cleanup_done_): Remove.
6687 (Plugin_manager::add_input_file): Edit error message.
6688 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
6689 (Plugin_manager::cleanup): Remove use of cleanup_done_.
6690
2c849493
ILT
66912009-10-27 Mikolaj Zalewski <mikolajz@google.com>
6692
6693 * fileread.cc: (File_read::View::~View): Use the new
6694 data_ownership_ filed.
6695 (File_read::~File_read): Dispose the new whole_file_view_.
6696 (File_read::open): Mmap the whole file if needed.
6697 (File_read::open): Use whole_file_view_ instead of contents_.
6698 (File_read::find_view): Use whole_file_view_ if applicable.
6699 (File_read::do_read): Use whole_file_view_ instead of contents_.
6700 (File_read::make_view): Use whole_file_view_ instead of contents_,
6701 update File_read::View::View call.
6702 (File_read::find_or_make_view): Update File_read::View::View
6703 call.
6704 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
6705 remove contents_
6706 (File_read::View::Data_ownership): New enum.
6707 (File_read::View::View): Replace bool mapped_ with Data_ownership
6708 argument.
6709 (File_read::View::mapped_): Remove (replaced by data_ownership_).
6710 (File_read::View::data_ownership_): New field.
6711 (File_read::contents_): Remove (replaced by whole_file_view_).
6712 (File_read::whole_file_view_): New field.
6713 * options.h (class General_options): Add --keep-files-mapped.
6714
24998053
CC
67152009-10-27 Cary Coutant <ccoutant@google.com>
6716
6717 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
6718 * testsuite/Makefile.am (plugin_test_5): New test case.
6719 * testsuite/Makefile.in: Regenerate.
6720
72adc4fa
DK
67212009-10-25 Doug Kwan <dougkwan@google.com>
6722
6723 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
6724 from private to protected to allow access by child class.
6725 (Sized_relobj::do_relocate_sections): New method declaration.
6726 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 6727 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
6728 Sized_relobj::relocate_sections. Instantiate template explicitly
6729 for different target sizes and endianity.
6730
07f508a2
DK
67312009-10-24 Doug Kwan <dougkwan@google.com>
6732
6733 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
6734 (Arm_input_section::as_arm_input_section): New method.
6735 (Arm_output_section): New class definition.
6736 (Arm_output_section::create_stub_group,
6737 Arm_output_section::group_sections): New method definitions.
6738
10ad9fe5
DK
67392009-10-22 Doug Kwan <dougkwan@google.com>
6740
6741 * arm.cc (Arm_input_section): New class definition.
6742 (Arm_input_section::init, Arm_input_section:do_write,
6743 Arm_input_section::set_final_data_size,
6744 Arm_input_section::do_reset_address_and_file_offset): New method
6745 definitions.
6746
56ee5e00
DK
67472009-10-21 Doug Kwan <dougkwan@google.com>
6748
6749 * arm.cc (Stub_table, Arm_input_section): New forward class
6750 declarations.
6751 (Stub_table): New class defintion.
6752 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
6753 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
6754 New method definition.
6755
b569affa
DK
67562009-10-21 Doug Kwan <dougkwan@google.com>
6757
6758 * arm.cc: Update copyright comments.
6759 (Target_arm): New forward class template declaration.
6760 (Arm_address): New type.
6761 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
6762 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
6763 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
6764 constants.
6765 (Insn_template): Same.
6766 (DEF_STUBS): New macro.
6767 (Stub_type): New enum type.
6768 (Stub_template): New class definition.
6769 (Stub): Same.
6770 (Reloc_stub): Same.
6771 (Stub_factory): Same.
6772 (Target_arm::Target_arm): Initialize may_use_blx_ and
6773 should_force_pic_veneer_.
6774 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
6775 Target_arm::should_force_pic_veneer,
6776 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
6777 Target_arm::using_thumb_only, Target_arm:;default_target): New
6778 method defintions.
6779 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
6780 New data member declarations.
6781 (Insn_template::size, Insn_template::alignment): New method defintions.
6782 (Stub_template::Stub_template): New method definition.
6783 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
6784 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
6785 (Stub_factory::Stub_factory): New method definition.
6786 * gold.h (string_hash): New template.
6787 * output.h (Input_section_specifier::hash_value): Use
6788 gold::string_hash.
6789 (Input_section_specifier::string_hash): Remove.
6790 * stringpool.cc (Stringpool_template::string_hash): Use
6791 gold::string_hash.
6792
6c172549
DK
67932009-10-20 Doug Kwan <dougkwan@google.com>
6794
6795 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
6796 symbols of relaxed input sections.
6797 * output.h (Output_section::find_relaxed_input_section): Make
6798 method public.
6799
c5617f2f
DK
68002009-10-16 Doug Kwan <dougkwan@google.com>
6801
6802 * dynobj.cc (Versions::Versions): Initialize version_script_.
6803 Only insert base version symbol definition for a shared object
6804 if version script defines any version versions.
6805 (Versions::define_base_version): New method definition.
6806 (Versions::add_def): Check that base version is not needed.
6807 (Versions::add_need): Define base version lazily.
6808 * dynobj.h (Versions::define_base_version): New method declaration.
6809 (Versions::needs_base_version_): New data member declaration.
6810 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
6811 (check_DATA): Add no_version_test.stdout.
6812 (libno_version_test.so, no_version_test.o no_version_test.stdout):
6813 New make rules.
6814 * testsuite/Makefile.in: Regenerate.
6815 * testsuite/no_version_test.c: New file.
6816 * testsuite/no_version_test.sh: Ditto.
6817
3c12dcdb
DK
68182009-10-16 Doug Kwan <dougkwan@google.com>
6819
6820 * expression.cc (class Segment_start_expression): New class definition.
6821 (Segment_start_expression::value): New method definition.
6822 (script_exp_function_segment_start): Return a new
6823 Segment_start_expression.
6824 * gold/script-c.h (script_saw_segment_start_expression): New function
6825 prototype.
6826 * script-sections.cc (Script_sections::Script_sections): Initialize
6827 SAW_SEGMENT_START_EXPRESSION_ to false.
6828 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
6829 and -Tbbs options to specify section addresses if given in
6830 command line and no SEGMENT_START expression is seen in a script.
6831 * script-sections.h (Script_sections::saw_segment_start_expression,
6832 Script_sections::set_saw_segment_start_expression): New method
6833 definition.
6834 (Script_sections::saw_segment_start_expression_): New data member
6835 declaration.
6836 * script.cc (script_saw_segment_start_expression): New function.
6837 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
6838 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
6839 script_test_7.sh and script_test_8.sh.
6840 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
6841 script_test_8.stdout.
6842 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
6843 (script_test_6, script_test_6.stdout, script_test_7,
6844 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
6845 * Makefile.in: Regenerate.
6846 * testsuite/script_test_6.sh: New file.
6847 * testsuite/script_test_6.t: Same.
6848 * testsuite/script_test_7.sh: Same.
6849 * testsuite/script_test_7.t: Same.
6850 * testsuite/script_test_8.sh: Same.
6851
64b1ae37
DK
68522009-10-16 Doug Kwan <dougkwan@google.com>
6853
6854 * output.cc (Output_segment::set_section_list_address): Cast
6855 expressions to unsigned long long type to avoid format warnings.
6856
661be1e2
ILT
68572009-10-15 Ian Lance Taylor <iant@google.com>
6858
12edd763 6859 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 6860 dot assignment to script_sections_.
12edd763
ILT
6861 * script-sections.cc (Script_sections::add_dot_assignment):
6862 Initialize if necessary.
6863
68b6574b
ILT
6864 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
6865 program headers with no load segment if there is a linker script.
6866
661be1e2
ILT
6867 * layout.cc (Layout::set_segment_offsets): Align the file offset
6868 to the segment aligment for -N or -n with no load segment.
6869 * output.cc (Output_segment::add_output_section): Don't crash if
6870 the first section is a TLS section.
6871 (Output_segment::set_section_list_addresses): Print an error
6872 message if the address moves backward in a linker script.
6873 * script-sections.cc
6874 (Output_section_element_input::set_section_addresses): Don't
6875 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
6876 (Orphan_output_section::set_section_addresses): Likewise.
6877
f15f61a7
DK
68782009-10-15 Doug Kwan <dougkwan@google.com>
6879
6880 * layout.cc (Layout::finish_dynamic_section): Generate tags
6881 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
6882 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
6883 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
6884
82bb573a
ILT
68852009-10-14 Ian Lance Taylor <iant@google.com>
6886
6887 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
6888 fields.
6889 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
6890 data_shdr fields of relinfo.
6891 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
6892 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
6893 R_386_TLS_LDO_32, adjust based on section flags.
6894 (Target_i386::Relocate::fix_up_ldo): Remove.
6895
374ad285
ILT
68962009-10-13 Ian Lance Taylor <iant@google.com>
6897
6898 Add support for -pie.
6899 * options.h (class General_options): Add -pie and
6900 --pic-executable.
6901 (General_options::output_is_position_independent): Test -pie.
6902 (General_options::output_is_executable): Return true if not shared
6903 and not relocatable.
6904 (General_options::output_is_pie): Remove.
6905 * options.cc (General_options::finalize): Reject incompatible uses
6906 of -pie.
6907 * gold.cc (queue_middle_tasks): A -pie link is not static.
6908 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
6909 * symtab.cc (Symbol::final_value_is_known): Return false if
6910 output_is_position_independent.
6911 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
6912 output_is_position_independent.
6913 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
6914 output_is_position_independent.
6915 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
6916 output_is_position_independent.
6917 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
6918 two_file_pie_test.
6919 (basic_pie_test.o, basic_pie_test): New targets.
6920 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
6921 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
6922 (two_file_pie_test): New target.
6923 * testsuite/Makefile.in: Rebuild.
6924 * README: Remove note saying that -pie is not supported.
6925
c6585162
ILT
69262009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
6927
6928 * options.h (class General_options): Add -init and -fini.
6929 * layout.cc (Layout::finish_dynamic_section): Emit
6930 given init and fini functions.
6931
032ce4e9
ST
69322009-10-13 Sriraman Tallam <tmsriram@google.com>
6933
6934 * gc.h (gc_process_relocs): Check if icf is enabled using new
6935 function.
6936 * gold.cc (queue_initial_tasks): Likewise.
6937 (queue_middle_tasks): Likewise.
6938 * object.cc (do_layout): Likewise.
6939 * symtab.cc (is_section_folded): Likewise.
6940 * main.cc (main): Likewise.
6941 * reloc.cc (Read_relocs::run): Likewise.
6942 (Sized_relobj::do_scan_relocs): Likewise.
6943 * icf.cc (is_function_ctor_or_dtor): New function.
6944 (Icf::find_identical_sections): Check if function is ctor or dtor when
6945 safe icf is chosen.
6946 * options.h (General_options::icf): Change option to be an enum.
6947 (Icf_status): New enum.
6948 (icf_enabled): New method.
6949 (icf_safe_folding): New method.
6950 (set_icf_status): New method.
6951 (icf_status_): New variable.
6952 * (options.cc) (General_options::finalize): Set icf_status_.
6953 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
6954 icf_test and icf_keep_unique_test to use the --icf enum flag.
6955 * testsuite/icf_safe_test.sh: New file.
e1df38aa 6956 * testsuite/icf_safe_test.cc: New file.
032ce4e9 6957
f345227a
ST
69582009-10-12 Sriraman Tallam <tmsriram@google.com>
6959
6960 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
6961 includes to gc.h and icf.h.
6962 * arm.cc: Include gc.h.
6963 * gold.cc: Likewise.
6964 * i386.cc: Likewise.
6965 * powerpc.cc: Likewise.
6966 * sparc.cc: Likewise.
6967 * x86_64.cc: Likewise.
6968 * gc.h: Include icf.h.
6969
1c7814ed
ILT
69702009-10-11 Ian Lance Taylor <iant@google.com>
6971
6972 * plugin.cc: Include "gold.h" before other header files.
6973
ae3b5189
CD
69742009-10-10 Chris Demetriou <cgd@google.com>
6975
6976 * options.h (Input_file_argument::Input_file_type): New enum.
6977 (Input_file_argument::is_lib_): Replace with...
6978 (Input_file_argument::type_): New member.
6979 (Input_file_argument::Input_file_argument): Take Input_file_type
6980 'type' rather than boolean 'is_lib' as second argument.
6981 (Input_file_argument::is_lib): Use type_.
6982 (Input_file_argument::is_searched_file): New function.
6983 (Input_file_argument::may_need_search): Handle is_searched_file.
6984 * options.cc (General_options::parse_library): Support -l:filename.
6985 (General_options::parse_just_symbols): Update for Input_file_argument
6986 changes.
6987 (Command_line::process): Likewise.
6988 * archive.cc (Archive::get_file_and_offset): Likewise.
6989 * plugin.cc (Plugin_manager::release_input_file): Likewise.
6990 * script.cc (read_script_file, script_add_file): Likewise.
6991 * fileread.cc (Input_file::Input_file): Likewise.
6992 (Input_file::will_search_for): Handle is_searched_file.
6993 (Input_file::open): Likewise.
6994 * readsyms.cc (Read_symbols::get_name): Likewise.
6995 * testsuite/Makefile.am (searched_file_test): New test.
6996 * testsuite/Makefile.in: Regenerate.
6997 * testsuite/searched_file_test.cc: New file.
6998 * testsuite/searched_file_test_lib.cc: New file.
6999
f3048a1d
ILT
70002009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7001 Ian Lance Taylor <iant@google.com>
7002
7003 * descriptor.cc: Include <cstdio> and "binary-io.h".
7004 (Descriptors::open): Open the files in binary mode always.
7005 * script.cc (Lex::get_token): Treat \r as whitespace.
7006
d4780e57
ILT
70072009-10-09 Ian Lance Taylor <iant@google.com>
7008
7009 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
7010
d9a893b8
ILT
70112009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7012 Ian Lance Taylor <iant@google.com>
7013
7014 * configure.ac: Check for readv function also.
7015 * fileread.cc (readv): Define if not HAVE_READV.
7016 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
7017 does not exist.
7018 * config.in: Regenerate.
7019 * configure: Regenerate.
7020
c0a62865
DK
70212009-10-09 Doug Kwan <dougkwan@google.com>
7022
7023 * layout.cc (Layout::make_output_section): Call target hook to make
7024 ordinary output section.
7025 (Layout::finalize): Adjust parameter list of call the
7026 Target::may_relax().
7027 * layout.h (class Layout::section_list): New method.
7028 * merge.h (Output_merge_base::entsize): Change visibility to public.
7029 (Output_merge_base::is_string, Output_merge_base::do_is_string):
7030 New methods.
7031 (Output_merge_string::do_is_string): New method.
7032 * object.cc (Sized_relobj::do_setup): renamed from
7033 Sized_relobj::set_up.
7034 * object.h (Sized_relobj::adjust_shndx,
7035 Sized_relobj::initializ_input_to_output_maps,
7036 Sized_relobj::free_input_to_output_maps): Change visibilities to
7037 protected.
7038 (Sized_relobj::setup): Virtualize.
7039 (Sized_relobj::do_setup): New method declaration.
7040 (Sized_relobj::invalidate_section_offset,
7041 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
7042 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
7043 * options.cc (parse_int): New function.
7044 * options.h (parse_int): New declaration.
7045 (DEFINE_int): New macro.
7046 (stub_group_size): New option.
7047 * output.cc (Output_section::Output_section): Initialize memebers
7048 merge_section_map_, merge_section_by_properties_map_,
7049 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
7050 (Output_section::add_input_section): Handled deferred code-fill
7051 generation and remove an old comment.
7052 (Output_section::add_relaxed_input_section): New method definition.
7053 (Output_section::add_merge_input_section): Use merge section by
7054 properties map to speed to search. Update merge section maps
7055 as appropriate.
7056 (Output_section::build_relaxation_map): New method definition.
7057 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
7058 Same.
7059 (Output_section::relax_input_section): Renamed to
7060 Output_section::convert_input_sections_to_relaxed_sections and change
7061 interface to take a vector of pointers to relaxed sections.
7062 (Output_section::find_merge_section,
7063 Output_section::find_relaxed_input_section): New method definitions.
7064 (Output_section::is_input_address_mapped,
7065 Output_section::output_offset, Output_section::output_address):
7066 Use output section data maps to speed up searching.
7067 (Output_section::find_starting_output_address): Add comments.
7068 (Output_section::do_write,
7069 Output_section::write_to_postprocessing_buffer): Do code-fill
7070 generation as appropriate.
7071 (Output_section::get_input_sections): Invalidate relaxed input section
7072 map.
7073 (Output_section::restore_states): Adjust type of checkpoint .
7074 Invalidate relaxed input section map.
7075 * output.h (Output_merge_base): New class declaration.
7076 (Input_section_specifier): New class defintion.
7077 (class Output_relaxed_input_section) Change base class to
7078 Output_section_data_build.
7079 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
7080 base class initializer.
7081 (Output_section::add_relaxed_input_section): New method declaration.
7082 (Output_section::Input_section): Change visibility to protected.
7083 (Output_section::Input_section::relobj,
7084 Output_section::Input_section::shndx): Handle relaxed input sections.
7085 Output_section::input_sections) Change visibility to protected. Also
7086 define overload to return a non-const pointer.
7087 (Output_section::Merge_section_properties): New class defintion.
7088 (Output_section::Merge_section_by_properties_map,
7089 Output_section::Output_section_data_by_input_section_map,
7090 Output_section::Relaxation_map): New types.
7091 (Output_section::relax_input_section): Rename method to
7092 Output_section::convert_input_sections_to_relaxed_sections and change
7093 interface to take a vector of relaxed section pointers.
7094 (Output_section::find_merge_section,
7095 Output_section::find_relaxed_input_section,
7096 Output_section::build_relaxation_map,
7097 Output_section::convert_input_sections_in_list_to_relaxed_sections):
7098 New method declarations.
7099 (Output_section::merge_section_map_
7100 Output_section::merge_section_by_properties_map_,
7101 Output_section::relaxed_input_section_map_,
7102 Output_section::is_relaxed_input_section_map_valid_,
7103 Output_section::generate_code_fills_at_write_): New data members.
7104 * script-sections.cc
7105 (Output_section_element_input::set_section_addresses): Call
7106 current_data_size and addralign methods of relaxed input sections.
7107 (Orphan_output_section::set_section_addresses): Call current_data_size
7108 and addralign methods of relaxed input sections.
7109 * symtab.cc (Symbol_table::compute_final_value): Extract template
7110 from the body of Symbol_table::sized_finalize_symbol.
7111 (Symbol_table::sized_finalized_symbol): Call
7112 Symbol_table::compute_final_value.
7113 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
7114 (Symbol_table::compute_final_value): New templated method declaration.
7115 * target.cc (Target::do_make_output_section): New method defintion.
7116 * target.h (Target::make_output_section): New method declaration.
7117 (Target::relax): Add more parameters for input objects, symbol table
7118 and layout. Adjust call to do_relax.
7119 (Target::do_make_output_section): New method declaration.
7120 (Target::do_relax): Add parameters for input objects, symbol table
7121 and layout.
7122
d446d6c4
ILT
71232009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7124
7125 * pread.c: Include stdio.h.
7126
bc06c745
ILT
71272009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7128
7129 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
7130 defined.
7131
75aea3d0
ILT
71322009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7133
7134 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
7135 Change read_shndx type to unsigned int.
7136 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
7137 int.
7138 (Sized_dwarf_line_info::read_line_mappings): Likewise.
7139 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
7140 Change read_shndx type to unsigned int.
7141 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
7142 int.
7143 (Sized_dwarf_line_info::read_line_mappings): Likewise.
7144 * layout.cc (Layout::create_symtab_sections): Cast the result of
7145 local_symcount * symsize to off_t in the gold_assert.
7146
be8fcb75
ILT
71472009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7148
7149 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
7150 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
7151 R_ARM_BASE_ABS.
7152 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
7153 (Arm_relocate_functions::thm_abs5): New function.
7154 (Arm_relocate_functions::abs12): New function.
7155 (Arm_relocate_functions::abs16): New function.
7156 (Arm_relocate_functions::base_abs): New function.
7157 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
7158 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
7159 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
7160 R_ARM_BASE_ABS.
7161 (Scan::global): Likewise.
7162 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
7163 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
7164 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
7165 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
7166 R_ARM_BASE_ABS.
7167
c2a122b6
ILT
71682009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7169
7170 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
7171 (Arm_relocate_functions::movt_prel): New function.
7172 (Arm_relocate_functions::thm_movw_prel_nc): New function.
7173 (Arm_relocate_functions::thm_movt_prel): New function.
7174 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
7175 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
7176 (Scan::global, Relocate::relocate): Likewise.
7177 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7178
c4aa1e2d
ILT
71792009-10-09 Mikolaj Zalewski <mikolajz@google.com>
7180
7181 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
7182 Incremental_checker.
7183 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
7184 unsigned int.
7185 (class Incremental_inputs_header): New class.
7186 (Incremental_inputs_header_writer): Edit comment.
7187 (Incremental_inputs_entry): New class.
7188 (Incremental_inputs_entry_writer): Edit comment.
7189 (Sized_incremental_binary::do_find_incremental_inputs_section):
7190 Add *strtab_shndx parameter, fill it.
7191 (Sized_incremental_binary::do_check_inputs): New method.
7192 (Incremental_checker::can_incrementally_link_output_file): Use
7193 Sized_incremental_binary::check_inputs.
7194 (Incremental_inputs::report_command_line): Save command line in
7195 command_line_.
7196 * incremental.h:
7197 (Incremental_binary::find_incremental_inputs_section): New
7198 method.
7199 (Incremental_binary::do_find_incremental_inputs_section): Add
7200 strtab_shndx parameter.
7201 (Incremental_binary::do_check_inputs): New pure virtual method.
7202 (Sized_incremental_binary::do_check_inputs): Declare.
7203 (Incremental_checker::Incremental_checker): Add incremental_inputs
7204 parameter, use it to initialize incremental_inputs_.
7205 (Incremental_checker::incremental_inputs_): New field.
7206 (Incremental_checker::command_line): New method.
7207 (Incremental_checker::inputs): New method.
7208 (Incremental_checker::command_line_): New field.
7209
c549a694
ILT
72102009-10-09 Mikolaj Zalewski <mikolajz@google.com>
7211
7212 * incremental.cc: Include <cstdarg> and "target-select.h".
7213 (vexplain_no_incremental): New function.
7214 (explain_no_incremental): New function.
7215 (Incremental_binary::error): New method.
7216 (Sized_incremental_binary::do_find_incremental_inputs_section): New
7217 method.
7218 (make_sized_incremental_binary): New function.
7219 (open_incremental_binary): New function.
7220 (can_incrementally_link_file): Add checks if output is ELF and has
7221 inputs section.
7222 * incremental.h: Include "elfcpp_file.h" and "output.h".
7223 (Incremental_binary): New class.
7224 (Sized_incremental_binary): New class.
7225 (open_incremental_binary): Declare.
7226 * object.cc (is_elf_object): Use
7227 elfcpp::Elf_recognizer::is_elf_file.
7228 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
7229 * output.h (Output_file::filesize): New method.
7230
fd3c5f0b
ILT
72312009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7232
7233 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
7234 New function.
7235 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
7236 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
7237 function.
7238 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
7239 function.
7240 (Arm_relocate_functions::movw_abs_nc): New function.
7241 (Arm_relocate_functions::movt_abs): New function.
7242 (Arm_relocate_functions::thm_movw_abs_nc): New function.
7243 (Arm_relocate_functions::thm_movt_abs): New function.
7244 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
7245 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
7246 (Scan::global): Likewise.
7247 (Relocate::relocate): Likewise.
7248 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7249
7f5309a5
ILT
72502009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7251
7252 * arm.cc (Arm_relocate_functions::got_prel) New function.
7253 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
7254 (Relocate::relocate): Likewise.
7255 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7256
364c7fa5
ILT
72572009-10-06 Ian Lance Taylor <iant@google.com>
7258
7259 * options.h (class General_options): Define
7260 split_stack_adjust_size parameter.
7261 * object.h (class Object): Add uses_split_stack_ and
7262 has_no_split_stack_ fields. Add uses_split_stack and
7263 has_no_split_stack accessor functions. Declare
7264 handle_split_stack_section.
7265 (class Reloc_symbol_changes): Define.
7266 (class Sized_relobj): Define Function_offsets. Declare
7267 split_stack_adjust, split_stack_adjust_reltype, and
7268 find_functions.
7269 * object.cc (Object::handle_split_stack_section): New function.
7270 (Sized_relobj::do_layout): Call handle_split_stack_section.
7271 * dynobj.cc (Sized_dynobj::do_layout): Call
7272 handle_split_stack_section.
7273 * reloc.cc (Sized_relobj::relocate_sections): Call
7274 split_stack_adjust for executable sections in split_stack
7275 objects. Pass reloc_map to relocate_section.
7276 (Sized_relobj::split_stack_adjust): New function.
7277 (Sized_relobj::split_stack_adjust_reltype): New function.
7278 (Sized_relobj::find_functions): New function.
7279 * target-reloc.h: Include "object.h".
7280 (relocate_section): Add reloc_symbol_changes parameter. Change
7281 all callers.
7282 * target.h (class Target): Add calls_non_split method. Declare
7283 do_calls_non_split virtual method. Declare match_view and
7284 set_view_to_nop.
7285 * target.cc: Include "elfcpp.h".
7286 (Target::do_calls_non_split): New function.
7287 (Target::match_view): New function.
7288 (Target::set_view_to_nop): New function.
7289 * gold.cc (queue_middle_tasks): Give an error if mixing
7290 split-stack and non-split-stack objects with -r.
7291 * i386.cc (Target_i386::relocate_section): Add
7292 reloc_symbol_changes parameter.
7293 (Target_i386::do_calls_non_split): New function.
7294 * x86_64.cc (Target_x86_64::relocate_section): Add
7295 reloc_symbol_changes parameter.
7296 (Target_x86_64::do_calls_non_split): New function.
7297 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
7298 parameter.
7299 * powerpc.cc (Target_powerpc::relocate_section): Add
7300 reloc_symbol_changes parameter.
7301 * sparc.cc (Target_sparc::relocate_section): Add
7302 reloc_symbol_changes parameter.
7303 * configure.ac: Call AM_CONDITIONAL for the default target.
7304 * configure: Rebuild.
7305 * testsuite/Makefile.am (TEST_AS): New variable.
7306 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
7307 (check_DATA): Add split_i386 and split_x86_64 files.
7308 (SPLIT_DEFSYMS): Define.
7309 (split_i386_[1234n].o): New targets.
7310 (split_i386_[124]): New targets.
7311 (split_i386_[1234r].stdout): New targets.
7312 (split_x86_64_[1234n].o): New targets.
7313 (split_x86_64_[124]): New targets.
7314 (split_x86_64_[1234r].stdout): New targets.
7315 (MOSTLYCLEANFILES): Add new executables.
7316 * testsuite/split_i386.sh: New file.
7317 * testsuite/split_x86_64.sh: New file.
7318 * testsuite/split_i386_1.s: New file.
7319 * testsuite/split_i386_2.s: New file.
7320 * testsuite/split_i386_3.s: New file.
7321 * testsuite/split_i386_4.s: New file.
7322 * testsuite/split_i386_n.s: New file.
7323 * testsuite/split_x86_64_1.s: New file.
7324 * testsuite/split_x86_64_2.s: New file.
7325 * testsuite/split_x86_64_3.s: New file.
7326 * testsuite/split_x86_64_4.s: New file.
7327 * testsuite/split_x86_64_n.s: New file.
7328 * testsuite/testfile.cc (Target_test): Update relocation_section
7329 function.
7330 * testsuite/Makefile.in: Rebuild.
7331
e8a9fcda
ILT
73322009-10-06 Ian Lance Taylor <iant@google.com>
7333
7334 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
7335 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
7336 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
7337 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
7338 the address on ldo_addrs_.
7339 (Target_i386::Relocate::fix_up_ldo): New function.
7340
e99daf92
ILT
73412009-10-06 Rafael Espindola <espindola@google.com>
7342
7343 * plugin.cc (add_input_library): New.
7344 (Plugin::load): Add add_input_library to tv.
7345 (Plugin_manager::add_input_file): Add the is_lib argument.
7346 (add_input_file): Update call to Plugin_manager::add_input_file.
7347 (add_input_library): New.
7348 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
7349
966d4097
DK
73502009-09-30 Doug Kwan <dougkwan@google.com>
7351
7352 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
7353 symbol and call Symbol::may_need_copy_reloc to determine if
7354 a copy reloc is needed.
7355 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
7356 nocopyreloc is given in command line.
7357 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
7358 given in command line.
7359 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
7360 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
7361 of the removed Target_i386::may_need_copy_reloc.
7362 * options.h (copyreloc): New option with default value false.
7363 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
7364 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
7365 instead of the removed Target_powerpc::may_need_copy_reloc.
7366 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
7367 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
7368 instead of the removed Target_sparc::may_need_copy_reloc.
7369 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
7370 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
7371 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
7372 instead of the removed Target_x86_64::may_need_copy_reloc.
7373
029ba973
ILT
73742009-09-30 Ian Lance Taylor <iant@google.com>
7375
7376 * object.h (class Object): Remove target_ field, and target,
7377 sized_target, and set_target methods.
7378 (Object::sized_target): Remove.
7379 (class Sized_relobj): Update declarations. Remove sized_target.
7380 * object.cc (Sized_relobj::setup): Remove target parameter.
7381 Change all callers.
7382 (Input_objects::add_object): Don't do anything with the target.
7383 (make_elf_sized_object): Add punconfigured parameter. Change all
7384 callers. Set or test parameter target.
7385 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
7386 Change all callers.
7387 * parameters.cc (Parameters::set_target): Change parameter type to
7388 be non-const.
7389 (Parameters::default_target): Remove.
7390 (set_parameters_target): Change parameter type to be non-const.
7391 (parameters_force_valid_target): New function.
7392 (parameters_clear_target): New function.
7393 * parameters.h (class Parameters): Update declarations. Remove
7394 default_target method. Add sized_target and clear_target
7395 methods. Change target_ to be non-const.
7396 (set_parameters_target): Update declaration.
7397 (parameters_force_valid_target): Declare.
7398 (parameters_clear_target): Declare.
7399 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
7400 as NULL if we aren't searching.
7401 (Add_symbols::run): Don't check for compatible target.
7402 * fileread.cc (Input_file::open_binary): Call
7403 parameters_force_valid_target.
7404 * gold.cc (queue_middle_tasks): Likewise.
7405 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
7406 set_target on object.
7407 * dynobj.h (class Sized_dynobj): Update declarations.
7408 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
7409 make_elf_object returns NULL.
7410 (Archive::include_member): Don't check whether object target is
7411 compatible.
7412 * output.cc (Output_section::add_input_section): Get target from
7413 parameters.
7414 (Output_section::relax_input_section): Likewise.
7415 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
7416 parameters.
7417 (Sized_relobj::do_scan_relocs): Likewise.
7418 (Sized_relobj::relocate_sections): Likewise.
7419 * resolve.cc (Symbol_table::resolve): Likewise.
7420 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
7421 parameter. Change all callers.
7422 (Symbol_table::add_from_object): Get target from parameters.
7423 (Symbol_table::add_from_relobj): Don't check object target.
7424 (Symbol_table::add_from_dynobj): Likewise.
7425 (Symbol_table::define_special_symbol): Get target from
7426 parameters.
7427 * symtab.h (class Symbol_table): Update declaration.
7428 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
7429 parameter. Change all callers. Clear parameter target.
7430 (Binary_test): Test target here.
7431 * testsuite/object_unittest.cc (gold_testsuite): Remove
7432 target_test_pointer parameter. Change all callers.
7433 (Object_test): Test target here.
7434
a6a22b83
ILT
74352009-09-26 Ian Lance Taylor <iant@google.com>
7436
7437 * testsuite/initpri1.c: Don't try to use constructor priorities if
7438 compiling with gcc before 4.3.
7439
6a8f49fe
ILT
74402009-09-22 Mikolaj Zalewski <mikolajz@google.com>
7441
7442 * testsuite/retain_symbols_file_test.sh (check_present): Change
7443 output file name to retain_symbols_file_test.stdout.
7444 (check_absent): Likewise.
7445
8c604651
CS
74462009-09-18 Craig Silverstein <csilvers@google.com>
7447
7448 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
7449 * options.cc: Include <cerrno> and <fstream>.
7450 (General_options::finalize): Parse -retain-symbols-file tag.
7451 * options.h: New flag.
7452 (General_options): New method should_retain_symbol, new
7453 variable symbols_to_retain.
7454 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
7455 should_retain_symbol map.
7456 * testsuite/Makefile.am (retain_symbols_file_test): New test.
7457 * testsuite/Makefile.in: Regenerate.
7458 * testsuite/retain_symbols_file_test.sh: New file.
7459
ca58b19f
NC
74602009-09-18 Nick Clifton <nickc@redhat.com>
7461
7462 * po/es.po: Updated Spanish translation.
7463
20e6d0d6
DK
74642009-09-17 Doug Kwan <dougkwan@google.com>
7465
7466 * debug.h (DEBUG_RELAXATION): New constant.
7467 (DEBUG_ALL): Add DEBUG_RELAXATION.
7468 (debug_string_to_enum): Add relaxation debug option.
7469 * layout.cc
7470 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
7471 Layout::Relaxation_debug_check::read_sections,
7472 Layout::Relaxation_debug_check::read_sections): New method definitions.
7473 (Layout::Layout): Initialize data members
7474 record_output_section_data_from_scrips_,
7475 script_output_section_data_list_ and relaxation_debug_check_.
7476 (Layout::save_segments, Layout::restore_segments,
7477 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
7478 Layout::relaxation_loop_body): New method definitions.
7479 (Layout::finalize): Support relaxation. Move section layout code to
7480 Layout::relaxation_loop_body.
7481 (Layout::set_asection_address_from_script): Move code for orphan
7482 section placement out.
7483 (Layout::place_orphan_sections_in_script): New method definition.
7484 * layout.h (Output_segment_headers, Output_file_header):
7485 New forward class declarations.
7486 (Layout::~Layout): Define.
7487 (Layout::new_output_section_data_from_script): New method definition.
7488 (Layout::place_orphan_sections_in_script): New method declaration.
7489 (Layout::Segment_states): New type declaration.
7490 (Layout::save_segments, Layout::restore_segments,
7491 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
7492 Layout::relaxation_loop_body): New method declarations.
7493 (Layout::Output_section_data_list): New type declaration.
7494 (Layout::Relaxation_debug_check): New class definition.
7495 (Layout::record_output_section_data_from_script_,
7496 Layout::script_output_section_data_list_, Layout::segment_states_,
7497 Layout::relaxation_debug_check_): New data members.
7498 * output.cc: (Output_section_headers::do_size): New method definition.
7499 (Output_section_headers::Output_section_headers): Move size
7500 computation to Output_section_headers::do_size.
7501 (Output_segment_headers::do_size): New method definition.
e1df38aa 7502 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
7503 Output_file_header::do_size and call it.
7504 (Output_file_header::do_size): New method definition.
7505 (Output_data_group::Output_data_group): Adjust call to
7506 Output_section_data.
7507 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
7508 (Output_symtab_xindex::do_write): Add array bound check.
7509 (Output_section::Input_section::print_to_mapfile): Handle
7510 RELAXED_INPUT_SECTION_CODE.
7511 (Output_section::Output_section): Initialize data member checkpoint_.
7512 (Output_section::~Output_section): Delete checkpoint object pointed
7513 by checkpoint_.
7514 (Output_section::add_input_section): Always add an Input_section if
7515 relaxing.
7516 (Output_section::add_merge_input_section): Add assert.
7517 (Output_section::relax_input_section): New method definition.
7518 (Output_section::set_final_data_size): Set load address to zero for
7519 an unallocated section.
7520 (Output_section::do_address_and_file_offset_have_reset_values):
7521 New method definition.
7522 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
7523 Handle relaxed input section.
7524 (Output_section::sort_attached_input_sections): Checkpoint input
7525 section list lazily.
7526 (Output_section::get_input_sections): Change type of input_sections to
7527 list of Simple_input_section pointers. Checkpoint input section list
7528 lazily. Also handle relaxed input sections.
7529 (Output_section::add_input_section_for_script): Take a reference to
7530 a Simple_input_section object instead of Relobj pointer and section
7531 index as parameter. Handle relaxed input sections.
7532 (Output_section::save_states, Output_section::restore_states): New
7533 method definitions.
7534 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
7535 (Output_data::is_data_size_fixed): New method definition.
7536 (Output_data::reset_addresss_and_file_offset): Do not reset data size
7537 if it is fixed.
7538 (Output_data::address_and_file_offset_have_reset_values): New method
7539 definition.
7540 (Output_data::do_address_and_file_offset_have_reset_values): New method
7541 definition.
7542 (Output_data::set_data_size): Check that data size is not fixed.
7543 (Output_data::fix_data_size): New method definition.
7544 (Output_data::is_data_size_fixed_): New data member.
7545 (Output_section_headers::set_final_data_size): New method definition.
7546 (Output_section_headers::do_size): New method declaration.
7547 (Output_segment_headers::set_final_data_size): New method definition.
7548 (Output_segment_headers::do_size): New method declaration.
7549 (Output_file_header::set_final_data_size)::New method definition.
7550 (Output_file_header::do_size)::New method declaration.
7551 (Output_section_data::Output_section_data): Add new parameter
7552 is_data_size_fixed and use it to fix data size.
7553 (Output_data_const::Output_data_const): Adjust call to base class
7554 constructor and fix data size.
7555 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
7556 base class constructor and fix data size.
7557 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
7558 base class constructor and fix data size.
7559 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
7560 class constructor and fix data size.
7561 (Output_data_group::set_final_data_size): New method definition.
7562 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
7563 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
7564 class constructor and fix data size.
7565 (Output_relaxed_input_section): New class definition.
7566 (Output_section::Simple_input_section): New class definition.
7567 (Output_section::get_input_sections): Adjust parameter list.
7568 (Output_section::add_input_section_for_script): Same.
7569 (Output_section::save_states, Output_section::restore_states,
7570 Output_section::do_address_and_file_offset_have_reset_values,
7571 (Output_section::Input_section::Input_section): Handle
7572 RELAXED_INPUT_SECTION_CODE. Add new overload for
7573 Output_relaxed_input_section.
7574 (Output_section::Input_section::is_input_section,
7575 Output_section::Input_section::set_output_section): Handle relaxed
7576 input section.
7577 (Output_section::Input_section::is_relaxed_input_section,
7578 Output_section::Input_section::output_section_data,
7579 Output_section::Input_section::relaxed_input_section): New method
7580 definitions.
7581 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
7582 value.
7583 (Output_section::Input_section::u1_): Update comments.
7584 (Output_section::Input_section::u2_): Add new union member poris.
7585 (Output_section::Checkpoint_output_section): New classs definition.
7586 (Output_section::relax_input_section): New method declaration.
7587 (Output_section::checkpoint_): New data member.
7588 (Output_segment): Update comments.
7589 (Output_segment::Output_segment): Un-privatize copy constructor.
7590 (Output_segment::operator=): Un-privatize.
7591 * script-sections.cc (Output_section_element::Input_section_list):
7592 Change element type to Output_section::Simple_input_section.
7593 (Output_section_element_dot_assignment::set_section_addresses):
7594 Register output section data for relaxation clean up.
7595 (Output_data_exression::Output_data_expression): Adjust call to base
7596 constructor to fix data size.
7597 (Output_section_element_data::set_section_addresses): Register
7598 Output_data_expression object for relaxation clean up.
7599 (struct Input_section_info): Replace Relobj pointer and section index
7600 pair with Output_section::Simple_input_section and Convert struct to a
7601 class.
7602 (Input_section_sorter::operator()): Adjust access to
e1df38aa 7603 Input_section_info data member to use accessors.
20e6d0d6
DK
7604 (Output_section_element_input::set_section_addresses): Use layout
7605 parameter. Adjust code to use Output_section::Simple_input_section
7606 and Input_secction_info classes. Register filler for relaxation
7607 clean up.
7608 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
7609 and section index pair with Output_section::Simple_input_section
7610 class. Adjust code accordingly.
7611 (Phdrs_element::release_segment): New method definition.
7612 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
7613 segment list.
7614 (Script_sections::release_segments): New method definition.
7615 * gold/script-sections.h (Script_sections::release_segments): New
7616 method declaration.
7617 * gold/target.h (Target::may_relax, Target::relax,
7618 Target::do_may_relax, Target::do_relax): New method definitions.
7619
5e445df6
ILT
76202009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7621
7622 * arm.cc (has_signed_unsigned_overflow): New function.
7623 (Arm_relocate_functions::abs8): New function.
7624 (Target_arm::Scan::local): Handle R_ARM_ABS8.
7625 (Target_arm::Scan::global): Likewise.
7626 (Target_arm::relocate::relocate): Likewise.
7627 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7628 Likewise.
7629
8c604651 76302009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
7631
7632 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
7633 * testsuite/Makefile.in: Regenerate.
7634
1e9cc1c2
NC
76352009-09-11 Nick Clifton <nickc@redhat.com>
7636
7637 * po/gold.pot: Updated by the Translation project.
7638
6a89f575
CC
76392009-09-08 Cary Coutant <ccoutant@google.com>
7640
7641 * output.cc (Output_file::open): Add execute permission to empty file.
7642 * testsuite/Makefile.am (permission_test): New test.
7643 * testsuite/Makefile.in: Regenerate.
7644
fdcac5af
ILT
76452009-09-02 Ian Lance Taylor <iant@google.com>
7646
7647 * output.cc (Output_file::resize): Call map_no_anonymous rather
7648 than map.
7649
44453f85
ILT
76502009-09-01 Mikolaj Zalewski <mikolajz@google.com>
7651
7652 * gold.cc: Include "incremental.h".
7653 (queue_initial_tasks): Call Incremental_checker methods.
7654 * incremental.cc: Include "output.h".
7655 (Incremental_checker::can_incrementally_link_output_file): New
7656 method.
7657 * incremental.h (Incremental_checker): New class.
7658
7659 * output.cc (Output_file::open_for_modification): New method.
7660 (Output_file::map_anonymous): Changed return type to bool. Record
7661 map in base_ field.
7662 (Output_file::map_no_anonymous): New method, broken out of map.
7663 (Output_file::map): Use map_no_anonymous and map_anonymous.
7664 * output.h (class Output_file): Update declarations.
7665
293c1386
CC
76662009-08-24 Cary Coutant <ccoutant@google.com>
7667
7668 * options.h (Command_line::Pre_options): New class.
7669 (Command_line::pre_options): New member.
7670 * options.cc (gold::options::ready_to_register): New variable.
7671 (One_option::register_option): Do nothing if not registering options.
7672 Assert if same short option registered twice.
7673 (General_options::General_options): Turn off option registration when
7674 done constructing.
7675 (Command_line::Pre_options::Pre_options): New constructor.
7676
f773f3d2
CC
76772009-08-24 Cary Coutant <ccoutant@google.com>
7678
06a73cfe
CC
7679 * options.h (General_options::no_keep_memory): Remove incorrect
7680 short option.
f773f3d2 7681
a15af8e2
RW
76822009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7683
7684 * Makefile.am (am__skiplex, am__skipyacc): New.
7685 * Makefile.in: Regenerate.
7686
c462b41b
RW
76872009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7688
14ec8efd
RW
7689 * Makefile.am (AM_CPPFLAGS): Renamed from ...
7690 (INCLUDES): ... this.
7691 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
7692 (AM_CPPFLAGS): Renamed from ...
7693 (INCLUDE): ... this.
7694 * Makefile.in, testsuite/Makefile.in: Regenerate.
7695
81ecdfbb
RW
7696 * Makefile.in: Regenerate.
7697 * aclocal.m4: Likewise.
7698 * config.in: Likewise.
7699 * configure: Likewise.
7700 * testsuite/Makefile.in: Likewise.
7701
c462b41b
RW
7702 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
7703 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
7704 * Makefile.in: Regenerate.
7705 * testsuite/Makefile.in: Regenerate.
7706
2da73f13
CC
77072009-08-19 Cary Coutant <ccoutant@google.com>
7708
7709 * resolve.cc (Symbol_table::resolve): Don't complain about defined
7710 symbols in shared libraries overridden by hidden or internal symbols
7711 in the main program.
7712
2db70501
CD
77132009-08-19 Chris Demetriou <cgd@google.com>
7714
7715 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
7716 checking source file names in error messages.
7717
f733487b
DK
77182009-08-18 Doug Kwan <dougkwan@google.com>
7719
7720 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
7721 an elcpp::Ehdr as parameter. Adjust call to set_target.
7722 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
7723 an elfcpp::Ehdr as parameter.
7724 * object.cc (Object::set_target): Remove the version that looks up
7725 a target and sets it.
7726 (Sized_relobj::setup): Take a Target object instead of
7727 an elfcpp::Ehdr as parameter. Adjust call to set_target.
7728 (make_elf_sized_object): Find target and ask target to
7729 make an ELF object.
7730 * object.h: (Object::set_target): Remove the version that looks up
7731 a target and sets it.
7732 (Sized_relobj::setup): Take a Target object instead of
7733 an elfcpp:Ehdr as parameter.
7734 * target.cc: Include dynobj.h.
7735 (Target::do_make_elf_object_implementation): New.
7736 (Target::do_make_elf_object): New.
7737 * target.h (Target::make_elf_object): New template declaration.
7738 (Target::do_make_elf_object): New method declarations.
7739 (Target::do_make_elf_object_implementation): New template declaration.
7740
cc70f101
ILT
77412009-08-14 Ian Lance Taylor <iant@google.com>
7742
7743 * gold.h (FUNCTION_NAME): Define.
7744 (gold_unreachable): Use FUNCTION_NAME.
7745
ef5e0cb1
ST
77462009-08-12 Sriraman Tallam <tmsriram@google.com>
7747
7748 * icf.cc (Icf::find_identical_sections): Issue a warning when a
7749 symbol in the --keep-unique list is not found.
7750
48c187ce
ST
77512009-08-12 Sriraman Tallam <tmsriram@google.com>
7752
7753 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
7754 been maked as --keep-unique.
7755 (Icf::unfold_section): New function.
7756 * icf.h (Icf::unfold_section): New function.
7757 * options.h (General_options::keep_unique): New option.
7758 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
7759 * testsuite/Makefile.in: Regenerate.
7760 * testsuite/icf_keep_unique_test.sh: New file.
7761 * testsuite/icf_keep_unique_test.cc: New file.
7762
645afe0c
CC
77632009-08-12 Cary Coutant <ccoutant@google.com>
7764
7765 PR 10471
7766 * resolve.cc (Symbol_table::resolve): Check for references from
7767 dynamic objects to hidden and internal symbols.
7768 * testsuite/Makefile.am (hidden_test.sh): New test.
7769 * testsuite/Makefile.in: Regenerate.
7770 * testsuite/hidden_test.sh: New script.
7771 * testsuite/hidden_test_1.c: New test source.
7772 * testsuite/hidden_test_main.c: New test source.
7773
11af873f
DK
77742009-08-11 Doug Kwan <dougkwan@google.com>
7775
7776 * arm.cc: Update comments.
7777 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
7778 segment to locate the .ARM.exidx section if present.
7779
b9f7d72d
DK
77802009-08-09 Doug Kwan <dougkwan@google.com>
7781
7782 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
7783 patch.
7784
ddd3c53c
ST
77852009-08-07 Sriraman Tallam <tmsriram@google.com>
7786 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
7787 compiler warnings.
7788
27721062
ST
77892009-08-06 Sriraman Tallam <tmsriram@google.com>
7790
7791 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
7792 valid tls_segment only for non-debug-section relocations.
7793 * testsuite/Makefile.am: Add gc_tls_test.
7794 * testsuite/Makefile.in: Regenerate.
7795 * testsuite/gc_tls_test.cc: New file.
7796 * testsuite/gc_tls_test.sh: New file.
7797
ef15dade 77982009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 7799
ef15dade
ST
7800 * icf.cc: New file.
7801 * icf.h: New file.
7802 * Makefile.am (CCFILES): Add icf.cc.
7803 (HFILES): Add icf.h
7804 * Makefile.in: Regenerate.
7805 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
7806 * gc.h (gc_process_relocs): Populate lists used by icf to contain
7807 section, symbol and addend information for the relocs.
7808 * gold.cc (queue_middle_tasks): Call identical code folding.
7809 * gold.h: Add defines for multimap.
7810 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
7811 to the call of finalize_local_symbols.
7812 * main.cc (main): Create object of class Icf.
7813 * object.cc (Sized_relobj::do_layout): Allow this function to be
7814 called twice during icf.
7815 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
7816 to sections marked as identical by icf.
7817 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
7818 when available.
7819 (Sized_relobj::do_section_entsize): New function.
7820 * object.h (Object::section_entsize): New function.
7821 (Object::do_section_entsize): New pure virtual function.
7822 (Relobj::finalize_local_symbols): Add new parameter.
7823 (Relobj::do_section_entsize): New function.
7824 * options.h (General_options::icf): New option.
7825 (General_options::icf_iterations): New option.
7826 (General_options::print_icf_sections): New option.
7827 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
7828 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
7829 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
7830 icf.
7831 * symtab.cc (Symbol_table::is_section_folded): New function.
7832 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
7833 to sections marked as identical by icf.
7834 * symtab.h (Symbol_table::set_icf): New function.
7835 (Symbol_table::icf): New function.
7836 (Symbol_table::is_section_folded): New function.
7837 (Symbol_table::icf_): New data member.
7838 * target-reloc.h (relocate_section): Ignore sections folded by icf.
7839 * testsuite/Makefile.am: Add commands to build icf_test.
7840 * testsuite/Makefile.in: Regenerate.
7841 * testsuite/icf_test.sh: New file.
7842 * testsuite/icf_test.cc: New file.
7843
c3b65ac4
CD
78442009-07-24 Chris Demetriou <cgd@google.com>
7845
7846 * layout.cc (is_compressible_debug_section): Fix incorrect
7847 comment about compressed section names.
7848
1caf2c51
ILT
78492009-07-20 Ian Lance Taylor <ian@airs.com>
7850
7851 PR 10419
7852 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
7853
1ef4d87f
ILT
78542009-07-16 Ian Lance Taylor <iant@google.com>
7855
7856 PR 10400
7857 * layout.h: #include <map>.
7858 (class Kept_section): Change from struct to class. Add accessors
7859 and setters. Add section size to Comdat_group mapping. Change
7860 Comdat_group to std::map. Add is_comdat_ field. Add
7861 linkonce_size field in union.
7862 (class Layout): Update declaration of find_or_add_kept_section.
7863 Don't declare find_kept_object.
7864 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
7865 parameter. Add object, shndx, is_comdat, and is_group_name
7866 parameters. Change all callers. Adjust for new Kept_section.
7867 (Layout::find_kept_object): Remove.
7868 * object.cc (Sized_relobj::include_section_group): Update use of
7869 Kept_section. Rename secnum to shndx. Only record
7870 Kept_comdat_section if sections are the same size.
7871 (Sized_relobj::include_linkonce_section): Update use of
7872 Kept_section. Only record Kept_comdat_section if sections are the
7873 same size. Set size of linkonce section.
7874 (Sized_relobj::map_to_kept_section): Update call to
7875 get_kept_comdat_section.
7876 * object.h (class Sized_relobj): Rename fields in
7877 Kept_comdat_section to drop trailing underscores; change object
7878 field to Relobj*. Change Kept_comdat_section_table to store
7879 struct rather than pointer.
7880 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
7881 Add kept_object and kept_shndx parameters. Change all callers.
7882 (Sized_relobj::get_kept_comdat_section): Change return type to
7883 bool. Add kept_object and kept_shndx parameters. Change all
7884 callers.
7885 * plugin.cc (Pluginobj::include_comdat_group): Update call to
7886 Layout::find_or_add_kept_section.
7887
37c3b7b0
ILT
78882009-07-09 Ian Lance Taylor <iant@google.com>
7889
7890 * merge.cc (Object_merge_map::initialize_input_to_output_map):
7891 Reserve space in the hash table.
7892
98fa85cb
ILT
78932009-07-06 Mikolaj Zalewski <mikolajz@google.com>
7894
7895 * fileread.cc (File_read::get_mtime): New method.
7896 * fileread.h (Timespec): New structure.
7897 (File_read::get_mtime): New method.
7898 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
7899 Renamed from timestamp_nsec.
7900 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
7901 Elf_Xword.
e1df38aa 7902 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 7903 timestamp_nsec.
e1df38aa 7904 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
7905 (Incremental_inputs::report_obejct): Save mtime; style fix.
7906 (Incremental_inputs::report_script): Save mtime; style fix.
7907 (Incremental_inputs::finalize_inputs): Style fix.
7908 (Incremental_inputs::finalize): Style fix.
7909 (Incremental_inputs::create_input_section_data): Store inputs
7910 mtime.
7911 * incremental.h (Incremental_inputs::report_script): Add mtime
7912 argument.
7913 (Incremental_inputs::Input_info::Input_info): Intialize only one
7914 union member.
7915 (Incremental_inputs::Input_info::archive): Move to nameless
7916 union.
7917 (Incremental_inputs::Input_info::obejct): Move to nameless union.
7918 (Incremental_inputs::Input_info::script): Move to nameless union.
7919 (Incremental_inputs::mtime): New field.
7920 * script.cc (read_input_script): Pass file mtime to
7921 Incremental_input.
7922 * script.h (Script_info::inputs): Style fix.
7923
c9d70757
ILT
79242009-07-01 Ian Lance Taylor <ian@airs.com>
7925
7926 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
7927 instead of 32.
7928
9c547ec3
ILT
79292009-06-24 Ian Lance Taylor <iant@google.com>
7930
7931 PR 10156
7932 * layout.cc (Layout::choose_output_section): If we find an
7933 existing section, update the flags.
7934 (Layout::create_notes): New function, broken out of
7935 Layout::finalize.
7936 (Layout::finalize): Don't create note sections.
7937 (Layout::create_note): Don't crash if linker script discards
7938 section.
7939 (Layout::create_gold_note): Likewise.
7940 (Layout::create_build_id): Likewise. Don't set
7941 after_input_sections on the section.
7942 (Layout::create_executable_stack_info): Remove target parameter.
7943 Change caller.
7944 * layout.h (class Layout): Declare create_notes. Update
7945 declaration of create_executable_stack_info.
7946 * gold.cc (queue_middle_tasks): Call create_notes.
7947 * output.cc (Output_section::update_flags_for_input_section): Move
7948 here from output.h. If SHF_ALLOC flag is newly set, mark address
7949 invalid.
7950 * output.h (Output_data::mark_address_invalid): New function.
7951 (class Output_section): Only declare, not define,
7952 update_flags_for_input_section. Remove set_flags.
7953
55458500
ILT
79542009-06-24 Ian Lance Taylor <iant@google.com>
7955
7956 * script-sections.cc (Output_section_definition::
7957 set_section_addresses): Rename shadowing local load_address to
7958 laddr.
7959
1307d6cd
ILT
79602009-06-24 Ian Lance Taylor <iant@google.com>
7961
7962 PR 10244
7963 * reloc.cc (relocate_sections): Skip empty relocation sections.
7964
ec3f783e
ILT
79652009-06-23 Ian Lance Taylor <iant@google.com>
7966
7967 PR 10156
7968 * layout.cc (Layout::create_note): Use choose_output_section
7969 rather than make_output_section.
7970
459c9f1c
ILT
79712009-06-23 Ian Lance Taylor <iant@google.com>
7972
7973 PR 10237
7974 * options.cc (General_options::parse_V): Set printed_version_.
7975 (General_options::General_options): Initialize printed_version_.
7976 * options.h (class General_options): Add printed_version_ field.
7977 * gold.cc (queue_initial_tasks): If there are no input files,
7978 don't give a fatal error if we printed the version information.
7979 (queue_middle_tasks): If using -r with a shared object, give a
7980 fatal error rather than an ordinary error.
7981
1518dc8f
ILT
79822009-06-23 Ian Lance Taylor <iant@google.com>
7983
7984 PR 10219
7985 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
7986 (Layout::make_output_section): Set have_stabstr_section_ if we see
7987 a .stab*str section.
7988 (Layout::finalize): Call link_stabs_sections.
7989 (Layout::link_stabs_sections): New file.
7990 * layout.h (class Layout): Add have_stabstr_section_ field.
7991 Declare link_stabs_sections.
7992
3d857b98
DK
79932009-06-23 Doug Kwan <dougkwan@google.com>
7994
7995 * Makefile.am (libgold_a_LIBADD): New.
7996 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
7997 * Makefile.in: Regenerate.
7998 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
7999 * configure: Regenerate.
8000 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
8001 * fileread.cc: Include sys/state.h
8002 * gold.h: Declare memmem and strndup if found missing.
8003 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
8004
0639a6f6
ILT
80052009-06-23 Ian Lance Taylor <iant@google.com>
8006
8007 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
8008 * configure: Rebuild.
8009
8d63875c
ILT
80102009-06-23 Ian Lance Taylor <iant@google.com>
8011
8012 PR 10147
8013 * object.cc (Object::section_contents): Don't try to get a view if
8014 the section has length zero.
8015 (Object::handle_gnu_warning_section): If the section is empty, use
8016 the name of the section as the warning.
8017
f7c8a183
ILT
80182009-06-23 Ian Lance Taylor <iant@google.com>
8019
8020 PR 10133
8021 * stringpool.h (class Stringpool_template): Add optimize_ field.
8022 (Stringpool_template::set_optimize): New function.
8023 * stringpool.cc (Stringpool_template::Stringpool_template):
8024 Initialize optimize_ field.
8025 (Stringpool_template::set_string_offsets): Test local optimize
8026 fild rather than parameter.
8027 * layout.cc (Layout::Layout): Call set_optimize on the section
8028 name stringpool.
8029
e6a307ba
ILT
80302009-06-22 Ian Lance Taylor <iant@google.com>
8031
8032 PR 10030
8033 * yyscript.y: Parse TARGET.
8034 * script.cc (script_set_target): New function.
8035 * script-c.h (script_set_target): Declare.
8036 * options.cc (General_options::string_to_object_format): Rename
8037 from string_to_object_format in anonymous namespace. Change
8038 callers.
8039 * options.h (class General_options): Declare
8040 string_to_object_format.
8041
3ee173de
ILT
80422009-06-22 Ian Lance Taylor <iant@google.com>
8043
8044 * script-sections.cc (Script_sections::create_segments): Don't put
8045 program headers in a PT_LOAD segment if -n or -N.
8046
80472009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
8048
8049 PR 10141
8050 * options.h (class General_options): Add -z lazy and -z now. Sort
8051 -z options into alphabetical order.
8052 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
8053
cd6739a1 80542009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
8055
8056 * layout.cc (Layout::make_output_section): Call
8057 Target::new_output_section.
8058 (Layout::attach_allocated_section_to_segment): Put large section
8059 sections in a separate load segment with the large segment flag
8060 set.
8061 (Layout::segment_precedes): Sort large data segments after other
8062 load segments.
8063 (align_file_offset): New static function.
8064 (Layout::set_segment_offsets): Use align_file_offset.
8065 * output.h (class Output_section): Add is_small_section_ and
8066 is_large_section_ fields.
8067 (Output_section::is_small_section): New function.
8068 (Output_section::set_is_small_section): New function.
8069 (Output_section::is_large_section): New function.
8070 (Output_section::set_is_large_section): New function.
8071 (Output_section::is_large_data_section): New function.
8072 (class Output_segment): Add is_large_data_segment_ field.
8073 (Output_segment::is_large_data_segment): New function.
8074 (Output_segment::set_is_large_data_segment): New function.
8075 * output.cc (Output_section::Output_section): Initialize new
8076 fields.
8077 (Output_segment::Output_segment): Likewise.
8078 (Output_segment::add_output_section): Add assertion that large
8079 data sections always go in large data segments. Force small data
8080 sections to the end of the list of data sections. Force small BSS
8081 sections to the start of the list of BSS sections. For large BSS
8082 sections to the end of the list of BSS sections.
8083 * symtab.h (class Symbol): Declare is_common_shndx.
8084 (Symbol::is_defined): Check Symbol::is_common_shndx.
8085 (Symbol::is_common): Likewise.
8086 (class Symbol_table): Define enum Commons_section_type. Update
8087 declarations. Add small_commons_ and large_commons_ fields.
8088 * symtab.cc (Symbol::is_common_shndx): New function.
8089 (Symbol_table::Symbol_table): Initialize new fields.
8090 (Symbol_table::add_from_object): Put small and large common
8091 symbols in the right list.
8092 (Symbol_table::sized_finalized_symbol): Check
8093 Symbol::is_common_shndx.
8094 (Symbol_table::sized_write_globals): Likewise.
8095 * common.cc (Symbol_table::do_allocate_commons): Allocate new
8096 common symbol lists. Don't call do_allocate_commons_list if the
8097 list is empty.
8098 (Symbol_table::do_allocate_commons_list): Remove is_tls
8099 parameter. Add comons_section_type parameter. Change all
8100 callers. Handle small and large common symbols.
8101 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
8102 Symbol::is_common_shndx.
8103 * resolve.cc (symbol_to_bits): Likewise.
8104 * target.h (Target::small_common_shndx): New function.
8105 (Target::small_common_section_flags): New function.
8106 (Target::large_common_shndx): New function.
8107 (Target::large_common_section_flags): New function.
8108 (Target::new_output_section): New function.
8109 (Target::Target_info): Add small_common_shndx, large_common_shndx,
8110 small_common_section_flags, and large_common_section_flags
8111 fields.
8112 (Target::do_new_output_section): New virtual function.
8113 * arm.cc (Target_arm::arm_info): Initialize new fields.
8114 * i386.cc (Target_i386::i386_info): Likewise.
8115 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
8116 Likewise.
8117 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
8118 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
8119 (Target_x86_64::do_new_output_section): New function.
8120 * configure.ac: Define conditional MCMODEL_MEDIUM.
8121 * testsuite/Makefile.am (check_PROGRAMS): Add large.
8122 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
8123 (large_LDFLAGS): Define.
8124 * testsuite/large.c: New file.
8125 * testsuite/testfile.cc (Target_test::test_target_info):
8126 Initialize new fields.
8127 * configure, testsuite/Makefile.in: Rebuild.
8128
bb04269c
DK
81292009-06-05 Doug Kwan <dougkwan@google.com>
8130
8131 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 8132 * Makefile.in: Regenerate.
bb04269c
DK
8133 * i386.cc (class Target_i386): Define new virtual method to
8134 override do_is_local_label_name in parent.
8135 * object.cc (Sized_relobj::do_count_local_symbols): Discard
8136 local symbols if --discard-locals or -X is given.
8137 * options.h (class General_options): Declare new options
8138 '--discard-locals' and '-X' for discarding locals.
8139 * target.h (class Target): Define new methods is_local_label_name.
8140 Declare new virtual method do_is_local_label_name.
8141 * target.cc: New file.
8142 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
8143 (check_SCRIPTS): Add discard_locals_test.sh.
8144 (check_DATA): Add discard_local_tests.syms.
8145 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
8146 (discard_local_tests.syms, discard_locals_test.o): New make rules.
8147 * testsuite/Makefile.in: Regenerate.
8148 * testsuite/discard_locals_test.c: New file.
8149 * testsuite/discard_locals_test.sh: Same.
8150
805bb01c
DK
81512009-06-05 Doug Kwan <dougkwan@google.com>
8152
8153 * object.cc (Sized_relobj::Sized_relobj): Initialize
8154 discarded_eh_frame_shndx_ to -1U.
8155 (Sized_relobj::do_layout): Record index of a discard .eh_frame
8156 section.
8157 (Sized_relobj::do_count_local_symbols): Skip local symbols in
8158 a discarded .eh_frame section.
8159 (Sized_relobj::do_finalize_local_symbols): Ditto.
8160 * object.h (class Sized_relobj): Declare new member
8161 discarded_eh_frame_shndx_.
8162 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
8163 (local_labels_test.o, local_labels_test): New rules.
8164 * testsuite/Makefile.in: Regenerate.
8165
1dcd334d
DK
81662009-06-04 Doug Kwan <dougkwan@google.com>
8167
8168 * layout.cc (Layout::section_name_mapping): Add mapping for
8169 special ARM sections.
8170
96d49306
DK
81712009-06-03 Doug Kwan <dougkwan@google.com>
8172
8173 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
8174 (utils::has_overflow): Same.
8175
dff16297
ILT
81762009-06-03 Ian Lance Taylor <iant@google.com>
8177
8178 * layout.cc (Layout::section_name_mapping): New array, replacing
8179 Layout::linkonce_mapping.
8180 (Layout::section_name_mapping_count): New variable, replacing
8181 Layout::linkonce_mapping_count.
8182 (Layout::linkonce_output_name): Remove.
8183 (Layout::output_section_name): Rewrite.
8184 * layout.h (class Layout): Rename Linkonce_mapping to
8185 Section_name_mapping, linkonce_mapping to section_name_mapping,
8186 linkonce_mapping_count to section_name_mapping_count. Don't
8187 declare linkonce_output_name.
8188
c121c671
DK
81892009-06-03 Doug Kwan <dougkwan@google.com>
8190
8191 * gold/arm.cc (namespace utils): New.
8192 (Target_arm::reloc_is_non_pic): Define new method.
8193 (class Arm_relocate_functions): New.
8194 (Target_arm::Relocate::relocate): Handle relocation types used by
8195 Android.
8196
07800fab
ILT
81972009-06-03 Ian Lance Taylor <iant@google.com>
8198
8199 * arm.cc (Target_arm::scan::global): Use || instead of |.
8200
c121c671
DK
82012009-06-02 Doug Kwan <dougkwan@google.com>
8202
8203 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
8204 issued_non_pic_error_.
8205 (class Target_arm::Scan): Declare new method check_non_pic.
8206 Define new method symbol_needs_plt_entry.
8207 Declare new data member issued_non_pic_error_.
8208 (class Target_arm::Relocate): Declare new method
8209 should_apply_static_reloc.
8210 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
8211 (Target_arm::Scan::check_non_pic): Define new method.
8212 (Target_arm::Scan::local): Handle a small subset of reloc types used
8213 by Android.
8214 (Target_arm::Scan::local): Same.
8215 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
8216
b19b0c6d
ILT
82172009-05-31 Mikolaj Zalewski <mikolajz@google.com>
8218
8219 * incremental.cc (Incremental_inputs::report_command_line): Filter
8220 out --incremental-* options.
8221
94cdfcff
DK
82222009-05-29 Doug Kwan <dougkwan@google.com>
8223
8224 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
8225 template class.
8226 (class Target_arm): Update comment.
8227 (Target_arm::Target_arm): Initialize new data members GOT_,
8228 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
8229 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
8230 and Target_arm::rel_dyn_section.
8231 Declare new_enum Target_arm::Got_type.
8232 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
8233 and DYNBSS_.
8234 Update commments for member do_dynsym_value.
8235 (Target_arm::got_size, Target_arm::plt_section,
8236 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
8237 new methods inside class defintion.
8238 (Target_arm::got_section): Define new method.
8239 (Target_arm::rel_dyn_section): Same.
8240 (Output_data_plt_arm): New template class.
8241 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
8242 (Output_data_plt_arm:do_adjust_output_section): Define new method.
8243 (Output_data_plt_arm::add_entry): Same.
8244 (Output_data_plt_arm::first_plt_entry): Define new
8245 static data member for PLT instruction template.
8246 (Output_data_plt_arm::plt_entry): Same.
8247 (Output_data_plt_arm::do_write): Define new method.
8248 (Target_arm::make_plt_entry): Same.
8249 (Target_arm::do_finalize_sections): Same.
8250 (Target_arm::do_dynsym_value): Same.
8251
4a657b0d
DK
82522009-05-28 Doug Kwan <dougkwan@google.com>
8253
8254 * Makefile.am (TARGETSOURCES): Add arm.cc.
8255 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
8256 * Makefile.in: Regenerate.
8257 * arm.cc: New file.
8258 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
8259
e7ae8c36
DK
82602009-05-26 Doug Kwan <dougkwan@google.com>
8261
8262 * options.cc (General_options::parse_exclude_libs). Fix a comment.
8263 (General_options::check_excluded_libs): Strip off directories in
8264 archive name before matching like GNU ld does.
8265 * testsuite/Makefile.am (MOSTLYCLEANFILES,
8266 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
8267 (exclude_libs_test_LDFLAGS): Add linker option
8268 -Wl,--exclude-libs,libexclude_libs_test_3
8269 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
8270 an explicit archive without using -l.
8271 (alt/libexclude_libs_test_3.a): New make rule.
8272 * testsuite/Makefile.in: Regenerate.
8273 * testsuite/exclude_libs_test.c : Declare lib3_default().
8274 (main): Call it.
8275 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
8276 * exclude_libs_test_3.c: New file.
8277
f12e7348
NC
82782009-05-26 Nick Clifton <nickc@redhat.com>
8279
8280 * po/id.po: New Indonesian translation.
8281 * po/gold.pot: Updated template file.
8282
4daadc0d
ST
82832009-05-22 Sriraman Tallam <tmsriram@google.com>
8284
e1df38aa 8285 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
8286 gc_comdat_test files. Add -Wl,--gc-sections to build
8287 gc_comdat_test.
8288 * testsuite/Makefile.in: Regenerate.
8289 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
8290
531813ad
ST
82912009-05-21 Sriraman Tallam <tmsriram@google.com>
8292
8293 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
8294 kept comdat section was garbage collected.
8295 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
8296 * testsuite/Makefile.in: Regenerate.
8297 * testsuite/gc_comdat_test.sh: New file.
8298 * testsuite/gc_comdat_test_1.cc: New file.
8299 * testsuite/gc_comdat_test_2.cc: New file.
8300
65514900
CC
83012009-05-19 Doug Kwan <dougkwan@google.com>
8302
8303 * archive.cc (Archive::Archive): Move constructor from archive.h
8304 to here. Initialize no_export_.
8305 (Archive::get_elf_object_for_member): Set no_export flag of object.
8306 * archive.h (Archive::Archive): Move constructor body to
8307 archive.cc.
8308 (Archive::no_export): New method.
8309 (Archive::no_export_): New field.
8310 * object.h (Object::Object): Initialize no_export_ to false.
8311 (Object::no_export, Object::set_no_export): New methods.
8312 (Object::no_export_): New field.
8313 * options.cc (General_options::parse_exclude_libs): New method.
8314 (General_options::check_excluded_libs) Same.
8315 * options.h (exclude_libs): New option.
8316 (General_options::check_excluded_libs): New method declaration.
8317 (General_options::excluded_libs_): New field.
8318 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
8319 default or protected visibility if an object has no-export flag set.
8320 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
8321 (check_SCRIPTS): Add exclude_libs_test.sh.
8322 (check_DATA): Add exclude_libs_test.syms.
8323 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
8324 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
8325 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
8326 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
8327 (exclude_libs_test.syms, libexclude_libs_test_1.a,
8328 libexclude_libs_test_2.a): New rules.
8329 * testsuite/Makefile.in: Regenerate.
8330 * testsuite/exclude_libs_test.c: New file.
8331 * testsuite/exclude_libs_test.sh: Ditto.
8332 * testsuite/exclude_libs_test_1.c: Ditto.
8333 * testsuite/exclude_libs_test_2.c: Ditto.
8334
1b77ea50
ILT
83352009-05-15 Ian Lance Taylor <iant@google.com>
8336
8337 * configure.ac: Check for declarations for cases where libiberty.h
8338 checks HAVE_DECL_xxx.
8339 * configure, config.in: Rebuild.
8340
072fe7ce
ILT
83412009-05-15 Mikolaj Zalewski <mikolajz@google.com>
8342
8343 * gold.h (Incremental_argument_list): Remove (invalid) forward
8344 declaration.
8345 * incremental.cc (Incremental_inputs::report_achive): New method.
8346 (Incremental_inputs::report_object): New method.
8347 (Incremental_inputs::report_script): New method.
8348 (Incremental_inputs::finalize_inputs): New method.
8349 (Incremental_inputs::finalize): Call finalize_inputs().
8350 (Incremental_inputs::sized_create_incremental_inputs_section_data):
8351 Create inputs entries.
8352 * incremental.h (Incremental_input_type): New enum.
8353 (Incremental_inputs::Incremental_input): Initialize new fields.
8354 (Incremental_inputs::report_inputs): New method.
8355 (Incremental_inputs::report_achive): New method.
8356 (Incremental_inputs::report_object): New method.
8357 (Incremental_inputs::report_script): New method.
8358 (Incremental_inputs::finalize_inputs): New method.
8359 (Incremental_inputs::Input_info): New struct.
8360 (Incremental_inputs::Input_info_map): New typedef.
8361 (Incremental_inputs::lock_): New field.
8362 (Incremental_inputs::Inputs_): New field.
8363 (Incremental_inputs::Inputs_map): New field.
8364 * main.cc (main): Call Incremental_input::report_inputs.
8365 * options.h (Input_argument_list): Typedef moved from
8366 Input_arguments.
8367 (Input_file_group::Files): Remove, use ::Input_argument_list.
8368 (Input_file_group::Input_argument_list): Remove, use
8369 ::Input_argument_list.
8370 * plugin.cc (Plugin_manager::add_input_file): Add error in
8371 incremental build.
8372 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
8373 functions.
8374 * script.cc (read_input_script): Call
8375 Incremental_input::report_script.
8376 * script.h (Script_info): New class.
8377
b0481b0b
ILT
83782009-04-27 Ian Lance Taylor <iant@google.com>
8379
8380 * x86_64.cc (do_adjust_output_section): Set entsize to
8381 plt_entry_size.
8382
b22a5a41 83832009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
8384
8385 * output.cc (Output_file::close): After short writes, continue
8386 writing from the correct offset in the buffer being written.
8387
40fde488
CD
83882009-04-23 Chris Demetriou <cgd@google.com>
8389
8390 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
8391 * configure: Regenerate.
8392 * config.in: Regenerate.
8393 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
8394 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
8395
3ce2c28e
ILT
83962009-04-21 Mikolaj Zalewski <mikolajz@google.com>
8397
8398 * incremental.cc (Incremental_inputs_header_data): Renamed from
8399 Incremental_input_header_data.
8400 (Incremental_inputs_header_data::data_size): New field.
8401 (Incremental_inputs_header_data::put_input_file_count): Renamed
8402 from input_file_count.
8403 (Incremental_inputs_header_data::put_command_line_offset): Renamed
8404 from command_line_offset.
8405 (Incremental_inputs_header_data::put_reserved): Renamed from
8406 put_reserved.
8407 (Incremental_inputs_entry_data): Renamed from
8408 Incremental_input_entry_data.
8409 (Incremental_inputs_entry_data::data_size): New field.
8410 (Incremental_inputs::report_command_line): New method.
8411 (Incremental_inputs::finalize): New method.
8412 (Incremental_inputs::create_incremental_inputs_data): New method.
8413 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
8414 * incremental.h: New file.
8415 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
8416 (Layout::finalize): Create incremental inputs section in
8417 incremental builds.
8418 (Layout::create_incremental_info_sections): New method.
8419 * layout.h (Layout::incremental_inputs): New method.
8420 (Layout::create_incremental_info_sections): New method.
8421 (Layout::incremental_inputs_): New field.
8422 * main.cc (main): Notify Incremental_input of the command line.
8423
e55bde5e
ILT
84242009-04-01 Ian Lance Taylor <iant@google.com>
8425 Mikolaj Zalewski <mikolajz@google.com>
8426
8427 * gold.h (reserve_unordered_map): Define, three versions, one for
8428 each version of Unordered_map.
8429 * layout.cc (Layout::Layout): Remove options parameter. Add
8430 number_of_input_files parameter. Don't initialize options_.
8431 Initialize number_of_input_files_ and resized_signatures_. Move
8432 sections_are_attached_.
8433 (Layout::layout_group): Reserve space for group_signatures_.
8434 (Layout::find_or_add_kept_section): Change name parameter to be a
8435 reference. Resize signatures_ map when it gets large enough.
8436 (Layout::layout_eh_frame): Use parameters->options() instead of
8437 this->options_.
8438 (Layout::make_output_section): Likewise.
8439 (Layout::attach_allocated_section_to_segment): Likewise.
8440 (Layout::finalize, Layout::create_executable_stack): Likewise.
8441 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
8442 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
8443 * layout.h (class Layout): Update declarations. Remove options_
8444 field. Add number_of_input_files_ and resized_signatures_
8445 fields. Move sections_are_attached_ field.
8446 * main.cc (main): Pass number of input files to Layout
8447 constructor. Don't pass options.
8448
154b857c
ILT
84492009-03-30 Ian Lance Taylor <iant@google.com>
8450
8451 * ffsll.c (ffsll): Correct implementation.
8452
2f35ab9b
ILT
84532009-03-27 Ian Lance Taylor <iant@google.com>
8454
fd03461a
ILT
8455 * ffsll.c: New file.
8456 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
8457 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
8458 * ftruncate.c (ftruncate): Declare before definition.
8459 * mremap.c (mremap): Likewise.
8460 * pread.c (pread): Likewise.
8461 * configure, Makefile.in, config.in: Rebuild.
8462
2f35ab9b
ILT
8463 * mremap.c: New file.
8464 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
8465 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
8466 (mremap): Declare if HAVE_MREMAP is not defined.
8467 * configure, Makefile.in, config.in: Rebuild.
8468
33aea2fd
CC
84692009-03-27 Cary Coutant <ccoutant@google.com>
8470
8471 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
8472 position independent.
8473 * sparc.cc (Target_sparc::check_non_pic): Likewise.
8474 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
8475
6d479619
CC
84762009-03-24 Cary Coutant <ccoutant@google.com>
8477
8478 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
8479 an executable.
8480 (needs_dynamic_reloc): Likewise.
8481
afc06bb8
ILT
84822009-03-24 Ian Lance Taylor <iant@google.com>
8483
8484 * yyscript.y (file_cmd): Recognize EXTERN.
8485 (extern_name_list, extern_name_list_body): New nonterminals.
8486 * script.cc (script_add_extern): Define.
8487 * script-c.h (script_add_extern): Declare.
8488
f6060a4d
ILT
84892009-03-24 Rafael Avila de Espindola <espindola@google.com>
8490
8491 * object.cc (is_elf_object): Define.
8492 * object.h (is_elf_object): Declare.
8493 * archive.cc (Archive::get_elf_object_for_member): Call
8494 is_elf_object.
33aea2fd 8495 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 8496
26736d8e
ILT
84972009-03-24 Elliott Hughes <enh@google.com>
8498
8499 * output.cc (Output_file::map_anonymous): Define.
8500 (Output_file::map): Use map_anonymous. If the regular mmap fails,
8501 try an anonymous one. Report the size if the mmap fails.
8502 * output.h (class Output_file): Declare map_anonymous.
8503
22fd9730
ILT
85042009-03-24 Ian Lance Taylor <iant@google.com>
8505
8506 * target-select.cc (instantiate_target): Don't acquire the lock if
8507 the instantiated_target_ field has already been set.
8508
cb010894
ILT
85092009-03-23 Ian Lance Taylor <iant@google.com>
8510
7f055c20
ILT
8511 * gold-threads.h (class Initialize_lock): Define.
8512 * gold-threads.cc (class Initialize_lock_once): Define.
8513 (initialize_lock_control): New static variable.
8514 (initialize_lock_pointer): New static variable.
8515 (initialize_lock_once): New static function.
8516 (Initialize_lock::Initialize_lock): Define.
8517 (Initialize_lock::initialize): Define.
8518 * target-select.h: Include "gold-threads.h".
8519 (class Target_selector): Add lock_ and initialize_lock_ fields.
8520 Don't define instantiate_target, just declare it.
8521 * target-select.cc (Target_selector::Target_selector): Initialize
8522 new fields.
8523 (Target_selector::instantiate_target): Define.
8524 * descriptors.h: Include "gold-threads.h".
8525 (class Descriptors): Add initialize_lock_ field.
8526 * descriptors.cc (Descriptors::Descriptors): Initialize new
8527 field.
8528 (Descriptors::open): Use initialize_lock_ field
8529 * errors.h (class Errors): Add initialize_lock_ field.
8530 * errors.cc (Errors::Errors): Initialize new field.
8531 (Errors::initialize_lock): Use initialize_lock_ field.
8532 * powerpc.cc (class Target_selector_powerpc): Remove
8533 instantiated_target_ field. In do_recognize call
8534 instantiate_target rather than do_instantiate_target. In
8535 do_instantiate_target just allocate a new target.
8536 * sparc.cc (class Target_selector_sparc): Likewise.
8537
36959681
ILT
8538 * freebsd.h: New file.
8539 * i386.cc: Include "freebsd.h".
8540 (Target_i386): Derive from Target_freebsd rather than
8541 Sized_target.
8542 (Target_selector_i386): Derive from Target_selector_freebsd rather
8543 than Target_selector.
8544 * x86_64.cc: Include "freebsd.h".
8545 (Target_x86_64): Derive from Target_freebsd rather than
8546 Sized_target.
8547 (Target_selector_x86_64): Derive from Target_selector_freebsd
8548 rather than Target_selector.
8549 * target.h (class Target): Add adjust_elf_header and
8550 do_adjust_elf_header.
8551 * output.cc (Output_file_header:: do_sized_write): Call target
8552 adjust_elf_header routine.
8553 * configure.tgt: Set targ_osabi.
8554 * configure.ac: Define GOLD_DEFAULT_OSABI.
8555 * parameters.cc (Parameters::default_target): Pass
8556 GOLD_DEFAULT_OSABI to select_target.
8557 * target-select.h (class Target_selector): Make instantiate_target
8558 protected rather than private.
8559 * Makefile.am (HFILES): Add freebsd.h.
8560 * configure, Makefile.in, config.in: Rebuild.
8561
cb010894
ILT
8562 * merge.cc (do_add_input_section): Correct pend value. Change
8563 message about last entry not being null terminated from error to
8564 warning.
8565
0e879927
ILT
85662009-03-20 Mikolaj Zalewski <mikolajz@google.com>
8567
8568 * incremental.cc: New file.
8569 * Makefile.am (CCFILES): Add incremental.cc.
8570 * Makefile.in: Rebuild.
8571
41105937
PP
85722009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
8573
8574 * layout.cc (Layout::output_section_name): Preserve names
8575 of '.note.' sections.
e1df38aa 8576
60439920
ILT
85772009-03-19 Ian Lance Taylor <iant@google.com>
8578
8579 * descriptors.cc (Descriptors::open): Check that the options are
8580 valid before using them.
8581
0d371ad3
ILT
85822009-03-18 Ian Lance Taylor <iant@google.com>
8583
8584 * script-sections.h: Include <list>.
8585 (class Script_sections): Change Sections_elements from std::vector
8586 to std::list. Typedef public Elements_iterator. Add
8587 orphan_section_placement_, data_segment_align_start_, and
8588 saw_data_segment_align_ fields. Remove data_segment_align_index_
8589 field.
8590 * script-sections.cc (class Orphan_section_placement): New class.
8591 (class Sections_element): Add virtual functions is_relro and
8592 orphan_section_init. Remove virtual function place_orphan_here.
8593 (class Output_section_definition): Add is_relro and
8594 orphan_section_init. Remove place_orphan_here.
8595 (class Orphan_output_section): Likewise.
8596 (Script_sections::Script_sections): Update for field changes.
8597 (Script_sections::data_segment_align): Set saw_data_segment_align_
8598 and data_segment_align_start_, not data_segment_align_index.
8599 (Script_sections::data_segment_relro_end): Check
8600 saw_data_segment_align_. Use data_segment_align_start_ rather
8601 than data_segment_align_index_.
8602 (Script_sections::place_orphan): Rewrite to use
8603 Orphan_section_placement.
8604
9201d894
ILT
86052009-03-17 Ian Lance Taylor <iant@google.com>
8606
9c5b8369
ILT
8607 * archive.cc (Archive::add_symbols): Check for a version attached
8608 to the symbol name in the archive map.
8609 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
8610 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
8611 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
8612 (ver_test_11.a): New target.
8613 * testsuite/Makefile.in: Rebuild.
8614
9201d894
ILT
8615 * configure.ac: Check for chsize and posix_fallocate. Replace
8616 ftruncate.
8617 * ftruncate.c: New file, from gnulib.
8618 * output.cc (posix_fallocate): Define dummy version if not
8619 HAVE_POSIX_FALLOCATE.
8620 (Output_file::map): Call posix_fallocate rather than lseek and
8621 write.
8622 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
8623 * configure, Makefile.in, config.in: Rebuild.
8624
ef4ab7a8 86252009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 8626
ef4ab7a8
PP
8627 * layout.h (Layout::create_note): Add section_name parameter.
8628 * layout.cc (Layout::create_note): Likewise.
8629 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 8630
8c500701
ILT
86312009-03-17 Ian Lance Taylor <iant@google.com>
8632
e85b18e1
ILT
8633 * descriptors.cc: Include "options.h".
8634 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
8635 (Descriptors::open): Always use O_CLOEXEC when opening a new
8636 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
8637 then set FD_CLOEXEC.
8638
9efe6174
ILT
8639 * sparc.cc (class Target_sparc): Add has_got_section.
8640 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
8641 make sure we have a GOT section.
8642
8643 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
8644 (Target_sparc::Scan::local): Likewise.
8645 (Target_sparc::Scan::global): Likewise.
8646 (Target_sparc::Relocate::relocate): Likewise.
8647 (Target_sparc::Relocate::relocate_tls): Likewise.
8648
8c500701
ILT
8649 * symtab.cc (Symbol_table::define_default_version): New function,
8650 broken out of add_from_object.
8651 (Symbol_table::add_from_object): Call define_default_version.
8652 (Symbol_table::define_special_symbol): Add resolve_oldsym
8653 parameter. Change all callers. If the version for a symbol comes
8654 from a version script, resolve it with the symbol with the same
8655 name with no version. Also add the symbol without a version if
8656 appropriate.
8657 (do_define_in_output_data): If resolving with oldsym, don't delete
8658 sym.
8659 (do_define_in_output_segment): Likewise.
8660 (do_define_as_constant): Likewise.
8661 * symtab.h (class Symbol_table): Update declarations.
8662
f1ed28fb
ILT
86632009-03-13 Ian Lance Taylor <iant@google.com>
8664
15f8229b
ILT
8665 * readsyms.cc (Read_symbols::incompatible_warning): New function.
8666 (Read_symbols::requeue): New function.
8667 (Read_symbols::do_read_symbols): If make_elf_object fails because
8668 the target type is not configured, and the file was searched for,
8669 issue a warning and retry with the next directory.
8670 (Add_symbols::run): If the file has an incompatible format, and
8671 it was searched for, requeue the Read_symbols task. On error,
8672 release the object.
8673 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
8674 dirindex parameter to constructor. Change all callers. Declare
8675 incompatible_warning and requeue.
8676 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
8677 input_argument_ and input_group_ fields. Add them to
8678 constructor. Change all callers.
8679 (class Read_script): Add dirindex_ field. Add it to constructor.
8680 Change all callers.
8681 * archive.cc (Archive::setup): Remove input_objects parameter.
8682 Change all callers.
8683 (Archive::get_file_and_offset): Likewise.
8684 (Archive::read_all_symbols): Likewise.
8685 (Archive::read_symbols): Likewise.
8686 (Archive::get_elf_object_for_member): Remove input_objects
8687 parameter. Add punconfigured parameter. Change all callers.
8688 (Archive::add_symbols): Change return type to bool. Check return
8689 value of include_member.
8690 (Archive::include_all_members): Likewise.
8691 (Archive::include_member): Change return type to bool. Return
8692 false if first included object has incompatible target. Set
8693 included_member_ field.
8694 (Add_archive_symbols::run): If add_symbols returns false, requeue
8695 Read_symbols task.
8696 * archive.h (class Archive): Add included_member_ field.
8697 Initialize it in constructor. Add input_file and searched_for
8698 methods. Update declarations.
8699 (class Add_archive_symbols): Add dirpath_, dirindex_, and
8700 input_argument_ fields. Add them to constructor. Change all
8701 callers.
8702 * script.cc: Include "target-select.h".
8703 (class Parser_closure): Add skip_on_incompatible_target_ and
8704 found_incompatible_target_ fields. Add
8705 skip_on_incompatible_target parameter to constructor. Change all
8706 callers. Add methods skip_on_incompatible_target,
8707 clear_skip_on_incompatible_target, found_incompatible_target, and
8708 set_found_incompatible_target.
8709 (read_input_script): Add dirindex parameter. Change all callers.
8710 If parser finds an incompatible target, requeue Read_symbols
8711 task.
8712 (script_set_symbol): Clear skip_on_incompatible_target in
8713 closure.
8714 (script_add_assertion, script_parse_option): Likewise.
8715 (script_start_sections, script_add_phdr): Likewise.
8716 (script_check_output_format): New function.
8717 * script.h (read_input_script): Update declaration.
8718 * script-c.h (script_check_output_format): Declare.
8719 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
8720 (ignore_cmd): Remove OUTPUT_FORMAT.
8721 * fileread.cc (Input_file::Input_file): Add explicit this.
8722 (Input_file::will_search_for): New function.
8723 (Input_file::open): Add pindex parameter. Change all callers.
8724 * fileread.h (class Input_file): Add input_file_argument method.
8725 Declare will_search_for. Update declarations.
8726 * object.cc (make_elf_object): Add punconfigured parameter.
8727 Change all callers.
8728 * object.h (class Object): Make input_file public. Add
8729 searched_for method.
8730 (make_elf_object): Update declaration.
8731 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
8732 restart search.
8733 * dirsearch.h (class Dirsearch): Update declaration.
8734 * options.h (class General_options): Add --warn-search-mismatch.
8735 * parameters.cc (Parameters::is_compatible_target): New function.
8736 * parameters.h (class Parameters): Declare is_compatible_target.
8737 * workqueue.cc (Workqueue::add_blocker): New function.
8738 * workqueue.h (class Workqueue): Declare add_blocker.
8739
f1ed28fb
ILT
8740 * fileread.cc (Input_file::open): Remove options parameter.
8741 Change all callers.
8742 (Input_file::open_binary): Likewise.
8743 * script.cc (read_input_script): Likewise.
8744 * readsyms.h (class Read_symbols): Remove options_ field. Remove
8745 options parameter from constructor. Change all callers.
8746 (class Read_script): Likewise.
8747 * fileread.h (class Input_file): Update declarations.
8748 * script.h (read_input_script): Update declaration.
8749
34dd024a
NC
87502009-03-10 Nick Clifton <nickc@redhat.com>
8751
8752 * po/es.po: New Spanish translation.
8753
6d71b17c
CC
87542009-03-06 Cary Coutant <ccoutant@google.com>
8755
8756 * options.cc (parse_short_option): Keep dash_z from registering itself.
8757
031cdbed
ILT
87582009-03-03 Ian Lance Taylor <iant@google.com>
8759
8760 PR 9918
8761 * target-reloc.h (relocate_section): Pass output_section to
8762 relocate.
8763 * i386.cc (Target_i386::should_apply_static_reloc): Add
8764 output_section parameter. Change all callers.
8765 (Target_i386::Relocate::relocate): Add output_section parameter.
8766 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
8767 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
8768 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
8769 * testsuite/two_file_shared.sh: New script.
8770 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
8771 (check_DATA): Add two_file_shared.dbg.
8772 (two_file_shared.dbg): New target.
8773 * testsuite/Makefile.in: Rebuild.
8774
15d5fa16
ILT
87752009-03-01 Ian Lance Taylor <iant@google.com>
8776
8777 * configure.ac: Check for byteswap.h.
8778 * configure: Rebuild.
8779 * config.in: Rebuild.
8780
8a4c0b0d
ILT
87812009-03-01 Mikolaj Zalewski <mikolajz@google.com>
8782
8783 * layout.cc (Layout::find_or_add_kept_section): New function.
8784 (Layout::add_comdat): Removed.
8785 * layout.h (struct Kept_section): Move out of class Layout.
8786 Remove trailing underscores from field names. Add group_sections
8787 field. Rename group_ field to is_group. Change all uses.
8788 (class Layout): Declare find_or_add_kept_section, not add_comdat.
8789 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
8790 comdat_groups_ field.
8791 (Sized_relobj::include_section_group): Use
8792 find_or_add_kept_section and Kept_section::group_sections.
8793 (Sized_relobj::include_linkonce_section): Likewise.
8794 * object.cc (class Sized_relobj): Don't define Comdat_group or
8795 Comdat_group_table. Remove find_comdat_group and
8796 add_comdat_group. Remove comdat_groups_ field.
8797 * plugin.cc (include_comdat_group): Use
8798 Layout::find_or_add_kept_section.
8799
b4ecf66b
ILT
88002009-02-28 Ian Lance Taylor <iant@google.com>
8801
14359ca0
ILT
8802 * README: --gc-sections and map files are now supported. Document
8803 some build requirements.
8804
b4ecf66b
ILT
8805 PR 6992
8806 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
8807 relocatable link set the value of the section symbol to zero.
8808 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
8809 relocatable link don't include the section address in the local
8810 symbol value.
8811
0602e05a
ILT
88122009-02-27 Ian Lance Taylor <iant@google.com>
8813
fd9d194f
ILT
8814 PR 6811
8815 * options.h (class Search_directory): Add is_system_directory.
8816 (class General_options): Declare is_in_system_directory.
8817 * options.cc (get_relative_sysroot): Make static.
8818 (get_default_sysroot): Make static.
8819 (General_optoins::is_in_system_directory): New function.
8820 * fileread.cc (Input_file::is_in_system_directory): New function.
8821 * fileread.h (class Input_file): Declare is_in_system_directory.
8822 * object.h (class Object): Add is_in_system_directory.
8823 (class Input_objects): Remove system_library_directory_ field.
8824 * object.cc (Input_objects::add_object): Don't set
8825 system_library_directory_.
8826 (input_objects::found_in_system_library_directory): Remove.
8827 * symtab.cc (Symbol_table::write_globals): Remove input_objects
8828 parameter. Change all callers.
8829 (Symbol_table::sized_write_globals): Likewise.
8830 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
8831 Call Object::is_in_system_directory.
8832 * symtab.h (class Symbol_table): Update declarations.
8833
61edd21f
ILT
8834 PR 5990
8835 * descriptors.h (Open_descriptor): Add is_on_stack field.
8836 * descriptors.cc (Descriptors::open): If the descriptor is on the
8837 top of the stack, remove it. Initialize is_on_stack field.
8838 (Descriptors::release): Only add pod to stack if it is not on the
8839 stack already.
8840 (Descriptors::close_some_descriptor): Clear stack_next and
8841 is_on_stack fields.
8842
e29e076a
ILT
8843 PR 7091
8844 * output.cc (Output_section::find_starting_output_address): Rename
8845 from starting_output_address; add PADDR parameter; change return
8846 type.
8847 * output.h (class Output_section): Declare
8848 find_starting_output_address instead of starting_output_address.
8849 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
8850 section symbol for which we can't find a merge section.
8851
0602e05a
ILT
8852 PR 9836
8853 * symtab.cc (Symbol_table::add_from_object): If the visibility is
8854 hidden or internal, force the symbol to be local.
8855 * resolve.cc (Symbol::override_visibility): Define.
8856 (Symbol::override_base): Use override_visibility.
8857 (Symbol_table::resolve): Likewise.
8858 (Symbol::override_base_with_special): Likewise.
8859 (Symbol_table::override_with_special): If the visibility is hidden
8860 or internal, force the symbol to be local.
8861 * symtab.h (class Symbol): Add set_visibility and
8862 override_visibility.
8863 * testsuite/ver_test_1.sh: New file.
8864 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
8865 (check_DATA): Add ver_test_1.syms.
8866 (ver_test_1.syms): New target.
8867 * testsuite/Makefile.in: Rebuild.
8868
401a9a73
CC
88692009-02-25 Cary Coutant <ccoutant@google.com>
8870
8871 * layout.cc (Layout::choose_output_section): Don't rename sections
8872 when using a linker script that has a SECTIONS clause.
8873 * Makefile.in: Regenerate.
8874
8875 * testsuite/Makefile.am (script_test_5.sh): New test case.
8876 * testsuite/Makefile.in: Regenerate.
8877 * testsuite/script_test_5.cc: New file.
8878 * testsuite/script_test_5.sh: New file.
8879 * testsuite/script_test_5.t: New file.
8880
f488e4b0
CC
88812009-02-13 Rafael Avila de Espindola <espindola@google.com>
8882
8883 * archive.cc (Archive::include_member): Update calls to add_symbols.
8884 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
8885 the Layout argument.
8886 * dynobj.h (do_add_symbols): Add the Layout argument.
8887 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
8888 Layout argument.
8889 * object.h (Object::add_symbols): Add the Layout argument.
8890 (Object::do_add_symbols): Add the Layout argument.
8891 (Sized_relobj::do_add_symbols): Add the Layout argument.
8892 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
8893 Unify the two versions.
8894 (Add_plugin_symbols): Remove.
8895 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
8896 (Sized_pluginobj::do_add_symbols): Unify the two versions.
8897 (Add_plugin_symbols): Remove.
8898 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
8899 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
8900 (Add_symbols::run): Make it work with Pulginobj.
8901
89dd1680
ILT
89022009-02-06 Ian Lance Taylor <iant@google.com>
8903
8904 * object.cc (Sized_relobj::do_layout): Make info message start
8905 with lower case letter.
8906
266d0a74
ILT
89072009-02-06 Mikolaj Zalewski <mikolajz@google.com>
8908
602b464e
ILT
8909 * binary.cc: Fix file comment.
8910
266d0a74
ILT
8911 * options.h (enum Incremental_disposition): Define.
8912 (class General_options): Add new options: --incremental,
8913 --incremental_changed, --incremental_unchanged,
8914 --incremental_unknown. Add incremental_disposition_ and
8915 implicit_incremental_ fields.
8916 (General_options::incremental_disposition): New function.
8917 (class Position_dependent_options): Add incremental_disposition
8918 option.
8919 (Position_dependent_options::copy_from_options): Set incremental
8920 dispositions.
8921 * options.cc (General_options::parse_incremental_changed): New
8922 function.
8923 (General_options::parse_incremental_unchanged): New function.
8924 (General_options::parse_incremental_unknown): New function.
8925 (General_options::General_options): Initialize new fields
8926 incremental_disposition_ and implicit_incremental_.
8927 (General_options::finalize): Check for uasge of --incremental-*
8928 without --incremental.
8929
f073bbf7
CD
89302009-02-06 Chris Demetriou <cgd@google.com>
8931
8932 * gold.h (gold_undefined_symbol): Change to take only a Symbol
8933 pointer and to report location as the file name associated with
8934 the symbol.
8935 (gold_undefined_symbol_at_location): New function to replace the
8936 old gold_undefined_symbol functionality.
8937 * target-reloc.h (relocate_section): Update to use
8938 gold_undefined_symbol_at_location.
8939 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
8940 Call gold_undefined_symbol function rather than gold_error.
8941 * errors.h (Errors::undefined_symbol): Take location as a
8942 string, rather than calculating it from a relocation.
8943 * errors.cc (Errors::fatal): Print "fatal error:" before the
8944 formatted message.
8945 (Errors::error, Errors::error_at_location): Print "error: "
8946 before the formatted message.
8947 (Errors::undefined_symbol): Take location as a string, rather
8948 than calculating it from a relocation.
8949 (gold_undefined_symbol_at_location): New function akin to
8950 old gold_undefined_symbol, calculates location from relocation.
8951 (gold_undefined_symbol): Change to take only a Symbol pointer
8952 and to report location as the file name associated with the symbol.
8953 * testsuite/debug_msg.sh: Update for changed error messages.
8954 * testsuite/undef_symbol.sh: Likewise.
8955
8e94a90c
ILT
89562009-02-04 Duncan Sands <baldrick@free.fr>
8957
8958 PR 9812
8959 * reduced_debug_output.h
8960 (Output_reduced_debug_abbrev_section::failed): Use format for
8961 gold_warning.
8962 (Output_reduced_debug_info_section::faild): Likewise.
8963
88a0e15b
ILT
89642009-01-31 Mikolaj Zalewski <mikolajz@google.com>
8965
8966 * script.cc (Lazy_demangler): New class.
8967 (Version_script_info::get_symbol_version_helper): Demangle a
8968 symbol only once.
8969
5efc7cd2
CC
89702009-01-29 Cary Coutant <ccoutant@google.com>
8971
8972 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
8973 to __tls_get_addr.
8974 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
8975
e0ebcf42
ILT
89762009-01-28 Ian Lance Taylor <iant@google.com>
8977
5efc7cd2 8978 * version.cc (version_string): Bump to 1.9.
75fe7426 8979
e0ebcf42
ILT
8980 * gold.h: Include <cstring> and <stdint.h>.
8981 * version.cc: Include <cstdio>.
8982 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
8983 warning.
8984 * reduced_debug_output.cc (insert_into_vector): Rename from
8985 Insert_into_vector; change all callers. Use Swap_unaligned to
8986 avoid aliasing issue; remove union since it is unnecessary.
8987
8e2813be 89882009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
8989
8990 * Makefile.am (CCFILES): Add gc.cc.
8991 (HFILES): Add gc.h.
8992 * Makefile.in: Regenerate.
8993 * gold.cc (Gc_runner): New class.
8994 (queue_initial_tasks): Call garbage collection related tasks
8995 when corresponding options are invoked.
8996 (queue_middle_gc_tasks): New function.
8997 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
8998 processed early before laying out sections during garbage collection.
8999 * gold.h (queue_middle_gc_tasks): New function.
9000 (is_prefix_of): Move from "layout.cc".
9001 * i386.cc (Target_i386::gc_process_relocs): New function.
9002 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
9003 * main.cc (main): Create object of class "Garbage_collection".
9004 * object.cc (Relobj::copy_symbols_data): New function.
9005 (Relobj::is_section_name_included): New function.
e1df38aa
NC
9006 (Sized_relobj::do_layout): Allow this function to be called twice
9007 during garbage collection and defer layout of section during the
6d03d481
ST
9008 first call.
9009 * object.h (Relobj::get_symbols_data): New function.
9010 (Relobj::is_section_name_included): New function.
9011 (Relobj::copy_symbols_data): New function.
9012 (Relobj::set_symbols_data): New function.
9013 (Relobj::get_relocs_data): New function.
9014 (Relobj::set_relocs_data): New function.
9015 (Relobj::is_output_section_offset_invalid): New pure virtual function.
9016 (Relobj::gc_process_relocs): New function.
9017 (Relobj::do_gc_process_relocs): New pure virtual function.
9018 (Relobj::sd_): New data member.
9019 (Sized_relobj::is_output_section_offset_invalid): New function.
9020 (Sized_relobj::do_gc_process_relocs): New function.
9021 * options.h (General_options::gc_sections): Modify to not be a no-op.
9022 (General_options::print_gc_sections): New option.
9023 * plugin.cc (Plugin_finish::run): Remove function call to
9024 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
9025 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
9026 * reloc.cc (Read_relocs::run): Add task to process relocs and
9027 determine unreferenced sections when doing garbage collection.
9028 (Gc_process_relocs): New class.
9029 (Sized_relobj::do_gc_process_relocs): New function.
9030 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
9031 sections that are garbage collected.
9032 * reloc.h (Gc_process_relocs): New class.
9033 * sparc.cc (Target_sparc::gc_process_relocs): New function.
9034 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
9035 symbols whose corresponding sections are garbage collected.
9036 (Symbol_table::Symbol_table): Add new parameter for the garbage
9037 collection object.
9038 (Symbol_table::gc_mark_undef_symbols): New function.
9039 (Symbol_table::gc_mark_symbol_for_shlib): New function.
9040 (Symbol_table::gc_mark_dyn_syms): New function.
9041 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
9042 as garbage.
9043 (Symbol_table::add_from_object): Likewise.
9044 (Symbol_table::add_from_relobj): When building shared objects, do not
9045 treat externally visible symbols as garbage.
9046 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
9047 table information for static and relocatable links.
9048 * symtab.h (Symbol_table::set_gc): New function.
9049 (Symbol_table::gc): New function.
9050 (Symbol_table::gc_mark_undef_symbols): New function.
9051 (Symbol_table::gc_mark_symbol_for_shlib): New function.
9052 (Symbol_table::gc_mark_dyn_syms): New function.
9053 (Symbol_table::gc_): New data member.
e1df38aa 9054 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
9055 function.
9056 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
9057 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
9058
3b293544
CF
90592009-01-20 Chris Faylor <me.sourceware@sourceware.org>
9060
9061 * options.h (General_options::gc_sections): Define as a no-op for now.
9062 (General_options::no_keep_memory): Ditto.
9063 (General_options::Bshareable): Define.
9064 * options.cc (General_options::finalize): Honor -Bshareable.
9065
83d22aa8
AS
90662009-01-20 Andreas Schwab <schwab@suse.de>
9067
9068 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
9069 read the value in the contents, since we don't use it. Use the
9070 template endianness when writing.
9071 (Relocate::relocate): Use it for R_PPC_REL16_HA.
9072
cd536b21
AS
90732009-01-19 Andreas Schwab <schwab@suse.de>
9074
9075 * configure.tgt (powerpc64-*): Fix targ_obj.
9076
99e9a495
ILT
90772009-01-15 Ian Lance Taylor <iant@google.com>
9078
9079 * object.cc (Sized_relobj::write_local_symbols): Don't write out
9080 local symbols when stripping all symbols.
9081
bbbfea06
CC
90822009-01-14 Cary Coutant <ccoutant@google.com>
9083
99e9a495 9084 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 9085
0f7c0701
CC
90862009-01-14 Cary Coutant <ccoutant@google.com>
9087
9088 * archive.cc (Archive::get_elf_object_for_member): Remove call
9089 to File_read::claim_for_plugin.
9090 * descriptors.cc (Descriptors::open): Remove reference to
9091 is_claimed.
9092 (Descriptors::claim_for_plugin): Remove.
9093 * descriptors.h (Descriptors::claim_for_plugin): Remove.
9094 (Descriptors::is_claimed): Remove.
9095 (claim_descriptor_for_plugin): Remove.
9096 * fileread.cc (File_read::claim_for_plugin): Remove.
9097 * fileread.h (File_read::claim_for_plugin): Remove.
9098 (File_read::descriptor): Reopen descriptor if necessary.
9099 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
9100 (Plugin_manager::all_symbols_read): Add task parameter. Change
9101 all callers.
9102 (Plugin_manager::get_input_file): New function.
9103 (Plugin_manager::release_input_file): New function.
9104 (Pluginobj::Pluginobj): Add filesize parameter and initialize
9105 corresponding data member.
9106 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
9107 and pass to base constructor. Change all callers.
9108 (get_input_file, release_input_file): New functions.
9109 (make_sized_plugin_object): Add filesize parameter. Change all callers.
9110 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
9111 (Plugin_manager::all_symbols_read): Add task parameter.
9112 (Plugin_manager::get_input_file): New function.
9113 (Plugin_manager::release_input_file): New function.
9114 (Plugin_manager::task_): New data member.
9115 (Pluginobj::Pluginobj): Add filesize parameter.
9116 (Pluginobj::filename): New function.
9117 (Pluginobj::descriptor): New function.
9118 (Pluginobj::filesize): New function.
9119 (Pluginobj::filesize_): New data member.
9120 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
9121 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
9122 File_read::claim_for_plugin; use Object::unlock to unlock the file.
9123
9124 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
9125 with archive libraries.
9126 * testsuite/Makefile.in: Regenerate.
9127 * testsuite/plugin_test.c (struct sym_info): New type.
9128 (get_input_file, release_input_file): New static variables.
9129 (onload): Capture new transfer vector entries.
9130 (claim_file_hook): Stop reading at end of file according to filesize.
9131 Factor out parsing of readelf output into separate function.
9132 (all_symbols_read_hook): Exercise get_input_file and release_input_file
9133 APIs and get the source file name from the symbol table. Convert
9134 source file name to corresponding object file name. Print info
9135 message when adding new input files.
9136 (parse_readelf_line): New function.
9137 * testsuite/plugin_test_1.sh: Add checks for new info messages.
9138 * testsuite/plugin_test_2.sh: Likewise.
9139 * testsuite/plugin_test_3.sh: Likewise.
9140 * testsuite/plugin_test_4.sh: New test case.
9141
62a6d109
ILT
91422009-01-07 Ian Lance Taylor <iant@google.com>
9143
9144 * version.cc (version_string): Bump to 1.8.
9145
483620e8
CC
91462008-12-23 Cary Coutant <ccoutant@google.com>
9147
9148 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
9149 * plugin.cc (Plugin_manager::finish): Rename as
9150 layout_deferred_objects. Move cleanup to separate function.
9151 (Plugin_manager::cleanup): New function.
9152 (Plugin_finish::run): Call layout_deferred_objects and cleanup
9153 separately.
9154 * plugin.h (Plugin_manager::finish): Rename as
9155 layout_deferred_objects.
9156 (Plugin_manager::cleanup): New function.
9157 (Plugin_manager::cleanup_done): New field.
9158
d66a9eb3
CC
91592008-12-23 Cary Coutant <ccoutant@google.com>
9160
9161 * plugin.cc (is_visible_from_outside): New function.
9162 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
9163 so we don't return "IR only" status for exported symbols or -r links.
9164
9165 * testsuite/Makefile.am (plugin_test_3): New test case.
9166 * testsuite/Makefile.in: Regenerate.
9167 * testsuite/plugin_test_3.sh: New file.
9168
5995b570
CC
91692008-12-22 Cary Coutant <ccoutant@google.com>
9170
9171 * object.cc (Sized_relobj::layout_section): New function.
9172 (Sized_relobj::do_layout): Defer layout of input sections until after
9173 plugin has provided replacement files.
9174 (Sized_relobj::do_layout_deferred_sections): New function.
9175 * object.h (Relobj::set_section_offset): Remove virtual keyword.
9176 (Relobj::layout_deferred_sections): New function.
9177 (Relobj::do_layout_deferred_sections): New function.
9178 (Sized_relobj::do_layout_deferred_sections): New function.
9179 (Sized_relobj::layout_section): New function.
9180 (Sized_relobj::Deferred_layout): New structure.
9181 (Sized_relobj::deferred_layout_): New field.
9182 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
9183 Change all callers. Layout deferred sections.
9184 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
9185 references.
9186 (Plugin_hook::run): Move code from do_plugin_hook inline.
9187 (Plugin_hook::do_plugin_hook): Remove.
9188 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
9189 (Plugin_manager::finish): Renamed, was cleanup.
9190 (Plugin_manager::should_defer_layout): New function.
9191 (Plugin_manager::add_deferred_layout_object): New function.
9192 (Plugin_manager::Deferred_layout_list): New type.
9193 (Plugin_manager::deferred_layout_objects_): New field.
9194 (Plugin_hook::do_plugin_hook): Remove.
9195
ee769c88
ILT
91962008-12-17 Ian Lance Taylor <iant@google.com>
9197
9198 * options.h (class General_options): Add --no case for
9199 --export-dynamic.
9200
abc8dcba
CC
92012008-12-16 Cary Coutant <ccoutant@google.com>
9202
9203 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
9204 vector.
9205 (Plugin_manager::claim_file): Create plugin object even if
9206 plugin did not call the add_symbols callback.
9207 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
9208 asking for more symbols than were added.
9209 * testsuite/Makefile.am (plugin_test_1): Add test case with
9210 no global symbols.
9211 (empty.syms): New target.
9212 * testsuite/Makefile.in: Regenerate.
9213 * testsuite/plugin_test.c (claim_file_hook): Add new debug
9214 message. Don't call add_symbols if no globals.
9215 (all_symbols_read_hook): Don't provide replacement for empty
9216 claimed file.
9217
b0074644
ILT
92182008-12-12 Ian Lance Taylor <iant@google.com>
9219
68943102
ILT
9220 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
9221 r_type == 0 for a local symbol with r_sym == 0.
9222 (scan_relocatable_relocs): Pass r_sym to
9223 local_non_section_strategy.
9224 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
9225 r_sym parameter.
9226
b0074644
ILT
9227 * configure.ac: Update test for TLS descriptors: they are
9228 supported as of glibc 2.9.
9229 * configure: Rebuild.
9230
c2508178
ILT
92312008-12-11 Ian Lance Taylor <iant@google.com>
9232
9233 PR 7091
9234 * target-reloc.h (Default_scan_relocatable_relocs): For each
9235 function, map r_type == 0 to RELOC_DISCARD.
9236
2756a258
CC
92372008-12-10 Cary Coutant <ccoutant@google.com>
9238
9239 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
9240 object to override a kept COMDAT group from a plugin object.
9241
bb6f53d3
ILT
92422008-12-09 Ian Lance Taylor <iant@google.com>
9243
fbc558e1
ILT
9244 PR 7088
9245 * yyscript.y (file_cmd): Handle INPUT.
9246
bb6f53d3
ILT
9247 * testsuite/initpri1.c: Change all declarations to be full
9248 prototypes by adding void, to avoid compiler warnings.
9249
4674ecfc
CC
92502008-12-05 Rafael Avila de Espindola <espindola@google.com>
9251
9252 * options.cc (General_options::parse_plugin_opt): New.
9253 (General_options::add_plugin): The argument now is just the filename.
9254 (General_options::add_plugin_option): New.
9255 * options.h (plugin_opt): New.
9256 (add_plugin): Change argument name.
9257 (add_plugin_option): New.
9258 * plugin.cc (Plugin::load): Don't parse the plugin option.
9259 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
9260 (Plugin::add_option): New.
9261 (Plugin::args_): Change type.
9262 (Plugin::filename_): New.
9263 (Plugin_manager::add_plugin_option): New.
9264 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
9265 * testsuite/Makefile.in: Regenerate.
9266
fd06b4aa
CC
92672008-12-05 Cary Coutant <ccoutant@google.com>
9268
9269 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
9270 Handle --strip-lto-sections option.
9271 * options.h (strip_lto_sections): New option.
9272
6c52134c
CC
92732008-12-01 Cary Coutant <ccoutant@google.com>
9274
9275 * plugin.cc (ld_plugin_message): Change format parameter to const.
9276 Fix mismatch between new[] and delete.
9277
a45248e0
CC
92782008-11-14 Cary Coutant <ccoutant@google.com>
9279
9280 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
9281 instead of -1U.
9282
c82fbeee
CS
92832008-11-05 Craig Silverstein <csilvers@google.com>
9284
9285 * options.cc (General_options::parse_dynamic_list): New function.
9286 * options.h (General_options): New flags dynamic_list,
9287 dynamic_list_data, dynamic_list_cpp_new, and
9288 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
9289 (General_options::in_dynamic_list): New function.
9290 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
9291 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
9292 (Lex::can_continue_name): Likewise.
9293 (yylex): Likewise.
9294 (read_script_file): New parameter script_options.
9295 (read_dynamic_list): New function.
9296 (Script_options::define_dynamic_list): New function.
9297 (dynamic_list_keyword_parsecodes): New variable.
9298 (dynamic_list_keywords): New variable.
9299 * script.h (Script_options::define_dynamic_list): New function
9300 prototype.
9301 (read_dynamic_list): New function prototype.
9302 * symtab.cc (strprefix): New macro.
9303 (Symbol::should_add_dynsym_entry): Support dynamic_list,
9304 dynamic_list_data, dynamic_list_cpp_new, and
9305 dynamic_list_cpp_typeinfo.
9306 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
9307 (dynamic_list_expr): New rule.
9308 (dynamic_list_nodes): Likewise.
9309 (dynamic_list_node): Likewise.
9310 * testsuite/Makefile.am (dynamic_list): New test.
9311 * testsuite/Makefile.in: Regenerated.
9312 * testsuite/dynamic_list.t: New file.
9313 * testsuite/dynamic_list.sh: New file.
9314
e0bb29a5
CS
93152008-11-05 Craig Silverstein <csilvers@google.com>
9316
9317 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
9318 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
9319 (t11_last): Likewise.
9320 * testsuite/ver_test_6.c (main): Likewise.
9321
4e1e25e0
CC
93222008-10-07 Cary Coutant <ccoutant@google.com>
9323
9324 * options.c (General_options::finalize): Add check for -static and
9325 -shared.
9326 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
9327 is not empty.
9328
92f03fcb
CC
93292008-10-02 Cary Coutant <ccoutant@google.com>
9330
9331 * plugin.cc (make_sized_plugin_object): Fix conditional
9332 compilation to work when not all targets are enabled.
9333
fbd8a257
CC
93342008-09-29 Cary Coutant <ccoutant@google.com>
9335
9336 * archive.cc (Archive::get_file_and_offset): Use filename instead
9337 of name to get library path.
9338 (Archive::include_member): Unlock external member of a thin archive.
9339
9340 * testsuite/Makefile.am (TEST_AR): New variable.
9341 (thin_archive_test_1): New test.
9342 (thin_archive_test_2): New test.
81636b3f
CC
9343 * testsuite/Makefile.in: Regenerate.
9344 * testsuite/thin_archive_main.cc: New file.
9345 * testsuite/thin_archive_test_1.cc: New file.
9346 * testsuite/thin_archive_test_2.cc: New file.
9347 * testsuite/thin_archive_test_3.cc: New file.
9348 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 9349
eff45813
CC
93502008-09-29 Cary Coutant <ccoutant@google.com>
9351
9352 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
9353 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
9354 instead of -1U.
9355 (Sized_relobj::do_finalize_local_symbols): Likewise.
9356 (Sized_relobj::map_to_kept_section): Likewise.
9357 * object.h (Sized_relobj::invalid_address): New constant.
9358 (Sized_relobj::do_output_section_offset): Check for invalid_address
9359 and return -1ULL.
9360 * output.cc (Output_reloc::local_section_offset): Use constant
9361 invalid_address instead of -1U.
9362 (Output_reloc::get_address): Likewise.
9363 (Output_section::output_address): Change -1U to -1ULL.
9364 * output.h (Output_reloc::invalid_address): New constant.
9365 * reloc.cc (Sized_relobj::write_sections): Use constant
9366 invalid_address instead of -1U.
9367 (Sized_relobj::relocate_sections): Likewise.
9368 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
9369 values for merge sections.
9370 * target-reloc.h (relocate_for_relocatable): Use constant
9371 invalid_address instead of -1U.
9372
89fc3421
CC
93732008-09-19 Cary Coutant <ccoutant@google.com>
9374
9375 Add plugin functionality for link-time optimization (LTO).
9376 * configure.ac (plugins): Add --enable-plugins option.
9377 * configure: Regenerate.
9378 * config.in: Regenerate.
9379 * Makefile.am (LIBDL): New variable.
9380 (CCFILES): Add plugin.cc.
9381 (HFILES): Add plugin.h.
9382 (ldadd_var): Add LIBDL.
9383 * Makefile.in: Regenerate.
9384
9385 * archive.cc: Include "plugin.h".
9386 (Archive::setup): Don't preread archive symbols when using a plugin.
9387 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
9388 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
9389 files.
9390 (Archive::include_member): Add symbols from plugin objects.
9391 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
9392 * descriptors.cc (Descriptors::open): Check for file descriptors
9393 abandoned by plugins.
9394 (Descriptors::claim_for_plugin): New function.
9395 * descriptors.h (Descriptors::claim_for_plugin): New function.
9396 (Open_descriptor::is_claimed): New field.
9397 (claim_descriptor_for_plugin): New function.
9398 * fileread.cc (File_read::claim_for_plugin): New function.
9399 * fileread.h (File_read::claim_for_plugin): New function.
9400 (File_read::descriptor): New function.
9401 * gold.cc: Include "plugin.h".
9402 (queue_initial_tasks): Add task to call plugin hooks for generating
9403 new object files.
9404 * main.cc: Include "plugin.h".
9405 (main): Load plugin libraries.
9406 * object.h (Pluginobj): Declare.
9407 (Object::pluginobj): New function.
9408 (Object::do_pluginobj): New function.
9409 (Object::set_target): New function.
9410 * options.cc: Include "plugin.h".
9411 (General_options::parse_plugin): New function.
9412 (General_options::General_options): Initialize plugins_ field.
9413 (General_options::add_plugin): New function.
9414 * options.h (Plugin_manager): Declare.
9415 (General_options): Add --plugin option.
9416 (General_options::has_plugins): New function.
9417 (General_options::plugins): New function.
9418 (General_options::add_plugin): New function.
9419 (General_options::plugins_): New field.
9420 * plugin.cc: New file.
9421 * plugin.h: New file.
9422 * readsyms.cc: Include "plugin.h".
9423 (Read_symbols::do_read_symbols): Check for archive before checking
9424 for ELF file. Call plugin hooks to claim files.
9425 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
9426 from a real object file; force override when processing replacement
9427 files.
9428 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
9429 (Symbol::init_base_object): Likewise.
9430 (Symbol::init_base_output_data): Likewise.
9431 (Symbol::init_base_output_segment): Likewise.
9432 (Symbol::init_base_constant): Likewise.
9433 (Symbol::init_base_undefined): Likewise.
9434 (Symbol::output_section): Assert that object is not a plugin.
9435 (Symbol_table::add_from_pluginobj): New function.
9436 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
9437 undefined.
9438 (Symbol_table::sized_write_globals): Likewise.
9439 (Symbol_table::add_from_pluginobj): Instantiate template.
9440 * symtab.h (Sized_pluginobj): Declare.
9441 (Symbol::in_real_elf): New function.
9442 (Symbol::set_in_real_elf): New function.
9443 (Symbol::in_real_elf_): New field.
9444 (Symbol_table::add_from_pluginobj): New function.
9445
9446 * testsuite/Makefile.am (AM_CFLAGS): New variable.
9447 (LIBDL): New variable.
9448 (LDADD): Add LIBDL.
9449 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
9450 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
9451 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
9452 (MOSTLYCLEANFILES): Likewise.
9453 * testsuite/Makefile.in: Regenerate.
9454 * testsuite/plugin_test.c: New file.
9455 * testsuite/plugin_test_1.sh: New file.
9456 * testsuite/plugin_test_2.sh: New file.
9457
de31bda5
ILT
94582008-09-16 Ian Lance Taylor <iant@google.com>
9459
9c2d0ef9
ILT
9460 * target-reloc.h (relocate_section): Check whether a symbol is
9461 defined by the ABI before reporting an undefined symbol error.
9462 * target.h (Target::is_defined_by_abi): Make parameter const.
9463 (Target::do_is_defined_by_abi): Likewise.
9464 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
9465 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
9466 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
9467 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
9468 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
9469 * testsuite/Makefile.in: Rebuild.
9470
de31bda5
ILT
9471 * fileread.cc (make_view): Add casts to avoid warning.
9472
9fa33bee
AO
94732008-09-16 Alexandre Oliva <aoliva@redhat.com>
9474
9475 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
9476 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
9477
183fd0e3
AO
94782008-09-16 Alexandre Oliva <aoliva@redhat.com>
9479
9480 * options.h (General_options::output_is_executable): New.
9481 (General_options::output_is_pie): New.
9482 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
9483 for shared libraries.
9484 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
9485
7be8330a
CD
94862008-09-11 Chris Demetriou <cgd@google.com>
9487
9488 * options.h (origin): New -z option.
9489 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
9490 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
9491 in DT_FLAGS_1.
9492
a9caad02
CC
94932008-09-05 Cary Coutant <ccoutant@google.com>
9494
9495 * fileread.cc (File_read::make_view): Add check for attempt to map
9496 beyond end of file.
9497
ae6dce4d
CC
94982008-09-05 Cary Coutant <ccoutant@google.com>
9499
9500 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
9501 explicit instantiations.
9502
d7ab2a47
KVH
95032008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
9504
9505 PR gold/6858
9506 * options.cc (General_options::finalize): Allow undefined symbols
9507 in shlibs if linking -shared.
9508
9509 PR gold/6859
9510 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
9511 symbols as not needing a dynsym entry.
9512
1e52a9c1
CS
95132008-08-20 Craig Silverstein <csilvers@google.com>
9514
9515 * fileread.cc (File_read::open): Do not lock the file unless it
9516 was successfully opened.
9517
d85c80a3
CC
95182008-08-14 Cary Coutant <ccoutant@google.com>
9519
9520 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
9521 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
9522 * testsuite/tls_test.cc (struct int128): 128-bit struct
9523 for testing TLS relocs with non-zero addend.
9524 (v12): New TLS variable.
9525 (t12): New test.
9526 (t_last): Add check for v12.
9527 * testsuite/tls_test.h (t12): New function.
9528 * testsuite/tls_test_main.cc (thread_routine): Call new test.
9529
2d924fd9
ILT
95302008-08-13 Ian Lance Taylor <iant@google.com>
9531
9532 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
9533 set tls_segment_ or relro_segment_.
9534 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
9535 when appropriate.
9536 * output.h (Output_section::clear_is_relro): New function.
9537 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
9538 sections specially even when output_data_ is empty.
9539 (Output_segment::maximum_alignment): When first section is relro,
9540 only force alignment for PT_LOAD segments.
9541 * script.cc (script_data_segment_align): New function.
9542 (script_data_segment_relro_end): New function.
9543 * script-c.h (script_data_segment_align): Declare.
9544 (script_data_segment_relro_end): Declare.
9545 * script-sections.h (class Script_sections): Declare
9546 data_segment_align and data_segment_relro_end. Add fields
9547 segment_align_index_ and saw_relro_end_.
9548 * script-sections.cc (class Sections_element): Add set_is_relro
9549 virtual function. Add new bool* parameter to place_orphan_here.
9550 Add get_output_section virtual function.
9551 (class Output_section_definition): Add set_is_relro. Add new
9552 bool* parameter to place_orphan_here. Add get_output_section.
9553 Add is_relro_ field.
9554 (Output_section_definition::Output_section_definition): Initialize
9555 evaluated_address_, evaluated_load_address, evaluated_addralign_,
9556 and is_relro_ fields.
9557 (Output_section_definition::place_orphan_here): Add is_relro
9558 parameter.
9559 (Output_section_definition::set_section_addresses): Set relro for
9560 output section.
9561 (Output_section_definition::alternate_constraint): Likewise.
9562 (class Orphan_output_section): Add new bool* parameter to
9563 place_orphan_here. Add get_output_section.
9564 (Orphan_output_section::place_orphan_here): Add is_relro
9565 parameter.
9566 (Script_sections::Script_sections): Initialize
9567 data_segment_align_index_ and saw_relro_end_.
9568 (Script_sections::data_segment_align): New function.
9569 (Script_sections::data_segment_relro_end): New function.
9570 (Script_sections::place_orphan): Set or clear is_relro.
9571 (Script_sections::set_section_addresses): Force alignment of first
9572 TLS section.
9573 * yyscript.y (exp): Call script_data_segment_align and
9574 script_data_segment_relro_end.
9575 * testsuite/relro_script_test.t: New file.
9576 * testsuite/relro_test.cc (using_script): Declare.
9577 (t1, t2): Test using_script.
9578 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
9579 (relro_script_test_SOURCES): Define.
9580 (relro_script_test_DEPENDENCIES): Define.
9581 (relro_script_test_LDFLAGS): Define.
9582 (relro_script_test_LDADD): Define.
9583 (relro_script_test.so): New target.
9584 * testsuite/Makefile.in: Rebuild.
9585
f827c9a9
CC
95862008-08-06 Cary Coutant <ccoutant@google.com>
9587
9588 * archive.cc (Archive::total_archives, Archive::total_members)
9589 (Archive::total_members_loaded): New variables.
9590 (Archive::setup): Add parameter. Add option to preread
9591 archive symbols.
9592 (Archive::read_armap): Add counter.
9593 (Archive::get_file_and_offset): New function.
9594 (Archive::get_elf_object_for_member): New function.
9595 (Archive::read_all_symbols): New function.
9596 (Archive::read_symbols): New function.
9597 (Archive::add_symbols): Add counters.
9598 (Archive::include_all_members): Use armap to find members if it's
9599 already built.
9600 (Archive::include_member): Skip reading symbols if already read.
9601 Factored code into Archive::get_file_and_offset and
9602 Archive::get_elf_object_for_member. Changed call to
9603 Mapfile::report_include_archive_member.
9604 (Archive::print_stats): New function.
9605 * archive.h: Declare Object and Read_symbols_data classes.
9606 (Archive::Archive): Add initializers for new members.
9607 (Archive::setup): Add parameter.
9608 (Archive::print_stats): New function.
9609 (Archive::total_archives, Archive::total_members)
9610 (Archive::total_members_loaded): New variables.
9611 (Archive::get_file_and_offset): New function.
9612 (Archive::get_elf_object_for_member): New function.
9613 (Archive::read_all_symbols): New function.
9614 (Archive::read_symbols): New function.
9615 (Archive::Archive_member): New class.
9616 (Archive::members_): New member.
9617 (Archive::num_members_): New member.
9618 * main.cc: Include archive.h.
9619 (main): Call Archive::print_stats.
9620 * mapfile.cc (Mapfile::report_include_archive_member): Delete
9621 archive parameter; member_name is now the fully-decorated name.
9622 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
9623 * options.h: (General_options): Add --preread-archive-symbols option.
9624 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
9625 Archive::setup.
9626
de4c45bd
ILT
96272008-08-04 Ian Lance Taylor <iant@google.com>
9628
9629 * symtab.h (Symbol::use_plt_offset): New function.
9630 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
9631 * powerpc.cc (Relocate::relocate): Likewise.
9632 * sparc.cc (Relocate::relocate): Likewise.
9633 * x86_64.cc (Relocate::relocate): Likewise.
9634 * testsuite/weak_plt.sh: New test.
9635 * testsuite/weak_plt_main.cc: New test.
9636 * testsuite/weak_plt_shared.cc: New test.
9637 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
9638 (check_PROGRAMS): Add weak_plt.
9639 (check_DATA): Add weak_plt_shared.so.
9640 (weak_plt_main_pic.o, weak_plt): New targets.
9641 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
9642 * testsuite/Makefile.in: Rebuild.
9643
9644 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
9645 gcctestdir/ld.
9646 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
9647 * testsuite/Makefile.in: Rebuild.
9648
323ee3f4
AM
96492008-08-04 Alan Modra <amodra@bigpond.net.au>
9650
9651 * Makefile.am (POTFILES.in): Set LC_ALL=C.
9652 * Makefile.in: Regenerate.
9653 * po/POTFILES.in: Regenerate.
9654
7c07ecec
ILT
96552008-07-29 Ian Lance Taylor <iant@google.com>
9656
9657 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
9658 symbols before other symbols.
9659 * testsuite/script_test_2.cc (test_addr): Declare.
9660 (test_addr_alias): Declare.
9661 (main): Check that test_addr and test_addr_alias have the right
cd536b21 9662 values.
7c07ecec
ILT
9663 * testsuite/script_test_2.t: Define test_addr_alias and
9664 test_addr.
9665
5778530e
ILT
96662008-07-24 Ian Lance Taylor <iant@google.com>
9667
2a00e4fb
ILT
9668 PR 5990
9669 * descriptors.cc: New file.
9670 * descriptors.h: New file.
9671 * gold-threads.h (class Hold_optional_lock): New class.
9672 * fileread.cc: Include "descriptors.h".
9673 (File_read::~File_read): Release descriptor rather than closing
9674 it.
9675 (File_read::open) [file]: Call open_descriptor rather than open.
9676 Set is_descriptor_opened_.
9677 (File_read::open) [memory]: Assert that descriptor is not open.
9678 (File_read::reopen_descriptor): New function.
9679 (File_read::release): Release descriptor.
9680 (File_read::do_read): Make non-const. Reopen descriptor.
9681 (File_read::read): Make non-const.
9682 (File_read::make_view): Reopen descriptor.
9683 (File_read::do_readv): Likewise.
9684 * fileread.h (class File_read): Add is_descriptor_opened_ field.
9685 Update declarations.
9686 * layout.cc: Include "descriptors.h".
9687 (Layout::create_build_id): Use open_descriptor rather than open.
9688 * output.cc: Include "descriptors.h".
9689 (Output_file::open): Use open_descriptor rather than open.
9690 * archive.cc (Archive::const_iterator): Change Archive to be
9691 non-const.
9692 (Archive::begin, Archive::end): Make non-const.
9693 (Archive::count_members): Likewise.
9694 * archive.h (class Archive): Update declarations.
9695 * object.h (Object::read): Make non-const.
9696 * Makefile.am (CCFILES): Add descriptors.cc.
9697 (HFILES): Add descriptors.h.
9698 * Makefile.in: Rebuild.
9699
801647d1
ILT
9700 PR 6716
9701 * gold.h: Always include <clocale>. Add Solaris workarounds
9702 following code in binutils/sysdep.h.
9703
5edd166e
ILT
9704 PR 6048
9705 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
9706 this->eh_frame_hdr_ is NULL before using it.
9707
c89ad728
ILT
9708 * dynobj.cc (Versions::Versions): Update comment.
9709
aa86f06b
ILT
9710 * dynobj.cc (Versions::Versions): If there is an soname, use it as
9711 the base version name.
9712
5778530e
ILT
9713 * stringpool.cc (Stringpool_template::add_with_length): Set key to
9714 array size plus one.
9715 (Stringpool_template::set_string_offsets): Subtract one from key
9716 before using it as an array index.
9717 (Stringpool_template::get_offset_with_length): Likewise.
9718 (Stringpool_template::write_to_buffer): Likewise.
9719 * stringpool.h (Stringpool_template::get_offset_from_key):
9720 Likewise.
9721
057ead22
ILT
97222008-07-23 Ian Lance Taylor <iant@google.com>
9723
7f649c59
ILT
9724 PR 6658
9725 * object.h (Merged_symbol_value::value): Do our best to handle a
9726 negative addend.
9727
057ead22
ILT
9728 PR 6647
9729 * script.cc (Version_script_info::get_versions): Don't add empty
9730 version tag to return value.
9731 (Version_script_info::get_symbol_version_helper): Change return
9732 type to bool. Add pversion parameter. Change all callers.
9733 (script_register_vers_node): Don't require a non-NULL tag.
9734 * script.h (class Version_script_info): Update declarations.
9735 (Version_script_info::get_symbol_version): Change return type to
9736 bool. Add version parameter. Change all callers.
9737 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
9738 handling. Handle an empty version from a version script.
9739 (Symbol_table::define_special_symbol): Likewise.
9740 * testsuite/ver_test_10.script: New file.
9741 * testsuite/ver_test_10.sh: New file.
9742 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
9743 (check_DATA): Add ver_test_10.syms.
9744 (ver_test_10.syms, ver_test_10.so): New target.
9745 * testsuite/Makefile.in: Rebuild.
9746
58e54ac2
CD
97472008-07-23 Simon Baldwin <simonb@google.com>
9748
9749 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
9750 to zero for undefined symbols from dynamic libraries.
9751
95d14cd3
ILT
97522008-07-23 Ian Lance Taylor <iant@google.com>
9753
9754 * symtab.cc (Symbol_table::resolve): Remove version parameter.
9755 Change all callers.
9756 * symtab.h (class Symbol_table): Update declaration.
9757 * testsuite/ver_test_9.cc: New file.
9758 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
9759 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
9760 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
9761 (ver_test_9.so, ver_test_9.o): New targets.
9762 * testsuite/Makefile.in: Rebuild.
9763
92de84a6
ILT
97642008-07-22 Ian Lance Taylor <iant@google.com>
9765
34810851
ILT
9766 * options.h (class General_options): Define --check-sections.
9767 * layout.cc (Layout::set_segment_offsets): Handle
9768 --check-sections.
9769
af6156ef
ILT
9770 * options.h (class General_options): Define -n/--nmagic and
9771 -N/--omagic.
9772 * options.cc (General_options::finalize): For -n/--nmagic or
9773 -N/--omagic, set -static.
9774 * layout.cc (Layout::attach_allocated_section_to_segment): If
9775 -N/--omagic, don't put read-only and read-write sections in
9776 different segments.
9777 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
9778 finding a read-only segment.
9779 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
9780 don't set the minimum segment alignment to the common page size,
9781 and don't set the file offset to the address modulo the page size.
9782 * script-sections.cc (Script_sections::create_segments): If
9783 -n/--omagic, don't put read-only and read-write sections in
9784 different segments.
9785
92de84a6
ILT
9786 * cref.cc: New file.
9787 * cref.h: New file.
9788 * options.h (class General_options): Add --print-symbol-counts.
9789 * main.cc (main): Issue defined symbol report if requested.
9790 * archive.cc (Archive::interpret_header): Make into a const member
9791 function.
9792 (Archive::add_symbols): Call Input_objects::archive_start and
9793 archive_stop.
9794 (Archive::const_iterator): Define new class.
9795 (Archive::begin, Archive::end): New functions.
9796 (Archive::include_all_members): Rewrite to use iterator.
9797 (Archive::count_members): New function.
9798 * archive.h (class Archive): Update declarations.
9799 (Archive::filename): New function.
9800 * object.cc: Include "cref.h".
9801 (Sized_relobj::Sized_relobj): Initialize defined_count_.
9802 (Sized_relobj::do_get_global_symbol_counts): New function.
9803 (Input_objects::add_object): Add object to cross-referencer.
9804 (Input_objects::archive_start): New function.
9805 (Input_objects::archive_stop): New function.
9806 (Input_objects::print_symbol_counts): New function.
9807 * object.h: Declare Cref and Archive.
9808 (Object::get_global_symbol_counts): New function.
9809 (Object::do_get_global_symbol_counts): New pure virtual function.
9810 (class Sized_relobj): Add defined_count_ field. Update
9811 declarations.
9812 (class Input_objects): Add cref_ field. Update constructor.
9813 Update declarations.
9814 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
9815 defined_count_.
9816 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
9817 symbol counts.
9818 (Sized_dynobj::do_get_global_symbol_counts): New function.
9819 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
9820 defined_count_. Update declarations. Define Symbols typedef.
9821 * symtab.cc (Symbol_table::add_from_relobj): Add defined
9822 parameter. Change all callers.
9823 (Symbol_table::add_from_dynobj): Add sympointers and defined
9824 parameters. Change all callers.
9825 * symtab.h (class Symbol_table): Update declarations.
9826 * Makefile.am (CCFILES): Add cref.cc.
9827 (HFILES): Add cref.h.
9828 * Makefile.in: Rebuild.
9829
3f7c5e1d
CD
98302008-07-22 Simon Baldwin <simonb@google.com>
9831
9832 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
9833 to zero when writing undefined symbols.
9834
e0b64032
ILT
98352008-07-22 Ian Lance Taylor <iant@google.com>
9836
9837 * output.cc (Output_section::add_input_section): Don't try to
9838 merge empty merge sections.
9839
096b02cf
CS
98402008-07-21 Craig Silverstein <csilvers@google.com>
9841
9842 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
9843 Include symbol version in error message.
cd536b21 9844
1d1f116d
CD
98452008-07-20 Chris Demetriou <cgd@google.com>
9846
cd536b21 9847 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
9848 (RANDOM_SEED_CFLAGS): New substituted variable.
9849 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
9850 * configure: Rebuild.
9851 * Makefile.in: Likewise.
9852 * testsuite/Makefile.in: Likewise.
9853
a18f591e
ILT
98542008-07-18 Ian Lance Taylor <iant@google.com>
9855
9856 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
9857 where we see NAME/NULL and NAME/VERSION as separate symbols.
9858 * testsuite/ver_test_main.cc (main): Call t4.
9859 (t4, t4_2a): Define.
9860 * testsuite/ver_test_2.cc (t4_2): Define.
9861 * testsuite/ver_test_2.script: Put t4_2a in VER2.
9862 * testsuite/ver_test_4.cc (t4_2a): Define.
9863 * testsuite/ver_test_4.script: Put t4_2a in VER2.
9864 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
9865
c6e3f6ed
ILT
98662008-07-17 Ian Lance Taylor <iant@google.com>
9867
9868 * dynobj.cc (Versions::add_def): If we give an error about a
9869 missing version, go ahead and create the version anyhow.
9870
ef9beddf
ILT
98712008-07-10 Ian Lance Taylor <iant@google.com>
9872
9873 Handle output sections with more than 0x7fffffff bytes.
9874 * object.h (class Relobj): Change map_to_output_ to
9875 output_sections_, and just keep a section pointer. Change all
9876 uses. Move comdat group support to Sized_relobj.
9877 (Relobj::is_section_specially_mapped): Remove.
9878 (Relobj::output_section): Remove poff parameter. Change all
9879 callers.
9880 (Relobj::output_section_offset): New function.
9881 (Relobj::set_section_offset): Rewrite.
9882 (Relobj::map_to_output): Remove.
9883 (Relobj::output_sections): New function.
9884 (Relobj::do_output_section_offset): New pure virtual function.
9885 (Relobj::do_set_section_offset): Likewise.
9886 (class Sized_relobj): Add section_offsets_ field. Add comdat
9887 group support from Relobj. Update declarations.
9888 (Sized_relobj::get_output_section_offset): New function.
9889 (Sized_relobj::do_output_section_offset): New function.
9890 (Sized_relobj::do_set_section_offset): New function.
9891 * object.cc (Relobj::output_section_address): Remove.
9892 (Sized_relobj::Sized_relobj): Initialize new fields.
9893 (Sized_relobj::include_section_group): Cast find_kept_object to
9894 Sized_relobj.
9895 (Sized_relobj::include_linkonce_section): Likewise.
9896 (Sized_relobj::do_layout): Use separate arrays for output section
9897 and output offset.
9898 (Sized_relobj::do_count_local_symbols): Change map_to_output to
9899 output_sections.
9900 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
9901 output_sections and section_offsets.
9902 (Sized_relobj::write_local_symbols): Likewise.
9903 (map_to_kept_section): Compute output address directly.
9904 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
9905 output_sections and section_offsets.
9906 (Sized_relobj::write_sections): Likewise.
9907 (Sized_relobj::relocate_sections): Likewise.
9908 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
9909 * output.h (class Output_reloc): Update declarations. Change
9910 u2_.relobj to Sized_relobj*.
9911 (class Output_data_reloc): Change add functions to use
9912 Sized_relobj*.
9913 * output.cc (Output_reloc::Output_reloc): Change relobj to
9914 Sized_relobj*.
9915 (Output_reloc::local_section_offset): Change return type to
9916 Elf_Addr. Use get_output_section_offset.
9917 (Output_reloc::get_address): Likewise.
9918 (Output_section::is_input_address_mapped): Don't call
9919 is_section_specially_mapped.
9920 (Output_section::output_offset): Likewise.
9921 (Output_section::output_address): Likewise.
9922 (Output_section::starting_output_address): Likewise.
9923 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
9924 parameter to Sized_relobj*.
9925 (Copy_relocs::need_copy_reloc): Likewise.
9926 (Copy_relocs::save): Likewise.
9927 * copy-relocs.h (class Copy_relocs): Update declarations.
9928 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
9929 Sized_relobj*. Change relobj_ field to Sized_relobj*.
9930 * target-reloc.h (relocate_for_relocatable): Change
9931 offset_in_output_section type to Elf_Addr. Change code that uses
9932 it as well.
9933 * layout.cc (Layout::layout): Always set *off.
9934 * mapfile.cc (Mapfile::print_input_section): Use
9935 output_section_offset.
9936 * i386.cc (Target_i386::copy_reloc): Change object parameter to
9937 Sized_relobj*.
9938 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
9939 * sparc.cc (Target_sparc::copy_reloc): Likewise.
9940 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
9941
5cb66f97
ILT
99422008-07-03 Ian Lance Taylor <iant@google.com>
9943
9944 * layout.cc (Layout::include_section): Do not discard unrecognized
9945 SHT_STRTAB sections.
9946
afe47622
CS
99472008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
9948
9949 * script.cc (Lex::can_continue_name): Make '?' allowable in
9950 version-script names.
9951 * testsuite/version_script.map: Change glob pattern to use '?'
9952
5adf9721
ILT
99532008-06-30 Manish Singh <yosh@gimp.org>
9954
9955 PR 6585
9956 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
9957 Correct typo.
9958
e6fde208
ILT
99592008-06-30 Ian Lance Taylor <iant@google.com>
9960
9961 PR 6660
9962 PR 6682
9963 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
9964 versions]: Don't try to read the value in the contents, since we
9965 don't use it. Use the template endianness when writing.
9966
3f2e6a2d
CC
99672008-06-25 Cary Coutant <ccoutant@google.com>
9968
9969 * fileread.cc (File_read::make_view): Assert on zero-length view.
9970 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
9971 symbol table when there are no symbols to read.
9972
c43d3a48
CS
99732008-06-23 Craig Silverstein <csilvers@google.com>
9974
9975 * version.cc (version_string): Bump to 1.7
9976
5f494ea0
CS
99772008-06-18 Craig Silverstein <csilvers@google.com>
9978
9979 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
9980 constant 0xFFFF to type Valtype.
9981 (Powerpc_relocate_functions::rel16_ha): Likewise.
9982
c42e122e
ILT
99832008-06-17 Ian Lance Taylor <iant@google.com>
9984
f34787f8
ILT
9985 * output.h (Output_section::Input_section): Initialize p2align_ to
9986 zero for Output_section_data constructors.
9987 (Output_section::Input_section::addralign): If not an input
9988 section, return the alignment of the Output_section_data.
9989 * testsuite/copy_test.cc: New file.
9990 * testsuite/copy_test_1.cc: New file.
9991 * testsuite/copy_test_2.cc: New file.
9992 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
9993 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
9994 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
9995 (copy_test_1_pic.o, copy_test_1.so): New targets.
9996 (copy_test_2_pic.o, copy_test_2.so): New targets.
9997 * testsuite/Makefile.in: Rebuild.
9998
c42e122e
ILT
9999 * script-sections.cc (Script_sections::place_orphan): Initialize
10000 local variable exact.
10001
ce3ac18a
DE
100022008-06-13 David Edelsohn <edelsohn@gnu.org>
10003
10004 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
10005
42cacb20
DE
100062008-06-12 David Edelsohn <edelsohn@gnu.org>
10007 David S. Miller <davem@davemloft.net>
10008
10009 * powerpc.cc: New file.
10010 * Makefile.am (TARGETSOURCES): Add powerpc.cc
10011 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
10012 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
10013 * Makefile.in: Rebuild.
10014
7b308235
ILT
100152008-06-09 Ian Lance Taylor <iant@google.com>
10016
10017 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
10018 <exception>.
10019 (throwing, orig_terminate): New static variables.
10020 (terminate_handler): New static function.
10021 (t2): Set terminate handler.
10022
f0b886e3
ILT
100232008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
10024
10025 PR 6584
cd536b21 10026 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
10027 alignment.
10028
3e90f135
CC
100292008-05-30 Cary Coutant <ccoutant@google.com>
10030
10031 * archive.cc (Archive::include_all_members) Correct to step
10032 over symbol table and extended name table in thin archives.
10033
e09ad04a
ILT
100342008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
10035
10036 PR 6407
10037 * target-reloc.h (relocate_for_relocatable): Fix new_offset
10038 calculation.
10039
62b01cb5
ILT
100402008-05-28 Caleb Howe <cshowe@google.com>
10041
10042 * reduced_debug_output.cc: New file.
10043 * reduced_debug_output.h: New file.
92de84a6 10044 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
10045 * options.cc (General_options::finalize): Add strip_debug_non_line
10046 to the strip heirarchy.
10047 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
10048 fields.
10049 * layout.cc: Include "reduced_debug_output.h".
10050 (Layout::Layout): Initialize new fields.
10051 (line_only_debug_sections): New static array.
10052 (is_lines_only_debug_sections): New static inline function.
10053 (Layout::include_section): Handle --strip-debug-non-line.
10054 (Layout::make_output_section): If --strip-debug-non-line, build
10055 new output sections for .debug_abbrev and .debug_info.
10056 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
10057 gold. Warn about possible overflow.
10058 (read_signed_LEB_128): Likewise.
10059 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
10060 (read_signed_LEB_128): Declare.
10061 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
10062 (HFILES): Add reduced_debug_output.h.
10063 * Makefile.in: Rebuild.
10064
7d9e3d98
ILT
100652008-05-21 Ian Lance Taylor <iant@google.com>
10066
10067 * mapfile.cc: New file.
10068 * mapfile.h: New file.
10069 * options.h (class General_options): Add -M/--print-map and -Map.
10070 * options.cc (General_options::finalize): Make -M equivalent to
10071 -Map -.
10072 * main.cc: Include <cstdio> and "mapfile.h".
10073 (main): Open mapfile if requested.
10074 * gold.cc (class Middle_runner): Add mapfile_ field. Update
10075 constructor. Change caller.
10076 (queue_initial_tasks): Add mapfile parameter. Change caller.
10077 (queue_middle_tasks): Likewise.
10078 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
10079 declarations.
10080 * archive.cc: Include "mapfile.h".
10081 (Archive::add_symbols): Add mapfile parameter. Change all
10082 callers. Pass mapfile, symbol, and reason to include_member.
10083 (Archive::include_all_members): Add mapfile parameter. Change all
10084 callers.
10085 (Archive::include_member): Add mapfile, sym, and why parameters.
10086 Change all callers. Report inclusion to map file.
10087 * archive.h: Include "fileread.h".
10088 (class Archive): Update declarations.
10089 (Archive::file): New const method.
10090 (class Add_archive_symbols): Add mapfile_ field. Update
10091 constructor. Change all callers.
10092 * readsyms.h (class Read_symbols): Likewise.
10093 (class Finish_group): Likewise.
10094 (class Read_script): Likewise.
10095 * common.cc: Include "mapfile.h".
10096 (Symbol_table::allocate_commons): Add mapfile parameter. Change
10097 all callers.
10098 (Symbol_table::do_allocate_commons): Likewise.
10099 (Symbol_table::do_allocate_commons_list): Likewise. Report common
10100 symbol allocation to mapfile.
10101 * common.h (class Allocate_commons_task): Add mapfile_ field.
10102 Update constructor. Change all callers.
10103 * symtab.h (class Symbol_table): Update declarations.
10104 * layout.cc: Include "mapfile.h".
10105 (Layout_task_runner::run): Print information to mapfile.
10106 (Layout::create_gold_note): Change Output_data_fixed_space to
10107 Output_data_zero_fill.
10108 (Layout::create_build_id): Likewise.
10109 (Layout::print_to_mapfile): New function.
10110 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
10111 constructor. Change caller.
10112 (class Layout): Declare print_to_mapfile.
10113 * output.cc (Output_section::Input_section::print_to_mapfile): New
10114 function.
10115 (Output_section::add_input_section): If producing a map, always
10116 add to input_sections_ list.
10117 (Output_section::do_print_to_mapfile): New function.
10118 (Output_segment::print_sections_to_mapfile): New function.
10119 (Output_segment::print_section_list_to_mapfile): New function.
10120 * output.h: Include "mapfile.h".
10121 (Output_data::print_to_mapfile): New function.
10122 (Output_data::do_print_to_mapfile): New virtual function.
10123 (Output_segment_headers::do_print_to_mapfile): New function.
10124 (Output_file_header::do_print_to_mapfile): New function.
10125 (Output_data_const::do_print_to_mapfile): New function.
10126 (class Output_data_const_buffer): Add map_name_ field. Update
10127 constructor. Change all callers. Add do_print_to_mapfile
10128 function.
10129 (class Output_data_fixed_space): Likewise.
10130 (class Output_data_space): Likewise.
10131 (class Output_data_zero_fill): New class.
10132 (Output_data_strtab::do_print_to_mapfile): New function.
10133 (Output_data_reloc_base::do_print_to_mapfile): New function.
10134 (Output_relocatable_relocs::do_print_to_mapfile): New function.
10135 (Output_data_group::do_print_to_mapfile): New function.
10136 (Output_data_got::do_print_to_mapfile): New function.
10137 (Output_data_dynamic::do_print_to_mapfile): New function.
10138 (Output_symtab_xindex::do_print_to_mapfile): New function.
10139 (class Output_section): Declare do_print_to_mapflie. Declare
10140 print_to_mapfile in Input_section.
10141 (class Output_segment): Declare new functions.
10142 * object.h (Sized_relobj::symbol_count): New function.
10143 * script-sections.cc
10144 (Output_section_element_dot_assignment::set_section_addresses):
10145 Change Output_data_fixed_space to Output_data_zero_fill.
10146 (Output_data_expression::do_print_to_mapfile): New function.
10147 * script.cc (read_input_script): Add mapfile parameter. Change
10148 all callers.
10149 * script.h (read_input_script): Update declaration.
10150 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
10151 (Eh_frame::do_print_to_mapfile): New function.
10152 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
10153 (Output_merge_string::do_print_to_mapfile): New function.
10154 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
10155 function.
10156 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
10157 function.
10158 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
10159 function.
10160 * Makefile.am (CCFILES): Add mapfile.cc.
10161 (HFILES): Add mapfile.h.
10162 * Makefile.in: Rebuild.
10163
9f1d377b
ILT
101642008-05-19 Ian Lance Taylor <iant@google.com>
10165
10166 * options.h (class General_options): Add -z relro.
10167 * layout.cc (Layout::Layout): Initialize relro_segment_.
10168 (Layout::add_output_section_data): Return the output section.
10169 (Layout::make_output_section): Rcognize relro sections and mark
10170 them appropriately.
10171 (Layout::attach_allocated_section_to_segment): Put relro sections
10172 in a PT_GNU_RELRO segment.
10173 (Layout::create_initial_dynamic_sections): Mark the .dynamic
10174 section as relro.
10175 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
10176 PT_TLS segments.
10177 (Layout::linkonce_mapping): Map d.rel.ro.local to
10178 .data.rel.ro.local.
10179 (Layout::output_section_name): Us .data.rel.ro.local for any
10180 section which begins with that.
10181 * layout.h (class Layout): Update add_output_section_data
10182 declaration. Add relro_segment_ field.
10183 * output.cc (Output_section::Output_section): Initialize is_relro_
10184 and is_relro_local_ fields.
10185 (Output_segment::add_output_section): Group relro sections.
10186 (Output_segment::is_first_section_relro): New function.
10187 (Output_segment::maximum_alignment): If there is a relro section,
10188 align the segment to the common page size.
10189 (Output_segment::set_section_addresses): Track whether we are
10190 looking at relro sections. If the last section is a relro
10191 section, align to the common page size.
10192 (Output_segment::set_section_list_addresses): Add in_relro
10193 parameter. Change all callers. Align to the page size when
10194 moving from relro to non-relro section.
10195 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
10196 segment.
10197 * output.h (class Output_section): Add is_relro_ and
10198 is_relro_local_ fields.
10199 (Output_section::is_relro): New function.
10200 (Output_section::set_is_relro): New function.
10201 (Output_section::is_relro_local): New function.
10202 (Output_section::set_is_relro_local): New function.
10203 (class Output_segment): Update declarations.
10204 * i386.cc (Target_i386::got_section): Mark .got section as relro.
10205 * sparc.cc (Target_sparc::got_section): Likewise.
10206 * x86_64.cc (Target_x86_64::got_section): Likewise.
10207 * testsuite/relro_test_main.cc: New file.
10208 * testsuite/relro_test.cc: New file.
10209 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
10210 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
10211 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
10212 (relro_test.so, relro_test_pic.o): New targets.
10213 * testsuite/Makefile.in: Rebuild.
10214
a984ee1d
ILT
102152008-05-16 Ian Lance Taylor <iant@google.com>
10216
01676dcd
ILT
10217 * output.cc (Output_segment::add_output_section): Remove front
10218 parameter.
10219 * output.h (class Output_segment): Remove
10220 add_initial_output_section and overloaded add_output_section.
10221 Update declaration of remaining add_output_section.
10222 * layout.cc (Layout::create_interp): Call add_output_section
10223 rather than add_initial_output_section.
10224 (Layout::finish_dynamic_section): Likewise.
10225
497897f9
ILT
10226 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
10227 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
10228 know the dynamic type.
10229 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
10230 field. Initialize it in constructor.
10231 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
10232 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
10233 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
10234 reloc.
10235
a984ee1d
ILT
10236 * output.cc (Output_reloc::get_address): Change return type to
10237 Elf_Addr.
10238 * output.h (class Output_reloc): Update get_address declaration.
10239 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
10240 for section addresses.
10241
55ba0940
ILT
102422008-05-09 Ian Lance Taylor <iant@google.com>
10243
10244 PR 6493
10245 * gold.cc (gold_nomem): Use return value of write.
10246
75517b77
ILT
102472008-05-08 Ian Lance Taylor <iant@google.com>
10248
10249 * symtab.c (Symbol::init_base_output_data): Add version
10250 parameter. Change all callers.
10251 (Symbol::init_base_output_segment): Likewise.
10252 (Symbol::init_base_constant): Likewise.
10253 (Symbol::init_base_undefined): Likewise.
10254 (Sized_symbol::init_output_data): Likewise.
10255 (Sized_symbol::init_output_segment): Likewise.
10256 (Sized_symbol::init_constant): Likewise.
10257 (Sized_symbol::init_undefined): Likewise.
10258 (Symbol_table::do_define_in_output_data): If the new symbol has a
10259 version, mark it as the default.
10260 (Symbol_table::do_define_in_output_segment): Likewise.
10261 (Symbol_table::do_define_as_constant): Likewise.
10262 * symtab.h (class Symbol): Update declarations.
10263 (class Sized_symbol): Likewise.
10264 * resolve.cc (Symbol::override_version): New function.
c42e122e 10265 (Symbol::override_base): Call override_version.
75517b77
ILT
10266 (Symbol::override_base_with_special): Likewise.
10267 * testsuite/ver_script_8.script: New file.
10268 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
10269 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
10270 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
10271 (ver_test_8_1.so, ver_test_8_2.so): New targets.
10272
f1f70eae
ILT
102732008-05-06 Ian Lance Taylor <iant@google.com>
10274
f3e9c5c5
ILT
10275 PR 6049
10276 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
10277 functions.
10278 (class General_options): Remove existing --undefined, and add
10279 --no-undefined instead. Add new --undefined as synonym for -u.
10280 * archive.cc (Archive::add_symbols): Check whether symbol was
10281 named with -u.
10282 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
10283 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
10284 all uses. Add IS_UNDEFINED. Update declarations to split
10285 different versions of init_base. Declare init_base_undefined.
10286 (Symbol::is_defined): Handle IS_UNDEFINED.
10287 (Symbol::is_undefined): Likewise.
10288 (Symbol::is_weak_undefined): Call is_undefined.
10289 (Symbol::is_absolute): Handle IS_CONSTANT.
10290 (class Sized_symbol): Update declarations to split different
10291 versions of init. Declare init_undefined.
10292 (class Symbol_table): Declare new functions.
10293 * symtab.cc (Symbol::init_base_object): Rename from init_base.
10294 Change all callers.
10295 (Symbol::init_base_output_data): Likewise.
10296 (Symbol::init_base_output_segment): Likewise.
10297 (Symbol::init_base_constant): Likewise.
10298 (Symbol::init_base_undefined): New function.
10299 (Sized_symbol::init_object): Rename from init. Change all
10300 callers.
10301 (Sized_symbol::init_output_data): Likewise.
10302 (Sized_symbol::init_output_segment): Likewise.
10303 (Sized_symbol::init_constant): Likewise.
10304 (Sized_symbol::init_undefined): New function.
10305 (Symbol_table::add_undefined_symbols_from_command_line): New
10306 function.
10307 (Symbol_table::do_add_undefined_symbols_from_command_line): New
10308 function.
10309 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
10310 (Symbol::output_section): Likewise.
10311 (Symbol::set_output_section): Likewise.
10312 (Symbol_table::sized_finalize_symbol): Likewise.
10313 (Symbol_table::sized_write_globals): Likewise.
10314 * resolve.cc (Symbol_table::should_override): Likewise.
10315 (Symbol::override_base_with_special): Likewise.
10316
8bdcdf2c
ILT
10317 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
10318 symbol, change it to have default visibility.
10319 * testsuite/protected_1.cc: New file.
10320 * testsuite/protected_2.cc: New file.
10321 * testsuite/protected_3.cc: New file.
10322 * testsuite/protected_main_1.cc: New file.
10323 * testsuite/protected_main_2.cc: New file.
10324 * testsuite/protected_main_3.cc: New file.
10325 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
10326 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
10327 (protected_1_LDFLAGS, protected_1_LDADD): Define.
10328 (protected_1.so): New target.
10329 (protected_1_pic.o, protected_2_pic.o): New targets.
10330 (protected_3_pic.o): New target.
10331 (check_PROGRAMS): Add protected_2.
10332 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
10333 (protected_2_LDFLAGS, protected_2_LDADD): Define.
10334 * testsuite/Makefile.in: Rebuild.
10335
2b706932
ILT
10336 * options.h (DEFINE_var): Add set_user_set_##varname__.
10337 (DEFINE_bool_alias): New macro.
10338 (class General_options): Define -Bstatic using DEFINE_bool_alias
10339 rather than DEFINE_special. Add --undefined as an alias for -z
10340 defs.
10341 * options.cc (General_options::parse_Bstatic): Remove.
10342
d82a5bcc
ILT
10343 * options.h (class General_options): Add --fatal-warnings.
10344 * main.cc (main): Implement --fatal-warnings.
10345 * errors.h (Errors::warning_count): New function.
10346
f1f70eae
ILT
10347 * options.h (class General_options): Add -Bsymbolic-functions.
10348 * symtab.h (Symbol::is_preemptible): Check for
10349 -Bsymbolic-functions.
10350
8825ac63
ILT
103512008-05-05 Ian Lance Taylor <iant@google.com>
10352
d98bc257
ILT
10353 * options.h (DEFINE_bool): For DASH_Z, create the negative option
10354 as noVARNAME rather than no-VARNAME.
10355 (class General_options): Add option -z combreloc.
10356 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
10357 get_address.
10358 (Output_reloc::sort_before) [SHT_REL]: New function.
10359 (Output_reloc::sort_before) [SHT_RELA]: New function.
10360 (class Output_data_reloc_base): Add sort_relocs_ field. Define
10361 Sort_relocs_comparison.
10362 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
10363 parameter. Change all callers.
10364 (Output_data_reloc::Output_data_reloc) [both versions]: Add
10365 sort_relocs parameter. Change all callers.
10366 * output.cc (Output_reloc::get_address): New function, broken out
10367 of write_rel.
10368 (Output_reloc::write_rel): Call it.
10369 (Output_reloc::compare): New function.
10370 (Output_data_reloc_base::do_write): Optionally sort relocs.
10371
60b2b4e7
ILT
10372 * configure.ac: If targ_extra_obj is set, link it in.
10373 * configure.tgt: Initialize all variables.
10374 (x86_64*): Set targ_extra_obj and targ_extra_size.
10375 * configure: Rebuild.
10376
8825ac63
ILT
10377 * object.cc (Sized_relobj::include_section_group): Adjust section
10378 indexes read from group data. Build vector to pass to
10379 layout_group.
10380 * layout.cc (Layout::layout_group): Add flags and shndxes
10381 parameters. Remove contents parameter. Change caller. Update
10382 explicit instantiations.
10383 * layout.h (class Layout): Update layout_group declaration.
10384 * output.cc (Output_data_group::Output_data_group): Add flags and
10385 input_shndxes parameters. Remove contents parameter. Change
10386 caller.
10387 (Output_data_group::do_write): Change input_sections_ to
10388 input_shndxes_.
10389 * output.h (class Output_data_group): Update constructor
10390 declaration. Rename input_sections_ to input_shndxes_.
10391 * testsuite/many_sections_test.cc: Add template.
10392
e94cf127
CC
103932008-04-30 Cary Coutant <ccoutant@google.com>
10394
4418b2d5
CC
10395 * target-reloc.h (relocate_section): Fix dead-pointer bug.
10396
e94cf127
CC
10397 * layout.cc (Layout::include_section): Refactored check for debug
10398 info section.
10399 (Layout::add_comdat): Add new parameters. Change type
10400 of signature parameter. Add object and shndx to signatures table.
10401 (Layout::find_kept_object): New function.
10402 * layout.h: Include <cstring>.
10403 (Layout::is_debug_info_section): New function.
10404 (Layout::add_comdat): Add new parameters.
10405 (Layout::find_kept_object): New function.
10406 (Layout::Kept_section): New struct.
10407 (Layout::Signatures): Change type of map range.
10408 * object.cc (Relobj::output_section_address): New function.
10409 (Sized_relobj::include_section_group): Add new parameters. Change
10410 calls to Layout::add_comdat. Change to build table of kept comdat
10411 groups and table mapping discarded sections to kept sections.
10412 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
10413 (Sized_relobj::do_layout): Change calls to include_section_group and
10414 include_linkonce_section.
10415 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
10416 value to zero when section is discarded.
10417 (Sized_relobj::map_to_kept_section): New function.
10418 * object.h (Relobj::output_section_address): New function.
10419 (Relobj::Comdat_group): New type.
10420 (Relobj::find_comdat_group): New function.
10421 (Relobj::Comdat_group_table): New type.
10422 (Relobj::Kept_comdat_section): New type.
10423 (Relobj::Kept_comdat_section_table): New type.
10424 (Relobj::add_comdat_group): New function.
10425 (Relobj::set_kept_comdat_section): New function.
10426 (Relobj::get_kept_comdat_section): New function.
10427 (Relobj::comdat_groups_): New field.
10428 (Relobj::kept_comdat_sections_): New field.
10429 (Symbol_value::input_value): Update comment.
10430 (Sized_relobj::map_to_kept_section) New function.
10431 (Sized_relobj::include_linkonce_section): Add new parameter.
10432 * target-reloc.h (Comdat_behavior): New type.
10433 (get_comdat_behavior): New function.
10434 (relocate_section): Add code to map a discarded section to the
10435 corresponding kept section when applying a relocation.
10436
e4e5049b
CS
104372008-04-30 Craig Silverstein <csilvers@google.com>
10438
10439 * dwarf_reader.cc (next_generation_count): New static var.
10440 (Addr2line_cache_entry): New struct.
10441 (addr2line_cache): New static var.
10442 (Dwarf_line_info::one_addr2line): Added caching.
10443 (Dwarf_line_info::clear_addr2line_cache): New function.
10444 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
10445 cache-size parameter.
10446 (Dwarf_line_info::one_addr2line_cache): New function.
10447 * symtab.cc (Symbol_table::detect_odr_violations): Pass
10448 new cache-size argument to one_addr2line(), and clear cache.
10449
d09e9154
CC
104502008-04-28 Cary Coutant <ccoutant@google.com>
10451
10452 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
10453 R_386_PC8 relocations.
10454
7ef73768
ILT
104552008-04-23 Ian Lance Taylor <iant@google.com>
10456
55438702
ILT
10457 * object.cc (Sized_relobj::include_section_group): Check for
10458 invalid section group.
10459
c165fb93
ILT
10460 * object.cc (make_elf_object): Correct test for 64-bit ELF file
10461 header size.
10462
7ef73768
ILT
10463 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
10464 than read for file header.
10465 * archive.cc (Archive::include_member): Likewise.
10466
6194aaab
L
104672008-04-23 Paolo Bonzini <bonzini@gnu.org>
10468
10469 * aclocal.m4: Regenerate.
10470 * configure: Regenerate.
10471
d491d34e
ILT
104722008-04-19 Ian Lance Taylor <iant@google.com>
10473
5ea2bac6
ILT
10474 * version.cc (version_string): Bump to 1.6.
10475
7bc3e21a
ILT
10476 * testsuite/Makefile.am (many_sections_r_test): New target.
10477 (many_sections_r_test_SOURCES): Remove.
10478 (many_sections_r_test_DEPENDENCIES): Remove.
10479 (many_sections_r_test_LDFLAGS): Remove.
10480 (many_sections_r_test_LDADD): Remove.
10481
7fcd3aa9
ILT
10482 * object.cc (Sized_relobj::do_add_symbols): Always pass
10483 local_symbol_count_ to add_from_relobj.
10484
4c94d6ae
ILT
10485 * testsuite/Makefile.am (many_sections_check.h): Only check one in
10486 every thousand variables.
10487 * testsuite/Makefile.in: Rebuild.
10488
d491d34e
ILT
10489 * object.cc (Xindex::initialize_symtab_xindex): New function.
10490 (Xindex::read_symtab_xindex): New function.
10491 (Xindex::sym_xindex_to_shndx): New function.
10492 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
10493 available.
10494 (Sized_relobj::do_initialize_xindex): New function.
10495 (Sized_relobj::do_read_symbols): Adjust section links.
10496 (Sized_relobj::symbol_section_and_value): Add is_ordinary
10497 parameter. Change all callers.
10498 (Sized_relobj::include_section_group): Adjust section links and
10499 symbol section indexes.
10500 (Sized_relobj::do_layout): Adjust section links.
10501 (Sized_relobj::do_count_local_symbols): Adjust section links and
10502 symbol section indexes.
10503 (Sized_relobj::do_finalize_local_symbols): Distinguish between
10504 ordinary and special symbols.
10505 (Sized_relobj::write_local_symbols): Add symtab_xindex and
10506 dynsym_xindex parameters. Change all callers. Adjust section
10507 links. Use SHN_XINDEX when needed.
10508 (Sized_relobj::get_symbol_location_info): Adjust section links.
10509 Don't get fooled by special symbols.
10510 * object.h (class Xindex): Define.
10511 (class Object): Add xindex_ parameter. Declare virtual functoin
10512 do_initialize_xindex.
10513 (Object::adjust_sym_shndx): New function.
10514 (Object::set_xindex): New protected function.
10515 (class Symbol_value): Add is_ordinary_shndx_ field.
10516 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
10517 (Symbol_value::value): Assert ordinary section.
10518 (Symbol_value::initialize_input_to_output_map): Likewise.
10519 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
10520 Change all callers.
10521 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
10522 all callers.
10523 (class Sized_relobj): Update declarations.
10524 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
10525 parameter. Change all callers.
10526 (Sized_relobj::adjust_shndx): New function.
10527 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
10528 field.
10529 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
10530 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
10531 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
10532 (Sized_dynobj::read_dynsym_section): Adjust section links.
10533 (Sized_dynobj::read_dynamic): Likewise.
10534 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
10535 section links.
10536 (Sized_dynobj::do_initialize_xindex): New function.
10537 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
10538 do_initialize_xindex.
10539 (Sized_dynobj::adjust_shndx): New function.
10540 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
10541 dynsym_xindex_ fields.
10542 (Layout::finalize): Add a call to set_section_indexes before
10543 creating the symtab sections.
10544 (Layout::set_section_indexes): Don't do anything if the section
10545 already has a section index.
10546 (Layout::create_symtab_sections): Add shnum parameter. Change
10547 caller. Create .symtab_shndx section if needed.
10548 (Layout::create_shdrs): Add shstrtab_section parameter. Change
10549 caller.
10550 (Layout::allocated_output_section_count): New function.
10551 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
10552 needed.
10553 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
10554 fields. Update declarations.
10555 (Layout::symtab_xindex): New function.
10556 (Layout::dynsym_xindex): New function.
10557 (class Write_symbols_task): Add layout_ field.
10558 (Write_symbols_task::Write_symbols_task): Add layout parameter.
10559 Change caller.
10560 * output.cc (Output_section_headers::Output_section_headers): Add
10561 shstrtab_section parameter. Change all callers.
10562 (Output_section_headers::do_sized_write): Store overflow values
10563 for section count and section string table section index in
10564 section header zero.
10565 (Output_file_header::do_sized_write): Check for overflow of
10566 section count and section string table section index.
10567 (Output_symtab_xindex::do_write): New function.
10568 (Output_symtab_xindex::endian_do_write): New function.
10569 * output.h (class Output_section_headers): Add shstrtab_section_.
10570 Update declarations.
10571 (class Output_symtab_xindex): Define.
10572 (Output_section::has_out_shndx): New function.
10573 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
10574 field.
10575 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
10576 Change all callers.
10577 (Sized_symbol::init): Likewise.
10578 (Symbol::output_section): Check for ordinary symbol.
10579 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
10580 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
10581 callers.
10582 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
10583 Change all callers. Simplify handling of symbols from sections
10584 not included in the link.
10585 (Symbol_table::add_from_dynobj): Handle ordinary symbol
10586 distinction.
10587 (Weak_alias_sorter::operator()): Assert that symbols are
10588 ordinary.
10589 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
10590 distinction.
10591 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
10592 parameters. Change all callers.
10593 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
10594 symbol distinction. Use SHN_XINDEX when needed.
10595 (Symbol_table::write_section_symbol): Add symtab_xindex
10596 parameter. Change all callers.
10597 (Symbol_table::sized_write_section_symbol): Likewise. Use
10598 SHN_XINDEX when needed.
10599 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
10600 declarations.
10601 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
10602 (Symbol::is_defined): Check is_ordinary.
10603 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
10604 (Symbol::is_absolute, Symbol::is_common): Likewise.
10605 (class Sized_symbol): Update declarations.
10606 (class Symbol_table): Update declarations.
10607 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
10608 parameters. Change all callers.
10609 (Sized_symbol::override): Likewise.
10610 (Symbol_table::override): Likewise.
10611 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
10612 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
10613 is_ordinary, and orig_st_shndx parameters. Change all callers.
10614 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
10615 to be in an ordinary section.
10616 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
10617 object and is_ordinary parameters. Change all callers.
10618 (Sized_dwarf_line_info::read_relocs): Add object parameter.
10619 Change all callers. Don't add undefined or non-ordinary symbols
10620 to reloc_map_.
10621 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
10622 Change all callers.
10623 * dwarf_reader.h (class Sized_dwarf_line_info): Update
10624 declarations.
10625 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
10626 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
10627 (Sized_relobj::relocate_sections): Likewise.
10628 * target-reloc.h (scan_relocs): Adjust section symbol index.
10629 (scan_relocatable_relocs): Likewise.
10630 * i386.cc (Scan::local): Check for ordinary symbols.
10631 * sparc.cc (Scan::local): Likewise.
10632 * x86_64.cc (Scan::local): Likewise.
10633 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
10634 to symbol_section_and_value.
10635 * testsuite/many_sections_test.cc: New file.
10636 * testsuite/Makefile.am (BUILT_SOURCES): Define.
10637 (check_PROGRAMS): Add many_sections_test.
10638 (many_sections_test_SOURCES): Define.
10639 (many_sections_test_DEPENDENCIES): Define.
10640 (many_sections_test_LDFLAGS): Define.
10641 (BUILT_SOURCES): Add many_sections_define.h.
10642 (many_sections_define.h): New target.
10643 (BUILT_SOURCES): Add many_sections_check.h.
10644 (many_sections_check.h): New target.
10645 (check_PROGRAMS): Add many_sections_r_test.
10646 (many_sections_r_test_SOURCES): Define.
10647 (many_sections_r_test_DEPENDENCIES): Define.
10648 (many_sections_r_test_LDFLAGS): Define.
10649 (many_sections_r_test_LDADD): Define.
10650 (many_sections_r_test.o): New target.
10651 * testsuite/Makefile.in: Rebuild.
10652
c5818ff1
CC
106532008-04-17 Cary Coutant <ccoutant@google.com>
10654
10655 * errors.cc (Errors::info): New function.
10656 (gold_info): New function.
10657 * errors.h (Errors::info): New function.
10658 * gold.h (gold_info): New function.
10659 * object.cc (Input_objects::add_object): Print trace output.
10660 * options.cc (options::parse_set): New function.
10661 (General_options::parse_wrap): Deleted.
10662 (General_options::General_options): Deleted initializer.
10663 * options.h (options::String_set): New typedef.
10664 (options::parse_set): New function.
10665 (DEFINE_set): New macro.
10666 (General_options::wrap): Changed to use DEFINE_set. Changed
10667 callers of any_wrap_symbols and is_wrap_symbol.
10668 (General_options::trace, General_options::trace_symbol):
10669 New options.
10670 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
10671 (General_options::wrap_symbols_): Deleted.
10672 * symtab.cc (Symbol_table::add_from_object): Print trace output.
10673
b5be4a7c
DM
106742008-04-17 David S. Miller <davem@davemloft.net>
10675
10676 * options.cc (General_options::parse_V): New function.
10677 * options.h: Add entries for -V and -Qy.
10678
155a0dd7
ILT
106792008-04-17 Ian Lance Taylor <iant@google.com>
10680
10681 * common.cc (Symbol_table::allocate_commons): Remove options
10682 parameter. Change caller.
10683 (Symbol_table::do_allocate_commons): Remove options parameter.
10684 Change caller. Just call do_allocate_commons_list twice.
10685 (Symbol_table::do_allocate_commons_list): New function, broken out
10686 of do_allocate_commons.
10687 * common.h (class Allocate_commons_task): Remove options_ field.
10688 Update constructor.
10689 * symtab.cc (Symbol_table::Symbol_table): Initialize
10690 tls_commons_.
10691 (Symbol_table::add_from_object): Put TLS common symbols on
10692 tls_commons_ list.
10693 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
10694 which are IN_OUTPUT_DATA.
10695 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
10696 allocate_commons and do_allocate_commons declarations. Declare
10697 do_allocate_commons_list.
10698 * gold.cc (queue_middle_tasks): Update creation of
10699 Allocate_commons_task to not pass options.
10700 * testsuite/Makefile.am (INCLUDES): Add -I.. .
10701 (TLS_TEST_C_FLAGS): New variable.
10702 (tls_test_c_pic.o): New target.
10703 (tls_test_shared.so): Link in tls_test_c_pic.o.
10704 (tls_test_c_pic_ie.o): New target.
10705 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
10706 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
10707 (tls_test_c.o): New target.
10708 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
10709 (tls_pic_test_LDADD): Likewise.
10710 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
10711 (tls_shared_gd_to_ie_test_LDADD): Likewise.
10712 (tls_test_c_gnu2.o): New target.
10713 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
10714 tls_test_c_gnu2.o.
10715 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
10716 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
10717 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
10718 * testsuite/tls_test.cc: Include "config.h".
10719 (t_last): Call t11_last.
10720 * testsuite/tls_test.h (t11, t11_last): Declare.
10721 * testsuite/tls_test_c.c: New file.
10722 * testsuite/tls_test_main.cc (thread_routine): Call t11.
10723 * configure.ac: Check for OpenMP support.
10724 * configure, config.in, Makefile.in: Rebuild.
10725 * testsuite/Makefile.in: Rebuild.
10726
edfbb029
CC
107272008-04-16 Cary Coutant <ccoutant@google.com>
10728
10729 * i386.cc (Target_i386::define_tls_base_symbol): New function.
10730 (Target_i386::tls_base_symbol_defined_): New field.
10731 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
10732 (Target_i386::Scan::global): Likewise.
10733 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
10734 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
10735 (Target_x86_64::tls_base_symbol_defined_): New field.
10736 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
10737 (Target_x86_64::Scan::global): Likewise.
10738
f3c69fca
CC
107392008-04-16 Cary Coutant <ccoutant@google.com>
10740
10741 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
10742 (Symbol::needs_plt_entry): Allow weak undefined symbols.
10743 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
10744 building shared libraries.
10745 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
10746 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
10747 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
10748 * testsuite/Makefile.in: Rebuild.
10749 * testsuite/weak_undef.h: New file.
10750 * testsuite/weak_undef_file1.cc: Add extra test cases.
10751 * testsuite/weak_undef_file2.cc: Likewise.
10752 * testsuite/weak_undef_test.cc: Likewise.
10753
7c414435
DM
107542008-04-16 David S. Miller <davem@davemloft.net>
10755
32b769e1
DM
10756 * sparc.cc (Target_sparc::Scan): Change from struct to class.
10757 Add issued_non_pic_error_ field. Declare check_non_pic.
10758 (Target_sparc::Scan::check_non_pic): New function.
10759 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
10760 (Target_sparc::Scan::global): Likewise.
10761
11936fb1
DM
10762 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
10763 * configure: Rebuild.
10764
7c414435
DM
10765 * options.h (DEFINE_enable): New macro.
10766 (new_dtags): New enable option.
10767 (initfirst, interpose, loadfltr, nodefaultlib,
10768 nodelete, nodlopen, nodump): New -z options.
10769 * layout.cc (Layout:finish_dynamic_section): If new
10770 dtags enabled, emit DT_RUNPATH. Also, emit a
10771 DT_FLAGS_1 containing any specified -z flags.
10772
85c7bf8b
ILT
107732008-04-16 Ian Lance Taylor <iant@google.com>
10774
12c0daef
ILT
10775 * copy-relocs.cc: New file.
10776 * copy-relocs.h: New file.
10777 * reloc.cc: Remove Copy_relocs code.
10778 * reloc.h: Likewise.
10779 * reloc-types.h (struct Reloc_types) [both versions]: Add
10780 get_reloc_addend_noerror.
10781 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
10782 variants of add_global which take an addend which must be zero.
10783 * i386.cc: Include "copy-relocs.h".
10784 (class Target_i386): Change type of copy_relocs_ to variable,
10785 update initializer.
10786 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
10787 Change all callers.
10788 (Target_i386::do_finalize_sections): Change handling of
10789 copy_relocs_.
10790 * sparc.cc: Include "copy-relocs.h".
10791 (class Target_sparc): Change type of copy_relocs_ to variable,
10792 update initializer.
10793 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
10794 Change all callers.
10795 (Target_sparc::do_finalize_sections): Change handling of
10796 copy_relocs_.
10797 * x86_64.cc: Include "copy-relocs.h".
10798 (class Target_x86_64): Change type of copy_relocs_ to variable,
10799 update initializer.
10800 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
10801 class. Change all callers.
10802 (Target_x86_64::do_finalize_sections): Change handling of
10803 copy_relocs_.
10804 * Makefile.am (CCFILES): Add copy-relocs.cc.
10805 (HFILES): Add copy-relocs.h.
10806
4f4995b6
ILT
10807 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
10808
85c7bf8b
ILT
10809 * testsuite/script_test_4.sh: Permit leading zeroes.
10810
4f2a9edd
ILT
108112008-04-15 Ian Lance Taylor <iant@google.com>
10812
e6188289
ILT
10813 * script-sections.cc (Script_sections::create_segments): Use
10814 header_size_adjustment even when there is enough room for the
10815 headers.
10816 * testsuite/script_test_4.sh: New file.
10817 * testsuite/script_test_4.t: New file.
10818 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
10819 (check_DATA): Add script_test_4.stdout.
10820 (MOSTLYCLEANFILES): Likewise.
10821 (script_test_4): New target.
10822 (script_test_4.stdout): New target.
10823 * testsuite/Makefile.in: Rebuild.
10824
4f2a9edd
ILT
10825 * sparc.cc: Add definitions for Output_data_plt_sparc class
10826 constants.
10827
f5314dd5
DM
108282008-04-14 David S. Miller <davem@davemloft.net>
10829
10830 * sparc.cc: New file.
10831 * Makefile.am (TARGETSOURCES): Add sparc.cc
10832 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
10833 * configure.tgt: Document targ_extra_size and
10834 targ_extra_big_endian. Add entries for sparc-* and
10835 sparc64-*.
10836 * configure.ac: Handle targ_extra_size and
10837 targ_extra_big_endian.
10838 * Makefile.in: Rebuild.
10839 * configure: Likewise.
10840 * po/POTFILES.in: Likewise.
10841 * po/gold.pot: Likewise.
10842
154e0e9a
ILT
108432008-04-14 Ian Lance Taylor <iant@google.com>
10844
10845 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
10846 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
10847 in the name/type/flags to section mapping. Don't call
10848 allocate_output_section.
10849 (Layout::choose_output_section): Change parameter from adjust_name
10850 to is_input_section. Don't permit input sections after sections
10851 are attached to segments. Don't call allocate_output_section.
10852 (Layout::layout_eh_frame): Call update_flags_for_input_section,
10853 not write_enable_output_section.
10854 (Layout::make_output_section): Don't push to
10855 unattached_section_list_ nor call attach_to_segment. Call
10856 attach_section_to_segment if sections are attached.
10857 (Layout::attach_sections_to_segments): New function.
10858 (Layout::attach_section_to_segment): New function.
10859 (Layout::attach_allocated_section_to_segment): Rename from
10860 attach_to_segment. Remove flags parameter.
10861 (Layout::allocate_output_section): Remove function.
10862 (Layout::write_enable_output_section): Remove function.
10863 * layout.h (class Layout): Update for above changes. Add new
10864 field sections_are_attached_.
10865 * output.h (Output_section::update_flags_for_input_section): New
10866 function.
10867 * output.cc (Output_section::add_input_section): Call
10868 update_flags_for_input_section.
10869 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
10870
009a67a2
CC
108712008-04-11 Cary Coutant <ccoutant@google.com>
10872
10873 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
10874 thought unnecessary.
10875 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
10876
759b1a24
ILT
108772008-04-11 Ian Lance Taylor <iant@google.com>
10878
10879 * output.h (class Output_section_data): Remove inline definition
10880 of set_addralign.
10881 * output.cc (Output_section_data::set_addralign): New function.
10882
c2b45e22
CC
108832008-04-11 Cary Coutant <ccoutant@google.com>
10884
10885 Add support for TLS descriptors for i386 and x86_64.
10886 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
10887 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
10888 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
10889 GOT_TYPE_TLS_DESC.
10890 (Target_i386::got_mod_index_entry): Remove unnecessary code.
10891 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
10892 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
10893 relocations.
10894 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
10895 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
10896 Fix problem with initial-exec relocations.
10897 (Target_i386::Relocate::relocate_tls): Likewise.
10898 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
10899 relaxation.
10900 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
10901 support for section-plus-offset dynamic table entries.
10902 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
10903 (Output_data_dynamic::Dynamic_entry): Add support for
10904 section-plus-offset dynamic table entries.
10905 (Output_data_dynamic::Classification): Likewise.
10906 (Output_data_dynamic::classification_): Renamed offset_.
10907 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
10908 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
10909 (Target_x86_64::make_plt_section): New function.
10910 (Target_x86_64::reserve_tlsdesc_entries): New function.
10911 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
10912 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
10913 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
10914 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
10915 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
10916 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
10917 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
10918 add extra PLT entry for TLS descriptors.
10919 (Output_data_plt_x86_64::got_): New field.
10920 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
10921 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
10922 fields.
10923 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
10924 descriptors.
10925 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
10926 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
10927 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
10928 R_386_TLS_DESC_CALL relocations.
10929 (Target_x86_64::Scan::global): Likewise.
10930 (Target_x86_64::do_finalize_sections): Add dynamic table entries
10931 for TLS descriptors.
10932 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
10933 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
10934 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
10935 GD-to-IE relaxation.
10936 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
10937 and TLS_DESCRIPTORS.
10938 * Makefile.in: Rebuild.
10939 * configure: Rebuild.
10940 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
10941 (tls_test_shared2.so): New target.
10942 (tls_shared_gd_to_ie_test_SOURCES): New variable.
10943 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
10944 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
10945 (tls_shared_gd_to_ie_test_LDADD): New variable.
10946 (tls_shared_gnu2_gd_to_ie_test): New target.
10947 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
10948 New targets.
10949 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
10950 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
10951 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
10952 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
10953 (tls_shared_gnu2_test): New target.
10954 (tls_test_gnu2_shared.so): New target.
10955 (tls_shared_gnu2_test_SOURCES): New variable.
10956 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
10957 (tls_shared_gnu2_test_LDFLAGS): New variable.
10958 (tls_shared_gnu2_test_LDADD): New variable.
10959 * testsuite/Makefile.in: Rebuild.
10960 * testsuite/Makefile.
10961
83bfb6b7
ILT
109622008-04-11 Ian Lance Taylor <iant@google.com>
10963
10964 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
10965 justsyms.t.
10966 * testsuite/Makefile.in: Rebuild.
10967
10968 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
10969 long.
10970 * testsuite/script_test_2.cc (main): Adjust test.
10971
706e1f5e
ILT
109722008-04-11 David S. Miller <davem@davemloft.net>
10973 Ian Lance Taylor <iant@google.com>
10974
10975 * options.h (General_options): Add entries for '-Y' and
10976 '-relax'.
10977 * options.cc (General_options:finalize): If -Y was used, add those
10978 entries to the library path instead of the default "/lib" and
10979 "/usr/lib".
10980
7c98e6bb
DM
109812008-04-11 David S. Miller <davem@davemloft.net>
10982
10983 * testsuite/justsyms.t: Start at 0x100.
10984 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
10985 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
10986 long.
10987 * testsuite/script_test_2.cc: Adjust string and section length
10988 checks.
7c98e6bb 10989
99a37bfd
ILT
109902008-04-09 Ian Lance Taylor <iant@google.com>
10991
2cefc357
ILT
10992 PR gold/5996
10993 * script-sections.cc (Sections_element::allocate_to_segment): Add
10994 orphan parameter.
10995 (Output_section_definition::allocate_to_segment): Likewise.
10996 (Orphan_output_section::allocate_to_segment): Likewise.
10997 (Script_sections::attach_sections_using_phdrs_clause): Don't
10998 propagate non-PT_LOAD segments to orphan sections.
10999 * testsuite/Makefile.am (script_test_3.stdout): Generate using
11000 readelf rather than objdump.
11001 * testsuite/script_test_3.sh: Adjust accordingly. Test that
11002 .interp section and PT_INTERP segment are the same size.
11003 * testsuite/Makefile.in: Rebuild.
11004
99a37bfd
ILT
11005 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
11006 aliases for symbols defined in the same object.
11007 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
11008 (weak_alias_test_SOURCES): New variable.
11009 (weak_alias_test_DEPENDENCIES): New variable.
11010 (weak_alias_test_LDFLAGS): New variable.
11011 (weak_alias_test_LDADD): New variable.
11012 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
11013 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
11014 (weak_alias_test_3.o): New target.
11015 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
11016 * testsuite/weak_alias_test_main.cc: New file.
11017 * testsuite/weak_alias_test_1.cc: New file.
11018 * testsuite/weak_alias_test_2.cc: New file.
11019 * testsuite/weak_alias_test_3.cc: New file.
11020
780e49c5
ILT
110212008-04-08 Ian Lance Taylor <iant@google.com>
11022
cdb0b8f5
ILT
11023 * options.h (class General_options): Add --noinhibit-exec option.
11024 * main.cc (main): Check --noinhibit-exec.
11025
0864d551
ILT
11026 * options.h (class General_options): Define --wrap as a special
11027 option. Add wrap_symbols_ field.
11028 (General_options::any_wrap_symbols): New function.
11029 (General_options::is_wrap_symbol): New function.
11030 * options.cc (General_options::parse_wrap): New function.
11031 (General_options::General_options): Initialize wrap_symbols_.
11032 * symtab.cc (Symbol_table::wrap_symbol): New function.
11033 (Symbol_table::add_from_object): Handle --wrap.
11034 * symtab.h (class Symbol_table): Declare wrap_symbol.
11035 * target.h (Target::wrap_char): New function.
11036 (Target::Target_info): Add wrap_char field.
11037 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
11038 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
11039 * testsuite/testfile.cc (Target_test::test_target_info):
11040 Likewise.
11041
789aa6de
ILT
11042 * errors.cc (Errors::undefined_symbol): Mention symbol version if
11043 there is one.
11044
2c38906f
ILT
11045 * layout.h (class Layout): Add added_eh_frame_data_ field.
11046 * layout.cc (Layout::Layout): Initialize new field.
11047 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
11048 output section until we find a section we merged successfully.
11049 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
11050 that the size be non-zero.
11051
780e49c5
ILT
11052 * merge.cc (Object_merge_map::get_output_offset): Remove inline
11053 qualifier.
11054
7fcd0256
ILT
110552008-04-08 Craig Silverstein <csilvers@google.com>
11056
11057 * configure.ac: Export new conditional variable HAVE_ZLIB.
11058 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
11059 on HAVE_ZLIB.
11060 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
11061 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11062
6835af53
ILT
110632008-04-07 Ian Lance Taylor <iant@google.com>
11064
e24f324c
ILT
11065 * version.cc (version_string): Set to "1.5".
11066
a036edd8
ILT
11067 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
11068 Add issued_non_pic_error_ field. Declare check_non_pic.
11069 (Target_x86_64::Scan::check_non_pic): New function.
11070 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
11071 (Target_x86_64::Scan::global): Likewise.
11072
624f8810
ILT
11073 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
11074 addend parameter. Change caller. Handle merge sections.
11075 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
11076 Address to Addend. Don't add in the result of
11077 local_section_offset, pass down the addend and use the returned
11078 value.
11079 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
11080 Update declarations of local_section_offset and symbol_value.
11081 * testsuite/two_file_test_1.cc (t18): New function.
11082 * testsuite/two_file_test_2.cc (f18): New function.
11083 * testsuite/two_file_test_main.cc (main): Call t18.
11084 * testsuite/two_file_test.h (t18, f18): Declare.
11085
6835af53
ILT
11086 * configure.ac: Don't test for objdump, c++filt, or readelf.
11087 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
11088 conditionals.
11089 (TEST_READELF): New variable.
11090 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
11091 (check_PROGRAMS): Add two_file_strip_test.
11092 (two_file_strip_test): New target.
11093 (check_PROGRAMS): Add two_file_same_shared_strip_test.
11094 (two_file_same_shared_strip_test_SOURCES): New variable.
11095 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
11096 (two_file_same_shared_strip_test_LDFLAGS): New variable.
11097 (two_file_same_shared_strip_test_LDADD): New variable.
11098 (two_file_shared_strip.so): New target.
11099 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
11100 (ver_test_5.syms, ver_test_7.syms): Likewise.
11101 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
11102 (strip_test_3.stdout): Use TEST_OBJDUMP.
11103 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11104
86925eef
CC
111052008-04-04 Cary Coutant <ccoutant@google.com>
11106
11107 * symtab.h (Symbol::is_weak_undefined): New function.
11108 (Symbol::is_strong_undefined): New function.
11109 (Symbol::is_absolute): New function.
11110 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
11111 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
11112 absolute symbols.
11113 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
11114 (weak_undef_test): New target.
11115 * testsuite/Makefile.in: Rebuild.
11116 * testsuite/weak_undef_file1.cc: New file.
11117 * testsuite/weak_undef_file2.cc: New file.
11118 * testsuite/weak_undef_test.cc: New file.
11119
126f3ece
ILT
111202008-04-03 Craig Silverstein <csilvers@google.com>
11121
11122 * compressed_output.h (class Output_compressed_section): Use
11123 unsigned buffer.
11124 * compressed_output.cc (zlib_compress): Use unsigned buffers,
11125 add zlib header.
11126 (zlib_compressed_suffix): Removed.
11127 (Output_compressed_section::set_final_data_size): Use unsigned
11128 buffers.
11129 * testsuite/Makefile.am (flagstest_compress_debug_sections):
11130 Fix linker invocation.
11131 (flagstest_o_specialfile_and_compress_debug_sections):
11132 Likewise.
11133 * testsuite/Makefile.in: Regenerated.
11134
deae2a14
DM
111352008-04-02 David S. Miller <davem@davemloft.net>
11136
11137 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
11138 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
11139
70752818
ILT
111402008-04-02 Craig Silverstein <csilvers@google.com>
11141
11142 * TODO: New file.
11143
39d0cb0e
ILT
111442008-04-02 Ian Lance Taylor <iant@google.com>
11145
11146 * fileread.cc (File_read::find_view): Add byteshift and vshifted
11147 parameters. Update for new key type to views_. Change all
11148 callers.
11149 (File_read::read): Adjust for byteshift in returned view.
11150 (File_read::add_view): New function, broken out of
11151 find_and_make_view.
11152 (File_read::make_view): New function, broken out of
11153 find_and_make_view.
11154 (File_read::find_or_make_view): Add offset and aligned
11155 parameters. Rewrite accordingly. Change all callers.
11156 (File_read::get_view): Add offset and aligned parameters. Adjust
11157 for byteshift in return value.
11158 (File_read::get_lasting_view): Likewise.
11159 * fileread.h (class File_read): Update declarations.
11160 (class File_read::View): Add byteshift_ field. Add byteshift to
11161 constructor. Add byteshift method.
11162 * archive.h (Archive::clear_uncached_views): New function.
11163 (Archive::get_view): Add aligned parameter. Change all callers.
11164 * object.h (Object::get_view): Add aligned parameter. Change all
11165 callers.
11166 (Object::get_lasting_view): Likewise.
11167
11168 * fileread.cc (File_read::release): Don't call clear_views if
11169 there are multiple objects.
11170 * fileread.h (File_read::clear_uncached_views): New function.
11171 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
11172 on the archive.
11173
a1207466
CC
111742008-03-31 Cary Coutant <ccoutant@google.com>
11175
11176 Add thin archive support.
11177 * archive.cc (Archive::armagt): New const.
11178 (Archive::setup): Remove task parameter and calls to unlock.
11179 (Archive::unlock_nested_archives): New function.
11180 (Archive::read_header): Add nested_off parameter. Change
11181 all callers.
11182 (Archive::interpret_header): Likewise.
11183 (Archive::include_all_members): Change to handle thin
11184 archives.
11185 (Archive::include_member): Likewise.
11186 * archive.h (Archive::Archive): Add new parameters and
11187 initializers.
11188 (Archive::armagt): New const.
11189 (Archive::setup): Remove task parameter.
11190 (Archive::unlock_nested_archives): New function.
11191 (Archive::read_header): Add nested_off parameter.
11192 (Archive::interpret_header): Likewise.
11193 (Archive::Nested_archive_table): New typedef.
11194 (Archive::is_thin_archive_): New field.
11195 (Archive::nested_archives_): New field.
11196 (Archive::options_): New field.
11197 (Archive::dirpath_): New field.
11198 (Archive::task_): New field.
11199 * readsyms.cc (Read_symbols::do_read_symbols): Add check
11200 for thin archives. Pass additional parameters to
11201 Archive::Archive. Unlock the archive file after calling
11202 Archive::setup.
cd536b21 11203
479f6503
ILT
112042008-03-29 Ian Lance Taylor <iant@google.com>
11205
686c8caf
ILT
11206 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
11207 version symbol to be local.
11208 * testsuite/ver_test_4.sh: New file.
11209 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
11210 (check_DATA): Add ver_test_4.syms.
11211 (ver_test_4.syms): New target.
11212 * testsuite/Makefile.in: Rebuild.
11213
ab794b6b
ILT
11214 * output.cc
11215 (Output_section::Input_section_sort_entry::has_priority): New
11216 function.
11217 (Output_section::Input_section_sort_entry::match_file_name): New
11218 function.
11219 (Output_section::Input_section_sort_entry::match_section_name):
11220 Remove.
11221 (Output_section::Input_section_sort_entry::match_section_name_prefix):
11222 Remove.
11223 (Output_section::Input_section_sort_entry::match_section_file):
11224 Remove.
11225 (Output_section::Input_section_sort_compare::operator()): Rewrite
11226 using new Input_section_sort_entry functions. Sort crtbegin and
11227 crtend first. Sort sections with no priority before sections with
11228 a priority.
11229 * testsuite/initpri1.c (d3): Check j != 4.
11230 (cd5): New constructor/destructor function.
11231 (main): Check j != 2.
11232
479f6503
ILT
11233 * symtab.cc (Symbol_table::add_from_object): If we don't use the
11234 new symbol when resolving, don't call set_is_default.
11235 * testsuite/ver_test_7.cc: New file.
11236 * testsuite/ver_test_7.sh: New file.
11237 * testsuite/Makefile.am (ver_test_7.so): New target.
11238 (ver_test_7.o): New target.
11239 (check_SCRIPTS): Add ver_test_7.sh.
11240 (check_DATA): Add ver_test_7.syms.
11241 (ver_test_7.syms): New target.
11242
2fd32231
ILT
112432008-03-28 Ian Lance Taylor <iant@google.com>
11244
11245 * layout.cc (Layout::layout): If we see an input section with a
11246 name that needs sorting, set the must_sort flag for the output
11247 section.
11248 (Layout::make_output_section): If the name of the output section
11249 indicates that it might require sorting, set the may_sort flag.
11250 * output.h (Output_section::may_sort_attached_input_sections): New
11251 function.
11252 (Output_section::set_may_sort_attached_input_sections): New
11253 function.
11254 (Output_section::must_sort_attached_input_sections): New
11255 function.
11256 (Output_section::set_must_sort_attached_input_sections): New
11257 function.
11258 (class Output_section): Declare Input_section_sort_entry. Define
11259 Input_section_sort_compare. Declare
11260 sort_attached_input_sections. Add new fields:
11261 may_sort_attached_input_sections_,
11262 must_sort_attached_input_sections_,
11263 attached_input_sections_are_sorted_.
11264 * output.cc (Output_section::Output_section): Initialize new
11265 fields.
11266 (Output_section::add_input_section): Add an entry to
11267 input_sections_ if may_sort or must_sort are true.
11268 (Output_section::set_final_data_size): Call
11269 sort_attached_input_sections if necessary.
11270 (Output_section::Input_section_sort_entry): Define new class.
11271 (Output_section::Input_section_sort_compare::operator()): New
11272 function.
11273 (Output_section::sort_attached_input_sections): New function.
11274 * configure.ac: Check whether the compiler supports constructor
11275 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
11276 * testsuite/initpri1.c: New file.
11277 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
11278 CONSTRUCTOR_PRIORITY.
11279 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
11280 (initpri1_LDFLAGS): New variable.
11281 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11282
18e6b24e
ILT
112832008-03-27 Ian Lance Taylor <iant@google.com>
11284
49bdd526
ILT
11285 * common.cc (Sort_commons::operator): Correct sorting algorithm.
11286 * testsuite/common_test_1.c: New file.
11287 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
11288 (common_test_1_SOURCES): New variable.
11289 (common_test_1_DEPENDENCIES): New variable.
11290 (common_test_1_LDFLAGS): New variable.
11291
18e6b24e
ILT
11292 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
11293 and commons_ correctly when NAME/VERSION does not override
11294 NAME/NULL.
11295 * testsuite/ver_test_6.c: New file.
11296 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
11297 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
11298 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
11299
04bf7072
ILT
113002008-03-26 Ian Lance Taylor <iant@google.com>
11301
5871526f
ILT
11302 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
11303 of an undefined symbol from a version script.
11304 * testsuite/Makefile.am (ver_test_5.so): New target.
11305 (ver_test_5.o): New target.
11306 (check_SCRIPTS): Add ver_test_5.sh.
11307 (check_DATA): Add ver_test_5.syms.
11308 (ver_test_5.syms): New target.
11309 * testsuite/ver_test_5.cc: New file.
11310 * testsuite/ver_test_5.script: New file.
11311 * testsuite/ver_test_5.sh: New file.
11312 * Makefile.in, testsuite/Makefile.in: Rebuild.
11313
04bf7072
ILT
11314 PR gold/5986
11315 Fix problems building gold with gcc 4.3.0.
11316 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
11317 (gold_error_at_location, gold_warning_at_location): Use it.
11318 * configure.ac: Check whether we can compile and use a template
11319 function with a printf attribute.
11320 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
11321 when jumping over bytes.
11322 * object.cc: Instantiate Object::read_section_data.
11323 * debug.h: Include <cstring>
11324 * dwarf_reader.cc: Include <algorithm>
11325 * main.cc: Include <cstring>.
11326 * options.cc: Include <cstring>.
11327 * output.cc: Include <cstring>.
11328 * script.cc: Include <cstring>.
11329 * script.h: Include <string>.
11330 * symtab.cc: Include <cstring> and <algorithm>.
11331 * target-select.cc: Include <cstring>.
11332 * version.cc: Include <string>.
11333 * testsuite/testmain.cc: Include <cstdlib>.
11334 * configure, config.in: Rebuild.
11335
874c5b28
ILT
113362008-03-25 Ian Lance Taylor <iant@google.com>
11337
819d6c3a
ILT
11338 * options.cc: Include "../bfd/bfdver.h".
11339 (options::help): Print bug reporting address.
11340
f4b2c6f5
ILT
11341 * version.cc (print_version): Adjust output for current value of
11342 BFD_VERSION_STRING.
11343
11344 * NEWS: New file.
11345
e96caa79
ILT
11346 * options.cc (options::help): Print list of supported targets.
11347 * target-select.h: Include <vector>.
11348 (class Target_selector): Make machine_, size_, and is_big_endian_
11349 fields const. Add bfd_name_ and instantiated_target_ fields.
11350 (Target_selector::Target_selector): Add bfd_name parameter.
11351 (Target_selector::recognize): Make non-virtual, call
11352 do_recognize.
11353 (Target_selector::recognize_by_name): Make non-virtual, call
11354 do_recognize_by_name.
11355 (Target_selector::supported_names): New function.
11356 (Target_selector::bfd_name): New function.
11357 (Target_selector::do_instantiate_target): New pure virtual
11358 function.
11359 (Target_selector::do_recognize): New virtual function.
11360 (Target_selector::do_recognize_by_name): New virtual function.
11361 (Target_selector::instantiate_target): New private function.
11362 (supported_target_names): Declare.
11363 * target-select.cc (Target_selector::Target_selector): Update for
11364 new parameter and fields.
11365 (select_target_by_name): Check that the name matches before
11366 calling recognize_by_name.
11367 (supported_target_names): New function.
11368 * i386.cc (class Target_selector_i386): Update Target_selector
11369 constructor call. Remove recognize and recognize_by_name. Add
11370 do_instantiate_target.
11371 * x86_64.cc (class Target_selector_x86_64): Likewise.
11372 * testsuite/testfile.cc (class Target_selector_test): Update for
11373 changes to Target_selector.
11374
874c5b28
ILT
11375 * README: Rewrite, with some notes on unsupported features.
11376
0a65a3a7
CC
113772008-03-24 Cary Coutant <ccoutant@google.com>
11378
11379 * i386.cc (Target_i386::Got_type): New enum declaration.
11380 (Target_i386::Scan::local): Updated callers of Output_data_got
11381 member functions.
11382 (Target_i386::Scan::global): Likewise.
11383 (Target_i386::Relocate::relocate): Likewise.
11384 (Target_i386::Relocate::relocate_tls): Likewise.
11385 * object.h (Got_offset_list): New class.
11386 (Sized_relobj::local_has_got_offset): Added got_type parameter.
11387 (Sized_relobj::local_got_offset): Likewise.
11388 (Sized_relobj::set_local_got_offset): Likewise.
11389 (Sized_relobj::local_has_tls_got_offset): Removed.
11390 (Sized_relobj::local_tls_got_offset): Removed.
11391 (Sized_relobj::set_local_tls_got_offset): Removed.
11392 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
11393 * output.cc (Output_data_got::add_global): Added got_type parameter.
11394 (Output_data_got::add_global_with_rel): Likewise.
11395 (Output_data_got::add_global_with_rela): Likewise.
11396 (Output_data_got::add_global_pair_with_rel): New function.
11397 (Output_data_got::add_global_pair_with_rela): New function.
11398 (Output_data_got::add_local): Added got_type parameter.
11399 (Output_data_got::add_local_with_rel): Likewise.
11400 (Output_data_got::add_local_with_rela): Likewise.
11401 (Output_data_got::add_local_pair_with_rel): New function.
11402 (Output_data_got::add_local_pair_with_rela): New function.
11403 (Output_data_got::add_global_tls): Removed.
11404 (Output_data_got::add_global_tls_with_rel): Removed.
11405 (Output_data_got::add_global_tls_with_rela): Removed.
11406 (Output_data_got::add_local_tls): Removed.
11407 (Output_data_got::add_local_tls_with_rel): Removed.
11408 (Output_data_got::add_local_tls_with_rela): Removed.
11409 * output.h (Output_data_got::add_global): Added got_type parameter.
11410 (Output_data_got::add_global_with_rel): Likewise.
11411 (Output_data_got::add_global_with_rela): Likewise.
11412 (Output_data_got::add_global_pair_with_rel): New function.
11413 (Output_data_got::add_global_pair_with_rela): New function.
11414 (Output_data_got::add_local): Added got_type parameter.
11415 (Output_data_got::add_local_with_rel): Likewise.
11416 (Output_data_got::add_local_with_rela): Likewise.
11417 (Output_data_got::add_local_pair_with_rel): New function.
11418 (Output_data_got::add_local_pair_with_rela): New function.
11419 (Output_data_got::add_global_tls): Removed.
11420 (Output_data_got::add_global_tls_with_rel): Removed.
11421 (Output_data_got::add_global_tls_with_rela): Removed.
11422 (Output_data_got::add_local_tls): Removed.
11423 (Output_data_got::add_local_tls_with_rel): Removed.
11424 (Output_data_got::add_local_tls_with_rela): Removed.
11425 * resolve.cc (Symbol::override_base_with_special): Removed
11426 reference to has_got_offset_ field.
11427 * symtab.cc (Symbol::init_fields): Replaced initialization
11428 of got_offset_ with got_offsets_. Removed initialization
11429 of has_got_offset_
53fcba31 11430 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
11431 (Symbol::got_offset): Likewise.
11432 (Symbol::set_got_offset): Likewise.
11433 (Symbol::has_tls_got_offset): Removed.
11434 (Symbol::tls_got_offset): Removed.
11435 (Symbol::set_tls_got_offset): Removed.
11436 (Symbol::got_offset_): Removed.
11437 (Symbol::tls_mod_got_offset_): Removed.
11438 (Symbol::tls_pair_got_offset_): Removed.
11439 (Symbol::got_offsets_): New field.
11440 (Symbol::has_got_offset): Removed.
11441 (Symbol::has_tls_mod_got_offset): Removed.
11442 (Symbol::has_tls_pair_got_offset): Removed.
11443 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
11444 (Target_x86_64::Scan::local): Updated callers of Output_data_got
11445 member functions.
11446 (Target_x86_64::Scan::global): Likewise.
11447 (Target_x86_64::Relocate::relocate): Likewise.
11448 (Target_x86_64::Relocate::relocate_tls): Likewise.
11449
bd52eafb
BE
114502008-03-25 Ben Elliston <bje@au.ibm.com>
11451
11452 * yyscript.y: Fix spelling error in comment.
11453
8b105e34
ILT
114542008-03-24 Ian Lance Taylor <iant@google.com>
11455
8ed814a9
ILT
11456 * options.h (class General_options): Define build_id option.
11457 * layout.h (class Layout): Declare write_build_id, create_note,
11458 create_build_id. Add build_id_note_ member.
11459 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
11460 "libiberty.h", "md5.h", "sha1.h".
11461 (Layout::Layout): Initialize eh_frame_data_,
11462 eh_frame_hdr_section_, and build_id_note_.
11463 (Layout::finalize): Call create_build_id.
11464 (Layout::create_note): New function, broken out of
11465 Layout::create_gold_note.
11466 (Layout::create_gold_note): Call create_note.
11467 (Layout::create_build_id): New function.
11468 (Layout::write_build_id): New function.
11469 (Close_task_runner::run): Call write_build_id.
11470
8b105e34
ILT
11471 * x86_64.cc: Correct license to GPLv3.
11472
086a1841
ILT
114732008-03-23 Ian Lance Taylor <iant@google.com>
11474
11475 * options.cc: Include "demangle.h".
11476 (parse_optional_string): New function.
11477 (parse_long_option): Handle takes_optional_argument.
11478 (parse_short_option): Update dash_z initializer. Handle
11479 takes_optional_argument.
11480 (General_options::General_options): Initialize do_demangle_.
11481 (General_options::finalize): Set do_demangle_. Handle demangling
11482 style.
11483 * options.h (parse_optional_string): Declare.
11484 (struct One_option): Add optional_arg field. Update constructor.
11485 Update call constructor calls. Add takes_optional_argument
11486 function.
11487 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
11488 (DEFINE_optional_string): Define.
11489 (General_options::demangle): Change from DEFINE_bool to
11490 DEFINE_optional_string.
11491 (General_options::no_demangle): New function.
11492 (General_options::do_demangle): New function.
11493 (General_options::set_do_demangle): New function.
11494 (General_options::execstack_status_): Move definition to end of
11495 class definition.
11496 (General_options::static_): Likewise.
11497 (General_options::do_demangle_): New field.
11498 * object.cc (big_endian>::get_symbol_location_info): Call
11499 Options::do_demangle, not Options::demangle.
11500 * symtab.cc (demangle): Likewise.
11501
cbb93e63
ILT
115022008-03-22 Ian Lance Taylor <iant@google.com>
11503
11504 * gold.h: Include <cstddef> and <sys/types.h>
11505 * options.h: Include <cstring>.
11506
ec531623
ILT
115072008-03-21 Ian Lance Taylor <iant@google.com>
11508
11509 * Added source code to GNU binutils.
This page took 0.683513 seconds and 4 git commands to generate.